Inheritance: Sanguosha.Core.Cards.DeckType
Example #1
0
 protected void Draw(Player player, GameEvent gameEvent, GameEventArgs eventArgs, List<Card> cards, List<Player> players)
 {
     Game.CurrentGame.SortByOrderOfComputation(Game.CurrentGame.CurrentPlayer, players);
     StagingDeckType QiaoBianDeck = new StagingDeckType("QiaoBian");
     CardsMovement move = new CardsMovement();
     move.Helper.IsFakedMove = true;
     foreach (Player p in players)
     {
         if (p.HandCards().Count == 0) continue;
         List<List<Card>> answer;
         var places = new List<DeckPlace>() { new DeckPlace(p, DeckType.Hand) };
         if (!Game.CurrentGame.UiProxies[Owner].AskForCardChoice(new CardChoicePrompt("QiaoBian", Owner), places,
             new List<string>() { "QiaoBian" }, new List<int>() { 1 }, new RequireOneCardChoiceVerifier(true), out answer))
         {
             answer = new List<List<Card>>();
             answer.Add(Game.CurrentGame.PickDefaultCardsFrom(places));
         }
         move.Cards = answer[0];
         move.To = new DeckPlace(p, QiaoBianDeck);
         Game.CurrentGame.MoveCards(move, false, Core.Utils.GameDelayTypes.None);
         Game.CurrentGame.PlayerLostCard(p, answer[0]);
     }
     move.Cards.Clear();
     move.Helper.IsFakedMove = false;
     move.To = new DeckPlace(Owner, DeckType.Hand);
     foreach (Player p in players)
     {
         move.Cards.AddRange(Game.CurrentGame.Decks[p, QiaoBianDeck]);
     }
     cards = new List<Card>(move.Cards);
     Game.CurrentGame.MoveCards(move);
     Game.CurrentGame.PlayerAcquiredCard(Owner, cards);
     Game.CurrentGame.NotificationProxy.NotifyActionComplete();
 }
Example #2
0
        public override bool Commit(GameEventArgs arg)
        {
            Owner[DiMengUsed] = 1;
            List<Card> cards = arg.Cards;
            if (cards.Count > 0)
            {
                Game.CurrentGame.HandleCardDiscard(Owner, cards);
            }
            Player src1 = arg.Targets[0];
            Player src2 = arg.Targets[1];
            StagingDeckType DiMengDeck = new StagingDeckType("DiMeng");
            Game.CurrentGame.EnterAtomicContext();
            CardsMovement move = new CardsMovement();
            move.Helper.IsFakedMove = true;
            cards = new List<Card>(Game.CurrentGame.Decks[src1, DeckType.Hand]);
            move.Cards = new List<Card>(cards);
            move.To = new DeckPlace(src1, DiMengDeck);
            Game.CurrentGame.MoveCards(move);
            Game.CurrentGame.PlayerLostCard(src1, cards);

            cards = new List<Card>(Game.CurrentGame.Decks[src2, DeckType.Hand]);
            move.Cards = new List<Card>(cards);
            move.To = new DeckPlace(src2, DiMengDeck);
            Game.CurrentGame.MoveCards(move);
            Game.CurrentGame.PlayerLostCard(src2, cards);
            Game.CurrentGame.ExitAtomicContext();

            move.Helper.IsFakedMove = false;
            Game.CurrentGame.SyncImmutableCards(src1, Game.CurrentGame.Decks[src2, DiMengDeck]);
            Game.CurrentGame.SyncImmutableCards(src2, Game.CurrentGame.Decks[src1, DiMengDeck]);
            Game.CurrentGame.EnterAtomicContext();
            cards = new List<Card>(Game.CurrentGame.Decks[src2, DiMengDeck]);
            move.Cards = new List<Card>(cards);
            move.To = new DeckPlace(src1, DeckType.Hand);
            Game.CurrentGame.MoveCards(move);
            Game.CurrentGame.PlayerAcquiredCard(src1, cards);

            cards = new List<Card>(Game.CurrentGame.Decks[src1, DiMengDeck]);
            move.Cards = new List<Card>(cards);
            move.To = new DeckPlace(src2, DeckType.Hand);
            Game.CurrentGame.MoveCards(move);
            Game.CurrentGame.PlayerAcquiredCard(src2, cards);
            Game.CurrentGame.ExitAtomicContext();
            return true;
        }
Example #3
0
File: TuXi.cs Project: kingling/sgs
 void GetTheirCards(Player Owner, GameEvent gameEvent, GameEventArgs eventArgs)
 {
     ISkill skill;
     List<Card> cards;
     List<Player> players;
     if (Game.CurrentGame.UiProxies[Owner].AskForCardUsage(new CardUsagePrompt("TuXi"), new TuXiVerifier(), out skill, out cards, out players))
     {
         Game.CurrentGame.SortByOrderOfComputation(Game.CurrentGame.CurrentPlayer, players);
         NotifySkillUse(players);
         StagingDeckType TuXiDeck = new StagingDeckType("TiXi");
         CardsMovement move = new CardsMovement();
         move.Helper.IsFakedMove = true;
         foreach (Player p in players)
         {
             if (p.HandCards().Count == 0) continue;
             List<List<Card>> answer;
             if (!Game.CurrentGame.UiProxies[Owner].AskForCardChoice(new CardChoicePrompt("TuXi"), new List<DeckPlace>() { new DeckPlace(p, DeckType.Hand) },
                 new List<string>() { "TuXi" }, new List<int>() { 1 }, new RequireOneCardChoiceVerifier(true), out answer))
             {
                 answer = new List<List<Card>>();
                 answer.Add(new List<Card>());
                 answer[0].Add(Game.CurrentGame.Decks[p, DeckType.Hand][0]);
             }
             move.Cards = answer[0];
             move.To = new DeckPlace(p, TuXiDeck);
             Game.CurrentGame.MoveCards(move, false, Core.Utils.GameDelayTypes.None);
             Game.CurrentGame.PlayerLostCard(p, answer[0]);
         }
         move.Cards.Clear();
         move.Helper.IsFakedMove = false;
         move.To = new DeckPlace(Owner, DeckType.Hand);
         foreach (Player p in players)
         {
             move.Cards.AddRange(Game.CurrentGame.Decks[p, TuXiDeck]);
         }
         cards = new List<Card>(move.Cards);
         Game.CurrentGame.MoveCards(move);
         Game.CurrentGame.PlayerAcquiredCard(Owner, cards);
         Game.CurrentGame.CurrentPhaseEventIndex++;
         Game.CurrentGame.NotificationProxy.NotifyActionComplete();
         throw new TriggerResultException(TriggerResult.End);
     }
 }
Example #4
0
 void GetTheirCards(Player Owner, GameEvent gameEvent, GameEventArgs eventArgs)
 {
     ISkill skill;
     List<Card> cards;
     List<Player> players;
     if (Game.CurrentGame.UiProxies[Owner].AskForCardUsage(new CardUsagePrompt("XianSi"), new XianSiVerifier(), out skill, out cards, out players))
     {
         Game.CurrentGame.SortByOrderOfComputation(Game.CurrentGame.CurrentPlayer, players);
         NotifySkillUse(players);
         StagingDeckType XianSiTempDeck = new StagingDeckType("XianSiTemp");
         CardsMovement move = new CardsMovement();
         move.Helper.IsFakedMove = true;
         foreach (Player p in players)
         {
             if (p.HandCards().Count + p.Equipments().Count + p.DelayedTools().Count == 0) continue;
             List<List<Card>> answer;
             var deckplaces = new List<DeckPlace>() { new DeckPlace(p, DeckType.Hand), new DeckPlace(p, DeckType.Equipment), new DeckPlace(p, DeckType.DelayedTools) };
             if (!Game.CurrentGame.UiProxies[Owner].AskForCardChoice(new CardChoicePrompt("XianSi", p), deckplaces,
                 new List<string>() { "XianSi" }, new List<int>() { 1 }, new RequireOneCardChoiceVerifier(true), out answer))
             {
                 answer = new List<List<Card>>();
                 answer.Add(Game.CurrentGame.PickDefaultCardsFrom(deckplaces));
             }
             move.Cards = answer[0];
             move.To = new DeckPlace(p, XianSiTempDeck);
             Game.CurrentGame.MoveCards(move, false, Core.Utils.GameDelays.None);
             Game.CurrentGame.PlayerLostCard(p, answer[0]);
         }
         move.Cards.Clear();
         move.Helper.IsFakedMove = false;
         move.To = new DeckPlace(Owner, NiDeck);
         foreach (Player p in players)
         {
             move.Cards.AddRange(Game.CurrentGame.Decks[p, XianSiTempDeck]);
         }
         Game.CurrentGame.SyncImmutableCardsAll(move.Cards);
         cards = new List<Card>(move.Cards);
         Game.CurrentGame.MoveCards(move);
         Game.CurrentGame.NotificationProxy.NotifyActionComplete();
         throw new TriggerResultException(TriggerResult.End);
     }
 }
Example #5
0
        public override bool Commit(GameEventArgs arg)
        {
            Owner[GanLuUsed] = 1;
            List<Card> cards;
            Player src1 = arg.Targets[0];
            Player src2 = arg.Targets[1];
            StagingDeckType GanLuDeck = new StagingDeckType("GanLu");
            Game.CurrentGame.EnterAtomicContext();
            CardsMovement move = new CardsMovement();
            move.Helper.IsFakedMove = true;
            cards = new List<Card>(src1.Equipments());
            move.Cards = new List<Card>(cards);
            move.To = new DeckPlace(src1, GanLuDeck);
            Game.CurrentGame.MoveCards(move);
            Game.CurrentGame.PlayerLostCard(src1, cards);

            cards = new List<Card>(src2.Equipments());
            move.Cards = new List<Card>(cards);
            move.To = new DeckPlace(src2, GanLuDeck);
            Game.CurrentGame.MoveCards(move);
            Game.CurrentGame.PlayerLostCard(src2, cards);
            Game.CurrentGame.ExitAtomicContext();

            Game.CurrentGame.EnterAtomicContext();
            move.Helper.IsFakedMove = false;
            cards = new List<Card>(Game.CurrentGame.Decks[src2, GanLuDeck]);
            move.Cards = new List<Card>(cards);
            move.To = new DeckPlace(src1, DeckType.Equipment);
            Game.CurrentGame.MoveCards(move);
            Game.CurrentGame.PlayerAcquiredCard(src1, cards);

            cards = new List<Card>(Game.CurrentGame.Decks[src1, GanLuDeck]);
            move.Cards = new List<Card>(cards);
            move.To = new DeckPlace(src2, DeckType.Equipment);
            Game.CurrentGame.MoveCards(move);
            Game.CurrentGame.PlayerAcquiredCard(src2, cards);
            Game.CurrentGame.ExitAtomicContext();
            return true;
        }