public KuangFeng() { kuangfengTarget = null; var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { kuangfengTarget = null; }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return Game.CurrentGame.Decks[Owner, QiXing.QiXingDeck].Count > 0; }, Run, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false }; var trigger3 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { var args = a as DamageEventArgs; return (DamageElement)args.Element == DamageElement.Fire && kuangfengTarget == args.Targets[0]; }, (p, e, a) => { var args = a as DamageEventArgs; args.Magnitude++; }, TriggerCondition.Global ) { AskForConfirmation = false }; Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.Start], trigger); Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.End], trigger2); Triggers.Add(GameEvent.DamageInflicted, trigger3); IsAutoInvoked = false; }
public ShenWei() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { p[Player.DealAdjustment] += 2; }, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.PhaseProceedEvents[TurnPhase.Draw], trigger); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { var args = a as AdjustmentEventArgs; args.AdjustmentAmount += 2; }, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false }; Triggers.Add(GameEvent.PlayerHandCardCapacityAdjustment, trigger2); IsEnforced = true; }
public BuQu() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { if (p.Health > 0 && Game.CurrentGame.Decks[Owner, bq].Count > 0) { int toDraw = Game.CurrentGame.Decks[Owner, bq].Count; while (toDraw-- > 0) { Card c1 = Game.CurrentGame.Decks[Owner, bq][Game.CurrentGame.Decks[Owner, bq].Count - 1]; CardsMovement move = new CardsMovement(); move.Cards = new List<Card>() { c1 }; move.To = new DeckPlace(null, DeckType.Discard); Game.CurrentGame.MoveCards(move); } } return p.Health <= 0; }, Run, TriggerCondition.OwnerIsTarget ) { Type = TriggerType.Skill }; Triggers.Add(GameEvent.AfterHealthChanged, trigger); ExtraCardsDeck = bq; IsAutoInvoked = true; }
public YongSi() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { p[Player.DealAdjustment] += Game.CurrentGame.NumberOfAliveAllegiances; }, TriggerCondition.OwnerIsSource ); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { Game.CurrentGame.ForcePlayerDiscard( p, (pl, i) => { return Game.CurrentGame.NumberOfAliveAllegiances - i; }, true); }, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.PhaseProceedEvents[TurnPhase.Draw], trigger); Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.Discard], trigger2); IsEnforced = true; }
public RulerGivenSkillContainerSkill(IRulerGivenSkill InnerSkill, Allegiance al) { innerSkillType = InnerSkill.GetType(); Allegiance = al; masterList = new Dictionary<Player, IRulerGivenSkill>(); var trigger = new AutoNotifyPassiveSkillTrigger( this, DistributeSkills, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false, AskForConfirmation = false }; var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { if (a.Source.Allegiance == Allegiance && !masterList.ContainsKey(a.Source)) { DistributeSkills(Owner, null, null); } if (a.Source.Allegiance != Allegiance && masterList.ContainsKey(a.Source)) { ISkill skill = masterList[a.Source]; masterList.Remove(a.Source); Game.CurrentGame.PlayerLoseAdditionalSkill(a.Source, skill, true); } }, TriggerCondition.Global ) { IsAutoNotify = false, AskForConfirmation = false }; Triggers.Add(GameEvent.PlayerGameStartAction, trigger); Triggers.Add(GameEvent.PlayerChangedAllegiance, trigger2); IsAutoInvoked = null; IsRulerOnly = true; }
public ZhiJi() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(p[ZhiJiAwaken] == 0 && Game.CurrentGame.Decks[p, DeckType.Hand].Count == 0); }, (p, e, a) => { p[ZhiJiAwaken] = 1; int answer = 0; Game.CurrentGame.UiProxies[p].AskForMultipleChoice(new MultipleChoicePrompt("ZhiJi"), new List <OptionPrompt>() { new OptionPrompt("MoPai"), new OptionPrompt("HuiFuTiLi") }, out answer); if (answer == 1) { Game.CurrentGame.RecoverHealth(p, p, 1); } else { Game.CurrentGame.DrawCards(p, 2); } Game.CurrentGame.LoseMaxHealth(p, 1); Game.CurrentGame.PlayerAcquireAdditionalSkill(p, new GuanXing(), HeroTag); }, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.Start], trigger); IsAwakening = true; }
public ZiLi() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return p[ZiLiAwakened] == 0 && Game.CurrentGame.Decks[p, QuanJi.QuanDeck].Count >= 3; }, (p, e, a) => { p[ZiLiAwakened] = 1; Game.CurrentGame.LoseMaxHealth(p, 1); int answer = 0; Owner.AskForMultipleChoice( new MultipleChoicePrompt("ZiLi"), new List<OptionPrompt>() { new OptionPrompt("ZiLiRecover"), new OptionPrompt("ZiLiDraw") }, out answer); if (answer == 0) { Game.CurrentGame.RecoverHealth(Owner, Owner, 1); } else { Game.CurrentGame.DrawCards(Owner, 2); } Game.CurrentGame.PlayerAcquireAdditionalSkill(Owner, new PaiYi(), HeroTag); }, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.Start], trigger); IsAwakening = true; }
public FangQuan() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(!Game.CurrentGame.PhasesSkipped.Contains(TurnPhase.Play)); }, (p, e, a) => { p[FangQuanUsed] = 1; Game.CurrentGame.PhasesSkipped.Add(TurnPhase.Play); }, TriggerCondition.OwnerIsSource ); var trigger2 = new AutoNotifyUsagePassiveSkillTrigger( this, (p, e, a) => { return(p[FangQuanUsed] == 1); }, (p, e, a, cards, players) => { Game.CurrentGame.HandleCardDiscard(a.Source, cards); Game.CurrentGame.RegisterTrigger(GameEvent.PhasePostEnd, new FangQuanTrigger(Owner, players[0])); }, TriggerCondition.OwnerIsSource, new FangQuanVerifier() ) { AskForConfirmation = false }; Triggers.Add(GameEvent.PhaseOutEvents[TurnPhase.Draw], trigger); Triggers.Add(GameEvent.PhaseProceedEvents[TurnPhase.End], trigger2); }
public HuaShen() { acquiredSkill = null; var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { AcquireHeroCard(p, HeroTag); AcquireHeroCard(p, HeroTag); Run(p, e, a); }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false }; var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(Game.CurrentGame.Decks[Owner, HuaShenDeck].Count > 0); }, Run, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.PlayerGameStartAction, trigger); Triggers.Add(GameEvent.PhaseProceedEvents[TurnPhase.BeforeStart], trigger2); Triggers.Add(GameEvent.PhasePostEnd, trigger2); IsAutoInvoked = false; DeckCleanup.Add(HuaShenDeck); }
public YaoWu() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(a.ReadonlyCard != null && a.ReadonlyCard.Type is Sha && a.Source != null && a.ReadonlyCard.SuitColor == SuitColorType.Red); }, (p, e, a) => { int answer = 0; if (a.Source.LostHealth > 0 && a.Source.AskForMultipleChoice(new MultipleChoicePrompt("YaoWu"), OptionPrompt.RecoverOneHealthOrDrawOneCardOptions, out answer) && answer == 0) { Game.CurrentGame.RecoverHealth(a.Source, a.Source, 1); } else { Game.CurrentGame.DrawCards(a.Source, 1); } }, TriggerCondition.OwnerIsTarget ); Triggers.Add(GameEvent.AfterDamageCaused, trigger); IsEnforced = true; }
public FuHunPassiveSkill() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(fhWuSheng == null && a.ReadonlyCard != null && a.ReadonlyCard[FuHunSha] == 1 && Game.CurrentGame.PhasesOwner == p && Game.CurrentGame.CurrentPhase == TurnPhase.Play); }, (p, e, a) => { fhWuSheng = new WuSheng(); fhPaoXiao = new PaoXiao(); Trigger tri = new RemoveShengPao(p, this); Game.CurrentGame.PlayerAcquireAdditionalSkill(p, fhWuSheng, HeroTag); Game.CurrentGame.PlayerAcquireAdditionalSkill(p, fhPaoXiao, HeroTag); Game.CurrentGame.RegisterTrigger(GameEvent.PhasePostEnd, tri); }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false }; Triggers.Add(GameEvent.AfterDamageCaused, trigger); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(a.Card[FuHunSha] == 1); }, (p, e, a) => { throw new TriggerResultException(TriggerResult.Fail); }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(GameEvent.PlayerCanPlayCard, trigger2); }
public DanLao() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { if (a.ReadonlyCard != null && !a.ReadonlyCard.Type.IsCardCategory(CardCategory.Tool)) { return(false); } return(a.Targets.Count > 1); }, OnPlayerIsCardTarget, TriggerCondition.OwnerIsTarget ); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(a.ReadonlyCard != null && a.ReadonlyCard[DanLaoEffect[p]] == 1); }, (p, e, a) => { throw new TriggerResultException(TriggerResult.End); }, TriggerCondition.OwnerIsTarget ) { AskForConfirmation = false }; Triggers.Add(GameEvent.CardUsageTargetValidating, trigger2); Triggers.Add(GameEvent.CardUsageTargetConfirming, trigger); IsAutoInvoked = null; }
public ChongZhen() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(a.ReadonlyCard != null && a.ReadonlyCard[LongDan.CanShuaLiuMang] == 1 && a.Targets.Any(pl => pl.HandCards().Count > 0)); }, (p, e, a) => { if (a.Targets != null) { foreach (var target in a.Targets) { if (target.HandCards().Count == 0) { continue; } var result = Game.CurrentGame.SelectACardFrom(target, p, new CardChoicePrompt("ChongZhen", target, p), "ChongZhen", true, true, true); Game.CurrentGame.HandleCardTransferToHand(target, p, new List <Card>() { result }); } } }, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.PlayerPlayedCard, trigger); Triggers.Add(GameEvent.PlayerUsedCard, trigger); IsAutoInvoked = null; }
public GuZheng() { GuZhengCards = new List <Card>(); var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(Game.CurrentGame.CurrentPlayer != p && Game.CurrentGame.CurrentPhase == TurnPhase.Discard); }, (p, e, a) => { GuZhengCards.AddRange(a.Cards); }, TriggerCondition.Global ) { IsAutoNotify = false, AskForConfirmation = false }; var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(GuZhengCards.Count > 0 && Game.CurrentGame.CurrentPlayer != p); }, Run, TriggerCondition.Global ) { Priority = 1, AskForConfirmation = false, IsAutoNotify = false }; var trigger3 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { GuZhengCards = new List <Card>(); }, TriggerCondition.Global ) { Priority = 0, AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(GameEvent.CardsEnteredDiscardDeck, trigger); Triggers.Add(GameEvent.PhaseEndEvents[TurnPhase.Discard], trigger2); Triggers.Add(GameEvent.PhasePostEnd, trigger3); }
public HuaShen() { acquiredSkill = null; var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { AcquireHeroCard(p, HeroTag); AcquireHeroCard(p, HeroTag); Run(p, e, a); }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false }; var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return Game.CurrentGame.Decks[Owner, HuaShenDeck].Count > 0; }, Run, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.PlayerGameStartAction, trigger); Triggers.Add(GameEvent.PhaseProceedEvents[TurnPhase.BeforeStart], trigger2); Triggers.Add(GameEvent.PhasePostEnd, trigger2); IsAutoInvoked = false; DeckCleanup.Add(HuaShenDeck); }
public JiuShiPassive() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return((a as DamageEventArgs).ReadonlyCard[JiuShiUsable] == 1); }, (p, e, a) => { (a as DamageEventArgs).ReadonlyCard[JiuShiUsable] = 0; p.IsImprisoned = false; }, TriggerCondition.OwnerIsTarget ) { }; Triggers.Add(GameEvent.DamageComputingFinished, trigger); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(p.IsImprisoned); }, (p, e, a) => { (a as DamageEventArgs).ReadonlyCard[JiuShiUsable] = 1; }, TriggerCondition.OwnerIsTarget ) { IsAutoNotify = false, AskForConfirmation = false, Priority = int.MinValue }; Triggers.Add(GameEvent.DamageInflicted, trigger2); IsAutoInvoked = null; }
public WangZun() { Trigger trigger = new AutoNotifyPassiveSkillTrigger ( this, (p, e, a) => { return(a.Source.Role == Role.Ruler); }, (p, e, a) => { Game.CurrentGame.DrawCards(p, 1); a.Source[WangZunUsed] = 1; }, TriggerCondition.Global ); Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.BeforeStart], trigger); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { var args = a as AdjustmentEventArgs; if (a.Source[WangZunUsed] == 1) { args.AdjustmentAmount -= 1; NotifySkillUse(); } }, TriggerCondition.Global ) { IsAutoNotify = false, AskForConfirmation = false }; Triggers.Add(GameEvent.PlayerHandCardCapacityAdjustment, trigger2); IsAutoInvoked = false; }
public KeJi() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(Game.CurrentGame.CurrentPhase == TurnPhase.Play && Game.CurrentGame.CurrentPlayer == p && a.Card != null && a.ReadonlyCard != null && a.ReadonlyCard.Type is Sha); }, (p, e, a) => { p[KeJiFailed] = 1; }, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false, AskForConfirmation = false }; var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(p[KeJiFailed] == 0 && !Game.CurrentGame.PhasesSkipped.Contains(TurnPhase.Discard)); }, (p, e, a) => { Game.CurrentGame.PhasesSkipped.Add(TurnPhase.Discard); }, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.PlayerUsedCard, trigger); Triggers.Add(GameEvent.PlayerPlayedCard, trigger); Triggers.Add(GameEvent.PhaseOutEvents[TurnPhase.Play], trigger2); IsAutoInvoked = true; }
public BaZhen() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { foreach (var ac in Game.CurrentGame.Decks[p, DeckType.Equipment]) { if (ac.Type is Armor) { return(false); } } return(a.Card.Type is Shan && Armor.ArmorIsValid(Owner, a.Targets[0], a.ReadonlyCard)); }, Run, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false }; Triggers.Add(GameEvent.PlayerRequireCard, trigger); IsEnforced = true; }
public DaWu() { dawuTargets = new List <Player>(); var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(Game.CurrentGame.Decks[Owner, QiXing.QiXingDeck].Count > 0); }, Run, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false }; Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.End], trigger); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { Game.CurrentGame.RegisterTrigger(GameEvent.PlayerIsDead, new DaWuOnDeath(p, this)); }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(GameEvent.PlayerGameStartAction, trigger2); IsAutoInvoked = null; }
public BengHuai() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { int minHp = int.MaxValue; foreach (Player pl in Game.CurrentGame.AlivePlayers) { if (pl.Health < minHp) minHp = pl.Health; } return p.Health > minHp; }, (p, e, a) => { int answer = 0; Game.CurrentGame.UiProxies[p].AskForMultipleChoice(new MultipleChoicePrompt("BengHuai"), new List<string>() { "TiLiZhi", "TiLiShangXian" }, out answer); if (answer == 0) { Game.CurrentGame.LoseHealth(p, 1); } else { Game.CurrentGame.LoseMaxHealth(p, 1); } }, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.End], trigger); IsEnforced = true; }
public WuJi() { var trigger1 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return p[WuJiAwaken] == 0; }, (p, e, a) => { p[WuJiCount] += (a as DamageEventArgs).Magnitude; }, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false }; Triggers.Add(GameEvent.AfterDamageCaused, trigger1); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return p[WuJiCount] >= 3 && p[WuJiAwaken] == 0; }, (p, e, a) => { p[WuJiAwaken]++; p.MaxHealth++; Game.CurrentGame.RecoverHealth(p, p, 1); ISkill huxiao = p.LoseHeroSkill("HuXiao", HeroTag); Trace.Assert(huxiao != null); Game.CurrentGame.NotificationProxy.NotifyLogEvent(new LogEvent("WuJi", Owner, huxiao), new List<Player>() { Owner }); }, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.End], trigger2); IsAwakening = true; }
public TengJiaSkill() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return a.ReadonlyCard != null && ((a.ReadonlyCard.Type is Aoe) || (a.ReadonlyCard.Type is RegularSha)) && a.ReadonlyCard[Armor.IgnoreAllArmor] == 0 && a.ReadonlyCard[Armor.IgnorePlayerArmor] != Owner.Id + 1; }, (p, e, a) => { throw new TriggerResultException(TriggerResult.End); }, TriggerCondition.OwnerIsTarget ); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { var args = a as DamageEventArgs; return (DamageElement)args.Element == DamageElement.Fire && a.ReadonlyCard[Armor.IgnoreAllArmor] == 0 && a.ReadonlyCard[Armor.IgnorePlayerArmor] != Owner.Id + 1; }, (p, e, a) => { var args = a as DamageEventArgs; args.Magnitude++; }, TriggerCondition.OwnerIsTarget ); Triggers.Add(GameEvent.CardUsageTargetValidating, trigger); Triggers.Add(GameEvent.DamageInflicted, trigger2); }
public WeiDi() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return a.Source == ruler; }, (p, e, a) => { bool canInvoke = true; if (e == GameEvent.PlayerSkillSetChanged) { SkillSetChangedEventArgs arg = a as SkillSetChangedEventArgs; canInvoke = arg.Skills.Any(sk => sk.IsRulerOnly); } if (canInvoke) { UninstallSkills(); InstallSkills(p, ruler); } }, TriggerCondition.Global ) { AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(GameEvent.PlayerSkillSetChanged, trigger); Triggers.Add(GameEvent.PlayerChangedHero, trigger); IsEnforced = true; ruler = null; theSkills = new Dictionary<ISkill, ISkill>(); }
public WeiMu() { Triggers.Add(GameEvent.PlayerCanBeTargeted, new RelayTrigger( (p, e, a) => { return(CardCategoryManager.IsCardCategory(a.Card.Type.Category, CardCategory.Tool) && a.Card.SuitColor == SuitColorType.Black); }, (p, e, a) => { if (a.Card.Place.DeckType == DeckType.DelayedTools) { NotifySkillUse(); } throw new TriggerResultException(TriggerResult.Fail); }, TriggerCondition.OwnerIsTarget )); var notify = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(a.Source != p && a.ReadonlyCard.Type is Aoe && a.ReadonlyCard.SuitColor == SuitColorType.Black); }, (p, e, a) => { }, TriggerCondition.Global ); Triggers.Add(GameEvent.PlayerUsedCard, notify); IsEnforced = true; }
public QingLongYanYueSkill() { var trigger = new AutoNotifyPassiveSkillTrigger( this, Run, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false, AskForConfirmation = false }; Triggers.Add(ShaCancelling.PlayerShaTargetDodged, trigger); var notify = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(a.ReadonlyCard[QingLongSha] == 1); }, (p, e, a) => { }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false }; Triggers.Add(GameEvent.PlayerUsedCard, notify); }
public DaWu() { dawuTargets = new List<Player>(); var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { foreach (var mark in dawuTargets) { mark[DaWuMark] = 0; } dawuTargets.Clear(); }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return Game.CurrentGame.Decks[Owner, QiXing.QiXingDeck].Count > 0; }, Run, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false }; var trigger3 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { var args = a as DamageEventArgs; return (DamageElement)args.Element != DamageElement.Lightning && dawuTargets.Contains(args.Targets[0]); }, (p, e, a) => { throw new TriggerResultException(TriggerResult.End); }, TriggerCondition.Global ) { AskForConfirmation = false }; Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.Start], trigger); Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.End], trigger2); Triggers.Add(GameEvent.DamageInflicted, trigger3); IsAutoInvoked = false; }
public TanHuPassiveSkill() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(p[TanHuWin[a.Targets[0]]] != 0); }, (p, e, a) => { var arg = a as AdjustmentEventArgs; arg.AdjustmentAmount = 1; }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(GameEvent.PlayerDistanceOverride, trigger); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(p[TanHuWin[a.Targets[0]]] != 0); }, (p, e, a) => { if (a.ReadonlyCard.Type.IsCardCategory(CardCategory.ImmediateTool)) { a.ReadonlyCard[WuXieKeJi.CannotBeCountered[a.Targets[0]]] = 1; } }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(GameEvent.CardUsageBeforeEffected, trigger2); }
public ZuiXiang() { var trigger = new AutoNotifyPassiveSkillTrigger( this, Run, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; var trigger2 = new AutoNotifyPassiveSkillTrigger( this, CardUseStopper, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; var trigger3 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return a.ReadonlyCard != null; }, CardEffectStopper, TriggerCondition.OwnerIsTarget ) { AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.Start], trigger); Triggers.Add(GameEvent.PlayerCanUseCard, trigger2); Triggers.Add(GameEvent.PlayerCanPlayCard, trigger2); Triggers.Add(GameEvent.CardUsageTargetValidating, trigger3); IsSingleUse = true; DeckCleanup.Add(zxDeck); }
public LieGong() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return((a.ReadonlyCard.Type is Sha) && Game.CurrentGame.CurrentPhase == TurnPhase.Play); }, (p, e, a) => { Dictionary <Player, int> map = new Dictionary <Player, int>(); foreach (var target in a.Targets) { if (!map.Keys.Contains(target)) { map.Add(target, 0); } if ((Game.CurrentGame.Decks[target, DeckType.Hand].Count >= a.Source.Health || Game.CurrentGame.Decks[target, DeckType.Hand].Count <= a.Source[Player.AttackRange] + 1) && AskForSkillUse()) { a.ReadonlyCard[ShaCancelling.CannotProvideShan[target]] |= (1 << map[target]); NotifySkillUse(new List <Player>() { target }); } map[target]++; } }, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false, AskForConfirmation = false }; Triggers.Add(GameEvent.CardUsageTargetConfirmed, trigger); IsAutoInvoked = true; }
public WuMou() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return CardCategoryManager.IsCardCategory(a.Card.Type.Category, CardCategory.ImmediateTool); }, (p, e, a) => { if (Owner[KuangBao.BaoNuMark] == 0) { Game.CurrentGame.LoseHealth(Owner, 1); } else { int answer = 0; Owner.AskForMultipleChoice( new MultipleChoicePrompt("WuMou"), new List<OptionPrompt>() { new OptionPrompt("WuMouMark"), new OptionPrompt("WuMouHealth") }, out answer); if (answer == 0) { Owner[KuangBao.BaoNuMark]--; } else { Game.CurrentGame.LoseHealth(Owner, 1); } } }, TriggerCondition.OwnerIsSource ) { Type = TriggerType.Skill }; Triggers.Add(GameEvent.PlayerUsedCard, trigger); IsEnforced = true; }
public GuZheng() { GuZhengCards = new List<Card>(); var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return Game.CurrentGame.CurrentPlayer != p && Game.CurrentGame.CurrentPhase == TurnPhase.Discard; }, (p, e, a) => { GuZhengCards.AddRange(a.Cards); }, TriggerCondition.Global ) { IsAutoNotify = false, AskForConfirmation = false }; var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return GuZhengCards.Count > 0 && Game.CurrentGame.CurrentPlayer != p; }, Run, TriggerCondition.Global ) { Priority = 1 }; var trigger3 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { GuZhengCards = new List<Card>(); }, TriggerCondition.Global ) { Priority = 0, AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(GameEvent.CardsEnteredDiscardDeck, trigger); Triggers.Add(GameEvent.PhaseEndEvents[TurnPhase.Discard], trigger2); Triggers.Add(GameEvent.PhasePostEnd, trigger3); IsAutoInvoked = null; }
public WeiDi() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return a.Source == ruler; }, (p, e, a) => { bool nothingChanged = true; foreach (var sk in a.Source.ActionableSkills) { if (sk.IsRulerOnly) { if (!theSkills.ContainsKey(sk)) nothingChanged = false; } } foreach (var sk in theSkills) { if (!a.Source.ActionableSkills.Contains(sk.Key)) nothingChanged = false; } if (!nothingChanged) { UninstallSkills(); InstallSkills(p); } }, TriggerCondition.Global ) { AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(GameEvent.PlayerSkillSetChanged, trigger); IsEnforced = true; ruler = null; theSkills = new Dictionary<ISkill, ISkill>(); }
public LieGong() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return (a.ReadonlyCard.Type is Sha) && Game.CurrentGame.CurrentPhase == TurnPhase.Play; }, (p, e, a) => { Dictionary<Player, int> map = new Dictionary<Player, int>(); foreach (var target in a.Targets) { if (!map.Keys.Contains(target)) map.Add(target, 0); if ((Game.CurrentGame.Decks[target, DeckType.Hand].Count >= a.Source.Health || Game.CurrentGame.Decks[target, DeckType.Hand].Count <= a.Source[Player.AttackRange] + 1) && AskForSkillUse()) { a.ReadonlyCard[ShaCancelling.CannotProvideShan[target]] |= (1 << map[target]); NotifySkillUse(new List<Player>() { target }); } map[target]++; } }, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false, AskForConfirmation = false }; Triggers.Add(GameEvent.CardUsageTargetConfirmed, trigger); IsAutoInvoked = true; }
public DuanChang() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return a.Source != null; }, (p, e, a) => { var h = a.Source.Hero; foreach (ISkill sk in new List<ISkill>(a.Source.AdditionalSkills)) { Game.CurrentGame.PlayerLoseSkill(a.Source, sk); } SkillSetChangedEventArgs args = new SkillSetChangedEventArgs(); args.Source = a.Source; args.IsLosingSkill = true; foreach (var sk in a.Source.Hero.Skills) { sk.Owner = null; args.Skills.Clear(); args.Skills.Add(sk); Game.CurrentGame.Emit(GameEvent.PlayerSkillSetChanged, args); } a.Source.Hero = new Hero(h.Name, h.IsMale, h.Allegiance, h.MaxHealth, new List<ISkill>()); a.Source[DuanChangStatus] = 1; }, TriggerCondition.OwnerIsTarget ); Triggers.Add(GameEvent.PlayerIsDead, trigger); IsEnforced = true; }
public YongSi() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { p[Player.DealAdjustment] += Game.CurrentGame.NumberOfAliveAllegiances; }, TriggerCondition.OwnerIsSource ); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { Game.CurrentGame.ForcePlayerDiscard( p, (pl, i) => { return(Game.CurrentGame.NumberOfAliveAllegiances - i); }, true); }, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.PhaseProceedEvents[TurnPhase.Draw], trigger); Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.Discard], trigger2); IsEnforced = true; }
public MouKui() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return a.ReadonlyCard.Type is Sha; }, Run1, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(GameEvent.CardUsageTargetConfirmed, trigger); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, Run2, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(ShaCancelling.PlayerShaTargetDodged, trigger2); var trigger3 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { if (a.ReadonlyCard[MouKuiCheck] == 0) { a.ReadonlyCard[MouKuiCheck] = 1; return; } a.ReadonlyCard[MouKuiCheck[a.Targets[0]]] >>= 1; } , TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(ShaCancelling.PlayerShaTargetShanModifier, trigger3); IsAutoInvoked = null; }
public RenXin() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(!a.Targets.Contains(p) && p.HandCards().Count > 0); }, (p, e, a) => { var target = a.Targets[0]; NotifySkillUse(new List <Player>() { target }); Game.CurrentGame.HandleCardTransferToHand(p, target, new List <Card>(p.HandCards())); p.IsImprisoned = !p.IsImprisoned; Game.CurrentGame.RecoverHealth(p, target, 1); }, TriggerCondition.Global ) { IsAutoNotify = false }; Triggers.Add(GameEvent.PlayerIsAboutToDie, trigger); IsAutoInvoked = false; }
public BaoBian() { bbPaoXiao = null; bbShenSu = null; bbTiaoXin = null; var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { Refresh(p); }, TriggerCondition.OwnerIsTarget ) { IsAutoNotify = false }; Triggers.Add(GameEvent.AfterHealthChanged, trigger); IsEnforced = true; var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { Refresh(p); }, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false }; Triggers.Add(GameEvent.PlayerGameStartAction, trigger2); }
public WeiDi() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(a.Source == ruler && a.Source != Owner); }, (p, e, a) => { bool canInvoke = true; if (e == GameEvent.PlayerSkillSetChanged) { SkillSetChangedEventArgs arg = a as SkillSetChangedEventArgs; canInvoke = arg.Skills.Any(sk => sk.IsRulerOnly); } if (canInvoke) { UninstallSkills(); InstallSkills(p, ruler); } }, TriggerCondition.Global ) { AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(GameEvent.PlayerSkillSetChanged, trigger); Triggers.Add(GameEvent.PlayerChangedHero, trigger); IsEnforced = true; ruler = null; theSkills = new Dictionary <ISkill, ISkill>(); }
public ShenJi() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return p.Weapon() == null; }, (p, e, a) => { ShaEventArgs args = (ShaEventArgs)a; if (args.TargetApproval[0] == false) { return; } int moreTargetsToApprove = 2; int i = 1; while (moreTargetsToApprove > 0 && i < args.TargetApproval.Count) { if (args.TargetApproval[i] == true) { i++; continue; } args.TargetApproval[i] = true; i++; moreTargetsToApprove--; } }, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false, AskForConfirmation = false, Priority = SkillPriority.ShenJi }; Triggers.Add(Sha.PlayerShaTargetValidation, trigger); IsAutoInvoked = null; }
public FangQuan() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return !Game.CurrentGame.PhasesSkipped.Contains(TurnPhase.Play); }, (p, e, a) => { p[FangQuanUsed] = 1; Game.CurrentGame.PhasesSkipped.Add(TurnPhase.Play); }, TriggerCondition.OwnerIsSource ); var trigger2 = new AutoNotifyUsagePassiveSkillTrigger( this, (p, e, a) => { return p[FangQuanUsed] == 1; }, (p, e, a, cards, players) => { Game.CurrentGame.HandleCardDiscard(a.Source, cards); Game.CurrentGame.RegisterTrigger(GameEvent.PhasePostEnd, new FangQuanTrigger(Owner, players[0])); }, TriggerCondition.OwnerIsSource, new FangQuanVerifier() ) { AskForConfirmation = false }; Triggers.Add(GameEvent.PhaseOutEvents[TurnPhase.Draw], trigger); Triggers.Add(GameEvent.PhaseProceedEvents[TurnPhase.End], trigger2); }
public LiHuoPassive() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(a.Card.Type is HuoSha); }, (p, e, a) => { ShaEventArgs args = (ShaEventArgs)a; Trace.Assert(args != null); if (args.Source != Owner) { return; } if (args.TargetApproval[0]) { for (int i = 1; i < args.TargetApproval.Count; i++) { if (!args.TargetApproval[i]) { args.TargetApproval[i] = true; break; } } } }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false, Priority = SkillPriority.LiHuo }; Triggers.Add(Sha.PlayerShaTargetValidation, trigger); }
public ZhuGeLianNuSkill() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return a.Source[Sha.NumberOfShaUsed] > 0 && a.Card.Type is Sha; }, (p, e, a) => { }, TriggerCondition.OwnerIsSource ); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { throw new TriggerResultException(TriggerResult.Success); }, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false }; var trigger3 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { ShaEventArgs args = (ShaEventArgs)a; args.TargetApproval[0] = true; }, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false, Priority = int.MaxValue, Type = TriggerType.Skill }; Triggers.Add(GameEvent.PlayerUsedCard, trigger); Triggers.Add(Sha.PlayerNumberOfShaCheck, trigger2); Triggers.Add(Sha.PlayerShaTargetValidation, trigger3); IsEnforced = true; }
public KuiWei() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { int count = GetWeaponCount() + 2; Game.CurrentGame.DrawCards(p, count); p.IsImprisoned = !p.IsImprisoned; p[KuiWeiStatus] = 1; }, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.End], trigger); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(p[KuiWeiStatus] == 1); }, KuiWeiDiscard, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.Draw], trigger2); }
public ShenJi() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(p.Weapon() == null); }, (p, e, a) => { ShaEventArgs args = (ShaEventArgs)a; if (args.TargetApproval[0] == false) { return; } int moreTargetsToApprove = 2; int i = 1; while (moreTargetsToApprove > 0 && i < args.TargetApproval.Count) { if (args.TargetApproval[i] == true) { i++; continue; } args.TargetApproval[i] = true; i++; moreTargetsToApprove--; } }, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false, AskForConfirmation = false, Priority = SkillPriority.ShenJi }; Triggers.Add(Sha.PlayerShaTargetValidation, trigger); IsAutoInvoked = null; }
public ZhiJi() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return p[ZhiJiAwaken] == 0 && Game.CurrentGame.Decks[p, DeckType.Hand].Count == 0; }, (p, e, a) => { p[ZhiJiAwaken] = 1; int answer = 0; Game.CurrentGame.UiProxies[p].AskForMultipleChoice(new MultipleChoicePrompt("ZhiJi"), new List<OptionPrompt>() { new OptionPrompt("MoPai"), new OptionPrompt("HuiFuTiLi") }, out answer); if (answer == 1) { Game.CurrentGame.RecoverHealth(p, p, 1); } else { Game.CurrentGame.DrawCards(p, 2); } Game.CurrentGame.LoseMaxHealth(p, 1); Game.CurrentGame.PlayerAcquireSkill(p, new GuanXing()); }, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.Start], trigger); IsAwakening = true; }
public WeiMu() { Triggers.Add(GameEvent.PlayerCanBeTargeted, new RelayTrigger( (p, e, a) => { return CardCategoryManager.IsCardCategory(a.Card.Type.Category, CardCategory.Tool) && a.Card.SuitColor == SuitColorType.Black; }, (p, e, a) => { if (a.Card.Place.DeckType == DeckType.DelayedTools) { NotifySkillUse(); } throw new TriggerResultException(TriggerResult.Fail); }, TriggerCondition.OwnerIsTarget )); var notify = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return a.Source != p && a.ReadonlyCard.Type is Aoe && a.ReadonlyCard.SuitColor == SuitColorType.Black; }, (p, e, a) => { }, TriggerCondition.Global ); Triggers.Add(GameEvent.PlayerUsedCard, notify); IsEnforced = true; }
public LianPo() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(Game.CurrentGame.PhasesOwner != null); }, (p, e, a) => { p[LianPoCount]++; }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { int count = p[LianPoCount]; p[LianPoCount] = 0; return(count > 0); }, (p, e, a) => { Game.CurrentGame.DoPlayer(p); }, TriggerCondition.Global ) { Priority = int.MinValue }; Triggers.Add(GameEvent.PlayerIsDead, trigger); Triggers.Add(GameEvent.PhasePostEnd, trigger2); IsAutoInvoked = true; }
public EnforcedCardTransformSkill() { Decks = new List<DeckType>(); var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return a.Card != null && Decks.Contains(a.Card.Place.DeckType) && CardVerifier(a.Card); }, (p, e, a) => { TransfromAction(p, a.Card); }, TriggerCondition.OwnerIsSource ) { IsAutoNotify = false }; Triggers.Add(GameEvent.EnforcedCardTransform, trigger); var notify = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { Card card = a.Card as Card; return card != null && Decks.Contains(card.HistoryPlace1.DeckType) && CardVerifier(Game.CurrentGame.OriginalCardSet[card.Id]); }, (p, e, a) => { Game.CurrentGame.NotificationProxy.NotifyLogEvent( new LogEvent("EnforcedCardTransform", Owner, Game.CurrentGame.OriginalCardSet[(a.Card as Card).Id], a.Card), new List<Player> { Owner }, true, false ); }, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.PlayerUsedCard, notify); IsEnforced = true; }
public WanSha() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(Game.CurrentGame.CurrentPlayer == Owner && a.Source != Owner && Game.CurrentGame.DyingPlayers.Count > 0 && Game.CurrentGame.DyingPlayers.Last() != a.Source && a.Card.Type is Tao); }, (p, e, a) => { throw new TriggerResultException(TriggerResult.Fail); }, TriggerCondition.Global ) { IsAutoNotify = false }; Triggers.Add(GameEvent.PlayerCanUseCard, trigger); var notify = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(Game.CurrentGame.CurrentPlayer == Owner); }, (p, e, a) => { NotifySkillUse(a.Targets); }, TriggerCondition.Global ) { IsAutoNotify = false }; Triggers.Add(GameEvent.PlayerIsAboutToDie, notify); IsEnforced = true; }
public JueCe() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { var ret = a.Cards.Any(c => c[Card.IsLastHandCard] == 1) && Game.CurrentGame.CurrentPlayer == p; if (ret) { var card = a.Cards.FirstOrDefault(c => c[Card.IsLastHandCard] == 1); if (card != null && card.HistoryPlace1.Player != null && !card.HistoryPlace1.Player.IsDead) return true; } return false; }, (p, e, a) => { var card = a.Cards.FirstOrDefault(c => c[Card.IsLastHandCard] == 1); if (card != null && card.HistoryPlace1.Player != null) Game.CurrentGame.DoDamage(p, card.HistoryPlace1.Player, 1, DamageElement.None, null, null); }, TriggerCondition.Global ) { }; Triggers.Add(GameEvent.CardsLost, trigger); IsAutoInvoked = null; }
public WangZun() { Trigger trigger = new AutoNotifyPassiveSkillTrigger ( this, (p, e, a) => { return a.Source.Role == Role.Ruler; }, (p, e, a) => { Game.CurrentGame.DrawCards(p, 1); a.Source[WangZunUsed] = 1; }, TriggerCondition.Global ); Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.BeforeStart], trigger); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { var args = a as AdjustmentEventArgs; if (a.Source[WangZunUsed] == 1) { args.AdjustmentAmount -= 1; NotifySkillUse(); } }, TriggerCondition.Global ) { IsAutoNotify = false, AskForConfirmation = false }; Triggers.Add(GameEvent.PlayerHandCardCapacityAdjustment, trigger2); IsAutoInvoked = false; }
public ShangShi() { var trigger = new AutoNotifyPassiveSkillTrigger( this, canTrigger, Run, TriggerCondition.OwnerIsTarget ) { Priority = int.MinValue }; var trigger2 = new AutoNotifyPassiveSkillTrigger( this, canTrigger, Run, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.CardsLost, trigger2); Triggers.Add(GameEvent.CardsAcquired, trigger2); Triggers.Add(GameEvent.AfterHealthChanged, trigger); Triggers.Add(GameEvent.PhaseOutEvents[TurnPhase.Discard], trigger2); Triggers.Add(GameEvent.PlayerSkillSetChanged, trigger2); IsAutoInvoked = true; }
public TianYiPassiveSkill() { TianYiResult = false; var winTrigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(p[TianYiUsed] == 1 && TianYiResult); }, (p, e, a) => { ShaEventArgs args = (ShaEventArgs)a; Trace.Assert(args != null); if (args.TargetApproval[0]) { for (int i = 1; i < args.TargetApproval.Count; i++) { if (!args.TargetApproval[i]) { args.TargetApproval[i] = true; break; } } } for (int i = 0; i < args.RangeApproval.Count; i++) { args.RangeApproval[i] = true; } }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(Sha.PlayerShaTargetValidation, winTrigger); }
public QingGangJianSkill() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return a.ReadonlyCard != null && (a.ReadonlyCard.Type is Sha); }, Run, TriggerCondition.OwnerIsSource ); Triggers.Add(GameEvent.CardUsageTargetConfirmed, trigger); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return a.ReadonlyCard != null && (a.ReadonlyCard.Type is Sha); }, (p, e, a) => { var args = a as DamageEventArgs; args.ReadonlyCard[Armor.IgnorePlayerArmor[args.Targets[0]]]--;}, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false, Priority = int.MinValue }; Triggers.Add(GameEvent.DamageInflicted, trigger2); var trigger3 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return a.ReadonlyCard != null && (a.ReadonlyCard.Type is Sha); }, (p, e, a) => { a.ReadonlyCard[Armor.IgnorePlayerArmor[a.Targets[0]]]--; }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false, Priority = int.MinValue }; Triggers.Add(ShaCancelling.PlayerShaTargetDodged, trigger3); IsEnforced = true; }
public XueHen() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(Owner[FenYong.FenYongStatus] == 1); }, Run, TriggerCondition.Global ) { IsAutoNotify = false }; Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.End], trigger); var trigger2 = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return(a.Card[XueHenSha] != 0); }, (p, e, a) => { ShaEventArgs args = a as ShaEventArgs; args.RangeApproval[0] = true; }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; Triggers.Add(Sha.PlayerShaTargetValidation, trigger2); IsEnforced = true; }
public ShangShi() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { if (e != GameEvent.AfterHealthChanged && a.Source != p) return false; if (e == GameEvent.CardsLost) { if (!a.Cards.Any(c => c.HistoryPlace1.DeckType == DeckType.Hand)) return false; } if (e == GameEvent.CardsAcquired) { if (!a.Cards.Any(c => c.Place.DeckType == DeckType.Hand)) return false; } if (e == GameEvent.AfterHealthChanged && (!a.Targets.Contains(p) || p.Health - (a as HealthChangedEventArgs).Delta < 0)) return false; return (Game.CurrentGame.CurrentPhaseEventIndex == 3 || Game.CurrentGame.CurrentPhase != TurnPhase.Discard) && p.HandCards().Count < p.LostHealth; }, (p, e, a) => { Game.CurrentGame.DrawCards(p, p.LostHealth - p.HandCards().Count); }, TriggerCondition.Global ) { Priority = int.MinValue}; Triggers.Add(GameEvent.CardsLost, trigger); Triggers.Add(GameEvent.CardsAcquired, trigger); Triggers.Add(GameEvent.AfterHealthChanged, trigger); Triggers.Add(GameEvent.PhaseOutEvents[TurnPhase.Discard], trigger); Triggers.Add(GameEvent.PlayerSkillSetChanged, trigger); IsAutoInvoked = true; }
public YanHuo() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return true; }, (p, e, a) => { int X = p.HandCards().Count + p.Equipments().Count; Player opponent = Game.CurrentGame.Players.First(pl => pl != p); Trace.Assert(opponent != null); while (X-- > 0 && opponent.HandCards().Count + opponent.Equipments().Count > 0) { List<DeckPlace> decks = new List<DeckPlace>() { new DeckPlace(opponent, DeckType.Hand), new DeckPlace(opponent, DeckType.Equipment) }; List<List<Card>> answer; if (!p.AskForCardChoice(new CardChoicePrompt("YanHuo"), decks, new List<string>() { "YanHuo" }, new List<int>() { 1 }, new RequireOneCardChoiceVerifier(true), out answer)) { answer = new List<List<Card>>(); answer.Add(Game.CurrentGame.PickDefaultCardsFrom(decks)); } Game.CurrentGame.HandleCardDiscard(opponent, answer[0]); } }, TriggerCondition.OwnerIsTarget ); Triggers.Add(GameEvent.PlayerIsDead, trigger); IsAutoInvoked = true; }
public QuanJi() { var trigger = new AutoNotifyPassiveSkillTrigger( this, (p, e, a) => { return Game.CurrentGame.Decks[p, QuanDeck].Count > 0; }, (p, e, a) => { var args = a as AdjustmentEventArgs; args.AdjustmentAmount += Game.CurrentGame.Decks[p, QuanDeck].Count; }, TriggerCondition.OwnerIsSource ) { AskForConfirmation = false, IsAutoNotify = false }; var trigger2 = new AutoNotifyPassiveSkillTrigger( this, Run, TriggerCondition.OwnerIsTarget ) { AskForConfirmation = false }; Triggers.Add(GameEvent.PlayerHandCardCapacityAdjustment, trigger); Triggers.Add(GameEvent.AfterDamageInflicted, trigger2); IsAutoInvoked = true; ExtraCardsDeck = QuanDeck; }