public override async Task DoEffect(Game game, FreeUse useWay) { await Effects.UseCard.UseActionCard(game, useWay, this, async (g, r) => { await g.GetPlayer(r.PlayersId[0]).ChangeSize(g, -g.twoPointCheck(), this, Owner); }); }
public override async Task DoEffect(Game game, FreeUse useWay) { ActionCard source = game.GetCard(useWay.Source[0]) as ActionCard; Player player = game.GetPlayer(useWay.PlayerId); Player target = game.GetPlayer(useWay.PlayersId[0]); await target.ChangeSize(game, -1, source, player); Player now = target; while (true) { ChooseSomeCardResponse chooseSomeCardResponse = (ChooseSomeCardResponse)await game.WaitAnswer(new ChooseSomeCardRequest() { Count = 1, PlayerId = now.Id, TimeOut = game.RequestTime, EnoughOnly = false }); if (chooseSomeCardResponse.Cards.Count == 0) { break; } else { Player nowTarget = now == player ? target : player; await now.discard(game, chooseSomeCardResponse.Cards); await nowTarget.ChangeSize(game, -1, source, now); now = nowTarget; } } }
public override async Task DoEffect(Game game, FreeUse useWay) { await UseCard.UseActionCard(game, useWay, this, async (g, r) => { await game.GetPlayer(useWay.PlayerId).ChangeSize(game, 1, this, Owner); }); }
internal Task UseActionCard(Game game, FreeUse useInfo) { if (useInfo.SkillId < 0) { //正常用卡 ActionCard card = ActionCards.Find(x => x.Id == useInfo.CardId); if (card == null) { return(Task.CompletedTask); } return(card.DoEffect(game, useInfo)); } else { Skill skill = Hero.Skills.Find(x => SkillHelper.getId(x) == useInfo.SkillId); if (skill != null) { return(skill.DoEffect(game, useInfo)); } else { throw new System.Exception($"玩家不持有的技能:{useInfo.SkillId}"); } } }
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); } })); }
public override Task DoEffect(Game game, FreeUse useInfo) { turnLimit.Use(); AT_N001 card = new AT_N001(); return(card.DoEffect(game, useInfo)); }
public override async Task DoEffect(Game game, FreeUse useWay) { await UseCard.UseActionCard(game, useWay, this, (g, r) => { return(Task.CompletedTask); }); }
public override async Task DoEffect(Game game, FreeUse useWay) { await UseCard.UseActionCard(game, useWay, this, async (g, r) => { await game.ChangeSize(2, this); }); }
private async Task effect(Game game, FreeUse useWay) { Player target = game.GetPlayer(useWay.PlayersId[0]); Player user = game.GetPlayer(useWay.PlayerId); await target.ChangeSize(game, -1, this, Owner); Player now = target; while (true) { ChooseSomeCardResponse chooseSomeCardResponse = (ChooseSomeCardResponse)await game.WaitAnswer(new ChooseSomeCardRequest() { Count = 1, PlayerId = now.Id, TimeOut = game.RequestTime, EnoughOnly = false }); if (chooseSomeCardResponse.Cards.Count == 0) { break; } else { Player nowTarget = now == user ? target : user; await nowTarget.ChangeSize(game, -1, this, Owner); now = nowTarget; } } }
public override async Task DoEffect(Game game, FreeUse useWay) { await Effects.UseCard.UseActionCard(game, useWay, this, async (g, r) => { await g.GetPlayer(r.PlayerId).DrawActionCard(g, 2); }); }
protected override bool canUse(Game game, Request nowRequest, FreeUse useInfo, out NextRequest nextRequest) { nextRequest = new NextRequest() { RequestInfo = "无法主动打出" }; return(false); }
public override async Task DoEffect(Game game, FreeUse useWay) { await Effects.UseCard.UseActionCard(game, useWay, this, async (g, r) => { await Owner.ChangeSize(g, -1, this); await g.GetPlayer(r.PlayersId[0]).ChangeSize(g, -2, this); }); }
public override async Task DoEffect(Game game, FreeUse useWay) { if (_changeTarget != null) { setProp("user", game.GetPlayer(useWay.PlayerId)); await _changeTarget.DoEffect(game, useWay); } }
public override bool isValidTarget(Game game, FreeUse useWay, Player player, out string invalidInfo) { if (_changeTarget != null) { return(_changeTarget.isValidTarget(game, useWay, player, out invalidInfo)); } return(base.isValidTarget(game, useWay, player, out invalidInfo)); }
public override bool isValidTarget(Game game, FreeUse useWay, ActionCard card, out string invalidInfo) { if (_changeTarget != null) { return(_changeTarget.isValidTarget(game, useWay, card, out invalidInfo)); } return(base.isValidTarget(game, useWay, card, out invalidInfo)); }
public override async Task DoEffect(Game game, FreeUse useWay) { await Effects.UseCard.UseActionCard(game, useWay, this, (g, r) => { g.GetPlayer(r.PlayerId).Size += 1; return(Task.CompletedTask); }); }
public override async Task DoEffect(Game game, FreeUse useWay) { ActionCard source = game.GetCard(useWay.Source[0]) as ActionCard; Player player = game.GetPlayer(useWay.PlayerId); Player target = game.GetPlayer(useWay.PlayersId[0]); await player.ChangeSize(game, -1, source, player); await target.ChangeSize(game, -2, source, player); }
protected override bool canUse(Game game, Request nowRequest, FreeUse useInfo, out NextRequest nextRequest) { if (game.UsedEventDeck.Count < 1) { nextRequest = null; return(false); } return(base.canUse(game, nowRequest, useInfo, out nextRequest)); }
protected override bool canUse(Game game, Request nowRequest, FreeUse useInfo, out NextRequest nextRequest) { if (useInfo.PlayersId.Count < 1) { nextRequest = new HeroChooseRequest(); return(false); } return(base.canUse(game, nowRequest, useInfo, out nextRequest)); }
public override Task DoEffect(Game game, FreeUse useWay) { ActionCard source = game.GetCard(useWay.Source[0]) as ActionCard; source.setProp("onTurnStart", new CardCallback(source, onTurnStart)); source.setProp("player", game.GetPlayer(useWay.PlayerId)); game.EventSystem.Register(EventEnum.TurnStart, game.GetSeat(game.GetPlayer(useWay.PlayerId)), source.getProp <CardCallback>("onTurnStart").call); Debug.Log(source + "注册延迟效果"); return(Task.CompletedTask); }
protected override bool canUse(Game game, Request nowRequest, FreeUse useInfo, out NextRequest nextRequest) { if (nowRequest is FreeUseRequest) { nextRequest = new NextRequest() { RequestInfo = "无法主动打出" }; return(false); } return(base.canUse(game, nowRequest, useInfo, out nextRequest)); }
protected override bool canUse(Game game, Request nowRequest, FreeUse useInfo, out NextRequest nextRequest) { if (nowRequest is FreeUseRequest && useInfo.PlayersId.Count < 1) { nextRequest = new HeroChooseRequest() { PlayerId = useInfo.PlayerId, Number = 1, RequestInfo = "选择目标玩家" }; return(false); } return(base.canUse(game, nowRequest, useInfo, out nextRequest)); }
protected override bool canUse(Game game, Request nowRequest, FreeUse useInfo, out NextRequest nextRequest) { if (_changeTarget == null) { nextRequest = null; return(false); } else { return(_changeTarget.CanUse(game, nowRequest, useInfo, out nextRequest)); } }
/// <summary> /// 能否使用卡牌,默认没有任何条件,但是会对要求使用特定类型卡片的情况进行检查,所以在重写该方法的时候除了特殊情况应该返回base.canUse /// </summary> /// <param name="game"></param> /// <param name="nowRequest"></param> /// <param name="useInfo"></param> /// <param name="nextRequest"></param> /// <returns></returns> protected virtual bool canUse(Game game, Request nowRequest, FreeUse useInfo, out NextRequest nextRequest) { nextRequest = null; switch (nowRequest) { case UseLimitCardRequest useLimitCard: return(Effects.UseWayResponse.CheckLimit(game, useLimitCard, useInfo, ref nextRequest, game.GetCard(useInfo.Source[0]))); case FreeUseRequest _: return(true); } return(false); }
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; } }
protected override bool canUse(Game game, Request nowRequest, FreeUse useInfo, out NextRequest nextRequest) { if (useInfo.PlayersId.Count < 1) { nextRequest = new HeroChooseRequest(); return false; } else { nextRequest = null; return true; } }
/// <summary> /// 不能自己撕自己 /// </summary> /// <param name="game"></param> /// <param name="useWay"></param> /// <param name="player"></param> /// <returns></returns> public override bool isValidTarget(Game game, FreeUse useWay, Player player, out string invalidInfo) { if (player.Id != useWay.PlayerId) { invalidInfo = string.Empty; return(true); } else { invalidInfo = "目标不能是自己"; return(false); } }
protected override bool canUse(Game game, Request nowRequest, FreeUse useInfo, out NextRequest nextRequest) { nextRequest = null; switch (nowRequest) { case UseLimitCard useLimitCard: return(Effects.UseWayResponse.CheckLimit(game, useLimitCard, useInfo, ref nextRequest, this)); case FreeUseRequest _: return(true); } return(false); }
protected override bool canUse(Game game, Request nowRequest, FreeUse useInfo, out NextRequest nextRequest) { nextRequest = null; if (!turnLimit.CanUse()) { return(false); } if (useInfo.Source.Count != 1) { nextRequest = new CardChooseRequest() { }; return(false); } else { return(true); } }
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); }