public override async Task DoEffect(Game game, ChooseDirectionResponse response, List <Player> unaffectedPlayers) { await UseCard.UseEventCard(game, response, this, (g, r) => { return(Task.CompletedTask); }); }
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 async Task Use(Game game, ChooseDirectionResponse response) { await UseCard.UseEventCard(game, response, this, (g, r) => { return(Task.CompletedTask); }); }
public override Task DoEffect(Game game, ChooseDirectionResponse response, List <Player> unaffectedPlayers) { return(ZMDFQ.Effects.UseCard.UseEventCard(game, response, this, async(g, r) => { await g.ChangeSize(1, this); await g.GetPlayer(r.PlayerId).ChangeSize(game, 1, this, g.GetPlayer(r.PlayerId)); })); }
private async Task SetEventCard(Game game, ChooseDirectionResponse response) { if (SaveEvent != null) { await SaveEvent.Use(game, response); } SaveEvent = EventCards[0]; EventCards.RemoveAt(0); }
public override Task DoEffect(Game game, ChooseDirectionResponse response, List <Player> unaffectedPlayers) { return(ZMDFQ.Effects.UseCard.UseEventCard(game, response, this, async(g, r) => { foreach (Player player in g.Players.Where(p => !unaffectedPlayers.Contains(p))) { await player.ChangeSize(g, 1, this, g.GetPlayer(r.PlayerId)); } })); }
Task effect(Game game, ChooseDirectionResponse response) { if (response.IfForward) { game.Players.Find(p => p.Id == response.PlayerId).Size *= 2; } else { game.Players.Find(p => p.Id == response.PlayerId).Size = 0; } return(Task.CompletedTask); }
Task effect(Game game, ChooseDirectionResponse response) { if (response.IfForward) { game.Size += game.ChainEventDeck.Where(c => c is EV_E001).Count() + 1; } else { game.Size -= game.ChainEventDeck.Where(c => c is EV_E001).Count() + 1; } game.ChainEventDeck.Add(this); return(Task.CompletedTask); }
async Task effect(Game game, ChooseDirectionResponse response) { ActionCard source = game.GetCard(response.CardId) as ActionCard; Player player = game.Players.Find(p => p.Id == response.PlayerId); if (response.IfForward) { await player.ChangeSize(game, player.Size, source, player); } else { await player.ChangeSize(game, -player.Size, source, player); } }
public override async Task DoEffect(Game game, ChooseDirectionResponse response, List <Player> unaffectedPlayers) { await Effects.UseCard.UseEventCard(game, response, this, async (g, r) => { if (response.IfForward) { await game.ChangeSize(game.ChainEventDeck.Where(c => c is EV_E001).Count() + 1, this); } else { await game.ChangeSize(-game.ChainEventDeck.Where(c => c is EV_E001).Count() + 1, this); } game.ChainEventDeck.Add(this); }); }
static async Task doeffect(ActionCard card, object[] args, Game game) { ChooseDirectionResponse response = args[1] as ChooseDirectionResponse; if (!response.IfSet) { //启用阻塞 flag = new TaskCompletionSource <bool>(); if (game.Requests[game.Players.IndexOf(card.Owner)].Any(x => x is UseLimitCardRequest r && r.CardType == game.Database.getID(typeof(AT_N020)))) { //说明该玩家处于另一个墨菲定律询问 return; } Log.Game($"询问 { card.Owner.Name } 使用定律"); UseLimitCardResponse response1 = (UseLimitCardResponse)await game.WaitAnswer(new UseLimitCardRequest() { AllPlayerRequest = true, PlayerId = card.Owner.Id, CardType = game.Database.getID(typeof(AT_N020)) }.SetTimeOut(game.RequestTime)); if (response1.Used) { Log.Game($" { card.Owner.Name } 使用墨菲定律"); //响应后 取消其他玩家的询问 game.CancelRequests(); //这段会有问题,丢卡后卡的owner变成null,个人影响力变化会找不到来源玩家(理论上是自己) Player owner = card.Owner; await card.Owner.DropActionCard(game, new List <int>() { card.Id }, true); await owner.ChangeSize(game, -1, card, card.Owner); //把方向置为反向 response.IfForward = !response.IfForward; //取消阻塞 flag.TrySetResult(true); } else { Log.Game($" { card.Owner.Name } 取消使用墨菲定律"); if (game.Requests.All(x => x.Count == 0)) { flag.TrySetResult(true); } } } }
internal Task UseEventCard(Game game, ChooseDirectionResponse response) { if (response.IfSet) { return(SetEventCard(game, response)); } else { //默认玩家手上一定是一张事件卡,有其他情况再改 EventCard card = EventCards.Find(c => c.Id == response.CardId); if (card != null) { return(card.Use(game, response)); } else { Log.Error("未找到卡片(" + response.CardId + ")"); return(Task.CompletedTask); } } }
public override async Task Use(Game game, ChooseDirectionResponse response) { await Effects.UseCard.UseEventCard(game, response, this, effect); }
public override async Task DoEffect(Game game, ChooseDirectionResponse response, List <Player> unaffectedPlayers) { await UseCard.UseEventCard(game, response, this, effect); }
public override Task DoEffect(Game game, ChooseDirectionResponse response, List <Player> unaffectedPlayers) { return(Task.CompletedTask); }
public override Task Use(Game game, ChooseDirectionResponse response) { return(Task.CompletedTask); }