Exemplo n.º 1
0
        public void OnCreateGame(KettleCreateGame createGame)
        {
            var player1     = createGame.Players[0];
            var player2     = createGame.Players[1];
            var hero1       = player1.Hero;
            var hero2       = player2.Hero;
            var hero1Class  = Cards.FromId(hero1).Class;
            var hero2Class  = Cards.FromId(hero2).Class;
            var player1Deck = player1.Cards.Select(Cards.FromId).ToList();
            var player2Deck = player2.Cards.Select(Cards.FromId).ToList();

            Console.WriteLine("creating game");
            Game = new Game(new GameConfig
            {
                Player1HeroClass = hero1Class,
                Player1Deck      = player1Deck,
                Player2HeroClass = hero2Class,
                Player2Deck      = player2Deck,
                SkipMulligan     = false,
            });

            // Start the game and send the following powerhistory to the client
            Game.StartGame();
            ShowLog(Game, LogLevel.VERBOSE);

            SendPowerHistory(Game.PowerHistory.Last);
            SendChoicesOrOptions();
        }
Exemplo n.º 2
0
        public void OnCreateGame(KettleCreateGame createGame)
        {
            Console.WriteLine("OnCreateGame");

            Adapter.SendMessage(CreateGameTest());
            Adapter.SendMessage(CreateFullEntities().Select(p => p as KettlePayload).ToList());
            Adapter.SendMessage(TagChangeTest(1, (int)GameTag.STATE, (int)State.RUNNING));
            Adapter.SendMessage(TagChangeTest(2, (int)GameTag.PLAYSTATE, (int)PlayState.PLAYING));
            Adapter.SendMessage(TagChangeTest(3, (int)GameTag.PLAYSTATE, (int)PlayState.PLAYING));

            Adapter.SendMessage(BlockStartTest("", -1, 1, 0, (int)BlockType.TRIGGER));

            Adapter.SendMessage(TagChangeTest(3, (int)GameTag.CURRENT_PLAYER, 1));
            Adapter.SendMessage(TagChangeTest(3, (int)GameTag.FIRST_PLAYER, 1));
            Adapter.SendMessage(TagChangeTest(1, (int)GameTag.TURN, 1));
            Adapter.SendMessage(TagChangeTest(2, 467, 4));
            Adapter.SendMessage(ShowEntityTest(20, "EX1_016", new Dictionary <int, int>
            {
                [(int)GameTag.PREMIUM]       = 0,
                [(int)GameTag.DAMAGE]        = 0,
                [(int)GameTag.HEALTH]        = 5,
                [(int)GameTag.ATK]           = 5,
                [(int)GameTag.COST]          = 6,
                [(int)GameTag.ZONE]          = (int)Zone.HAND,
                [(int)GameTag.CONTROLLER]    = 1,
                [(int)GameTag.ENTITY_ID]     = 20,
                [(int)GameTag.ELITE]         = 1,
                [(int)GameTag.SILENCED]      = 0,
                [(int)GameTag.WINDFURY]      = 0,
                [(int)GameTag.TAUNT]         = 0,
                [(int)GameTag.STEALTH]       = 0,
                [(int)GameTag.DIVINE_SHIELD] = 0,
                [(int)GameTag.CHARGE]        = 0,
                //[(int)GameTag.FACTION] = (int)Faction.NEUTRAL,
                [(int)GameTag.CARDTYPE]                    = (int)CardType.MINION,
                [(int)GameTag.RARITY]                      = (int)Rarity.LEGENDARY,
                [(int)GameTag.FROZEN]                      = 0,
                [(int)GameTag.ZONE_POSITION]               = 0,
                [(int)GameTag.NUM_ATTACKS_THIS_TURN]       = 0,
                [(int)GameTag.FORCED_PLAY]                 = 0,
                [(int)GameTag.TO_BE_DESTROYED]             = 0,
                [(int)GameTag.START_WITH_1_HEALTH]         = 0,
                [(int)GameTag.CUSTOM_KEYWORD_EFFECT]       = 0,
                [(int)GameTag.EXTRA_ATTACKS_THIS_TURN]     = 0,
                [(int)GameTag.TAG_LAST_KNOWN_COST_IN_HAND] = 6,
                [479] = 5,
            }));

            Adapter.SendMessage(TagChangeTest(20, (int)GameTag.ZONE_POSITION, 1));
            Adapter.SendMessage(TagChangeTest(2, (int)GameTag.NUM_CARDS_DRAWN_THIS_TURN, 1));
            Adapter.SendMessage(TagChangeTest(2, 467, 3));
            Adapter.SendMessage(ShowEntityTest(15, "EX1_606", new Dictionary <int, int>
            {
                [(int)GameTag.PREMIUM] = 0,
                [(int)GameTag.DAMAGE]  = 0,
                //[(int)GameTag.HEALTH] = 3,
                //[(int)GameTag.ATK] = 4,
                [(int)GameTag.COST]                        = 3,
                [(int)GameTag.ZONE]                        = (int)Zone.HAND,
                [(int)GameTag.CONTROLLER]                  = 1,
                [(int)GameTag.ENTITY_ID]                   = 15,
                [(int)GameTag.SILENCED]                    = 0,
                [(int)GameTag.WINDFURY]                    = 0,
                [(int)GameTag.TAUNT]                       = 0,
                [(int)GameTag.STEALTH]                     = 0,
                [(int)GameTag.DIVINE_SHIELD]               = 0,
                [(int)GameTag.CHARGE]                      = 0,
                [(int)GameTag.FACTION]                     = (int)Faction.NEUTRAL,
                [(int)GameTag.CARDTYPE]                    = (int)CardType.SPELL,
                [(int)GameTag.RARITY]                      = (int)Rarity.COMMON,
                [(int)GameTag.FROZEN]                      = 0,
                [(int)GameTag.ZONE_POSITION]               = 0,
                [(int)GameTag.NUM_ATTACKS_THIS_TURN]       = 0,
                [(int)GameTag.FORCED_PLAY]                 = 0,
                [(int)GameTag.TO_BE_DESTROYED]             = 0,
                [(int)GameTag.START_WITH_1_HEALTH]         = 0,
                [(int)GameTag.CUSTOM_KEYWORD_EFFECT]       = 0,
                [(int)GameTag.EXTRA_ATTACKS_THIS_TURN]     = 0,
                [(int)GameTag.TAG_LAST_KNOWN_COST_IN_HAND] = 3,
                [479] = 0,
            }));

            Adapter.SendMessage(TagChangeTest(15, (int)GameTag.ZONE_POSITION, 2));
            Adapter.SendMessage(TagChangeTest(2, (int)GameTag.NUM_CARDS_DRAWN_THIS_TURN, 2));
            TagChangeTest(2, 467, 2);
            Adapter.SendMessage(ShowEntityTest(18, "EX1_410", new Dictionary <int, int>
            {
                [(int)GameTag.PREMIUM] = 0,
                [(int)GameTag.DAMAGE]  = 0,
                //[(int)GameTag.HEALTH] = 3,
                //[(int)GameTag.ATK] = 4,
                [(int)GameTag.COST]                        = 1,
                [(int)GameTag.ZONE]                        = (int)Zone.HAND,
                [(int)GameTag.CONTROLLER]                  = 1,
                [(int)GameTag.ENTITY_ID]                   = 18,
                [(int)GameTag.SILENCED]                    = 0,
                [(int)GameTag.WINDFURY]                    = 0,
                [(int)GameTag.TAUNT]                       = 0,
                [(int)GameTag.STEALTH]                     = 0,
                [(int)GameTag.DIVINE_SHIELD]               = 0,
                [(int)GameTag.CHARGE]                      = 0,
                [(int)GameTag.FACTION]                     = (int)Faction.NEUTRAL,
                [(int)GameTag.CARDTYPE]                    = (int)CardType.SPELL,
                [(int)GameTag.RARITY]                      = (int)Rarity.EPIC,
                [(int)GameTag.FROZEN]                      = 0,
                [(int)GameTag.ZONE_POSITION]               = 0,
                [(int)GameTag.NUM_ATTACKS_THIS_TURN]       = 0,
                [(int)GameTag.FORCED_PLAY]                 = 0,
                [(int)GameTag.TO_BE_DESTROYED]             = 0,
                [(int)GameTag.AFFECTED_BY_SPELL_POWER]     = 1,
                [(int)GameTag.START_WITH_1_HEALTH]         = 0,
                [(int)GameTag.CUSTOM_KEYWORD_EFFECT]       = 0,
                [(int)GameTag.EXTRA_ATTACKS_THIS_TURN]     = 0,
                [(int)GameTag.TAG_LAST_KNOWN_COST_IN_HAND] = 1,
                [479] = 0,
            }));
            Adapter.SendMessage(TagChangeTest(18, (int)GameTag.ZONE_POSITION, 3));
            Adapter.SendMessage(TagChangeTest(2, (int)GameTag.NUM_CARDS_DRAWN_THIS_TURN, 3));
            Adapter.SendMessage(TagChangeTest(2, 467, 0));

            Adapter.SendMessage(ShowEntityTest(32, "BRM_015", new Dictionary <int, int>
            {
                [(int)GameTag.PREMIUM] = 0,
                [(int)GameTag.DAMAGE]  = 0,
                //[(int)GameTag.HEALTH] = 3,
                //[(int)GameTag.ATK] = 4,
                [(int)GameTag.COST]          = 2,
                [(int)GameTag.ZONE]          = (int)Zone.HAND,
                [(int)GameTag.CONTROLLER]    = 1,
                [(int)GameTag.ENTITY_ID]     = 32,
                [(int)GameTag.SILENCED]      = 0,
                [(int)GameTag.WINDFURY]      = 0,
                [(int)GameTag.TAUNT]         = 0,
                [(int)GameTag.STEALTH]       = 0,
                [(int)GameTag.DIVINE_SHIELD] = 0,
                [(int)GameTag.CHARGE]        = 0,
                //[(int)GameTag.FACTION] = (int)Faction.NEUTRAL,
                [(int)GameTag.CARDTYPE]                    = (int)CardType.SPELL,
                [(int)GameTag.RARITY]                      = (int)Rarity.RARE,
                [(int)GameTag.FROZEN]                      = 0,
                [(int)GameTag.ZONE_POSITION]               = 0,
                [(int)GameTag.NUM_ATTACKS_THIS_TURN]       = 0,
                [(int)GameTag.FORCED_PLAY]                 = 0,
                [(int)GameTag.TO_BE_DESTROYED]             = 0,
                [(int)GameTag.START_WITH_1_HEALTH]         = 0,
                [(int)GameTag.CUSTOM_KEYWORD_EFFECT]       = 0,
                [(int)GameTag.EXTRA_ATTACKS_THIS_TURN]     = 0,
                [(int)GameTag.TAG_LAST_KNOWN_COST_IN_HAND] = 2,
                [479] = 0,
            }));
            Adapter.SendMessage(TagChangeTest(32, (int)GameTag.ZONE_POSITION, 3));
            Adapter.SendMessage(TagChangeTest(2, (int)GameTag.NUM_CARDS_DRAWN_THIS_TURN, 4));
            Adapter.SendMessage(TagChangeTest(2, 467, 0));
            Adapter.SendMessage(TagChangeTest(2, (int)GameTag.NUM_TURNS_LEFT, 1));

            Adapter.SendMessage(FullEntityCreate(68, "GAME_005", new Dictionary <int, int>
            {
                [(int)GameTag.ZONE]          = (int)Zone.HAND,
                [(int)GameTag.CONTROLLER]    = 1,
                [(int)GameTag.ENTITY_ID]     = 68,
                [(int)GameTag.CARDTYPE]      = (int)CardType.SPELL,
                [(int)GameTag.ZONE_POSITION] = 5,
                [(int)GameTag.CREATOR]       = 1,
            }));

            Adapter.SendMessage(TagChangeTest(3, 467, 3));

            Adapter.SendMessage(ShowEntityTest(57, "EX1_097", new Dictionary <int, int>
            {
                [(int)GameTag.PREMIUM]                     = 0,
                [(int)GameTag.DAMAGE]                      = 0,
                [(int)GameTag.HEALTH]                      = 4,
                [(int)GameTag.ATK]                         = 4,
                [(int)GameTag.COST]                        = 5,
                [(int)GameTag.ZONE]                        = (int)Zone.HAND,
                [(int)GameTag.CONTROLLER]                  = 2,
                [(int)GameTag.ENTITY_ID]                   = 57,
                [(int)GameTag.SILENCED]                    = 0,
                [(int)GameTag.WINDFURY]                    = 0,
                [(int)GameTag.TAUNT]                       = 1,
                [(int)GameTag.STEALTH]                     = 0,
                [(int)GameTag.DIVINE_SHIELD]               = 0,
                [(int)GameTag.CHARGE]                      = 0,
                [(int)GameTag.FACTION]                     = (int)Faction.NEUTRAL,
                [(int)GameTag.CARDTYPE]                    = (int)CardType.MINION,
                [(int)GameTag.RARITY]                      = (int)Rarity.RARE,
                [(int)GameTag.DEATHRATTLE]                 = 1,
                [(int)GameTag.FROZEN]                      = 0,
                [(int)GameTag.ZONE_POSITION]               = 0,
                [(int)GameTag.NUM_ATTACKS_THIS_TURN]       = 0,
                [(int)GameTag.FORCED_PLAY]                 = 0,
                [(int)GameTag.TO_BE_DESTROYED]             = 0,
                [(int)GameTag.START_WITH_1_HEALTH]         = 0,
                [(int)GameTag.CUSTOM_KEYWORD_EFFECT]       = 0,
                [(int)GameTag.EXTRA_ATTACKS_THIS_TURN]     = 0,
                [(int)GameTag.TAG_LAST_KNOWN_COST_IN_HAND] = 5,
                [479] = 4,
            }));
            Adapter.SendMessage(TagChangeTest(57, (int)GameTag.ZONE_POSITION, 1));
            Adapter.SendMessage(TagChangeTest(3, (int)GameTag.NUM_CARDS_DRAWN_THIS_TURN, 1));
            Adapter.SendMessage(TagChangeTest(3, 467, 2));

            Adapter.SendMessage(ShowEntityTest(34, "CS2_187", new Dictionary <int, int>
            {
                [(int)GameTag.PREMIUM]                     = 0,
                [(int)GameTag.DAMAGE]                      = 0,
                [(int)GameTag.HEALTH]                      = 4,
                [(int)GameTag.ATK]                         = 5,
                [(int)GameTag.COST]                        = 5,
                [(int)GameTag.ZONE]                        = (int)Zone.HAND,
                [(int)GameTag.CONTROLLER]                  = 2,
                [(int)GameTag.ENTITY_ID]                   = 34,
                [(int)GameTag.SILENCED]                    = 0,
                [(int)GameTag.WINDFURY]                    = 0,
                [(int)GameTag.TAUNT]                       = 1,
                [(int)GameTag.STEALTH]                     = 0,
                [(int)GameTag.DIVINE_SHIELD]               = 0,
                [(int)GameTag.CHARGE]                      = 0,
                [(int)GameTag.FACTION]                     = (int)Faction.HORDE,
                [(int)GameTag.CARDTYPE]                    = (int)CardType.MINION,
                [(int)GameTag.RARITY]                      = (int)Rarity.COMMON,
                [(int)GameTag.FROZEN]                      = 0,
                [(int)GameTag.ZONE_POSITION]               = 0,
                [(int)GameTag.NUM_ATTACKS_THIS_TURN]       = 0,
                [(int)GameTag.FORCED_PLAY]                 = 0,
                [(int)GameTag.TO_BE_DESTROYED]             = 0,
                [(int)GameTag.START_WITH_1_HEALTH]         = 0,
                [(int)GameTag.CUSTOM_KEYWORD_EFFECT]       = 0,
                [(int)GameTag.EXTRA_ATTACKS_THIS_TURN]     = 0,
                [(int)GameTag.TAG_LAST_KNOWN_COST_IN_HAND] = 5,
                [479] = 5,
            }));
            Adapter.SendMessage(TagChangeTest(34, (int)GameTag.ZONE_POSITION, 2));
            Adapter.SendMessage(TagChangeTest(3, (int)GameTag.NUM_CARDS_DRAWN_THIS_TURN, 2));
            Adapter.SendMessage(TagChangeTest(3, 467, 1));

            Adapter.SendMessage(ShowEntityTest(46, "CS2_162", new Dictionary <int, int>
            {
                [(int)GameTag.PREMIUM]                     = 0,
                [(int)GameTag.DAMAGE]                      = 0,
                [(int)GameTag.HEALTH]                      = 5,
                [(int)GameTag.ATK]                         = 6,
                [(int)GameTag.COST]                        = 6,
                [(int)GameTag.ZONE]                        = (int)Zone.HAND,
                [(int)GameTag.CONTROLLER]                  = 2,
                [(int)GameTag.ENTITY_ID]                   = 46,
                [(int)GameTag.SILENCED]                    = 0,
                [(int)GameTag.WINDFURY]                    = 0,
                [(int)GameTag.TAUNT]                       = 1,
                [(int)GameTag.STEALTH]                     = 0,
                [(int)GameTag.DIVINE_SHIELD]               = 0,
                [(int)GameTag.CHARGE]                      = 0,
                [(int)GameTag.FACTION]                     = (int)Faction.ALLIANCE,
                [(int)GameTag.CARDTYPE]                    = (int)CardType.MINION,
                [(int)GameTag.RARITY]                      = (int)Rarity.COMMON,
                [(int)GameTag.FROZEN]                      = 0,
                [(int)GameTag.ZONE_POSITION]               = 0,
                [(int)GameTag.NUM_ATTACKS_THIS_TURN]       = 0,
                [(int)GameTag.FORCED_PLAY]                 = 0,
                [(int)GameTag.TO_BE_DESTROYED]             = 0,
                [(int)GameTag.START_WITH_1_HEALTH]         = 0,
                [(int)GameTag.CUSTOM_KEYWORD_EFFECT]       = 0,
                [(int)GameTag.EXTRA_ATTACKS_THIS_TURN]     = 0,
                [(int)GameTag.TAG_LAST_KNOWN_COST_IN_HAND] = 6,
                [479] = 6,
            }));
            Adapter.SendMessage(TagChangeTest(46, (int)GameTag.ZONE_POSITION, 3));
            Adapter.SendMessage(TagChangeTest(3, (int)GameTag.NUM_CARDS_DRAWN_THIS_TURN, 3));
            Adapter.SendMessage(TagChangeTest(3, 467, 0));

            Adapter.SendMessage(TagChangeTest(3, (int)GameTag.NUM_TURNS_LEFT, 1));

            Adapter.SendMessage(TagChangeTest(2, (int)GameTag.TIMEOUT, 75));
            Adapter.SendMessage(TagChangeTest(3, (int)GameTag.TIMEOUT, 75));
            Adapter.SendMessage(TagChangeTest(1, 10, 85));
            Adapter.SendMessage(TagChangeTest(1, (int)GameTag.NEXT_STEP, (int)Step.BEGIN_MULLIGAN));

            Adapter.SendMessage(BlockEndTest());

            Adapter.SendMessage(TagChangeTest(1, (int)GameTag.STEP, (int)Step.BEGIN_MULLIGAN));

            Adapter.SendMessage(BlockStartTest("", -1, 1, 0, (int)BlockType.TRIGGER));

            Adapter.SendMessage(TagChangeTest(2, (int)GameTag.MULLIGAN_STATE, (int)Mulligan.INPUT));
            Adapter.SendMessage(EntityChoicesTest((int)ChoiceType.MULLIGAN, 5, 0, 1, new List <int> {
                20, 15, 18, 32, 68
            }, 1, 1));

            Adapter.SendMessage(TagChangeTest(3, (int)GameTag.MULLIGAN_STATE, (int)Mulligan.INPUT));
            Adapter.SendMessage(EntityChoicesTest((int)ChoiceType.MULLIGAN, 3, 0, 1, new List <int> {
                57, 34, 46
            }, 2, 2));

            Adapter.SendMessage(BlockEndTest());
        }