diff --git a/src/main/java/com/alterdekim/hearthhack/component/GameConnection.java b/src/main/java/com/alterdekim/hearthhack/component/GameConnection.java index 7255cd2..1891765 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/GameConnection.java +++ b/src/main/java/com/alterdekim/hearthhack/component/GameConnection.java @@ -2,12 +2,11 @@ package com.alterdekim.hearthhack.component; import com.alterdekim.PegasusGame; import com.alterdekim.PegasusShared; +import com.alterdekim.hearthhack.component.interfaces.GamePacketCallback; import com.alterdekim.hearthhack.game.*; import com.alterdekim.hearthhack.util.PegasusPacket; -import com.alterdekim.hearthhack.util.Util; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.security.core.parameters.P; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -22,2647 +21,2650 @@ import static com.alterdekim.PegasusGame.Option.Type.END_TURN; @Slf4j @RequiredArgsConstructor public class GameConnection extends Thread { - private final Socket client; + private final GameServer parent; + + private final Socket client; private OutputStream outToClient; - - private Long id; - + private long gameId = 0L; + private long playerId = 0L; private boolean isLoggedIn = false; - public void stopListeningAndDisconnect() { - try { - this.client.close(); - this.interrupt(); - } catch (IOException e) { - log.error(e.getMessage()); - } - } - private void processPacket( PegasusPacket packet ) throws Exception { log.info("PegasusPacket: type={}, context={}, size={}", packet.getType(), packet.getContext(), packet.getSize()); if( !isLoggedIn && packet.getType() != 168 ) stopListeningAndDisconnect(); - switch (packet.getType()) { - case 168: - PegasusGame.Handshake handshake = PegasusGame.Handshake.parseFrom((byte[]) packet.getBody()); - log.info("Handshake: {}", handshake); - // game_handle: gameId - // client_handle: userId - // password: roomPassword - GameRoom room = parent.getGamePool().getGameRoomById((long) handshake.getGameHandle()); - log.info("Handshake check: {}", room); - if( room == null || - !room.getPassword().equals(handshake.getPassword()) || - !room.getPlayers().stream().anyMatch(p -> p.getUserId().longValue() == handshake.getClientHandle()) ) { - log.error("Handshake failed!"); - return; - } - log.info("Handshake success!"); + if( packet.getType() == 168 ) { + PegasusGame.Handshake handshake = PegasusGame.Handshake.parseFrom((byte[]) packet.getBody()); + log.info("Handshake: {}", handshake); + // game_handle: gameId + // client_handle: userId + // password: roomPassword + Optional room = parent.getGamePool().getGameRoomById((long) handshake.getGameHandle()); + log.info("Handshake check: {}", room); + if( room.isEmpty() || + !room.get().getPassword().equals(handshake.getPassword()) || + !room.get().getPlayers().stream().anyMatch(p -> p.getUserId().longValue() == handshake.getClientHandle()) ) { + log.error("Handshake failed!"); + return; + } + log.info("Handshake success!"); - PegasusGame.GameSetup setup = PegasusGame.GameSetup.newBuilder() - .setBoard(2) - .setMaxFriendlyMinionsPerPlayer(7) - .setMaxSecretsPerPlayer(5) - .setKeepAliveFrequencySeconds(30) - .setDisconnectWhenStuckSeconds(500) - .build(); - PegasusPacket result = new PegasusPacket(16, 0, setup); - this.send(result); - this.isLoggedIn = true; - break; - case 1: - // GetGameState - PegasusGame.PowerHistory powerHistory = PegasusGame.PowerHistory.newBuilder() - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setCreateGame(PegasusGame.PowerHistoryCreateGame.newBuilder() - .setGameEntity(PegasusGame.Entity.newBuilder() - .setId(1) + PegasusGame.GameSetup setup = PegasusGame.GameSetup.newBuilder() + .setBoard(2) + .setMaxFriendlyMinionsPerPlayer(7) + .setMaxSecretsPerPlayer(5) + .setKeepAliveFrequencySeconds(30) + .setDisconnectWhenStuckSeconds(500) + .build(); + PegasusPacket result = new PegasusPacket(16, 0, setup); + this.send(result); + this.isLoggedIn = true; + this.gameId = (long) handshake.getGameHandle(); + this.playerId = (long) handshake.getClientHandle(); + return; + } + if( packet.getType() == 115 ) { + pong(); + return; + } + // pass to GameRoom + Optional room = this.parent.getGamePool().getGameRoomById(gameId); + room.ifPresent(gameRoom -> { + gameRoom.updateCallback(this.playerId, packet1 -> { + try { + send(packet1); + } catch (Exception e) { + log.error(e.getMessage()); + } + }); + gameRoom.getIncomeQueue().add(new IncomeGamePacket(this.playerId, packet)); + }); + //sendThings(); + } + + // TODO: abolish that thing + private void sendThings() throws Exception { + // GetGameState + PegasusGame.PowerHistory powerHistory = PegasusGame.PowerHistory.newBuilder() + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setCreateGame(PegasusGame.PowerHistoryCreateGame.newBuilder() + .setGameEntity(PegasusGame.Entity.newBuilder() + .setId(1) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.NEXT_STEP.getValue()) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.STATE.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.TURN.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARDTYPE.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(10) + .setValue(85) + ) + ) + .addPlayers(PegasusGame.Player.newBuilder() + .setId(2) + .setGameAccountId(PegasusShared.BnetId.newBuilder() + .setHi(144115198130930503L) + .setLo(78330215) + ) + .setCardBack(0) + .setEntity(PegasusGame.Entity.newBuilder() + .setId(3) .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(1) + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.NEXT_STEP.getValue()) - .setValue(4) + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.NUM_CARDS_DRAWN_THIS_TURN.getValue()) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.MAXRESOURCES.getValue()) + .setValue(10) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.TIMEOUT.getValue()) + .setValue(75) ) .addTags(PegasusGame.Tag.newBuilder() .setName(GameTag.ZONE.getValue()) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.STATE.getValue()) + .setName(GameTag.CARDTYPE.getValue()) .setValue(2) ) .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.TURN.getValue()) + .setName(GameTag.NUM_TURNS_LEFT.getValue()) .setValue(1) ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.STARTHANDSIZE.getValue()) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.MAXHANDSIZE.getValue()) + .setValue(10) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.PLAYER_ID.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.TEAM_ID.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CURRENT_PLAYER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.PLAYSTATE.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.HERO_ENTITY.getValue()) + .setValue(66) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.FIRST_PLAYER.getValue()) + .setValue(1) + ) + ) + ) + .addPlayers(PegasusGame.Player.newBuilder() + .setId(1) + .setGameAccountId(PegasusShared.BnetId.newBuilder() + .setHi(144115198130930503L) + .setLo(77500085) + ) + .setCardBack(0) + .setEntity(PegasusGame.Entity.newBuilder() + .setId(2) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.NUM_CARDS_DRAWN_THIS_TURN.getValue()) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.MAXRESOURCES.getValue()) + .setValue(10) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.TIMEOUT.getValue()) + .setValue(75) + ) .addTags(PegasusGame.Tag.newBuilder() .setName(GameTag.CARDTYPE.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.NUM_TURNS_LEFT.getValue()) .setValue(1) ) .addTags(PegasusGame.Tag.newBuilder() - .setName(10) - .setValue(85) + .setName(GameTag.STARTHANDSIZE.getValue()) + .setValue(4) ) - ) - .addPlayers(PegasusGame.Player.newBuilder() - .setId(2) - .setGameAccountId(PegasusShared.BnetId.newBuilder() - .setHi(144115198130930503L) - .setLo(78330215) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.MAXHANDSIZE.getValue()) + .setValue(10) ) - .setCardBack(0) - .setEntity(PegasusGame.Entity.newBuilder() - .setId(3) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(3) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.NUM_CARDS_DRAWN_THIS_TURN.getValue()) - .setValue(3) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.MAXRESOURCES.getValue()) - .setValue(10) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.TIMEOUT.getValue()) - .setValue(75) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARDTYPE.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.NUM_TURNS_LEFT.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.STARTHANDSIZE.getValue()) - .setValue(4) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.MAXHANDSIZE.getValue()) - .setValue(10) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.PLAYER_ID.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.TEAM_ID.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CURRENT_PLAYER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.PLAYSTATE.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.HERO_ENTITY.getValue()) - .setValue(66) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.FIRST_PLAYER.getValue()) - .setValue(1) - ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.PLAYER_ID.getValue()) + .setValue(1) ) - ) - .addPlayers(PegasusGame.Player.newBuilder() - .setId(1) - .setGameAccountId(PegasusShared.BnetId.newBuilder() - .setHi(144115198130930503L) - .setLo(77500085) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.TEAM_ID.getValue()) + .setValue(1) ) - .setCardBack(0) - .setEntity(PegasusGame.Entity.newBuilder() - .setId(2) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.NUM_CARDS_DRAWN_THIS_TURN.getValue()) - .setValue(4) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.MAXRESOURCES.getValue()) - .setValue(10) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.TIMEOUT.getValue()) - .setValue(75) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARDTYPE.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.NUM_TURNS_LEFT.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.STARTHANDSIZE.getValue()) - .setValue(4) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.MAXHANDSIZE.getValue()) - .setValue(10) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.PLAYER_ID.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.TEAM_ID.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.PLAYSTATE.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.HERO_ENTITY.getValue()) - .setValue(64) - ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.PLAYSTATE.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.HERO_ENTITY.getValue()) + .setValue(64) ) ) ) ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(34) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(34) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(35) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(35) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(36) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(36) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(37) - .setName("EX1_593") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(37) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE_POSITION.getValue()) - .setValue(3) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(3) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(321) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARD_SET.getValue()) - .setValue(TagCardSet.CORE.ordinal()) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.BATTLECRY.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.HEALTH.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ATK.getValue()) - .setValue(4) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.COST.getValue()) - .setValue(4) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARDTYPE.getValue()) - .setValue(4) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.RARITY.getValue()) - .setValue(TagRarity.FREE.ordinal()) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.FACTION.getValue()) - .setValue(TagFaction.NEUTRAL.ordinal()) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(38) - .setName("EX1_383") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(38) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE_POSITION.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(TagZone.HAND.ordinal()) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(251) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.DIVINE_SHIELD.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(321) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARD_SET.getValue()) - .setValue(TagCardSet.EXPERT1.ordinal()) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.TAUNT.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENCHANTMENT_BIRTH_VISUAL.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENCHANTMENT_IDLE_VISUAL.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.HEALTH.getValue()) - .setValue(16) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ATK.getValue()) - .setValue(3) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ELITE.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.COST.getValue()) - .setValue(3) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CLASS.getValue()) - .setValue(TagClass.PALADIN.ordinal()) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARDTYPE.getValue()) - .setValue(4) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.RARITY.getValue()) - .setValue(TagRarity.LEGENDARY.ordinal()) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.DEATHRATTLE.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.FACTION.getValue()) - .setValue(TagFaction.NEUTRAL.ordinal()) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(39) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(39) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(40) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(40) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(41) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(41) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(42) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(42) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(43) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(43) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(44) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(44) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(45) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(45) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(46) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(46) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(47) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(47) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(48) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(48) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(49) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(49) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(50) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(50) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(51) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(51) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(52) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(52) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(53) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(53) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(54) - .setName("LOEA16_9") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(54) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE_POSITION.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(3) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.COST.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENCHANTMENT_BIRTH_VISUAL.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENCHANTMENT_IDLE_VISUAL.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARDTYPE.getValue()) - .setValue(5) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARD_SET.getValue()) - .setValue(TagCardSet.LOE.ordinal()) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(55) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(55) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(56) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(56) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(57) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(57) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(58) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(58) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(59) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(59) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(60) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(60) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(61) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(61) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(62) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(62) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(63) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(63) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(4) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(4) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(5) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(5) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(6) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(6) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(7) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(7) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(8) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(8) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(9) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(9) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(10) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(10) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(11) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(11) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE_POSITION.getValue()) - .setValue(4) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(3) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(12) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(12) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(13) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(13) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(14) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(14) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(15) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(15) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(16) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(16) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(17) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(17) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE_POSITION.getValue()) - .setValue(3) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(3) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(18) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(18) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(19) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(19) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(20) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(20) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(21) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(21) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE_POSITION.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(3) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(22) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(22) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(23) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(23) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(24) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(24) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(25) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(25) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(26) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(26) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE_POSITION.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(3) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(27) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(27) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(28) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(28) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(29) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(29) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(30) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(30) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(31) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(31) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(32) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(32) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(33) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(33) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(66) - .setName("LOEA04_01") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(66) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARD_SET.getValue()) - .setValue(TagCardSet.LOE.ordinal()) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.SHOWN_HERO_POWER.getValue()) - .setValue(16231) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENCHANTMENT_BIRTH_VISUAL.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENCHANTMENT_IDLE_VISUAL.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.HEALTH.getValue()) - .setValue(30) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARDTYPE.getValue()) - .setValue(3) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(67) - .setName("CS1h_001") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CREATOR.getValue()) - .setValue(66) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(67) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(251) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARD_SET.getValue()) - .setValue(TagCardSet.CORE.ordinal()) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.COST.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CLASS.getValue()) - .setValue(TagClass.PRIEST.ordinal()) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARDTYPE.getValue()) - .setValue(10) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.RARITY.getValue()) - .setValue(TagRarity.FREE.ordinal()) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.FACTION.getValue()) - .setValue(TagFaction.NEUTRAL.ordinal()) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(64) - .setName("TB_SPT_Boss") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(64) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ATK.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.HEALTH.getValue()) - .setValue(30) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARDTYPE.getValue()) - .setValue(3) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARD_SET.getValue()) - .setValue(TagCardSet.TB.ordinal()) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.SHOWN_HERO_POWER.getValue()) - .setValue(39537) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(65) - .setName("CS1h_001") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CREATOR.getValue()) - .setValue(64) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(65) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(251) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARD_SET.getValue()) - .setValue(TagCardSet.CORE.ordinal()) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.COST.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CLASS.getValue()) - .setValue(TagClass.PRIEST.ordinal()) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARDTYPE.getValue()) - .setValue(10) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.RARITY.getValue()) - .setValue(TagRarity.FREE.ordinal()) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.FACTION.getValue()) - .setValue(TagFaction.NEUTRAL.ordinal()) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(68) - .setName("") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(68) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE_POSITION.getValue()) - .setValue(5) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ZONE.getValue()) - .setValue(3) - ) - ) - ).build(); - log.info("Packet: {}", powerHistory); - this.send(new PegasusPacket(19, 0, powerHistory.toByteArray())); - - PegasusGame.GetGameState state = PegasusGame.GetGameState.parseFrom((byte[]) packet.getBody()); - log.info("GetGameState: {}", state); - - powerHistory = PegasusGame.PowerHistory.newBuilder() - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(10) - .setValue(85) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.CARDTYPE.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.TURN.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.STATE.getValue()) - .setValue(2) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.ZONE.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.NEXT_STEP.getValue()) - .setValue(4) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.ENTITY_ID.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.STEP.getValue()) - .setValue(4) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.HERO_ENTITY.getValue()) - .setValue(64) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.PLAYSTATE.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.ZONE.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.TEAM_ID.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.PLAYER_ID.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.MAXHANDSIZE.getValue()) - .setValue(10) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.STARTHANDSIZE.getValue()) - .setValue(4) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.NUM_TURNS_LEFT.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.CARDTYPE.getValue()) - .setValue(2) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.TIMEOUT.getValue()) - .setValue(75) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.MAXRESOURCES.getValue()) - .setValue(10) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.NUM_CARDS_DRAWN_THIS_TURN.getValue()) - .setValue(4) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.ENTITY_ID.getValue()) - .setValue(2) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.CONTROLLER.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.MULLIGAN_STATE.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.FIRST_PLAYER.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.HERO_ENTITY.getValue()) - .setValue(66) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.PLAYSTATE.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.CURRENT_PLAYER.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.TEAM_ID.getValue()) - .setValue(2) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.PLAYER_ID.getValue()) - .setValue(2) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.MAXHANDSIZE.getValue()) - .setValue(10) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.STARTHANDSIZE.getValue()) - .setValue(4) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.NUM_TURNS_LEFT.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.CARDTYPE.getValue()) - .setValue(2) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.ZONE.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.TIMEOUT.getValue()) - .setValue(75) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.MAXRESOURCES.getValue()) - .setValue(10) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.NUM_CARDS_DRAWN_THIS_TURN.getValue()) - .setValue(3) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.ENTITY_ID.getValue()) - .setValue(3) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() - .setType(TRIGGER) - .setIndex(-1) - .setSource(1) - .setTarget(0) - ) - ) - .build(); - - this.send(new PegasusPacket(19, 0, powerHistory.toByteArray())); - - PegasusGame.EntityChoices entityChoices = PegasusGame.EntityChoices.newBuilder() - .setId(1) - .setChoiceType(1) - .setCountMin(0) - .setCountMax(3) - .addEntities(54) - .addEntities(38) - .addEntities(37) - .setSource(1) - .setPlayerId(2) - .build(); - - this.send(new PegasusPacket( 17, 0, entityChoices.toByteArray())); - - entityChoices = PegasusGame.EntityChoices.newBuilder() - .setId(1) - .setChoiceType(1) - .setCountMin(0) - .setCountMax(5) - .addEntities(68) - .addEntities(26) - .addEntities(21) - .addEntities(17) - .addEntities(11) - .setSource(1) - .setPlayerId(1) - .build(); - - this.send(new PegasusPacket( 17, 0, entityChoices.toByteArray())); - - powerHistory = PegasusGame.PowerHistory.newBuilder() - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.MULLIGAN_STATE.getValue()) - .setValue(1) - ) - ).build(); - - this.send(new PegasusPacket( 19, 0, powerHistory.toByteArray())); - - PegasusGame.UserUI userUI = PegasusGame.UserUI.newBuilder() - .setMouseInfo(PegasusGame.MouseInfo.newBuilder() - .setArrowOrigin(0) - .setHeldCard(0) - .setOverCard(26) - .setX(0) - .setY(0) - ) - .setEmote(0) - .setPlayerId(1) - .build(); - - this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); - - userUI = PegasusGame.UserUI.newBuilder() - .setMouseInfo(PegasusGame.MouseInfo.newBuilder() - .setArrowOrigin(0) - .setHeldCard(0) - .setOverCard(21) - .setX(0) - .setY(0) - ) - .setEmote(0) - .setPlayerId(1) - .build(); - - this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); - - userUI = PegasusGame.UserUI.newBuilder() - .setMouseInfo(PegasusGame.MouseInfo.newBuilder() - .setArrowOrigin(0) - .setHeldCard(0) - .setOverCard(26) - .setX(0) - .setY(0) - ) - .setEmote(0) - .setPlayerId(1) - .build(); - - this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); - - userUI = PegasusGame.UserUI.newBuilder() - .setMouseInfo(PegasusGame.MouseInfo.newBuilder() - .setArrowOrigin(0) - .setHeldCard(0) - .setOverCard(17) - .setX(0) - .setY(0) - ) - .setEmote(0) - .setPlayerId(1) - .build(); - - this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); - - userUI = PegasusGame.UserUI.newBuilder() - .setMouseInfo(PegasusGame.MouseInfo.newBuilder() - .setArrowOrigin(0) - .setHeldCard(0) - .setOverCard(11) - .setX(0) - .setY(0) - ) - .setEmote(0) - .setPlayerId(1) - .build(); - - this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); - - userUI = PegasusGame.UserUI.newBuilder() - .setMouseInfo(PegasusGame.MouseInfo.newBuilder() - .setArrowOrigin(0) - .setHeldCard(0) - .setOverCard(17) - .setX(0) - .setY(0) - ) - .setEmote(0) - .setPlayerId(1) - .build(); - - this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); - - userUI = PegasusGame.UserUI.newBuilder() - .setMouseInfo(PegasusGame.MouseInfo.newBuilder() - .setArrowOrigin(0) - .setHeldCard(0) - .setOverCard(0) - .setX(0) - .setY(0) - ) - .setEmote(0) - .setPlayerId(1) - .build(); - - this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); - - - - powerHistory = PegasusGame.PowerHistory.newBuilder() - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.MULLIGAN_STATE.getValue()) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(34) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(34) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) .setValue(2) ) ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() - .setType(TRIGGER) - .setIndex(6) - .setSource(3) - .setTarget(0) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(35) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(35) ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.MULLIGAN_STATE.getValue()) - .setValue(3) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() - .setType(TRIGGER) - .setIndex(7) - .setSource(3) - .setTarget(0) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.MULLIGAN_STATE.getValue()) - .setValue(4) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() - ) - ) - .build(); - - this.send(new PegasusPacket( 19, 0, powerHistory.toByteArray())); - - - powerHistory = PegasusGame.PowerHistory.newBuilder() - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.MULLIGAN_STATE.getValue()) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) .setValue(2) ) ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() - .setType(TRIGGER) - .setIndex(6) - .setSource(2) - .setTarget(0) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(36) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(36) ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.MULLIGAN_STATE.getValue()) - .setValue(3) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() - .setType(TRIGGER) - .setIndex(7) - .setSource(2) - .setTarget(0) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(2) - .setTag(GameTag.MULLIGAN_STATE.getValue()) - .setValue(4) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.NEXT_STEP.getValue()) - .setValue(6) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() - ) - ) - .build(); - - - this.send(new PegasusPacket( 19, 0, powerHistory)); - - powerHistory = PegasusGame.PowerHistory.newBuilder() - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.STEP.getValue()) - .setValue(6) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() - .setType(TRIGGER) - .setIndex(1) - .setSource(3) - .setTarget(0) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.RESOURCES.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.NUM_CARDS_DRAWN_THIS_TURN.getValue()) - .setValue(0) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.NEXT_STEP.getValue()) - .setValue(17) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.STEP.getValue()) - .setValue(17) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() - .setType(TRIGGER) - .setIndex(8) - .setSource(3) - .setTarget(0) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.NEXT_STEP.getValue()) - .setValue(9) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.STEP.getValue()) - .setValue(9) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() - .setType(TRIGGER) - .setIndex(0) - .setSource(3) - .setTarget(0) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setShowEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(60) - .setName("GVG_010") - .addTags(PegasusGame.Tag.newBuilder() - .setName(321) - .setValue(1) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARD_SET.getValue()) - .setValue(13) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENCHANTMENT_BIRTH_VISUAL.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENCHANTMENT_IDLE_VISUAL.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.COST.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CLASS.getValue()) - .setValue(6) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARDTYPE.getValue()) - .setValue(5) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.RARITY.getValue()) - .setValue(1) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(60) - .setTag(GameTag.ZONE.getValue()) - .setValue(3) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(60) - .setTag(GameTag.ZONE_POSITION.getValue()) - .setValue(4) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(3) - .setTag(GameTag.NUM_CARDS_DRAWN_THIS_TURN.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.NEXT_STEP.getValue()) - .setValue(10) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.STEP.getValue()) - .setValue(10) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() - .setType(TRIGGER) - .setIndex(2) - .setSource(3) - .setTarget(0) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(1) - .setTag(GameTag.NEXT_STEP.getValue()) - .setValue(12) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() - ) - ) - .build(); - - this.send(new PegasusPacket(19, 0, powerHistory)); - - - PegasusGame.AllOptions allOptions = PegasusGame.AllOptions.newBuilder() - .setId(1) - .addOptions(PegasusGame.Option.newBuilder() - .setType(END_TURN) - ) - .addOptions(PegasusGame.Option.newBuilder() - .setType(PegasusGame.Option.Type.POWER) - .setMainOption(PegasusGame.SubOption.newBuilder() - .setId(67) - .addTargets(64) - .addTargets(66) - ) - ) - .addOptions(PegasusGame.Option.newBuilder() - .setType(PegasusGame.Option.Type.POWER) - .setMainOption(PegasusGame.SubOption.newBuilder() - .setId(60) - ) - ) - .addOptions(PegasusGame.Option.newBuilder() - .setType(PegasusGame.Option.Type.POWER) - .setMainOption(PegasusGame.SubOption.newBuilder() - .setId(54) - ) - ) - .addOptions(PegasusGame.Option.newBuilder() - .setType(PegasusGame.Option.Type.POWER) - .setMainOption(PegasusGame.SubOption.newBuilder() - .setId(38) - ) - ) - .build(); - - this.send(new PegasusPacket( 14, 0, allOptions.toByteArray())); - - userUI = PegasusGame.UserUI.newBuilder() - .setMouseInfo(PegasusGame.MouseInfo.newBuilder() - .setArrowOrigin(0) - .setHeldCard(0) - .setOverCard(64) - .setX(0) - .setY(0) - ) - .setEmote(0) - .setPlayerId(1) - .build(); - - - this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); - - userUI = PegasusGame.UserUI.newBuilder() - .setMouseInfo(PegasusGame.MouseInfo.newBuilder() - .setArrowOrigin(0) - .setHeldCard(0) - .setOverCard(0) - .setX(0) - .setY(0) - ) - .setEmote(0) - .setPlayerId(1) - .build(); - - this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); - - - powerHistory = PegasusGame.PowerHistory.newBuilder() - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() - .setType(PLAY) - .setIndex(0) - .setSource(38) - .setTarget(0) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(38) - .setTag(GameTag.EXHAUSTED.getValue()) - .setValue(1) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(37) - .setTag(GameTag.ZONE_POSITION.getValue()) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) .setValue(2) ) ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(54) - .setTag(GameTag.ZONE_POSITION.getValue()) - .setValue(1) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(37) + .setName("EX1_593") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(37) ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(60) - .setTag(GameTag.ZONE_POSITION.getValue()) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE_POSITION.getValue()) .setValue(3) ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() - .setType(POWER) - .setIndex(-1) - .setSource(0) - .setTarget(0) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(321) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARD_SET.getValue()) + .setValue(TagCardSet.CORE.ordinal()) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.BATTLECRY.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.HEALTH.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ATK.getValue()) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.COST.getValue()) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARDTYPE.getValue()) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.RARITY.getValue()) + .setValue(TagRarity.FREE.ordinal()) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.FACTION.getValue()) + .setValue(TagFaction.NEUTRAL.ordinal()) ) ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() - .setEntity(69) - .setName("CS2_103e2") - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENTITY_ID.getValue()) - .setValue(69) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CONTROLLER.getValue()) - .setValue(2) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENCHANTMENT_IDLE_VISUAL.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.ENCHANTMENT_BIRTH_VISUAL.getValue()) - .setValue(0) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CLASS.getValue()) - .setValue(10) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARDTYPE.getValue()) - .setValue(6) - ) - .addTags(PegasusGame.Tag.newBuilder() - .setName(GameTag.CARD_SET.getValue()) - .setValue(2) - ) - ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(69) - .setTag(GameTag.ATTACHED.getValue()) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(38) + .setName("EX1_383") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) .setValue(38) ) - ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(69) - .setTag(GameTag.ZONE_POSITION.getValue()) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE_POSITION.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(TagZone.HAND.ordinal()) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(251) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.DIVINE_SHIELD.getValue()) .setValue(0) ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(321) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARD_SET.getValue()) + .setValue(TagCardSet.EXPERT1.ordinal()) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.TAUNT.getValue()) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENCHANTMENT_BIRTH_VISUAL.getValue()) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENCHANTMENT_IDLE_VISUAL.getValue()) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.HEALTH.getValue()) + .setValue(16) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ATK.getValue()) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ELITE.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.COST.getValue()) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CLASS.getValue()) + .setValue(TagClass.PALADIN.ordinal()) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARDTYPE.getValue()) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.RARITY.getValue()) + .setValue(TagRarity.LEGENDARY.ordinal()) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.DEATHRATTLE.getValue()) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.FACTION.getValue()) + .setValue(TagFaction.NEUTRAL.ordinal()) + ) ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(69) - .setTag(GameTag.ZONE.getValue()) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(39) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(39) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(40) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(40) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(41) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(41) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(42) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(42) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(43) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(43) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(44) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(44) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(45) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(45) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(46) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(46) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(47) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(47) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(48) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(48) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(49) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(49) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(50) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(50) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(51) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(51) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(52) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(52) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(53) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(53) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(54) + .setName("LOEA16_9") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(54) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE_POSITION.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.COST.getValue()) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENCHANTMENT_BIRTH_VISUAL.getValue()) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENCHANTMENT_IDLE_VISUAL.getValue()) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARDTYPE.getValue()) + .setValue(5) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARD_SET.getValue()) + .setValue(TagCardSet.LOE.ordinal()) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(55) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(55) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(56) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(56) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(57) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(57) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(58) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(58) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(59) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(59) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(60) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(60) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(61) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(61) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(62) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(62) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(63) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(63) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(4) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(5) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(5) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(6) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) .setValue(6) ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(38) - .setTag(GameTag.ZONE.getValue()) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(7) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(7) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(8) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(8) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(9) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(9) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(10) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(10) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(11) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(11) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE_POSITION.getValue()) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(3) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(12) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(12) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(13) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(13) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(14) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(14) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(15) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(15) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(16) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(16) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(17) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(17) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE_POSITION.getValue()) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(3) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(18) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(18) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(19) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(19) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(20) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(20) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(21) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(21) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE_POSITION.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(3) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(22) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(22) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(23) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(23) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(24) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(24) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(25) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(25) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(26) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(26) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE_POSITION.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(3) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(27) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(27) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(28) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(28) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(29) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(29) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(30) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(30) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(31) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(31) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(32) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(32) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(33) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(33) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(66) + .setName("LOEA04_01") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(66) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARD_SET.getValue()) + .setValue(TagCardSet.LOE.ordinal()) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.SHOWN_HERO_POWER.getValue()) + .setValue(16231) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENCHANTMENT_BIRTH_VISUAL.getValue()) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENCHANTMENT_IDLE_VISUAL.getValue()) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.HEALTH.getValue()) + .setValue(30) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARDTYPE.getValue()) + .setValue(3) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(67) + .setName("CS1h_001") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CREATOR.getValue()) + .setValue(66) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(67) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(251) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARD_SET.getValue()) + .setValue(TagCardSet.CORE.ordinal()) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.COST.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CLASS.getValue()) + .setValue(TagClass.PRIEST.ordinal()) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARDTYPE.getValue()) + .setValue(10) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.RARITY.getValue()) + .setValue(TagRarity.FREE.ordinal()) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.FACTION.getValue()) + .setValue(TagFaction.NEUTRAL.ordinal()) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(64) + .setName("TB_SPT_Boss") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(64) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ATK.getValue()) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.HEALTH.getValue()) + .setValue(30) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARDTYPE.getValue()) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARD_SET.getValue()) + .setValue(TagCardSet.TB.ordinal()) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.SHOWN_HERO_POWER.getValue()) + .setValue(39537) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(65) + .setName("CS1h_001") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CREATOR.getValue()) + .setValue(64) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(65) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(251) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARD_SET.getValue()) + .setValue(TagCardSet.CORE.ordinal()) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.COST.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CLASS.getValue()) + .setValue(TagClass.PRIEST.ordinal()) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARDTYPE.getValue()) + .setValue(10) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.RARITY.getValue()) + .setValue(TagRarity.FREE.ordinal()) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.FACTION.getValue()) + .setValue(TagFaction.NEUTRAL.ordinal()) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(68) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(68) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE_POSITION.getValue()) + .setValue(5) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(3) + ) + ) + ).build(); + log.info("Packet: {}", powerHistory); + this.send(new PegasusPacket(19, 0, powerHistory.toByteArray())); + + /* PegasusGame.GetGameState state = PegasusGame.GetGameState.parseFrom((byte[]) packet.getBody()); + log.info("GetGameState: {}", state);*/ + + powerHistory = PegasusGame.PowerHistory.newBuilder() + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(10) + .setValue(85) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.CARDTYPE.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.TURN.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.STATE.getValue()) + .setValue(2) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.ZONE.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.NEXT_STEP.getValue()) + .setValue(4) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.ENTITY_ID.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.STEP.getValue()) + .setValue(4) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.HERO_ENTITY.getValue()) + .setValue(64) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.PLAYSTATE.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.ZONE.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.TEAM_ID.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.PLAYER_ID.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.MAXHANDSIZE.getValue()) + .setValue(10) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.STARTHANDSIZE.getValue()) + .setValue(4) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.NUM_TURNS_LEFT.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.CARDTYPE.getValue()) + .setValue(2) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.TIMEOUT.getValue()) + .setValue(75) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.MAXRESOURCES.getValue()) + .setValue(10) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.NUM_CARDS_DRAWN_THIS_TURN.getValue()) + .setValue(4) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.ENTITY_ID.getValue()) + .setValue(2) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.CONTROLLER.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.MULLIGAN_STATE.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.FIRST_PLAYER.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.HERO_ENTITY.getValue()) + .setValue(66) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.PLAYSTATE.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.CURRENT_PLAYER.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.TEAM_ID.getValue()) + .setValue(2) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.PLAYER_ID.getValue()) + .setValue(2) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.MAXHANDSIZE.getValue()) + .setValue(10) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.STARTHANDSIZE.getValue()) + .setValue(4) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.NUM_TURNS_LEFT.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.CARDTYPE.getValue()) + .setValue(2) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.ZONE.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.TIMEOUT.getValue()) + .setValue(75) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.MAXRESOURCES.getValue()) + .setValue(10) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.NUM_CARDS_DRAWN_THIS_TURN.getValue()) + .setValue(3) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.ENTITY_ID.getValue()) + .setValue(3) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() + .setType(TRIGGER) + .setIndex(-1) + .setSource(1) + .setTarget(0) + ) + ) + .build(); + + this.send(new PegasusPacket(19, 0, powerHistory.toByteArray())); + + PegasusGame.EntityChoices entityChoices = PegasusGame.EntityChoices.newBuilder() + .setId(1) + .setChoiceType(1) + .setCountMin(0) + .setCountMax(3) + .addEntities(54) + .addEntities(38) + .addEntities(37) + .setSource(1) + .setPlayerId(2) + .build(); + + this.send(new PegasusPacket( 17, 0, entityChoices.toByteArray())); + + entityChoices = PegasusGame.EntityChoices.newBuilder() + .setId(1) + .setChoiceType(1) + .setCountMin(0) + .setCountMax(5) + .addEntities(68) + .addEntities(26) + .addEntities(21) + .addEntities(17) + .addEntities(11) + .setSource(1) + .setPlayerId(1) + .build(); + + this.send(new PegasusPacket( 17, 0, entityChoices.toByteArray())); + + powerHistory = PegasusGame.PowerHistory.newBuilder() + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.MULLIGAN_STATE.getValue()) + .setValue(1) + ) + ).build(); + + this.send(new PegasusPacket( 19, 0, powerHistory.toByteArray())); + + PegasusGame.UserUI userUI = PegasusGame.UserUI.newBuilder() + .setMouseInfo(PegasusGame.MouseInfo.newBuilder() + .setArrowOrigin(0) + .setHeldCard(0) + .setOverCard(26) + .setX(0) + .setY(0) + ) + .setEmote(0) + .setPlayerId(1) + .build(); + + this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); + + userUI = PegasusGame.UserUI.newBuilder() + .setMouseInfo(PegasusGame.MouseInfo.newBuilder() + .setArrowOrigin(0) + .setHeldCard(0) + .setOverCard(21) + .setX(0) + .setY(0) + ) + .setEmote(0) + .setPlayerId(1) + .build(); + + this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); + + userUI = PegasusGame.UserUI.newBuilder() + .setMouseInfo(PegasusGame.MouseInfo.newBuilder() + .setArrowOrigin(0) + .setHeldCard(0) + .setOverCard(26) + .setX(0) + .setY(0) + ) + .setEmote(0) + .setPlayerId(1) + .build(); + + this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); + + userUI = PegasusGame.UserUI.newBuilder() + .setMouseInfo(PegasusGame.MouseInfo.newBuilder() + .setArrowOrigin(0) + .setHeldCard(0) + .setOverCard(17) + .setX(0) + .setY(0) + ) + .setEmote(0) + .setPlayerId(1) + .build(); + + this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); + + userUI = PegasusGame.UserUI.newBuilder() + .setMouseInfo(PegasusGame.MouseInfo.newBuilder() + .setArrowOrigin(0) + .setHeldCard(0) + .setOverCard(11) + .setX(0) + .setY(0) + ) + .setEmote(0) + .setPlayerId(1) + .build(); + + this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); + + userUI = PegasusGame.UserUI.newBuilder() + .setMouseInfo(PegasusGame.MouseInfo.newBuilder() + .setArrowOrigin(0) + .setHeldCard(0) + .setOverCard(17) + .setX(0) + .setY(0) + ) + .setEmote(0) + .setPlayerId(1) + .build(); + + this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); + + userUI = PegasusGame.UserUI.newBuilder() + .setMouseInfo(PegasusGame.MouseInfo.newBuilder() + .setArrowOrigin(0) + .setHeldCard(0) + .setOverCard(0) + .setX(0) + .setY(0) + ) + .setEmote(0) + .setPlayerId(1) + .build(); + + this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); + + + + powerHistory = PegasusGame.PowerHistory.newBuilder() + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.MULLIGAN_STATE.getValue()) + .setValue(2) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() + .setType(TRIGGER) + .setIndex(6) + .setSource(3) + .setTarget(0) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.MULLIGAN_STATE.getValue()) + .setValue(3) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() + .setType(TRIGGER) + .setIndex(7) + .setSource(3) + .setTarget(0) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.MULLIGAN_STATE.getValue()) + .setValue(4) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() + ) + ) + .build(); + + this.send(new PegasusPacket( 19, 0, powerHistory.toByteArray())); + + + powerHistory = PegasusGame.PowerHistory.newBuilder() + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.MULLIGAN_STATE.getValue()) + .setValue(2) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() + .setType(TRIGGER) + .setIndex(6) + .setSource(2) + .setTarget(0) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.MULLIGAN_STATE.getValue()) + .setValue(3) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() + .setType(TRIGGER) + .setIndex(7) + .setSource(2) + .setTarget(0) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(2) + .setTag(GameTag.MULLIGAN_STATE.getValue()) + .setValue(4) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.NEXT_STEP.getValue()) + .setValue(6) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() + ) + ) + .build(); + + + this.send(new PegasusPacket( 19, 0, powerHistory)); + + powerHistory = PegasusGame.PowerHistory.newBuilder() + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.STEP.getValue()) + .setValue(6) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() + .setType(TRIGGER) + .setIndex(1) + .setSource(3) + .setTarget(0) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.RESOURCES.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.NUM_CARDS_DRAWN_THIS_TURN.getValue()) + .setValue(0) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.NEXT_STEP.getValue()) + .setValue(17) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.STEP.getValue()) + .setValue(17) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() + .setType(TRIGGER) + .setIndex(8) + .setSource(3) + .setTarget(0) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.NEXT_STEP.getValue()) + .setValue(9) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.STEP.getValue()) + .setValue(9) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() + .setType(TRIGGER) + .setIndex(0) + .setSource(3) + .setTarget(0) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setShowEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(60) + .setName("GVG_010") + .addTags(PegasusGame.Tag.newBuilder() + .setName(321) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARD_SET.getValue()) + .setValue(13) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENCHANTMENT_BIRTH_VISUAL.getValue()) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENCHANTMENT_IDLE_VISUAL.getValue()) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.COST.getValue()) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CLASS.getValue()) + .setValue(6) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARDTYPE.getValue()) + .setValue(5) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.RARITY.getValue()) .setValue(1) ) ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(38) - .setTag(GameTag.ZONE_POSITION.getValue()) - .setValue(1) - ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(60) + .setTag(GameTag.ZONE.getValue()) + .setValue(3) ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() - .setEntity(38) - .setTag(GameTag.EXHAUSTED.getValue()) - .setValue(1) - ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(60) + .setTag(GameTag.ZONE_POSITION.getValue()) + .setValue(4) ) - .addList(PegasusGame.PowerHistoryData.newBuilder() - .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() - ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(3) + .setTag(GameTag.NUM_CARDS_DRAWN_THIS_TURN.getValue()) + .setValue(1) ) - .build(); + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.NEXT_STEP.getValue()) + .setValue(10) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.STEP.getValue()) + .setValue(10) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() + .setType(TRIGGER) + .setIndex(2) + .setSource(3) + .setTarget(0) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(1) + .setTag(GameTag.NEXT_STEP.getValue()) + .setValue(12) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() + ) + ) + .build(); - this.send(new PegasusPacket(19, 0, powerHistory.toByteArray())); + this.send(new PegasusPacket(19, 0, powerHistory)); - allOptions = PegasusGame.AllOptions.newBuilder() - .setId(1) - .addOptions(PegasusGame.Option.newBuilder() - .setType(END_TURN) - ) - .addOptions(PegasusGame.Option.newBuilder() - .setType(PegasusGame.Option.Type.POWER) - .setMainOption(PegasusGame.SubOption.newBuilder() - .setId(67) - .addTargets(64) - .addTargets(66) - .addTargets(38) - ) - ) - .addOptions(PegasusGame.Option.newBuilder() - .setType(PegasusGame.Option.Type.POWER) - .setMainOption(PegasusGame.SubOption.newBuilder() - .setId(60) - ) - ) - .addOptions(PegasusGame.Option.newBuilder() - .setType(PegasusGame.Option.Type.POWER) - .setMainOption(PegasusGame.SubOption.newBuilder() - .setId(54) - ) - ) - .build(); + /////////////// - this.send(new PegasusPacket( 14, 0, allOptions.toByteArray())); - break; - case 115: - pong(); - break; - default: - break; - } + + + //////// + + + PegasusGame.AllOptions allOptions = PegasusGame.AllOptions.newBuilder() + .setId(1) + .addOptions(PegasusGame.Option.newBuilder() + .setType(END_TURN) + ) + .addOptions(PegasusGame.Option.newBuilder() + .setType(PegasusGame.Option.Type.POWER) + .setMainOption(PegasusGame.SubOption.newBuilder() + .setId(67) + .addTargets(64) + .addTargets(66) + ) + ) + .addOptions(PegasusGame.Option.newBuilder() + .setType(PegasusGame.Option.Type.POWER) + .setMainOption(PegasusGame.SubOption.newBuilder() + .setId(60) + ) + ) + .addOptions(PegasusGame.Option.newBuilder() + .setType(PegasusGame.Option.Type.POWER) + .setMainOption(PegasusGame.SubOption.newBuilder() + .setId(54) + ) + ) + .addOptions(PegasusGame.Option.newBuilder() + .setType(PegasusGame.Option.Type.POWER) + .setMainOption(PegasusGame.SubOption.newBuilder() + .setId(38) + ) + ) + .build(); + + this.send(new PegasusPacket( 14, 0, allOptions.toByteArray())); + + userUI = PegasusGame.UserUI.newBuilder() + .setMouseInfo(PegasusGame.MouseInfo.newBuilder() + .setArrowOrigin(0) + .setHeldCard(0) + .setOverCard(64) + .setX(0) + .setY(0) + ) + .setEmote(0) + .setPlayerId(1) + .build(); + + + this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); + + userUI = PegasusGame.UserUI.newBuilder() + .setMouseInfo(PegasusGame.MouseInfo.newBuilder() + .setArrowOrigin(0) + .setHeldCard(0) + .setOverCard(0) + .setX(0) + .setY(0) + ) + .setEmote(0) + .setPlayerId(1) + .build(); + + this.send(new PegasusPacket( 15, 0, userUI.toByteArray())); + + + powerHistory = PegasusGame.PowerHistory.newBuilder() + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() + .setType(PLAY) + .setIndex(0) + .setSource(38) + .setTarget(0) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(38) + .setTag(GameTag.EXHAUSTED.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(37) + .setTag(GameTag.ZONE_POSITION.getValue()) + .setValue(2) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(54) + .setTag(GameTag.ZONE_POSITION.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(60) + .setTag(GameTag.ZONE_POSITION.getValue()) + .setValue(3) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerStart(PegasusGame.PowerHistoryStart.newBuilder() + .setType(POWER) + .setIndex(-1) + .setSource(0) + .setTarget(0) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(69) + .setName("CS2_103e2") + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(69) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENCHANTMENT_IDLE_VISUAL.getValue()) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENCHANTMENT_BIRTH_VISUAL.getValue()) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CLASS.getValue()) + .setValue(10) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARDTYPE.getValue()) + .setValue(6) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARD_SET.getValue()) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(69) + .setTag(GameTag.ATTACHED.getValue()) + .setValue(38) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(69) + .setTag(GameTag.ZONE_POSITION.getValue()) + .setValue(0) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(69) + .setTag(GameTag.ZONE.getValue()) + .setValue(6) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(38) + .setTag(GameTag.ZONE.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(38) + .setTag(GameTag.ZONE_POSITION.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setTagChange(PegasusGame.PowerHistoryTagChange.newBuilder() + .setEntity(38) + .setTag(GameTag.EXHAUSTED.getValue()) + .setValue(1) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setPowerEnd(PegasusGame.PowerHistoryEnd.newBuilder() + ) + ) + .build(); + + this.send(new PegasusPacket(19, 0, powerHistory.toByteArray())); + + allOptions = PegasusGame.AllOptions.newBuilder() + .setId(1) + .addOptions(PegasusGame.Option.newBuilder() + .setType(END_TURN) + ) + .addOptions(PegasusGame.Option.newBuilder() + .setType(PegasusGame.Option.Type.POWER) + .setMainOption(PegasusGame.SubOption.newBuilder() + .setId(67) + .addTargets(64) + .addTargets(66) + .addTargets(38) + ) + ) + .addOptions(PegasusGame.Option.newBuilder() + .setType(PegasusGame.Option.Type.POWER) + .setMainOption(PegasusGame.SubOption.newBuilder() + .setId(60) + ) + ) + .addOptions(PegasusGame.Option.newBuilder() + .setType(PegasusGame.Option.Type.POWER) + .setMainOption(PegasusGame.SubOption.newBuilder() + .setId(54) + ) + ) + .build(); + + this.send(new PegasusPacket( 14, 0, allOptions.toByteArray())); } private void pong() throws Exception { this.send(new PegasusPacket(116, 0, PegasusGame.Pong.newBuilder().build())); } - public void send(PegasusPacket pp) throws Exception { - this.outToClient.write(pp.Encode()); - this.outToClient.flush(); - } - - public void sendRaw(byte[] data) throws Exception { - this.outToClient.write(data); - this.outToClient.flush(); - } - @Override public void run() { try { @@ -2680,7 +2682,7 @@ public class GameConnection extends Thread { int offset = 0; while( offset < r.length ) { offset += pp.Decode(r, offset, r.length); - processPacket(pp); + this.processPacket(pp); } baos.reset(); } @@ -2694,4 +2696,18 @@ public class GameConnection extends Thread { log.error(e.getMessage()); } } + + public void stopListeningAndDisconnect() { + try { + this.client.close(); + this.interrupt(); + } catch (IOException e) { + log.error(e.getMessage()); + } + } + + public void send(PegasusPacket pp) throws Exception { + this.outToClient.write(pp.Encode()); + this.outToClient.flush(); + } } diff --git a/src/main/java/com/alterdekim/hearthhack/component/GamePool.java b/src/main/java/com/alterdekim/hearthhack/component/GamePool.java index f32b91a..8cfd531 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/GamePool.java +++ b/src/main/java/com/alterdekim/hearthhack/component/GamePool.java @@ -45,7 +45,7 @@ public class GamePool { roomService.clear(); } - public GameRoom getGameRoomById(Long id) { - return games.get(id); + public Optional getGameRoomById(Long id) { + return Optional.ofNullable(games.get(id)); } } diff --git a/src/main/java/com/alterdekim/hearthhack/component/GameRoom.java b/src/main/java/com/alterdekim/hearthhack/component/GameRoom.java index 606d5fe..aaa9e24 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/GameRoom.java +++ b/src/main/java/com/alterdekim/hearthhack/component/GameRoom.java @@ -1,29 +1,129 @@ package com.alterdekim.hearthhack.component; +import com.alterdekim.hearthhack.component.interfaces.GamePacketCallback; +import com.alterdekim.hearthhack.component.interfaces.IGameRoom; import com.alterdekim.hearthhack.dto.RoomPlayerDTO; +import com.alterdekim.hearthhack.game.GameState; +import com.alterdekim.hearthhack.game.IncomeGamePacket; +import com.alterdekim.hearthhack.game.OutcomeGamePacket; import com.alterdekim.hearthhack.service.UserService; -import lombok.AllArgsConstructor; import lombok.Getter; -import lombok.ToString; import lombok.extern.slf4j.Slf4j; import java.util.List; +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.stream.Collectors; -@ToString @Slf4j -public class GameRoom { +public class GameRoom extends Thread implements IGameRoom { @Getter private final List players; + private final ConcurrentHashMap callbacks; + private final UserService userService; @Getter private final String password; + private GameState globalState; + + @Getter + private ConcurrentLinkedQueue incomeQueue; + private ConcurrentLinkedQueue outcomeQueue; + public GameRoom(List players, UserService userService, String password) { this.players = players; this.userService = userService; this.password = password; - log.info("New GameRoom!"); + this.incomeQueue = new ConcurrentLinkedQueue<>(); + this.outcomeQueue = new ConcurrentLinkedQueue<>(); + this.callbacks = new ConcurrentHashMap<>(); + this.globalState = GameState.CreateGame; + this.start(); + } + + private void processIncomePackets() { + if( this.incomeQueue.isEmpty() ) return; + IncomeGamePacket packet = this.incomeQueue.peek(); + if( findPlayerById(packet.getPlayerId()).isEmpty() ) return; + processIncomePacket(packet); + this.incomeQueue.poll(); + } + + private void processOutcomePackets() { + /* if( this.outcomeQueue.isEmpty() ) return; + OutcomeGamePacket packet = this.outcomeQueue.peek(); + this.outcomeQueue.poll();*/ + } + + private void processIncomePacket(IncomeGamePacket packet) { + if( packet.getPacket().getType() != 1) return; + List l = this.outcomeQueue.stream() + .filter(p -> p.getPlayerId().longValue() == packet.getPlayerId().longValue()) + .collect(Collectors.toList()); + GamePacketCallback callback = this.callbacks.get(packet.getPlayerId()); + if (callback == null) return; + l.forEach(p -> callback.onMessage(p.getPacket())); + } + + private void updateGameState() { + // giant switch + switch (this.globalState) { + case CreateGame -> createGameEntity(); + case CreatePlayers -> createPlayerEntity(); + case CreateDecks -> createDeckEntities(); + case CreateHeroes -> createPlayerHeroEntity(); + case CreateHeroPowers -> createPlayerHeroPowerEntity(); + } + } + + public void updateCallback(Long playerId, GamePacketCallback callback) { + this.callbacks.put(playerId, callback); + } + + @Override + public void run() { + while(true) { + processIncomePackets(); + updateGameState(); + processOutcomePackets(); + } + } + + @Override + public void createGameEntity() { + + } + + @Override + public void createPlayerEntity() { + + } + + @Override + public void createDeckEntities() { + + } + + @Override + public void createCardEntity() { + + } + + @Override + public void createPlayerHeroEntity() { + + } + + @Override + public void createPlayerHeroPowerEntity() { + + } + + private Optional findPlayerById(Long id) { + return players.stream().filter(p -> p.getUserId().longValue() == id.longValue()).findFirst(); } } diff --git a/src/main/java/com/alterdekim/hearthhack/component/GameServer.java b/src/main/java/com/alterdekim/hearthhack/component/GameServer.java index c449e0b..13023b3 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/GameServer.java +++ b/src/main/java/com/alterdekim/hearthhack/component/GameServer.java @@ -39,7 +39,7 @@ public class GameServer { while(true) { Socket client = this.serverSocket.accept(); log.info("New WOW Connection Established From {}", client.getInetAddress().toString()); - GameConnection c = new GameConnection(client, this); + GameConnection c = new GameConnection(this, client); this.connections.add(c); c.start(); } diff --git a/src/main/java/com/alterdekim/hearthhack/component/interfaces/GamePacketCallback.java b/src/main/java/com/alterdekim/hearthhack/component/interfaces/GamePacketCallback.java new file mode 100644 index 0000000..7349378 --- /dev/null +++ b/src/main/java/com/alterdekim/hearthhack/component/interfaces/GamePacketCallback.java @@ -0,0 +1,7 @@ +package com.alterdekim.hearthhack.component.interfaces; + +import com.alterdekim.hearthhack.util.PegasusPacket; + +public interface GamePacketCallback { + void onMessage(PegasusPacket packet); +} diff --git a/src/main/java/com/alterdekim/hearthhack/component/interfaces/IGameRoom.java b/src/main/java/com/alterdekim/hearthhack/component/interfaces/IGameRoom.java new file mode 100644 index 0000000..8483ed1 --- /dev/null +++ b/src/main/java/com/alterdekim/hearthhack/component/interfaces/IGameRoom.java @@ -0,0 +1,10 @@ +package com.alterdekim.hearthhack.component.interfaces; + +public interface IGameRoom { + void createGameEntity(); + void createPlayerEntity(); + void createDeckEntities(); + void createCardEntity(); + void createPlayerHeroEntity(); + void createPlayerHeroPowerEntity(); +} diff --git a/src/main/java/com/alterdekim/hearthhack/game/GameState.java b/src/main/java/com/alterdekim/hearthhack/game/GameState.java new file mode 100644 index 0000000..ec0748d --- /dev/null +++ b/src/main/java/com/alterdekim/hearthhack/game/GameState.java @@ -0,0 +1,16 @@ +package com.alterdekim.hearthhack.game; + +public enum GameState { + CreateGame, + CreatePlayers, + CreateDecks, + CreateHeroes, + CreateHeroPowers, + Running; + + public GameState next() { + GameState[] states = GameState.values(); + int i = this.ordinal()+1 >= states.length ? 0 : this.ordinal()+1; + return states[i]; + } +} diff --git a/src/main/java/com/alterdekim/hearthhack/game/IncomeGamePacket.java b/src/main/java/com/alterdekim/hearthhack/game/IncomeGamePacket.java new file mode 100644 index 0000000..8ef19bb --- /dev/null +++ b/src/main/java/com/alterdekim/hearthhack/game/IncomeGamePacket.java @@ -0,0 +1,14 @@ +package com.alterdekim.hearthhack.game; + +import com.alterdekim.hearthhack.util.PegasusPacket; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.ToString; + +@RequiredArgsConstructor +@Getter +@ToString +public class IncomeGamePacket { + private final Long playerId; + private final PegasusPacket packet; +} diff --git a/src/main/java/com/alterdekim/hearthhack/game/OutcomeGamePacket.java b/src/main/java/com/alterdekim/hearthhack/game/OutcomeGamePacket.java new file mode 100644 index 0000000..465d254 --- /dev/null +++ b/src/main/java/com/alterdekim/hearthhack/game/OutcomeGamePacket.java @@ -0,0 +1,14 @@ +package com.alterdekim.hearthhack.game; + +import com.alterdekim.hearthhack.util.PegasusPacket; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.ToString; + +@RequiredArgsConstructor +@Getter +@ToString +public class OutcomeGamePacket { + private final Long playerId; + private final PegasusPacket packet; +}