private async Task doeffect(object[] args, Game game) { ChooseDirectionResponse response = args[1] as ChooseDirectionResponse; if (!response.IfSet) { TakeChoiceResponse response1 = (TakeChoiceResponse)await game.WaitAnswer(new TakeChoiceRequest() { PlayerId = Owner.Id, Infos = new List <string>() { "使用墨菲定律", "取消" }, AllPlayerRequest = true, }.SetTimeOut(game.RequestTime)); if (response1.Index == 0) { //如果使用了墨菲定律,那么取消所有剩余询问 game.CancelRequests(); await Owner.DropActionCard(game, new List <int>() { this.Id }, true); response.IfForward = !response.IfForward; } } }
public override Task DoEffect(Game game, FreeUse useWay) { return(Effects.UseCard.UseActionCard(game, useWay, this, async(g, r) => { //询问玩家是加或减 TakeChoiceResponse response = (TakeChoiceResponse)await game.WaitAnswer(new TakeChoiceRequest() { PlayerId = useWay.PlayerId, Infos = new List <string>() { "+2", "-2", } }); //处理实际效果 if (response.Index == 0) { await game.ChangeSize(2, this); } else { await game.ChangeSize(-2, this); } })); }
async Task effect(object[] args) { Game game = args[0] as Game; Player player = args[1] as Player; if (!AutoRequest) { return; } if (Hero.Player.Size < 0 && player == Hero.Player) { TakeChoiceResponse response = await game.WaitAnswer(new TakeChoiceRequest() { PlayerId = Hero.Player.Id, Infos = new List <string>() { "不发动技能", "发动技能" }, TimeOut = 10 }) as TakeChoiceResponse; if (response.Index > 0) { await Hero.FaceUp(game); await Hero.Player.DrawActionCard(game, Math.Abs(Hero.Player.Size)); } } }
public override async Task DoEffect(Game game, FreeUse useWay) { await Effects.UseCard.UseActionCard(game, useWay, this, async (g, r) => { int x = g.twoPointCheck(); g.GetPlayer(r.PlayersId[0]).ChangeSize(g, -x, this); TakeChoiceResponse response = await g.WaitAnswer(new TakeChoiceRequest() { PlayerId = r.PlayerId, Infos = new List<string>() { "-2", "+2" } }) as TakeChoiceResponse; if (response.Index == 0) g.Size -= x; else g.Size += x; } }
public override async Task DoEffect(Game game, FreeUse useWay) { Player player = game.GetPlayer(useWay.PlayerId); Player targetPlayer = game.GetPlayer(useWay.PlayersId[0]); ActionCard source = game.GetCard(useWay.Source[0]) as ActionCard; TakeChoiceResponse takeChoice = await game.WaitAnswer(new TakeChoiceRequest() { Infos = new List <string>() { "+1", "-1" }, PlayerId = useWay.PlayerId, RequsetInfo = "社群规模±1" }.SetTimeOut(game.RequestTime)) as TakeChoiceResponse; if (takeChoice.Index == 0) { await game.ChangeSize(1, source); } else { await game.ChangeSize(-1, source); } ChooseSomeCardResponse chooseCard = await game.WaitAnswer(new ChooseSomeCardRequest() { Count = player.ActionCards.Count, EnoughOnly = false, PlayerId = useWay.PlayerId, RequsetInfo = "选择X张牌给予目标玩家,你与其影响力+X" }.SetTimeOut(game.RequestTime)) as ChooseSomeCardResponse; List <ActionCard> cards = new List <ActionCard>(chooseCard.Cards.Select(id => player.ActionCards.Find(c => c.Id == id))); await player.DropActionCard(game, chooseCard.Cards); await player.AddActionCards(game, cards); await player.ChangeSize(game, cards.Count, source, player); await targetPlayer.ChangeSize(game, cards.Count, source, player); }
private async Task doeffect_passive(object[] args) { Game game = args[0] as Game; EventData <int> value = args[2] as EventData <int>; Player sourcePlayer = args[4] as Player; if (value.data < 0 && sourcePlayer != Owner) { TakeChoiceResponse response = (TakeChoiceResponse)await game.WaitAnswer(new TakeChoiceRequest() { PlayerId = Owner.Id, Infos = new List <string>() { "取消", "使用挂裱" } }); if (response.Index == 1) { await Effects.UseCard.UseActionCard(game, new FreeUse() { PlayerId = Owner.Id, CardId = Id, Source = new List <int>() { Id }, PlayersId = new List <int>() { sourcePlayer.Id } }, this, async (g, r) => { await g.GetPlayer(r.PlayersId[0]).ChangeSize(g, value.data, this, g.GetPlayer(r.PlayerId)); }); } } }
public override async Task DoEffect(Game game, FreeUse useWay) { ActionCard source = game.GetCard(useWay.Source[0]) as ActionCard; int x = game.twoPointCheck(); await game.GetPlayer(useWay.PlayersId[0]).ChangeSize(game, -x, source, game.GetPlayer(useWay.PlayerId)); TakeChoiceResponse response = await game.WaitAnswer(new TakeChoiceRequest() { PlayerId = useWay.PlayerId, Infos = new List <string>() { "+2", "-2" } }) as TakeChoiceResponse; if (response.Index == 0) { await game.ChangeSize(2, source); } else { await game.ChangeSize(-2, source); } }
public override async Task DoEffect(Game game, FreeUse useWay) { await Effects.UseCard.UseActionCard(game, useWay, this, async (g, r) => { Player target = g.GetPlayer(r.PlayersId[0]); TakeChoiceResponse response = await g.WaitAnswer(new TakeChoiceRequest() { PlayerId = r.PlayerId, Infos = new List <string>() { "你个人影响力+1,对方抽一张牌", "你抽一张牌,对方个人影响力+1" } }) as TakeChoiceResponse; if (response.Index == 0) { await Owner.ChangeSize(g, 1, this); await target.DrawActionCard(g, 1); } else { await Owner.DrawActionCard(g, 1); await target.ChangeSize(g, 1, this); } }); }
public override async Task DoEffect(Game game, FreeUse useWay) { ActionCard source = game.GetCard(useWay.Source[0]) as ActionCard; List <Player> crowdfunders = new List <Player>() { game.GetPlayer(useWay.PlayerId) }; Task <Response>[] tasks = await game.waitAnswerAll(new List <Player>(game.Players.Where(p => p.Id != useWay.PlayerId)), p => game.WaitAnswer(new ChooseSomeCardRequest() { AllPlayerRequest = true, Count = 1, EnoughOnly = false, PlayerId = p.Id, RequsetInfo = "是否丢弃手牌成为众筹者?" }.SetTimeOut(game.RequestTime))); foreach (var task in tasks) { ChooseSomeCardResponse response = task.Result as ChooseSomeCardResponse; if (response.Cards.Count > 0) { crowdfunders.Add(game.GetPlayer(response.PlayerId)); } } if (crowdfunders.Count == game.Players.Count) { return; } if (crowdfunders.Count > 0) { foreach (Player player in crowdfunders) { await player.ChangeSize(game, 1, source, game.GetPlayer(useWay.PlayerId)); } } if (crowdfunders.Count > 1) { TakeChoiceResponse response = await game.WaitAnswer(new TakeChoiceRequest() { PlayerId = useWay.PlayerId, Infos = new List <string>() { "+" + crowdfunders.Count, "-" + crowdfunders.Count } }.SetTimeOut(game.RequestTime)) as TakeChoiceResponse; if (response.Index == 0) { await game.ChangeSize(crowdfunders.Count, source); } else { await game.ChangeSize(-crowdfunders.Count, source); } } if (crowdfunders.Count > 2) { foreach (Player player in crowdfunders) { await player.DrawActionCard(game, 1); } } }