void Run(Player owner, GameEvent gameEvent, GameEventArgs eventArgs) { DeckType FuHunDeck = new DeckType("FuHun"); CardsMovement move = new CardsMovement(); move.Cards = new List<Card>(); int toDraw = 2; for (int i = 0; i < toDraw; i++) { Game.CurrentGame.SyncImmutableCardAll(Game.CurrentGame.PeekCard(0)); Card c = Game.CurrentGame.DrawCard(); c.Log.SkillAction = this; c.Log.Source = owner; move.Cards.Add(c); Game.CurrentGame.NotificationProxy.NotifyShowCard(null, c); } move.To = new DeckPlace(null, FuHunDeck); var result = from c in move.Cards select c.SuitColor; bool success = result.Distinct().Count() == toDraw; if (success) FuHunEffect = 0; else FuHunEffect = 1; NotifySkillUse(); Game.CurrentGame.MoveCards(move, false, Core.Utils.GameDelayTypes.Draw); Game.CurrentGame.HandleCardTransferToHand(null, owner, Game.CurrentGame.Decks[null, FuHunDeck]); if (success) { Trigger tri = new RemoveShengPao(owner, fhWuSheng, fhPaoXiao); Game.CurrentGame.PlayerAcquireAdditionalSkill(owner, fhWuSheng, HeroTag); Game.CurrentGame.PlayerAcquireAdditionalSkill(owner, fhPaoXiao, HeroTag); Game.CurrentGame.RegisterTrigger(GameEvent.PhasePostEnd, tri); } Game.CurrentGame.CurrentPhaseEventIndex++; throw new TriggerResultException(TriggerResult.End); }
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 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); }