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(); }
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()); }