Inheritance: Sanguosha.Core.Cards.DeckType
コード例 #1
0
ファイル: BuQu.cs プロジェクト: pxoylngx/sgs
 public BuQu()
 {
     var trigger = new AutoNotifyPassiveSkillTrigger(
         this,
         (p, e, a) =>
         {
             DeckType bq = new PrivateDeckType("BuQu", true);
             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);
     IsAutoInvoked = true;
 }
コード例 #2
0
ファイル: BuQu.cs プロジェクト: pxoylngx/sgs
 protected void Run(Player Owner, GameEvent gameEvent, GameEventArgs eventArgs)
 {
     DeckType bq = new PrivateDeckType("BuQu", true);
     if (1 - Owner.Health > Game.CurrentGame.Decks[Owner, bq].Count)
     {
         int toDraw = 1 - Owner.Health - Game.CurrentGame.Decks[Owner, bq].Count;
         while (toDraw-- > 0)
         {
             Game.CurrentGame.SyncImmutableCardAll(Game.CurrentGame.PeekCard(0));
             Card c1 = Game.CurrentGame.DrawCard();
             CardsMovement move = new CardsMovement();
             move.Cards = new List<Card>() { c1 };
             move.To = new DeckPlace(Owner, bq);
             Game.CurrentGame.MoveCards(move);
         }
     }
     else if (1 + Math.Max(0, -Owner.Health) < Game.CurrentGame.Decks[Owner, bq].Count)
     {
         int toDraw = Game.CurrentGame.Decks[Owner, bq].Count - Math.Max(0, -Owner.Health) - 1;
         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);
         }
     }
     if (Owner.Health > 0) return;
     if (Owner.Health <= 0)
     {
         Dictionary<int, bool> death = new Dictionary<int, bool>();
         foreach (Card c in Game.CurrentGame.Decks[Owner, bq])
         {
             if (death.ContainsKey(c.Rank))
             {
                 return;
             }
             death.Add(c.Rank, true);
         }
         if (Game.CurrentGame.IsDying.Contains(Owner))
         {
             Stack<Player> backup = new Stack<Player>();
             while (true)
             {
                 var t = Game.CurrentGame.IsDying.Pop();
                 if (t == Owner) break;
                 backup.Push(t);
             }
             while (backup.Count > 0)
             {
                 Game.CurrentGame.IsDying.Push(backup.Pop());
             }
         }
         throw new TriggerResultException(TriggerResult.End);
     }
 }