├── .gitignore ├── AssetsServer ├── lastversion.txt ├── __pycache__ │ ├── Server.cpython-310.pyc │ └── Server.cpython-39.pyc ├── readme.txt └── Server.py ├── .gitattributes ├── Database ├── database.db ├── Database │ ├── database.db │ └── __pycache__ │ │ ├── DatabaseManager.cpython-310.pyc │ │ └── DatabaseManager.cpython-39.pyc └── __pycache__ │ ├── DatabaseManager.cpython-310.pyc │ └── DatabaseManager.cpython-39.pyc ├── __pycache__ ├── battle.cpython-310.pyc ├── battle.cpython-39.pyc ├── Networking.cpython-39.pyc ├── UDPMessage.cpython-39.pyc ├── Networking.cpython-310.pyc ├── Networking.cpython-312.pyc ├── UDPMessage.cpython-310.pyc ├── BackgroundTasks.cpython-39.pyc ├── BackgroundTasks.cpython-310.pyc ├── TwistedNetworking.cpython-39.pyc └── TwistedNetworking.cpython-310.pyc ├── Utils ├── __pycache__ │ ├── Defs.cpython-39.pyc │ ├── Config.cpython-39.pyc │ ├── Defs.cpython-312.pyc │ ├── Reader.cpython-39.pyc │ ├── Writer.cpython-39.pyc │ ├── BitStream.cpython-39.pyc │ ├── CPPDefs.cpython-310.pyc │ ├── CPPDefs.cpython-39.pyc │ ├── Config.cpython-312.pyc │ ├── Debugger.cpython-310.pyc │ ├── Debugger.cpython-39.pyc │ ├── Helpers.cpython-310.pyc │ ├── Helpers.cpython-312.pyc │ ├── Helpers.cpython-39.pyc │ ├── IdUtils.cpython-310.pyc │ ├── IdUtils.cpython-39.pyc │ ├── LogicLong.cpython-39.pyc │ ├── Reader.cpython-310.pyc │ ├── Reader.cpython-312.pyc │ ├── Utility.cpython-310.pyc │ ├── Utility.cpython-39.pyc │ ├── Writer.cpython-310.pyc │ ├── Writer.cpython-312.pyc │ ├── BitStream.cpython-310.pyc │ ├── BitStream.cpython-312.pyc │ ├── ByteStream.cpython-310.pyc │ ├── ByteStream.cpython-39.pyc │ ├── Fingerprint.cpython-39.pyc │ ├── LogicLong.cpython-310.pyc │ ├── Fingerprint.cpython-310.pyc │ ├── Fingerprint.cpython-312.pyc │ ├── ByteStreamHelper.cpython-39.pyc │ ├── ChecksumEncoder.cpython-310.pyc │ ├── ChecksumEncoder.cpython-312.pyc │ ├── ChecksumEncoder.cpython-39.pyc │ ├── LogicStringUtil.cpython-310.pyc │ ├── LogicStringUtil.cpython-39.pyc │ └── ByteStreamHelper.cpython-310.pyc ├── LogicBattleModeServer.py ├── Debugger.py ├── LogicStringUtil.py ├── LogicCharacterServer.py ├── Utility.py ├── Id2Tag.py ├── Fingerprint.py ├── LogicGameModeUtil.py ├── EventData.py └── Defs.py ├── Logic ├── __pycache__ │ ├── Device.cpython-39.pyc │ ├── Player.cpython-39.pyc │ ├── Device.cpython-310.pyc │ ├── LogicLong.cpython-39.pyc │ ├── Player.cpython-310.pyc │ ├── LogicLong.cpython-310.pyc │ ├── Milestones.cpython-310.pyc │ ├── Milestones.cpython-39.pyc │ ├── LogicStringUtil.cpython-310.pyc │ └── LogicStringUtil.cpython-39.pyc ├── Battle │ ├── Objects │ │ ├── __pycache__ │ │ │ ├── Row.cpython-310.pyc │ │ │ ├── Table.cpython-310.pyc │ │ │ ├── Tile.cpython-310.pyc │ │ │ ├── DataType.cpython-310.pyc │ │ │ ├── GlobalId.cpython-310.pyc │ │ │ ├── LogicItem.cpython-39.pyc │ │ │ ├── TileMap.cpython-310.pyc │ │ │ ├── DataTable.cpython-310.pyc │ │ │ ├── DataTables.cpython-310.pyc │ │ │ ├── GameFiles.cpython-310.pyc │ │ │ ├── LogicData.cpython-310.pyc │ │ │ ├── LogicItem.cpython-310.pyc │ │ │ ├── LogicCharacter.cpython-39.pyc │ │ │ ├── LogicAreaEffect.cpython-310.pyc │ │ │ ├── LogicAreaEffect.cpython-39.pyc │ │ │ ├── LogicCharacter.cpython-310.pyc │ │ │ ├── LogicProjectile.cpython-310.pyc │ │ │ ├── LogicProjectile.cpython-39.pyc │ │ │ ├── LogicGameObjectServer.cpython-39.pyc │ │ │ ├── LogicGameObjectServer.cpython-310.pyc │ │ │ ├── LogicGameObjectManagerServer.cpython-310.pyc │ │ │ └── LogicGameObjectManagerServer.cpython-39.pyc │ │ ├── LogicGameObjectServer.py │ │ ├── LogicAreaEffect.py │ │ ├── LogicProjectile.py │ │ └── GlobalId.py │ ├── __pycache__ │ │ ├── LogicBattle.cpython-310.pyc │ │ ├── LogicBattle.cpython-39.pyc │ │ ├── LogicGameModeUtil.cpython-39.pyc │ │ ├── LogicGameModeUtil.cpython-310.pyc │ │ ├── LogicBattleModeServer.cpython-310.pyc │ │ └── LogicBattleModeServer.cpython-39.pyc │ ├── Tick │ │ └── __pycache__ │ │ │ ├── LogicMovement.cpython-310.pyc │ │ │ └── LogicMovement.cpython-39.pyc │ ├── LogicBattleModeServer.py │ └── LogicGameModeUtil.py ├── LogicStringUtil.py └── Player.py ├── Files ├── __pycache__ │ ├── CsvReader.cpython-39.pyc │ └── CsvReader.cpython-310.pyc ├── CsvLogic │ ├── __pycache__ │ │ ├── Cards.cpython-39.pyc │ │ ├── Skins.cpython-39.pyc │ │ ├── Cards.cpython-310.pyc │ │ ├── Skills.cpython-310.pyc │ │ ├── Skills.cpython-39.pyc │ │ ├── Skins.cpython-310.pyc │ │ ├── Characters.cpython-39.pyc │ │ ├── Locations.cpython-310.pyc │ │ ├── Locations.cpython-39.pyc │ │ ├── Characters.cpython-310.pyc │ │ ├── playerThumbnails.cpython-310.pyc │ │ └── playerThumbnails.cpython-39.pyc │ ├── Skills.py │ └── Locations.py └── CsvReader.py ├── Packets ├── __pycache__ │ ├── Factory.cpython-39.pyc │ ├── Factory.cpython-310.pyc │ ├── Factory.cpython-312.pyc │ ├── PiranhaMessage.cpython-39.pyc │ ├── PiranhaMessage.cpython-310.pyc │ ├── LogicCommandManager.cpython-39.pyc │ ├── LogicCommandManager.cpython-310.pyc │ ├── ServerCommandsFactory.cpython-310.pyc │ └── ServerCommandsFactory.cpython-39.pyc ├── Messages │ ├── Client │ │ ├── __pycache__ │ │ │ ├── Login.cpython-310.pyc │ │ │ ├── Login.cpython-39.pyc │ │ │ ├── Commands.cpython-39.pyc │ │ │ ├── __init__.cpython-39.pyc │ │ │ ├── AskForClan.cpython-310.pyc │ │ │ ├── AskForClan.cpython-39.pyc │ │ │ ├── AskProfile.cpython-310.pyc │ │ │ ├── AskProfile.cpython-39.pyc │ │ │ ├── Commands.cpython-310.pyc │ │ │ ├── KeepAlive.cpython-310.pyc │ │ │ ├── KeepAlive.cpython-39.pyc │ │ │ ├── __init__.cpython-310.pyc │ │ │ ├── __init__.cpython-312.pyc │ │ │ ├── AllianceChat.cpython-310.pyc │ │ │ ├── AllianceChat.cpython-39.pyc │ │ │ ├── AllianceJoin.cpython-310.pyc │ │ │ ├── AllianceJoin.cpython-39.pyc │ │ │ ├── AllianceLeave.cpython-39.pyc │ │ │ ├── GoHomeMessage.cpython-39.pyc │ │ │ ├── LoginMessage.cpython-310.pyc │ │ │ ├── LoginMessage.cpython-39.pyc │ │ │ ├── AllianceCreate.cpython-310.pyc │ │ │ ├── AllianceCreate.cpython-39.pyc │ │ │ ├── AllianceLeave.cpython-310.pyc │ │ │ ├── GoHomeMessage.cpython-310.pyc │ │ │ ├── KeepAliveMessage.cpython-39.pyc │ │ │ ├── TeamChatMessage.cpython-310.pyc │ │ │ ├── TeamChatMessage.cpython-39.pyc │ │ │ ├── TeamJoinMessage.cpython-310.pyc │ │ │ ├── TeamJoinMessage.cpython-39.pyc │ │ │ ├── TeamKickMessage.cpython-310.pyc │ │ │ ├── TeamKickMessage.cpython-39.pyc │ │ │ ├── TeamLeaveMessage.cpython-39.pyc │ │ │ ├── ClientHelloMessage.cpython-39.pyc │ │ │ ├── ClientInfoMessage.cpython-310.pyc │ │ │ ├── ClientInfoMessage.cpython-39.pyc │ │ │ ├── ClientInputMessage.cpython-39.pyc │ │ │ ├── ForceSendBattleEnd.cpython-39.pyc │ │ │ ├── GoHomeFromOffline.cpython-310.pyc │ │ │ ├── GoHomeFromOffline.cpython-39.pyc │ │ │ ├── KeepAliveMessage.cpython-310.pyc │ │ │ ├── TeamCreateMessage.cpython-310.pyc │ │ │ ├── TeamCreateMessage.cpython-39.pyc │ │ │ ├── TeamLeaveMessage.cpython-310.pyc │ │ │ ├── TeamPostAdMessage.cpython-310.pyc │ │ │ ├── TeamPostAdMessage.cpython-39.pyc │ │ │ ├── AllianceEditSettings.cpython-310.pyc │ │ │ ├── AllianceEditSettings.cpython-39.pyc │ │ │ ├── AllianceKickMessage.cpython-310.pyc │ │ │ ├── AllianceKickMessage.cpython-39.pyc │ │ │ ├── AllianceSearchMessage.cpython-39.pyc │ │ │ ├── ClientHelloMessage.cpython-310.pyc │ │ │ ├── ClientInputMessage.cpython-310.pyc │ │ │ ├── EndClientTurnMessage.cpython-310.pyc │ │ │ ├── EndClientTurnMessage.cpython-39.pyc │ │ │ ├── ForceSendBattleEnd.cpython-310.pyc │ │ │ ├── GetLeaderboardMessage.cpython-39.pyc │ │ │ ├── TeamSpectateMessage.cpython-310.pyc │ │ │ ├── TeamSpectateMessage.cpython-39.pyc │ │ │ ├── AlliancePromoteMessage.cpython-310.pyc │ │ │ ├── AlliancePromoteMessage.cpython-39.pyc │ │ │ ├── AllianceSearchMessage.cpython-310.pyc │ │ │ ├── AskForBattleEndMessage.cpython-310.pyc │ │ │ ├── AskForBattleEndMessage.cpython-39.pyc │ │ │ ├── ChangeAvatarNameMessage.cpython-39.pyc │ │ │ ├── GetLeaderboardMessage.cpython-310.pyc │ │ │ ├── MatchmakeRequestMessage.cpython-39.pyc │ │ │ ├── TeamMemberStatusMessage.cpython-39.pyc │ │ │ ├── CancelMatchMakingMessage.cpython-310.pyc │ │ │ ├── CancelMatchMakingMessage.cpython-39.pyc │ │ │ ├── ChangeAvatarNameMessage.cpython-310.pyc │ │ │ ├── ClientCapabilitiesMessage.cpython-310.pyc │ │ │ ├── ClientCapabilitiesMessage.cpython-39.pyc │ │ │ ├── GoHomeFromOfflineMessage.cpython-310.pyc │ │ │ ├── GoHomeFromOfflineMessage.cpython-39.pyc │ │ │ ├── MatchmakeRequestMessage.cpython-310.pyc │ │ │ ├── RequestJoinAllianceMessage.cpython-39.pyc │ │ │ ├── TeamMemberStatusMessage.cpython-310.pyc │ │ │ ├── TeamSetMemberReadyMessage.cpython-310.pyc │ │ │ ├── TeamSetMemberReadyMessage.cpython-39.pyc │ │ │ ├── TeamTogglePracticeMessage.cpython-310.pyc │ │ │ ├── TeamTogglePracticeMessage.cpython-39.pyc │ │ │ ├── RequestJoinAllianceMessage.cpython-310.pyc │ │ │ ├── TeamToggleMemberSideMessage.cpython-310.pyc │ │ │ ├── TeamToggleMemberSideMessage.cpython-39.pyc │ │ │ ├── TeamChangeMemberSettingsMessage.cpython-39.pyc │ │ │ ├── TeamChangeMemberSettingsMessage.cpython-310.pyc │ │ │ ├── AskForJoinableAlliancesListMessage.cpython-310.pyc │ │ │ ├── AskForJoinableAlliancesListMessage.cpython-39.pyc │ │ │ ├── RespondToAllianceJoinRequestMessage.cpython-310.pyc │ │ │ └── RespondToAllianceJoinRequestMessage.cpython-39.pyc │ │ ├── ClientInfoMessage.py │ │ ├── AskForClan.py │ │ ├── ClientCapabilitiesMessage.py │ │ ├── AskForJoinableAlliancesListMessage.py │ │ ├── __init__.py │ │ ├── ClientHelloMessage.py │ │ ├── TeamToggleMemberSideMessage.py │ │ ├── KeepAliveMessage.py │ │ ├── GoHomeMessage.py │ │ ├── AskProfile.py │ │ ├── GoHomeFromOfflineMessage.py │ │ ├── ChangeAvatarNameMessage.py │ │ ├── CancelMatchMakingMessage.py │ │ ├── TeamTogglePracticeMessage.py │ │ ├── TeamMemberStatusMessage.py │ │ ├── TeamChatMessage.py │ │ ├── TeamChangeMemberSettingsMessage.py │ │ ├── Commands.py │ │ ├── EndClientTurnMessage.py │ │ ├── TeamCreateMessage.py │ │ ├── RequestJoinAllianceMessage.py │ │ ├── AskForBattleEndMessage.py │ │ ├── AllianceSearchMessage.py │ │ ├── TeamSpectateMessage.py │ │ ├── TeamLeaveMessage.py │ │ ├── AllianceChat.py │ │ └── AllianceEditSettings.py │ └── Server │ │ ├── __pycache__ │ │ ├── ClanData.cpython-39.pyc │ │ ├── LoginOk.cpython-310.pyc │ │ ├── LoginOk.cpython-39.pyc │ │ ├── Profile.cpython-310.pyc │ │ ├── Profile.cpython-39.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── BattleEnd.cpython-310.pyc │ │ ├── BattleEnd.cpython-39.pyc │ │ ├── ClanData.cpython-310.pyc │ │ ├── ClanStream.cpython-310.pyc │ │ ├── ClanStream.cpython-39.pyc │ │ ├── Commands.cpython-310.pyc │ │ ├── KeepAliveOk.cpython-39.pyc │ │ ├── MyAlliance.cpython-310.pyc │ │ ├── MyAlliance.cpython-39.pyc │ │ ├── OwnHomeData.cpython-39.pyc │ │ ├── TeamMessage.cpython-39.pyc │ │ ├── __init__.cpython-310.pyc │ │ ├── AllianceData.cpython-310.pyc │ │ ├── AllianceData.cpython-39.pyc │ │ ├── KeepAliveOk.cpython-310.pyc │ │ ├── Leaderboards.cpython-310.pyc │ │ ├── Leaderboards.cpython-39.pyc │ │ ├── OwnHomeData.cpython-310.pyc │ │ ├── TeamMessage.cpython-310.pyc │ │ ├── BattleEndMessage.cpython-39.pyc │ │ ├── LobbyInfoMessage.cpython-39.pyc │ │ ├── LoginOkMessage.cpython-310.pyc │ │ ├── LoginOkMessage.cpython-39.pyc │ │ ├── LoginOkMessageCM.cpython-39.pyc │ │ ├── TeamErrorMessage.cpython-39.pyc │ │ ├── TeamLeftMessage.cpython-310.pyc │ │ ├── TeamLeftMessage.cpython-39.pyc │ │ ├── AllianceChatServer.cpython-39.pyc │ │ ├── BattleEndMessage.cpython-310.pyc │ │ ├── FriendListMessage.cpython-310.pyc │ │ ├── FriendListMessage.cpython-39.pyc │ │ ├── KeepAliveOkMessage.cpython-39.pyc │ │ ├── LeaderboardMessage.cpython-39.pyc │ │ ├── LobbyInfoMessage.cpython-310.pyc │ │ ├── LoginFailedMessage.cpython-39.pyc │ │ ├── OwnHomeDataMessage.cpython-39.pyc │ │ ├── TeamErrorMessage.cpython-310.pyc │ │ ├── TeamStreamMessage.cpython-310.pyc │ │ ├── TeamStreamMessage.cpython-39.pyc │ │ ├── AllianceChatServer.cpython-310.pyc │ │ ├── AllianceEventMessage.cpython-310.pyc │ │ ├── AllianceEventMessage.cpython-39.pyc │ │ ├── BattleResultMessage.cpython-310.pyc │ │ ├── KeepAliveOkMessage.cpython-310.pyc │ │ ├── LeaderboardMessage.cpython-310.pyc │ │ ├── LoginFailedMessage.cpython-310.pyc │ │ ├── OwnHomeDataMessage.cpython-310.pyc │ │ ├── OwnHomeDataMessageCM.cpython-39.pyc │ │ ├── StartLoadingMessage.cpython-310.pyc │ │ ├── StartLoadingMessage.cpython-39.pyc │ │ ├── TeamChatServerMessage.cpython-39.pyc │ │ ├── VisionUpdateMessage.cpython-310.pyc │ │ ├── VisionUpdateMessage.cpython-39.pyc │ │ ├── TeamChatServerMessage.cpython-310.pyc │ │ ├── TeamGameStartingMessage.cpython-39.pyc │ │ ├── MatchMakingStatusMessage.cpython-310.pyc │ │ ├── MatchMakingStatusMessage.cpython-39.pyc │ │ ├── OwnHomeDataMessageCM (1).cpython-39.pyc │ │ ├── TeamGameStartingMessage.cpython-310.pyc │ │ ├── UDPConnectionInfoMessage.cpython-310.pyc │ │ ├── UDPConnectionInfoMessage.cpython-39.pyc │ │ ├── AllianceSearchResultMessage.cpython-310.pyc │ │ ├── AllianceSearchResultMessage.cpython-39.pyc │ │ ├── BattleResultShowdownMessage.cpython-310.pyc │ │ ├── JoinableAlliancesListMessage.cpython-39.pyc │ │ ├── AvailableServerCommandMessage.cpython-310.pyc │ │ ├── AvailableServerCommandMessage.cpython-39.pyc │ │ ├── BattleResultDuoShowdownMessage.cpython-310.pyc │ │ └── JoinableAlliancesListMessage.cpython-310.pyc │ │ ├── KeepAliveOkMessage.py │ │ ├── TeamLeftMessage.py │ │ ├── AllianceEventMessage.py │ │ ├── TeamErrorMessage.py │ │ ├── TeamGameStartingMessage.py │ │ ├── __init__.py │ │ ├── UDPConnectionInfoMessage.py │ │ ├── LobbyInfoMessage.py │ │ ├── OwnHomeDataMessage.py │ │ ├── AvailableServerCommandMessage.py │ │ ├── MatchMakingStatusMessage.py │ │ ├── VisionUpdateMessage.py │ │ ├── ClanStream.py │ │ ├── TeamStreamMessage.py │ │ ├── LoginFailedMessage.py │ │ ├── AllianceChatServer.py │ │ ├── LoginOkMessage.py │ │ ├── FriendListMessage.py │ │ └── TeamChatServerMessage.py ├── Commands │ ├── Client │ │ ├── __pycache__ │ │ │ ├── LogicBuyCard.cpython-310.pyc │ │ │ ├── LogicBuyCard.cpython-39.pyc │ │ │ ├── LogicGatchaCommand.cpython-39.pyc │ │ │ ├── LogicGatchaCommand.cpython-310.pyc │ │ │ ├── LogicSelectBattleHints.cpython-310.pyc │ │ │ ├── LogicSelectBattleHints.cpython-39.pyc │ │ │ ├── LogicSelectControlMode.cpython-310.pyc │ │ │ ├── LogicSelectControlMode.cpython-39.pyc │ │ │ ├── LogicUnlockSkinCommand.cpython-310.pyc │ │ │ ├── LogicUnlockSkinCommand.cpython-39.pyc │ │ │ ├── LogicBuyCoinsBoosterCommand.cpython-310.pyc │ │ │ ├── LogicBuyCoinsBoosterCommand.cpython-39.pyc │ │ │ ├── LogicBuyCoinsDoublerCommand.cpython-310.pyc │ │ │ ├── LogicBuyCoinsDoublerCommand.cpython-39.pyc │ │ │ ├── LogicSetPlayerThumbnailCommand.cpython-310.pyc │ │ │ └── LogicSetPlayerThumbnailCommand.cpython-39.pyc │ │ ├── LogicSelectBattleHints.py │ │ ├── LogicBuyCoinsDoublerCommand.py │ │ ├── LogicGatchaCommand.py │ │ ├── LogicSelectControlMode.py │ │ └── LogicBuyCoinsBoosterCommand.py │ └── Server │ │ ├── __pycache__ │ │ ├── LogicDayChangedCommand.cpython-310.pyc │ │ ├── LogicDayChangedCommand.cpython-39.pyc │ │ ├── LogicDiamondsAddedCommand.cpython-310.pyc │ │ ├── LogicDiamondsAddedCommand.cpython-39.pyc │ │ ├── LogicChangeAvatarNameCommand.cpython-39.pyc │ │ ├── LogicChangeAvatarNameCommand.cpython-310.pyc │ │ ├── LogicGiveDeliveryItemsCommand.cpython-310.pyc │ │ └── LogicGiveDeliveryItemsCommand.cpython-39.pyc │ │ ├── LogicChangeAvatarNameCommand.py │ │ ├── LogicDiamondsAddedCommand.py │ │ └── LogicDayChangedCommand.py ├── ServerCommandsFactory.py ├── PiranhaMessage.py ├── LogicCommandManager.py └── Factory.py ├── Cryptography ├── __pycache__ │ ├── nacl.cpython-39.pyc │ ├── rc4.cpython-310.pyc │ ├── rc4.cpython-39.pyc │ ├── nacl.cpython-310.pyc │ ├── __init__.cpython-310.pyc │ ├── __init__.cpython-39.pyc │ ├── RC4Encrypter.cpython-39.pyc │ ├── NACLEncrypter.cpython-310.pyc │ ├── NACLEncrypter.cpython-39.pyc │ └── RC4Encrypter.cpython-310.pyc └── rc4.py ├── Entries ├── __pycache__ │ ├── StreamEntry.cpython-310.pyc │ ├── StreamEntry.cpython-39.pyc │ ├── LogicConfData.cpython-310.pyc │ ├── LogicConfData.cpython-39.pyc │ ├── LogicDailyData.cpython-39.pyc │ ├── ChatStreamEntry.cpython-310.pyc │ ├── ChatStreamEntry.cpython-39.pyc │ ├── LogicClientAvatar.cpython-39.pyc │ ├── LogicClientHome.cpython-310.pyc │ ├── LogicClientHome.cpython-39.pyc │ ├── LogicDailyData.cpython-310.pyc │ ├── PlayerDisplayData.cpython-39.pyc │ ├── ReplayStreamEntry.cpython-39.pyc │ ├── LogicClientAvatar.cpython-310.pyc │ ├── PlayerDisplayData.cpython-310.pyc │ ├── ReplayStreamEntry.cpython-310.pyc │ ├── StreamEntryFactory.cpython-310.pyc │ ├── StreamEntryFactory.cpython-39.pyc │ ├── QuickChatStreamEntry.cpython-310.pyc │ ├── QuickChatStreamEntry.cpython-39.pyc │ ├── TeamCreatedStreamEntry.cpython-39.pyc │ ├── AllianceEventStreamEntry.cpython-39.pyc │ ├── TeamCreatedStreamEntry.cpython-310.pyc │ ├── AllianceEventStreamEntry.cpython-310.pyc │ ├── JoinRequestAllianceStreamEntry.cpython-310.pyc │ └── JoinRequestAllianceStreamEntry.cpython-39.pyc ├── ChatStreamEntry.py ├── MessageDataStreamEntry.py ├── PlayerDisplayData.py ├── TeamCreatedStreamEntry.py ├── QuickChatStreamEntry.py ├── LogicClientHome.py ├── ReplayStreamEntry.py ├── AllianceEventStreamEntry.py ├── StreamEntry.py ├── JoinRequestAllianceStreamEntry.py ├── AllianceTeamEntry.py └── StreamEntryFactory.py ├── GameAssets ├── csv_logic │ ├── locales.csv │ ├── alliance_roles.csv │ ├── resources.csv │ ├── globals.csv │ ├── bosses.csv │ ├── player_thumbnails.csv │ ├── alliance_badges.csv │ └── items.csv └── csv_client │ ├── faces.csv │ ├── health_bars.csv │ ├── credits.csv │ ├── billing_packages.csv │ └── music.csv ├── Main.py ├── BackgroundTasks.py ├── Settings.json ├── script.js ├── banned_acc.json ├── banned_ip.json └── UDPMessage.py /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | Settings.json 3 | Settings.json 4 | -------------------------------------------------------------------------------- /AssetsServer/lastversion.txt: -------------------------------------------------------------------------------- 1 | 1.1714.1...f1545dfbe283ed4c91e3369dbb853e8dcb1b6591 -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /Database/database.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Database/database.db -------------------------------------------------------------------------------- /Database/Database/database.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Database/Database/database.db -------------------------------------------------------------------------------- /__pycache__/battle.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/__pycache__/battle.cpython-310.pyc -------------------------------------------------------------------------------- /__pycache__/battle.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/__pycache__/battle.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Defs.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Defs.cpython-39.pyc -------------------------------------------------------------------------------- /__pycache__/Networking.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/__pycache__/Networking.cpython-39.pyc -------------------------------------------------------------------------------- /__pycache__/UDPMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/__pycache__/UDPMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Logic/__pycache__/Device.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/__pycache__/Device.cpython-39.pyc -------------------------------------------------------------------------------- /Logic/__pycache__/Player.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/__pycache__/Player.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Config.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Config.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Defs.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Defs.cpython-312.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Reader.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Reader.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Writer.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Writer.cpython-39.pyc -------------------------------------------------------------------------------- /__pycache__/Networking.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/__pycache__/Networking.cpython-310.pyc -------------------------------------------------------------------------------- /__pycache__/Networking.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/__pycache__/Networking.cpython-312.pyc -------------------------------------------------------------------------------- /__pycache__/UDPMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/__pycache__/UDPMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Files/__pycache__/CsvReader.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Files/__pycache__/CsvReader.cpython-39.pyc -------------------------------------------------------------------------------- /Logic/__pycache__/Device.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/__pycache__/Device.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/__pycache__/LogicLong.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/__pycache__/LogicLong.cpython-39.pyc -------------------------------------------------------------------------------- /Logic/__pycache__/Player.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/__pycache__/Player.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/__pycache__/Factory.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/__pycache__/Factory.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/BitStream.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/BitStream.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/CPPDefs.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/CPPDefs.cpython-310.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/CPPDefs.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/CPPDefs.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Config.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Config.cpython-312.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Debugger.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Debugger.cpython-310.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Debugger.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Debugger.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Helpers.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Helpers.cpython-310.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Helpers.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Helpers.cpython-312.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Helpers.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Helpers.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/IdUtils.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/IdUtils.cpython-310.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/IdUtils.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/IdUtils.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/LogicLong.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/LogicLong.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Reader.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Reader.cpython-310.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Reader.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Reader.cpython-312.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Utility.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Utility.cpython-310.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Utility.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Utility.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Writer.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Writer.cpython-310.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Writer.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Writer.cpython-312.pyc -------------------------------------------------------------------------------- /__pycache__/BackgroundTasks.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/__pycache__/BackgroundTasks.cpython-39.pyc -------------------------------------------------------------------------------- /Cryptography/__pycache__/nacl.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Cryptography/__pycache__/nacl.cpython-39.pyc -------------------------------------------------------------------------------- /Cryptography/__pycache__/rc4.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Cryptography/__pycache__/rc4.cpython-310.pyc -------------------------------------------------------------------------------- /Cryptography/__pycache__/rc4.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Cryptography/__pycache__/rc4.cpython-39.pyc -------------------------------------------------------------------------------- /Files/__pycache__/CsvReader.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Files/__pycache__/CsvReader.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/__pycache__/LogicLong.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/__pycache__/LogicLong.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/__pycache__/Milestones.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/__pycache__/Milestones.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/__pycache__/Milestones.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/__pycache__/Milestones.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/__pycache__/Factory.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/__pycache__/Factory.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/__pycache__/Factory.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/__pycache__/Factory.cpython-312.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/BitStream.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/BitStream.cpython-310.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/BitStream.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/BitStream.cpython-312.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/ByteStream.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/ByteStream.cpython-310.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/ByteStream.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/ByteStream.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Fingerprint.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Fingerprint.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/LogicLong.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/LogicLong.cpython-310.pyc -------------------------------------------------------------------------------- /__pycache__/BackgroundTasks.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/__pycache__/BackgroundTasks.cpython-310.pyc -------------------------------------------------------------------------------- /__pycache__/TwistedNetworking.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/__pycache__/TwistedNetworking.cpython-39.pyc -------------------------------------------------------------------------------- /AssetsServer/__pycache__/Server.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/AssetsServer/__pycache__/Server.cpython-310.pyc -------------------------------------------------------------------------------- /AssetsServer/__pycache__/Server.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/AssetsServer/__pycache__/Server.cpython-39.pyc -------------------------------------------------------------------------------- /Cryptography/__pycache__/nacl.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Cryptography/__pycache__/nacl.cpython-310.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/StreamEntry.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/StreamEntry.cpython-310.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/StreamEntry.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/StreamEntry.cpython-39.pyc -------------------------------------------------------------------------------- /Files/CsvLogic/__pycache__/Cards.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Files/CsvLogic/__pycache__/Cards.cpython-39.pyc -------------------------------------------------------------------------------- /Files/CsvLogic/__pycache__/Skins.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Files/CsvLogic/__pycache__/Skins.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Fingerprint.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Fingerprint.cpython-310.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/Fingerprint.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/Fingerprint.cpython-312.pyc -------------------------------------------------------------------------------- /__pycache__/TwistedNetworking.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/__pycache__/TwistedNetworking.cpython-310.pyc -------------------------------------------------------------------------------- /Cryptography/__pycache__/__init__.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Cryptography/__pycache__/__init__.cpython-310.pyc -------------------------------------------------------------------------------- /Cryptography/__pycache__/__init__.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Cryptography/__pycache__/__init__.cpython-39.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/LogicConfData.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/LogicConfData.cpython-310.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/LogicConfData.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/LogicConfData.cpython-39.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/LogicDailyData.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/LogicDailyData.cpython-39.pyc -------------------------------------------------------------------------------- /Files/CsvLogic/__pycache__/Cards.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Files/CsvLogic/__pycache__/Cards.cpython-310.pyc -------------------------------------------------------------------------------- /Files/CsvLogic/__pycache__/Skills.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Files/CsvLogic/__pycache__/Skills.cpython-310.pyc -------------------------------------------------------------------------------- /Files/CsvLogic/__pycache__/Skills.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Files/CsvLogic/__pycache__/Skills.cpython-39.pyc -------------------------------------------------------------------------------- /Files/CsvLogic/__pycache__/Skins.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Files/CsvLogic/__pycache__/Skins.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/__pycache__/LogicStringUtil.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/__pycache__/LogicStringUtil.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/__pycache__/LogicStringUtil.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/__pycache__/LogicStringUtil.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/__pycache__/PiranhaMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/__pycache__/PiranhaMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/ByteStreamHelper.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/ByteStreamHelper.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/ChecksumEncoder.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/ChecksumEncoder.cpython-310.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/ChecksumEncoder.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/ChecksumEncoder.cpython-312.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/ChecksumEncoder.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/ChecksumEncoder.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/LogicStringUtil.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/LogicStringUtil.cpython-310.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/LogicStringUtil.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/LogicStringUtil.cpython-39.pyc -------------------------------------------------------------------------------- /Cryptography/__pycache__/RC4Encrypter.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Cryptography/__pycache__/RC4Encrypter.cpython-39.pyc -------------------------------------------------------------------------------- /Database/__pycache__/DatabaseManager.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Database/__pycache__/DatabaseManager.cpython-310.pyc -------------------------------------------------------------------------------- /Database/__pycache__/DatabaseManager.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Database/__pycache__/DatabaseManager.cpython-39.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/ChatStreamEntry.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/ChatStreamEntry.cpython-310.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/ChatStreamEntry.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/ChatStreamEntry.cpython-39.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/LogicClientAvatar.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/LogicClientAvatar.cpython-39.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/LogicClientHome.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/LogicClientHome.cpython-310.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/LogicClientHome.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/LogicClientHome.cpython-39.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/LogicDailyData.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/LogicDailyData.cpython-310.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/PlayerDisplayData.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/PlayerDisplayData.cpython-39.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/ReplayStreamEntry.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/ReplayStreamEntry.cpython-39.pyc -------------------------------------------------------------------------------- /Files/CsvLogic/__pycache__/Characters.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Files/CsvLogic/__pycache__/Characters.cpython-39.pyc -------------------------------------------------------------------------------- /Files/CsvLogic/__pycache__/Locations.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Files/CsvLogic/__pycache__/Locations.cpython-310.pyc -------------------------------------------------------------------------------- /Files/CsvLogic/__pycache__/Locations.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Files/CsvLogic/__pycache__/Locations.cpython-39.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/Row.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/Row.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/__pycache__/LogicBattle.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/__pycache__/LogicBattle.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/__pycache__/LogicBattle.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/__pycache__/LogicBattle.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/__pycache__/PiranhaMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/__pycache__/PiranhaMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Utils/__pycache__/ByteStreamHelper.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Utils/__pycache__/ByteStreamHelper.cpython-310.pyc -------------------------------------------------------------------------------- /Cryptography/__pycache__/NACLEncrypter.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Cryptography/__pycache__/NACLEncrypter.cpython-310.pyc -------------------------------------------------------------------------------- /Cryptography/__pycache__/NACLEncrypter.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Cryptography/__pycache__/NACLEncrypter.cpython-39.pyc -------------------------------------------------------------------------------- /Cryptography/__pycache__/RC4Encrypter.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Cryptography/__pycache__/RC4Encrypter.cpython-310.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/LogicClientAvatar.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/LogicClientAvatar.cpython-310.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/PlayerDisplayData.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/PlayerDisplayData.cpython-310.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/ReplayStreamEntry.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/ReplayStreamEntry.cpython-310.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/StreamEntryFactory.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/StreamEntryFactory.cpython-310.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/StreamEntryFactory.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/StreamEntryFactory.cpython-39.pyc -------------------------------------------------------------------------------- /Files/CsvLogic/__pycache__/Characters.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Files/CsvLogic/__pycache__/Characters.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/Table.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/Table.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/Tile.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/Tile.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/__pycache__/LogicCommandManager.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/__pycache__/LogicCommandManager.cpython-39.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/QuickChatStreamEntry.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/QuickChatStreamEntry.cpython-310.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/QuickChatStreamEntry.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/QuickChatStreamEntry.cpython-39.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/TeamCreatedStreamEntry.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/TeamCreatedStreamEntry.cpython-39.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/DataType.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/DataType.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/GlobalId.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/GlobalId.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/LogicItem.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/LogicItem.cpython-39.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/TileMap.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/TileMap.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/__pycache__/LogicGameModeUtil.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/__pycache__/LogicGameModeUtil.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/Login.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/Login.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/Login.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/Login.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/__pycache__/LogicCommandManager.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/__pycache__/LogicCommandManager.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/__pycache__/ServerCommandsFactory.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/__pycache__/ServerCommandsFactory.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/__pycache__/ServerCommandsFactory.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/__pycache__/ServerCommandsFactory.cpython-39.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/AllianceEventStreamEntry.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/AllianceEventStreamEntry.cpython-39.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/TeamCreatedStreamEntry.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/TeamCreatedStreamEntry.cpython-310.pyc -------------------------------------------------------------------------------- /Files/CsvLogic/__pycache__/playerThumbnails.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Files/CsvLogic/__pycache__/playerThumbnails.cpython-310.pyc -------------------------------------------------------------------------------- /Files/CsvLogic/__pycache__/playerThumbnails.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Files/CsvLogic/__pycache__/playerThumbnails.cpython-39.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/DataTable.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/DataTable.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/DataTables.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/DataTables.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/GameFiles.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/GameFiles.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/LogicData.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/LogicData.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/LogicItem.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/LogicItem.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Tick/__pycache__/LogicMovement.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Tick/__pycache__/LogicMovement.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Tick/__pycache__/LogicMovement.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Tick/__pycache__/LogicMovement.cpython-39.pyc -------------------------------------------------------------------------------- /Logic/Battle/__pycache__/LogicGameModeUtil.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/__pycache__/LogicGameModeUtil.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/Commands.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/Commands.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/__init__.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/__init__.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/ClanData.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/ClanData.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/LoginOk.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/LoginOk.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/LoginOk.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/LoginOk.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/Profile.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/Profile.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/Profile.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/Profile.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/__init__.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/__init__.cpython-39.pyc -------------------------------------------------------------------------------- /Database/Database/__pycache__/DatabaseManager.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Database/Database/__pycache__/DatabaseManager.cpython-310.pyc -------------------------------------------------------------------------------- /Database/Database/__pycache__/DatabaseManager.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Database/Database/__pycache__/DatabaseManager.cpython-39.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/AllianceEventStreamEntry.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/AllianceEventStreamEntry.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/LogicCharacter.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/LogicCharacter.cpython-39.pyc -------------------------------------------------------------------------------- /Logic/Battle/__pycache__/LogicBattleModeServer.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/__pycache__/LogicBattleModeServer.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/__pycache__/LogicBattleModeServer.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/__pycache__/LogicBattleModeServer.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AskForClan.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AskForClan.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AskForClan.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AskForClan.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AskProfile.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AskProfile.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AskProfile.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AskProfile.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/Commands.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/Commands.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/KeepAlive.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/KeepAlive.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/KeepAlive.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/KeepAlive.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/__init__.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/__init__.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/__init__.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/__init__.cpython-312.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/BattleEnd.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/BattleEnd.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/BattleEnd.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/BattleEnd.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/ClanData.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/ClanData.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/ClanStream.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/ClanStream.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/ClanStream.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/ClanStream.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/Commands.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/Commands.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/KeepAliveOk.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/KeepAliveOk.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/MyAlliance.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/MyAlliance.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/MyAlliance.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/MyAlliance.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/OwnHomeData.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/OwnHomeData.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/TeamMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/TeamMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/__init__.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/__init__.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/LogicAreaEffect.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/LogicAreaEffect.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/LogicAreaEffect.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/LogicAreaEffect.cpython-39.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/LogicCharacter.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/LogicCharacter.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/LogicProjectile.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/LogicProjectile.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/LogicProjectile.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/LogicProjectile.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicBuyCard.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicBuyCard.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicBuyCard.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicBuyCard.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AllianceChat.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AllianceChat.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AllianceChat.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AllianceChat.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AllianceJoin.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AllianceJoin.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AllianceJoin.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AllianceJoin.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AllianceLeave.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AllianceLeave.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/GoHomeMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/GoHomeMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/LoginMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/LoginMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/LoginMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/LoginMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/AllianceData.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/AllianceData.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/AllianceData.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/AllianceData.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/KeepAliveOk.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/KeepAliveOk.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/Leaderboards.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/Leaderboards.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/Leaderboards.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/Leaderboards.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/OwnHomeData.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/OwnHomeData.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/TeamMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/TeamMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/JoinRequestAllianceStreamEntry.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/JoinRequestAllianceStreamEntry.cpython-310.pyc -------------------------------------------------------------------------------- /Entries/__pycache__/JoinRequestAllianceStreamEntry.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Entries/__pycache__/JoinRequestAllianceStreamEntry.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AllianceCreate.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AllianceCreate.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AllianceCreate.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AllianceCreate.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AllianceLeave.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AllianceLeave.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/GoHomeMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/GoHomeMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/KeepAliveMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/KeepAliveMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamChatMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamChatMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamChatMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamChatMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamJoinMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamJoinMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamJoinMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamJoinMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamKickMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamKickMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamKickMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamKickMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamLeaveMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamLeaveMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/BattleEndMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/BattleEndMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/LobbyInfoMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/LobbyInfoMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/LoginOkMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/LoginOkMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/LoginOkMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/LoginOkMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/LoginOkMessageCM.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/LoginOkMessageCM.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/TeamErrorMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/TeamErrorMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/TeamLeftMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/TeamLeftMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/TeamLeftMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/TeamLeftMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/LogicGameObjectServer.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/LogicGameObjectServer.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicGatchaCommand.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicGatchaCommand.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/ClientHelloMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/ClientHelloMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/ClientInfoMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/ClientInfoMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/ClientInfoMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/ClientInfoMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/ClientInputMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/ClientInputMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/ForceSendBattleEnd.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/ForceSendBattleEnd.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/GoHomeFromOffline.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/GoHomeFromOffline.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/GoHomeFromOffline.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/GoHomeFromOffline.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/KeepAliveMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/KeepAliveMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamCreateMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamCreateMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamCreateMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamCreateMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamLeaveMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamLeaveMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamPostAdMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamPostAdMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamPostAdMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamPostAdMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/AllianceChatServer.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/AllianceChatServer.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/BattleEndMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/BattleEndMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/FriendListMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/FriendListMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/FriendListMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/FriendListMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/KeepAliveOkMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/KeepAliveOkMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/LeaderboardMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/LeaderboardMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/LobbyInfoMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/LobbyInfoMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/LoginFailedMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/LoginFailedMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/OwnHomeDataMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/OwnHomeDataMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/TeamErrorMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/TeamErrorMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/TeamStreamMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/TeamStreamMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/TeamStreamMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/TeamStreamMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/LogicGameObjectServer.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/LogicGameObjectServer.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicGatchaCommand.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicGatchaCommand.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AllianceEditSettings.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AllianceEditSettings.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AllianceEditSettings.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AllianceEditSettings.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AllianceKickMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AllianceKickMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AllianceKickMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AllianceKickMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AllianceSearchMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AllianceSearchMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/ClientHelloMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/ClientHelloMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/ClientInputMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/ClientInputMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/EndClientTurnMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/EndClientTurnMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/EndClientTurnMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/EndClientTurnMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/ForceSendBattleEnd.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/ForceSendBattleEnd.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/GetLeaderboardMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/GetLeaderboardMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamSpectateMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamSpectateMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamSpectateMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamSpectateMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/AllianceChatServer.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/AllianceChatServer.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/AllianceEventMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/AllianceEventMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/AllianceEventMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/AllianceEventMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/BattleResultMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/BattleResultMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/KeepAliveOkMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/KeepAliveOkMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/LeaderboardMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/LeaderboardMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/LoginFailedMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/LoginFailedMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/OwnHomeDataMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/OwnHomeDataMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/OwnHomeDataMessageCM.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/OwnHomeDataMessageCM.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/StartLoadingMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/StartLoadingMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/StartLoadingMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/StartLoadingMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/TeamChatServerMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/TeamChatServerMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/VisionUpdateMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/VisionUpdateMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/VisionUpdateMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/VisionUpdateMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/LogicBattleModeServer.py: -------------------------------------------------------------------------------- 1 | class LogicBattleModeServer: 2 | 3 | ART_TEST = False 4 | BATTLE_ROYALE_TICKS = 16000 5 | LASER_BALL_TICKS = 4280 6 | BOSS_FIGHT_TICKS = 9680 7 | NORMAL_TICKS = 3080 -------------------------------------------------------------------------------- /Logic/Battle/LogicBattleModeServer.py: -------------------------------------------------------------------------------- 1 | class LogicBattleModeServer: 2 | 3 | ART_TEST = False 4 | BATTLE_ROYALE_TICKS = 16000 5 | LASER_BALL_TICKS = 4280 6 | BOSS_FIGHT_TICKS = 9680 7 | NORMAL_TICKS = 3080 -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicSelectBattleHints.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicSelectBattleHints.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicSelectBattleHints.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicSelectBattleHints.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicSelectControlMode.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicSelectControlMode.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicSelectControlMode.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicSelectControlMode.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicUnlockSkinCommand.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicUnlockSkinCommand.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicUnlockSkinCommand.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicUnlockSkinCommand.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Commands/Server/__pycache__/LogicDayChangedCommand.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Server/__pycache__/LogicDayChangedCommand.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Commands/Server/__pycache__/LogicDayChangedCommand.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Server/__pycache__/LogicDayChangedCommand.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AlliancePromoteMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AlliancePromoteMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AlliancePromoteMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AlliancePromoteMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AllianceSearchMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AllianceSearchMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AskForBattleEndMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AskForBattleEndMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AskForBattleEndMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AskForBattleEndMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/ChangeAvatarNameMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/ChangeAvatarNameMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/GetLeaderboardMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/GetLeaderboardMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/MatchmakeRequestMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/MatchmakeRequestMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamMemberStatusMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamMemberStatusMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/TeamChatServerMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/TeamChatServerMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/TeamGameStartingMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/TeamGameStartingMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/LogicGameObjectManagerServer.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/LogicGameObjectManagerServer.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/Battle/Objects/__pycache__/LogicGameObjectManagerServer.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Logic/Battle/Objects/__pycache__/LogicGameObjectManagerServer.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Commands/Server/__pycache__/LogicDiamondsAddedCommand.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Server/__pycache__/LogicDiamondsAddedCommand.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Commands/Server/__pycache__/LogicDiamondsAddedCommand.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Server/__pycache__/LogicDiamondsAddedCommand.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/CancelMatchMakingMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/CancelMatchMakingMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/CancelMatchMakingMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/CancelMatchMakingMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/ChangeAvatarNameMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/ChangeAvatarNameMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/ClientCapabilitiesMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/ClientCapabilitiesMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/ClientCapabilitiesMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/ClientCapabilitiesMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/GoHomeFromOfflineMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/GoHomeFromOfflineMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/GoHomeFromOfflineMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/GoHomeFromOfflineMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/MatchmakeRequestMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/MatchmakeRequestMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/RequestJoinAllianceMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/RequestJoinAllianceMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamMemberStatusMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamMemberStatusMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamSetMemberReadyMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamSetMemberReadyMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamSetMemberReadyMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamSetMemberReadyMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamTogglePracticeMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamTogglePracticeMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamTogglePracticeMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamTogglePracticeMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/MatchMakingStatusMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/MatchMakingStatusMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/MatchMakingStatusMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/MatchMakingStatusMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/OwnHomeDataMessageCM (1).cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/OwnHomeDataMessageCM (1).cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/TeamGameStartingMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/TeamGameStartingMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/UDPConnectionInfoMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/UDPConnectionInfoMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/UDPConnectionInfoMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/UDPConnectionInfoMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/Debugger.py: -------------------------------------------------------------------------------- 1 | class Debugger: 2 | @staticmethod 3 | def error(message): 4 | print("[ERROR]", message) 5 | 6 | @staticmethod 7 | def warning(message): 8 | print("[WARNING]", message) -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicBuyCoinsBoosterCommand.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicBuyCoinsBoosterCommand.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicBuyCoinsBoosterCommand.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicBuyCoinsBoosterCommand.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicBuyCoinsDoublerCommand.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicBuyCoinsDoublerCommand.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicBuyCoinsDoublerCommand.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicBuyCoinsDoublerCommand.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Commands/Server/__pycache__/LogicChangeAvatarNameCommand.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Server/__pycache__/LogicChangeAvatarNameCommand.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/RequestJoinAllianceMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/RequestJoinAllianceMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamToggleMemberSideMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamToggleMemberSideMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamToggleMemberSideMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamToggleMemberSideMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/AllianceSearchResultMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/AllianceSearchResultMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/AllianceSearchResultMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/AllianceSearchResultMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/BattleResultShowdownMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/BattleResultShowdownMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/JoinableAlliancesListMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/JoinableAlliancesListMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicSetPlayerThumbnailCommand.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicSetPlayerThumbnailCommand.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Commands/Client/__pycache__/LogicSetPlayerThumbnailCommand.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Client/__pycache__/LogicSetPlayerThumbnailCommand.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Commands/Server/__pycache__/LogicChangeAvatarNameCommand.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Server/__pycache__/LogicChangeAvatarNameCommand.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Commands/Server/__pycache__/LogicGiveDeliveryItemsCommand.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Server/__pycache__/LogicGiveDeliveryItemsCommand.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Commands/Server/__pycache__/LogicGiveDeliveryItemsCommand.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Commands/Server/__pycache__/LogicGiveDeliveryItemsCommand.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamChangeMemberSettingsMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamChangeMemberSettingsMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/AvailableServerCommandMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/AvailableServerCommandMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/AvailableServerCommandMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/AvailableServerCommandMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/BattleResultDuoShowdownMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/BattleResultDuoShowdownMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Server/__pycache__/JoinableAlliancesListMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Server/__pycache__/JoinableAlliancesListMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Logic/LogicStringUtil.py: -------------------------------------------------------------------------------- 1 | class LogicStringUtil: 2 | @staticmethod 3 | def getBytes(string): 4 | return string.encode() 5 | 6 | @staticmethod 7 | def getByteLength(string): 8 | return len(string) 9 | -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/TeamChangeMemberSettingsMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/TeamChangeMemberSettingsMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Utils/LogicStringUtil.py: -------------------------------------------------------------------------------- 1 | class LogicStringUtil: 2 | @staticmethod 3 | def getBytes(string): 4 | return string.encode() 5 | 6 | @staticmethod 7 | def getByteLength(string): 8 | return len(string) 9 | -------------------------------------------------------------------------------- /GameAssets/csv_logic/locales.csv: -------------------------------------------------------------------------------- 1 | "Name","IconSWF","IconExportName","LocalizedName","Enabled","FileName" 2 | "String","String","String","String","Boolean","String" 3 | "EN","sc/ui.sc","flag_gb","English","true","csv_client/texts.csv" 4 | -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AskForJoinableAlliancesListMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AskForJoinableAlliancesListMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/AskForJoinableAlliancesListMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/AskForJoinableAlliancesListMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/RespondToAllianceJoinRequestMessage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/RespondToAllianceJoinRequestMessage.cpython-310.pyc -------------------------------------------------------------------------------- /Packets/Messages/Client/__pycache__/RespondToAllianceJoinRequestMessage.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Super-brawl-team/Obiad-Brawl/HEAD/Packets/Messages/Client/__pycache__/RespondToAllianceJoinRequestMessage.cpython-39.pyc -------------------------------------------------------------------------------- /Utils/LogicCharacterServer.py: -------------------------------------------------------------------------------- 1 | class LogicCharacterServer: 2 | def setDefaultStartRotation(playerTeam): 3 | defaultStartRotation = 270 4 | if playerTeam == 1: 5 | defaultStartRotation = 90 6 | return defaultStartRotation -------------------------------------------------------------------------------- /Entries/ChatStreamEntry.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | from Entries.StreamEntry import StreamEntry 3 | 4 | 5 | class ChatStreamEntry: 6 | def encode(ByteStream: Writer, info): 7 | StreamEntry.encode(ByteStream, info) 8 | ByteStream.writeString(info['Message']) -------------------------------------------------------------------------------- /Entries/MessageDataStreamEntry.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | from Entries.StreamEntry import StreamEntry 3 | 4 | class MessageDataStreamEntry: 5 | def encode(self: Writer, info): 6 | StreamEntry.encode(self, info) 7 | self.writeDataReference(0, info["Tick"]) 8 | 9 | -------------------------------------------------------------------------------- /AssetsServer/readme.txt: -------------------------------------------------------------------------------- 1 | How to use: 2 | 3 | put your files in AssetsServer/Content 4 | 5 | run ContentUpdater/Updater.py 6 | 7 | after its done run restart the server 8 | 9 | if you managed to delete it by accident here what lastversion.txt should contain 10 | 11 | 1.1714.1...f1545dfbe283ed4c91e3369dbb853e8dcb1b6591 -------------------------------------------------------------------------------- /Entries/PlayerDisplayData.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | 3 | class PlayerDisplayData: 4 | 5 | def encode(ByteStream: Writer, player): 6 | ByteStream.writeString("primoDEV") # player name 7 | ByteStream.writeInt(100) # player experience level 8 | ByteStream.writeInt(28000000) # player icon -------------------------------------------------------------------------------- /Packets/Messages/Server/KeepAliveOkMessage.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from Utils.Writer import Writer 3 | 4 | 5 | class KeepAliveOkMessage(Writer): 6 | 7 | def __init__(self, device, player): 8 | self.id = 20108 9 | self.device = device 10 | self.player = player 11 | super().__init__(self.device) 12 | 13 | def encode(self): 14 | pass 15 | -------------------------------------------------------------------------------- /GameAssets/csv_client/faces.csv: -------------------------------------------------------------------------------- 1 | "Name","FileName","ExportName" 2 | "String","String","String" 3 | "BullGuyIdle","ui.sc","hero_portrait" 4 | "BullGuyWalk","ui.sc","hero_portrait" 5 | "BullGuyHappy","ui.sc","hero_portrait" 6 | "BullGuySad","ui.sc","hero_portrait" 7 | "BullGuySignature","ui.sc","hero_portrait" 8 | "BullGuyUiPose","ui.sc","hero_portrait" 9 | "ShellyFace","characters.sc","shelly_face" 10 | -------------------------------------------------------------------------------- /Utils/Utility.py: -------------------------------------------------------------------------------- 1 | import json 2 | 3 | class Utility: 4 | def parseFields(fields: dict): 5 | print() 6 | for typeName,value in fields.items(): 7 | print(f"{typeName}: {value}") 8 | print() 9 | 10 | def getFingerprintData(resourceSha): 11 | return json.dumps(json.loads(open(f"AssetsServer/Update/{resourceSha}/fingerprint.json", 'r').read())) -------------------------------------------------------------------------------- /Entries/TeamCreatedStreamEntry.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | from Entries.StreamEntry import StreamEntry 3 | 4 | 5 | class TeamCreatedStreamEntry: 6 | def encode(self: Writer, info): 7 | StreamEntry.encode(self, info) 8 | self.writeLong(0, info["promotedTeam"]) 9 | self.writeVInt(0) # ad info tid id 10 | self.writeVInt(0) # unk 11 | self.writeVInt(0) # unk 12 | -------------------------------------------------------------------------------- /GameAssets/csv_client/health_bars.csv: -------------------------------------------------------------------------------- 1 | "Name","FileName","PlayerExportNameTop","PlayerExportNameBot","EnemyExportNameTop","EnemyExportNameBot","YourTeamExportNameTop","YourTeamExportNameBot" 2 | "String","String","String","String","String","String","String","String" 3 | "Medium","sc/ui.sc","player_info_badge","player_info_badge_btm","enemy_info_badge","enemy_info_badge_btm","yourteam_info_badge","teammate_info_badge_btm" 4 | -------------------------------------------------------------------------------- /Packets/Messages/Server/TeamLeftMessage.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | 3 | 4 | class TeamLeftMessage(Writer): 5 | 6 | def __init__(self, device, player, reason): 7 | self.id = 24125 8 | self.device = device 9 | self.player = player 10 | self.reason = reason 11 | super().__init__(self.device) 12 | 13 | def encode(self): 14 | self.writeInt(self.reason) #I suppose leave reason -------------------------------------------------------------------------------- /Entries/QuickChatStreamEntry.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | from Entries.StreamEntry import StreamEntry 3 | 4 | 5 | class QuickChatStreamEntry: 6 | def encode(self: Writer, info): 7 | StreamEntry.encode(self, info) 8 | self.writeDataReference(40, info['MessageDataID']) 9 | self.writeBoolean(False) 10 | self.writeString() 11 | self.writeVInt(0) 12 | self.writeVInt(info['PremadeID']) -------------------------------------------------------------------------------- /Packets/Messages/Server/AllianceEventMessage.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from Utils.Writer import Writer 3 | 4 | 5 | class AllianceEventMessage(Writer): 6 | 7 | def __init__(self, device, player, event): 8 | self.id = 24333 9 | self.device = device 10 | self.event = event 11 | self.player = player 12 | super().__init__(self.device) 13 | 14 | def encode(self): 15 | self.writeVInt(self.event) 16 | -------------------------------------------------------------------------------- /Packets/Messages/Server/TeamErrorMessage.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | 3 | 4 | class TeamErrorMessage(Writer): 5 | 6 | def __init__(self, device, player, error): 7 | self.id = 24129 8 | self.device = device 9 | self.player = player 10 | self.error = error 11 | super().__init__(self.device) 12 | 13 | def encode(self): 14 | self.writeVInt(self.error) # Error TID 15 | self.writeVInt(0) -------------------------------------------------------------------------------- /Packets/Commands/Server/LogicChangeAvatarNameCommand.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | 3 | 4 | class LogicChangeAvatarNameCommand(Writer): 5 | 6 | def __init__(self, device, player): 7 | super().__init__(device) 8 | self.id = 24111 9 | self.player = player 10 | self.device = device 11 | 12 | 13 | def encode(self, state): 14 | self.writeString(self.player.name) 15 | self.writeVInt(state) # state 16 | -------------------------------------------------------------------------------- /Packets/Messages/Server/TeamGameStartingMessage.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | 3 | 4 | class TeamGameStartingMessage(Writer): 5 | 6 | def __init__(self, device, player): 7 | self.id = 24130 8 | self.player = player 9 | self.device = device 10 | super().__init__(self.device) 11 | 12 | def encode(self): 13 | self.writeVInt(0) 14 | self.writeVInt(0) 15 | 16 | self.writeDataReference(15, 0) # map pour -------------------------------------------------------------------------------- /Entries/LogicClientHome.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | from Database.DatabaseManager import DataBase 3 | import json 4 | from Entries.LogicDailyData import LogicDailyData 5 | from Entries.LogicConfData import LogicConfData 6 | class LogicClientHome: 7 | def encode(self: Writer, player): 8 | self.player = player 9 | LogicDailyData.encode(self, self.player) 10 | LogicConfData.encode(self, self.player) 11 | self.writeLong(self.player.high_id, self.player.low_id) # Player id -------------------------------------------------------------------------------- /Packets/Messages/Client/ClientInfoMessage.py: -------------------------------------------------------------------------------- 1 | from Logic.Player import Player 2 | from Utils.Reader import ByteStream 3 | 4 | 5 | class ClientInfoMessage(ByteStream): 6 | def __init__(self, data, device, player): 7 | super().__init__(data) 8 | self.device = device 9 | self.data = data 10 | self.player = player 11 | 12 | def decode(self): 13 | self.info = self.readString() 14 | 15 | 16 | def process(self): 17 | print("[*] client battle info: " , self.info) -------------------------------------------------------------------------------- /Logic/Battle/Objects/LogicGameObjectServer.py: -------------------------------------------------------------------------------- 1 | import time 2 | from Utils.BitStream import BitStream 3 | 4 | class LogicGameObjectServer(BitStream): 5 | 6 | 7 | def encode(stream, playerData): 8 | 9 | stream.writePositiveInt(playerData["x"], 13) 10 | stream.writePositiveInt(playerData["y"], 14) 11 | stream.writePositiveInt(playerData["index"], 7) 12 | stream.writePositiveInt(playerData["z"], 12) 13 | stream.writePositiveInt(playerData["visibility"], 4) 14 | -------------------------------------------------------------------------------- /Main.py: -------------------------------------------------------------------------------- 1 | from threading import * 2 | from Networking import * 3 | from battle import * 4 | import json 5 | from AssetsServer.Server import * 6 | from BackgroundTasks import * 7 | settings = json.load(open('Settings.json')) 8 | print('Welcome to Obiad Brawl. Running v1-2') 9 | BackgroundTasks().start() 10 | Networking().start() 11 | if settings["UseUDPServer"]: 12 | UDPServer(host="0.0.0.0", port=5555).start() 13 | if settings["gameAssetsServer"]: 14 | https_thread = Thread(target=Server.run) 15 | https_thread.start() -------------------------------------------------------------------------------- /BackgroundTasks.py: -------------------------------------------------------------------------------- 1 | from threading import * 2 | import json 3 | import time 4 | from Database.DatabaseManager import DataBase 5 | 6 | class BackgroundTasks(Thread): 7 | def __init__(self): 8 | super().__init__() 9 | self.daemon = True 10 | 11 | def run(self): 12 | db = DataBase(None) 13 | while True: 14 | try: 15 | db.rerollEvents() 16 | except Exception as e: 17 | print("[!] Error during event reroll:", e) 18 | time.sleep(7) -------------------------------------------------------------------------------- /Entries/ReplayStreamEntry.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | from Entries.StreamEntry import StreamEntry 3 | 4 | 5 | class ReplayStreamEntry: 6 | def encode(self: Writer, info): 7 | StreamEntry.encode(self, info) 8 | self.writeVInt(0) 9 | self.writeLong(0, 1) 10 | self.writeBoolean(False) 11 | self.writeString("String1") 12 | self.writeString("String2") 13 | self.writeString("String3") 14 | self.writeVInt(0) 15 | self.writeVInt(0) 16 | self.writeVInt(0) 17 | 18 | -------------------------------------------------------------------------------- /Files/CsvReader.py: -------------------------------------------------------------------------------- 1 | import csv 2 | 3 | class CsvReader: 4 | def readCsv(self, filename): 5 | self.rowData = [] 6 | self.lineCount = 0 7 | with open(filename) as csvFile: 8 | self.csvReader = csv.reader(csvFile, delimiter=',') 9 | for row in self.csvReader: 10 | if self.lineCount == 0 or self.lineCount == 1: 11 | self.lineCount += 1 12 | else: 13 | self.rowData.append(row) 14 | self.lineCount += 1 15 | return self.rowData 16 | -------------------------------------------------------------------------------- /Settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Address": "0.0.0.0", 3 | "Port": 9339, 4 | "RC4Key": "c2GJQU5hCJW56525cLA9MQ9JINk3zZk4nJsjYq", 5 | "MaximumRank": 20, 6 | "MaximumUpgradeLevel": 5, 7 | "usedCryptography": "RC4", 8 | "NACLServerPrivateKey" : "78BD03628030B86BCF17817DF13A3E9C0E8FD03F06F222A44C40CA70F3ECC748", 9 | "UseUDPServer": false, 10 | "startingTutorialState": 2, 11 | "seasonEndBonus": 0, 12 | "gameAssetsPort": 8080, 13 | "gameAssetsAddress": "0.0.0.0", 14 | "UDPPort": 5555, 15 | "UDPAddress": "0.0.0.0", 16 | "gameAssetsServer": true 17 | } 18 | -------------------------------------------------------------------------------- /Packets/Messages/Client/AskForClan.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.AllianceData import AllianceData 2 | from Utils.Reader import ByteStream 3 | from Logic.Player import Player 4 | 5 | 6 | class AskForClan(ByteStream): 7 | 8 | def __init__(self, data, device, player): 9 | super().__init__(data) 10 | self.device = device 11 | self.data = data 12 | self.player = player 13 | 14 | def decode(self): 15 | self.ID = self.readLong() 16 | 17 | def process(self): 18 | AllianceData(self.device, self.player, self.ID[1]).Send() # 14109 -------------------------------------------------------------------------------- /Packets/ServerCommandsFactory.py: -------------------------------------------------------------------------------- 1 | from Packets.Commands.Server.LogicGiveDeliveryItemsCommand import LogicGiveDeliveryItemsCommand 2 | from Packets.Commands.Server.LogicChangeAvatarNameCommand import LogicChangeAvatarNameCommand 3 | from Packets.Commands.Server.LogicDiamondsAddedCommand import LogicDiamondsAddedCommand 4 | from Packets.Commands.Server.LogicDayChangedCommand import LogicDayChangedCommand 5 | 6 | commands = { 7 | 201: LogicChangeAvatarNameCommand, 8 | 202: LogicDiamondsAddedCommand, 9 | 203: LogicGiveDeliveryItemsCommand, 10 | 204: LogicDayChangedCommand, 11 | } -------------------------------------------------------------------------------- /GameAssets/csv_client/credits.csv: -------------------------------------------------------------------------------- 1 | "Name",-0 2 | "String","int" 3 | "Mauritz Bart", 4 | "Brad Bolinder", 5 | "Paul Chambers", 6 | "Chris Duong", 7 | "Jon Franzas", 8 | "Stefan Hauk", 9 | "Juha Huotari", 10 | "Tomi Joki-Korpela", 11 | "Robert Kamphuis", 12 | "Matti Kemppainen", 13 | "Terje Koskinen", 14 | "Mikko Laakkio", 15 | "Mikko Lehtonen", 16 | "Ryan Lighton", 17 | "Phillip Lockwood", 18 | "Jonne Loikkanen", 19 | "Lauri Manninen", 20 | "Antti Mattila", 21 | "Taneli Oksama", 22 | "Janne Peltola", 23 | "Martin Schjøler", 24 | "Antti Summala", 25 | "Touko Tahkokallio", 26 | "Antti Varila", 27 | "Jaakko Väyrynen", 28 | -------------------------------------------------------------------------------- /Logic/Battle/Objects/LogicAreaEffect.py: -------------------------------------------------------------------------------- 1 | import math 2 | import time 3 | from Utils.BitStream import BitStream 4 | #from Packets.Messages.Server.VisionUpdateMessage import VisionUpdateMessage 5 | class LogicAreaEffect(BitStream): 6 | def __init__(self, device): 7 | self.device = device 8 | 9 | def encode(player, stream, heroes, index): 10 | 11 | stream.writePositiveInt(abs(player.x - 600), 13) 12 | stream.writePositiveInt(player.y + 600, 14) 13 | stream.writePositiveInt(102, 7) 14 | stream.writePositiveInt(0, 12) 15 | stream.writePositiveInt(10, 4) 16 | -------------------------------------------------------------------------------- /Packets/Messages/Client/ClientCapabilitiesMessage.py: -------------------------------------------------------------------------------- 1 | from random import choice 2 | from string import ascii_uppercase 3 | import json 4 | 5 | from Logic.Player import Player 6 | 7 | from Utils.Reader import ByteStream 8 | 9 | 10 | class ClientCapabilitiesMessage(ByteStream): 11 | def __init__(self, data, device, player): 12 | super().__init__(data) 13 | self.device = device 14 | self.data = data 15 | self.player = player 16 | 17 | def decode(self): 18 | self.ping = self.readVInt() 19 | print(f"[*] User's latency : {self.ping} ") 20 | 21 | def process(self): 22 | pass -------------------------------------------------------------------------------- /Utils/Id2Tag.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import math 3 | 4 | def getIdFromHl(): 5 | High = int(input('>>')) 6 | Low = int(input('>>')) 7 | return (Low << 8) + High 8 | 9 | 10 | def getHashtagfromId(Id = None): 11 | if not Id: 12 | Id = getIdFromHl() 13 | 14 | TagChar = ("0", "2", "8", "9", "P", "Y", "L", "Q", "G", "R", "J", "C", "U", "V") 15 | Tag = [] 16 | while Id > 0: 17 | CharIndex = math.floor(Id % len(TagChar)) 18 | Tag.insert(0,TagChar[CharIndex]) 19 | Id -= CharIndex 20 | Id /= len(TagChar) 21 | 22 | return ''.join(Tag) 23 | 24 | 25 | if __name__ == '__main__': 26 | print('#' + getHashtagfromId()) 27 | -------------------------------------------------------------------------------- /Packets/Messages/Client/AskForJoinableAlliancesListMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.JoinableAlliancesListMessage import JoinableAlliancesListMessage 2 | from Utils.Reader import ByteStream 3 | from Logic.Player import Player 4 | 5 | 6 | class AskForJoinableAlliancesListMessage(ByteStream): 7 | 8 | def __init__(self, data, device, player): 9 | super().__init__(data) 10 | self.device = device 11 | self.data = data 12 | self.player = player 13 | 14 | def decode(self): 15 | pass 16 | 17 | def process(self): 18 | JoinableAlliancesListMessage(self.device, self.player).Send() # 14109 -------------------------------------------------------------------------------- /GameAssets/csv_logic/alliance_roles.csv: -------------------------------------------------------------------------------- 1 | "Name","Level","TID","CanInvite","CanSendMail","CanChangeAllianceSettings","CanAcceptJoinRequest","CanKick","CanBePromotedToLeader","CanPromoteToOwnLevel" 2 | "String","int","String","Boolean","Boolean","Boolean","Boolean","Boolean","Boolean","Boolean" 3 | "NonMember",0,,"false","false","false","false",,, 4 | "Member",1,"TID_ALLIANCE_ROLE_MEMBER","false","false","false","false","false",, 5 | "Leader",20,"TID_ALLIANCE_ROLE_LEADER","true","true","true","true","true","true", 6 | "Elder",5,"TID_ALLIANCE_ROLE_ELDER","true","false","false","true","true",, 7 | "Co-leader",10,"TID_ALLIANCE_ROLE_CO_LEADER","true","true","true","true","true","true","true" 8 | -------------------------------------------------------------------------------- /Packets/Messages/Server/__init__.py: -------------------------------------------------------------------------------- 1 | __all__ = [] 2 | 3 | import pkgutil 4 | import inspect 5 | 6 | 7 | ''' 8 | Little script that load every messages in the directory: 9 | - just call : from Packets.Messages.Client import * 10 | and every packets class will be callable (e.g: LoginOk() ) 11 | 12 | ''' 13 | for loader, name, is_pkg in pkgutil.walk_packages(__path__): 14 | import importlib 15 | module = importlib.import_module(f'Packets.Messages.Server.{name}') 16 | for name, value in inspect.getmembers(module): 17 | if name.startswith('__'): 18 | continue 19 | 20 | globals()[name] = value 21 | __all__.append(name) 22 | -------------------------------------------------------------------------------- /Packets/Messages/Client/__init__.py: -------------------------------------------------------------------------------- 1 | __all__ = [] 2 | 3 | import pkgutil 4 | import inspect 5 | 6 | 7 | ''' 8 | Little script that load every messages in the directory: 9 | - just call : from Packets.Messages.Client import * 10 | and every packets class will be callable (e.g: ClientHello() ) 11 | 12 | ''' 13 | for loader, name, is_pkg in pkgutil.walk_packages(__path__): 14 | import importlib 15 | module = importlib.import_module(f'Packets.Messages.Client.{name}') 16 | 17 | for name, value in inspect.getmembers(module): 18 | if name.startswith('__'): 19 | continue 20 | 21 | globals()[name] = value 22 | __all__.append(name) 23 | -------------------------------------------------------------------------------- /Packets/Messages/Server/UDPConnectionInfoMessage.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | import json 3 | 4 | class UDPConnectionInfoMessage(Writer): 5 | 6 | def __init__(self, device, player): 7 | self.id = 24112 8 | self.device = device 9 | self.player = player 10 | super().__init__(self.device) 11 | 12 | 13 | def encode(self): 14 | self.writeVInt(json.load(open("Settings.json"))["UDPPort"]) # Server Port 15 | self.writeString(json.load(open("Settings.json"))["UDPAddress"]) # Server IP 16 | self.writeBytes(b"0123456789") # session token 17 | self.writeStringReference("nonce") # the string explains it 18 | 19 | 20 | -------------------------------------------------------------------------------- /Utils/Fingerprint.py: -------------------------------------------------------------------------------- 1 | import json 2 | 3 | class Fingerprint: 4 | def loadFinger(path): 5 | try: 6 | finger_file = open(path, 'r') 7 | finger_content = json.loads(finger_file.read()) 8 | def_sha = finger_content['sha'] 9 | return def_sha 10 | except Exception as e: 11 | print(f"Could not load fingerprint: {e}") 12 | 13 | def loadFinger_full(path): 14 | try: 15 | finger_file = open(path, 'r') 16 | finger_content = json.loads(finger_file.read()) 17 | return json.dumps(finger_content) 18 | except Exception as e: 19 | print(f"Could not load fingerprint: {e}") -------------------------------------------------------------------------------- /Cryptography/rc4.py: -------------------------------------------------------------------------------- 1 | import json 2 | from Cryptography.RC4Encrypter import RC4Encrypter as RC4 3 | 4 | class CryptoRc4: 5 | def __init__(self): 6 | self.settings = json.load(open('Settings.json')) 7 | self.key = bytes(self.settings["RC4Key"], 'utf-8') 8 | self.nonce = b'nonce' 9 | self.RC4_Stream = RC4(self.key + self.nonce) 10 | self.RC4_Stream.update(self.key + self.nonce) 11 | self.RC4_Stream2 = RC4(self.key + self.nonce) 12 | self.RC4_Stream2.update(self.key + self.nonce) 13 | 14 | def decrypt(self, data): 15 | return self.RC4_Stream.update(data) 16 | 17 | def encrypt(self, data): 18 | return self.RC4_Stream2.update(data) 19 | 20 | -------------------------------------------------------------------------------- /Entries/AllianceEventStreamEntry.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | from Entries.StreamEntry import StreamEntry 3 | from Database.DatabaseManager import DataBase 4 | from Logic.Player import Player 5 | class AllianceEventStreamEntry: 6 | def encode(self: Writer, info): 7 | db = DataBase(self.player) 8 | StreamEntry.encode(self, info) 9 | 10 | self.writeVInt(info['Event']) 11 | self.writeBoolean(True) 12 | self.writeLogicLong(0, info["targetID"]) 13 | playertoken = db.getTokenByLowId(info["targetID"]) 14 | playersData = db.getSpecifiedPlayers([playertoken]) 15 | playerData = playersData[0] 16 | self.writeString(playerData['name']) 17 | 18 | -------------------------------------------------------------------------------- /Packets/Messages/Client/ClientHelloMessage.py: -------------------------------------------------------------------------------- 1 | from Utils.Reader import ByteStream 2 | from Logic.Player import Player 3 | 4 | 5 | class ClientHelloMessage(ByteStream): 6 | 7 | def __init__(self, data, device, player): 8 | super().__init__(data) 9 | self.device = device 10 | self.data = data 11 | self.player = player 12 | 13 | def decode(self): 14 | print(self.readInt()) 15 | print(self.readInt()) 16 | print(self.readInt()) 17 | print(self.readInt()) 18 | print(self.readInt()) 19 | print(self.readString()) 20 | print(self.readInt()) 21 | print(self.readInt()) 22 | 23 | 24 | def process(self): 25 | pass 26 | -------------------------------------------------------------------------------- /Packets/Commands/Server/LogicDiamondsAddedCommand.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | from Database.DatabaseManager import DataBase 3 | 4 | class LogicDiamondsAddedCommand(Writer): 5 | 6 | def __init__(self, device, player): 7 | super().__init__(device) 8 | self.id = 24111 9 | self.player = player 10 | self.device = device 11 | 12 | 13 | def encode(self, diamonds): 14 | db = DataBase(self.player) 15 | self.writeByte(0) 16 | self.writeInt(diamonds) 17 | self.writeInt(0) 18 | self.writeInt(0) 19 | self.writeString("hhh") 20 | self.writeVInt(0) 21 | self.player.gems += diamonds 22 | db.replaceValue("gems", self.player.gems) -------------------------------------------------------------------------------- /Logic/Battle/Objects/LogicProjectile.py: -------------------------------------------------------------------------------- 1 | import math 2 | import time 3 | from Utils.BitStream import BitStream 4 | #from Packets.Messages.Server.VisionUpdateMessage import VisionUpdateMessage 5 | class LogicProjectile(BitStream): 6 | def __init__(self, device): 7 | self.device = device 8 | 9 | def encode(player, stream, heroes, index): 10 | 11 | stream.writePositiveInt(abs(player.x - 300), 13) 12 | stream.writePositiveInt(player.y + 300, 14) 13 | stream.writePositiveInt(0, 7) 14 | stream.writePositiveInt(350, 12) 15 | stream.writePositiveInt(0, 3) # state 16 | stream.writePositiveInt(992, 10) # path related 17 | stream.writePositiveInt(0, 1) # idk tbh 18 | -------------------------------------------------------------------------------- /Packets/Messages/Client/TeamToggleMemberSideMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.TeamMessage import TeamMessage 2 | from Utils.Reader import ByteStream 3 | from Logic.Player import Player 4 | 5 | 6 | class TeamToggleMemberSideMessage(ByteStream): 7 | def __init__(self, data, device, player): 8 | super().__init__(data) 9 | self.device = device 10 | self.data = data 11 | self.player = player 12 | 13 | 14 | def decode(self): 15 | """This packet is unused in v1/4 so it is useless""" 16 | self.readVInt() # Where player used to be 17 | self.readVInt() # New place for the player 18 | 19 | 20 | def process(self): 21 | TeamMessage(self.device, self.player).Send() -------------------------------------------------------------------------------- /Packets/Messages/Server/LobbyInfoMessage.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | 3 | 4 | class LobbyInfoMessage(Writer): 5 | 6 | def __init__(self, device, player, players): 7 | self.id = 23457 8 | self.device = device 9 | self.player = player 10 | self.players = players 11 | super().__init__(self.device) 12 | 13 | def encode(self): 14 | self.writeVint(self.players) # Players Online 15 | 16 | 17 | # Lobby Info Entry Array 18 | self.writeVint(0) # Count 19 | for x in range(0): 20 | self.writeVint(1) 21 | self.writeVint(1) 22 | self.writeVint(1) 23 | self.writeVint(1) 24 | self.writeVint(1) -------------------------------------------------------------------------------- /Packets/Messages/Client/KeepAliveMessage.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from Packets.Messages.Server.KeepAliveOkMessage import KeepAliveOkMessage 4 | from Utils.Reader import ByteStream 5 | from Packets.Messages.Server.MyAlliance import MyAlliance 6 | 7 | class KeepAliveMessage(ByteStream): 8 | 9 | def __init__(self, data, device, player): 10 | super().__init__(data) 11 | self.device = device 12 | self.data = data 13 | self.player = player 14 | 15 | def decode(self): 16 | pass 17 | 18 | def process(self): 19 | KeepAliveOkMessage(self.device, self.player).Send() 20 | try: 21 | MyAlliance(self.device, self.player).Send() 22 | except: 23 | pass 24 | -------------------------------------------------------------------------------- /Packets/PiranhaMessage.py: -------------------------------------------------------------------------------- 1 | 2 | from Utils.ByteStream import ByteStream 3 | from Utils.Utility import Utility 4 | 5 | 6 | class PiranhaMessage(ByteStream): 7 | def __init__(self, messageData): 8 | super().__init__(messageData) 9 | self.messageBuffer = messageData 10 | self.fields = {} 11 | 12 | def decode(self, fields): 13 | Utility.parseFields(fields) 14 | 15 | def getLength(self): 16 | return len(self.messageBuffer) 17 | 18 | def isServerToClient(self): 19 | messageType = self.getMessageType() 20 | if 20000 <= messageType < 30000 or messageType == 40000: 21 | return True 22 | elif 10000 <= messageType < 20000 or messageType == 30000: 23 | return False 24 | -------------------------------------------------------------------------------- /Packets/Messages/Client/GoHomeMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.OwnHomeDataMessage import OwnHomeDataMessage 2 | from Utils.Reader import ByteStream 3 | from Packets.Messages.Server.MyAlliance import MyAlliance 4 | from Packets.Messages.Server.ClanStream import ClanStream 5 | 6 | class GoHomeMessage(ByteStream): 7 | 8 | def __init__(self, data, device, player): 9 | super().__init__(data) 10 | self.device = device 11 | self.data = data 12 | self.player = player 13 | 14 | def decode(self): 15 | pass 16 | 17 | def process(self): 18 | OwnHomeDataMessage(self.device, self.player).Send() # 14109 19 | MyAlliance(self.device, self.player).Send() # 14109 20 | ClanStream(self.device, self.player).Send() -------------------------------------------------------------------------------- /Packets/Commands/Client/LogicSelectBattleHints.py: -------------------------------------------------------------------------------- 1 | from Logic.Player import Player 2 | from Packets.Messages.Server.AvailableServerCommandMessage import AvailableServerCommandMessage 3 | from Database.DatabaseManager import DataBase 4 | from Utils.Reader import ByteStream 5 | 6 | class LogicSelectBattleHintsCommand(ByteStream): 7 | def __init__(self, device, player, data): 8 | super().__init__(data) 9 | self.player = player 10 | self.device = device 11 | 12 | def decode(self): 13 | self.readCommandHeader() 14 | 15 | def process(self): 16 | db = DataBase(self.player) 17 | self.player.has_battle_hints = not self.player.has_battle_hints 18 | db.replaceValue("has_battle_hints", self.player.has_battle_hints) 19 | 20 | -------------------------------------------------------------------------------- /GameAssets/csv_client/billing_packages.csv: -------------------------------------------------------------------------------- 1 | "Name","TID","Disabled","ExistsApple","ExistsAndroid","Diamonds","USD","Order","IconExportName" 2 | "String","String","boolean","boolean","boolean","int","int","int","string" 3 | "com.supercell.laser.gempack0","TID_DIAMOND_PACK_1",,"TRUE","TRUE",20,199,1,"shop_gem_fistful" 4 | "com.supercell.laser.gempack1","TID_DIAMOND_PACK_2",,"TRUE","TRUE",50,499,2,"shop_gem_bagful" 5 | "com.supercell.laser.gempack2","TID_DIAMOND_PACK_3",,"TRUE","TRUE",110,999,3,"shop_gem_satchel" 6 | "com.supercell.laser.gempack3","TID_DIAMOND_PACK_4",,"TRUE","TRUE",230,1999,4,"shop_gem_bucket" 7 | "com.supercell.laser.gempack4","TID_DIAMOND_PACK_5",,"TRUE","TRUE",600,4999,5,"shop_gem_crate" 8 | "com.supercell.laser.gempack5","TID_DIAMOND_PACK_6",,"TRUE","TRUE",1250,9999,6,"shop_gem_safe" 9 | -------------------------------------------------------------------------------- /Packets/Messages/Client/AskProfile.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from Packets.Messages.Server.Profile import Profile 4 | from Utils.Reader import ByteStream 5 | from Logic.Player import Player 6 | from Database.DatabaseManager import DataBase 7 | 8 | class AskProfile(ByteStream): 9 | 10 | def __init__(self, data, device, player): 11 | super().__init__(data) 12 | self.device = device 13 | self.data = data 14 | self.player = player 15 | 16 | def decode(self): 17 | self.HighID = self.readInt() 18 | self.LowID = self.readInt() 19 | 20 | def process(self): 21 | db = DataBase(self.player) 22 | self.players = db.getAllPlayers() 23 | Profile(self.device, self.player, self.HighID, self.LowID, self.players).Send() 24 | -------------------------------------------------------------------------------- /GameAssets/csv_logic/resources.csv: -------------------------------------------------------------------------------- 1 | "Name","TID","IconSWF","CollectEffect","IconExportName","Type","Rarity","PremiumCurrency","TextRed","TextGreen","TextBlue","Cap" 2 | "String","String","String","String","String","String","String","Boolean","int","int","int","int" 3 | "Diamonds","TID_DIAMONDS","sc/ui.sc",,"genicon_gem",,,"TRUE",,255,92, 4 | "Gold","TID_GOLD","sc/ui.sc","Collect Gold","genicon_coin",,,,192,,192, 5 | "owcAny","TID_OFFER_WILDCARD_ANY","sc/ui.sc",,"icon_owcAny",,,,,,, 6 | "owcRareOrBetter","TID_OFFER_WILDCARD_RARE_OR_BETTER","sc/ui.sc",,"icon_owcRareOrBetter",,,,,,, 7 | "owcEpicOrBetter","TID_OFFER_WILDCARD_EPIC_OR_BETTER","sc/ui.sc",,"icon_owcEpicOrBetter",,,,,,, 8 | "Dust","TID_DUST","sc/ui.sc",,"genicon_dust",,,,,,, 9 | "Upgradium","TID_UPGRADIUM","sc/ui.sc",,"genicon_upgradium",,,,,,, 10 | -------------------------------------------------------------------------------- /Packets/Messages/Client/GoHomeFromOfflineMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.OwnHomeDataMessage import OwnHomeDataMessage 2 | from Utils.Reader import ByteStream 3 | from Database.DatabaseManager import DataBase 4 | 5 | class GoHomeFromOfflineMessage(ByteStream): 6 | 7 | def __init__(self, data, device, player): 8 | super().__init__(data) 9 | self.device = device 10 | self.data = data 11 | self.player = player 12 | 13 | def decode(self): 14 | pass 15 | 16 | def process(self): 17 | db = DataBase(self.player) 18 | if self.player.tutorialState < 2: 19 | self.player.tutorialState += 1 20 | db.replaceValue("tutorialState", self.player.tutorialState) 21 | OwnHomeDataMessage(self.device, self.player).Send() # 14109 -------------------------------------------------------------------------------- /Packets/Messages/Server/OwnHomeDataMessage.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from Utils.Writer import Writer 3 | from Database.DatabaseManager import DataBase 4 | from Entries.LogicClientAvatar import LogicClientAvatar 5 | from Entries.LogicClientHome import LogicClientHome 6 | 7 | class OwnHomeDataMessage(Writer): 8 | 9 | def __init__(self, device, player): 10 | self.id = 24101 11 | self.device = device 12 | self.player = player 13 | super().__init__(self.device) 14 | 15 | def encode(self): 16 | db = DataBase(self.player) 17 | db.loadAccount() 18 | LogicClientHome.encode(self, self.player) 19 | LogicClientAvatar.encode(self, self.player) 20 | self.writeVInt(2017189) # dudka timestamps from hell 21 | self.player.player_status = 2 22 | db.replaceValue("player_status", self.player.player_status) -------------------------------------------------------------------------------- /Utils/LogicGameModeUtil.py: -------------------------------------------------------------------------------- 1 | from Logic.Battle.LogicBattleModeServer import LogicBattleModeServer 2 | class LogicGameModeUtil: 3 | def getBattleTicks(gameModeVariation): 4 | 5 | if LogicBattleModeServer.ART_TEST: 6 | return 99999999 7 | else: 8 | if gameModeVariation== 9 or gameModeVariation == 6: 9 | return LogicBattleModeServer.BATTLE_ROYALE_TICKS # 16000 (800s or 6s of intro + 13m14s of battle) 10 | elif gameModeVariation == 5: 11 | return LogicBattleModeServer.LASER_BALL_TICKS # 4280 (214s or 4s of intro + 3m of battle + 30s of overtime) 12 | elif gameModeVariation == 7: 13 | return LogicBattleModeServer.BOSS_FIGHT_TICKS # 9680 (484s or 4s of intro + 8m of battle) 14 | else: 15 | return LogicBattleModeServer.NORMAL_TICKS # 3080 (150s or 4s of intro + 2m30s of battle) -------------------------------------------------------------------------------- /Logic/Battle/LogicGameModeUtil.py: -------------------------------------------------------------------------------- 1 | from Logic.Battle.LogicBattleModeServer import LogicBattleModeServer 2 | class LogicGameModeUtil: 3 | def getBattleTicks(gameModeVariation): 4 | 5 | if LogicBattleModeServer.ART_TEST: 6 | return 99999999 7 | else: 8 | if gameModeVariation== 9 or gameModeVariation == 6: 9 | return LogicBattleModeServer.BATTLE_ROYALE_TICKS # 16000 (800s or 6s of intro + 13m14s of battle) 10 | elif gameModeVariation == 5: 11 | return LogicBattleModeServer.LASER_BALL_TICKS # 4280 (214s or 4s of intro + 3m of battle + 30s of overtime) 12 | elif gameModeVariation == 7: 13 | return LogicBattleModeServer.BOSS_FIGHT_TICKS # 9680 (484s or 4s of intro + 8m of battle) 14 | else: 15 | return LogicBattleModeServer.NORMAL_TICKS # 3080 (150s or 4s of intro + 2m30s of battle) -------------------------------------------------------------------------------- /Packets/Commands/Server/LogicDayChangedCommand.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | from Entries.LogicConfData import LogicConfData 3 | from Entries.LogicDailyData import LogicDailyData 4 | 5 | class LogicDayChangedCommand(Writer): 6 | 7 | def __init__(self, device, player): 8 | super().__init__(device) 9 | self.id = 24111 10 | self.player = player 11 | self.device = device 12 | 13 | 14 | def encode(self, booleans): 15 | "For unknown reasons this command crashes, please do not use it" 16 | self.writeBoolean(booleans["RefreshLogicDailyData"]) 17 | if booleans["RefreshLogicDailyData"]: 18 | LogicDailyData.encode(self, self.player) 19 | self.writeBoolean(booleans["RefreshLogicConfData"]) 20 | if booleans["RefreshLogicConfData"]: 21 | LogicConfData.encode(self, self.player) -------------------------------------------------------------------------------- /AssetsServer/Server.py: -------------------------------------------------------------------------------- 1 | from http.server import HTTPServer, SimpleHTTPRequestHandler 2 | import ssl 3 | import json 4 | import os 5 | 6 | class Server: 7 | @staticmethod 8 | def run(): 9 | PORT = json.load(open("Settings.json"))["gameAssetsPort"] 10 | ADDR = json.load(open("Settings.json"))["gameAssetsAddress"] 11 | assets_dir = os.path.join(os.getcwd(), "AssetsServer/Update") 12 | 13 | class CustomHandler(SimpleHTTPRequestHandler): 14 | def translate_path(self, path): 15 | path = super().translate_path(path) 16 | relpath = os.path.relpath(path, os.getcwd()) 17 | return os.path.join(assets_dir, relpath) 18 | 19 | httpd = HTTPServer(("", PORT), CustomHandler) 20 | print(f"[HTTPS] Assets server running on http://{ADDR}:{PORT}/") 21 | httpd.serve_forever() 22 | -------------------------------------------------------------------------------- /Packets/Messages/Client/ChangeAvatarNameMessage.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from Utils.Reader import ByteStream 4 | from Packets.Messages.Server.AvailableServerCommandMessage import AvailableServerCommandMessage 5 | from Logic.Player import Player 6 | from Database.DatabaseManager import DataBase 7 | 8 | class ChangeAvatarNameMessage(ByteStream): 9 | 10 | def __init__(self, data, device, player): 11 | super().__init__(data) 12 | self.device = device 13 | self.data = data 14 | self.player = player 15 | 16 | def decode(self): 17 | self.player.name = self.readString() 18 | self.state = self.readVInt() 19 | def process(self): 20 | db = DataBase(self.player) 21 | db.replaceValue("name", self.player.name) 22 | AvailableServerCommandMessage(self.device, self.player, 201 ,self.state).Send() 23 | -------------------------------------------------------------------------------- /Entries/StreamEntry.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | import time 3 | from Database.DatabaseManager import DataBase 4 | from Logic.Player import Player 5 | 6 | class StreamEntry: 7 | def encode(ByteStream: Writer, info): 8 | db = DataBase(ByteStream.player) 9 | ByteStream.writeLogicLong(0, info["Tick"]) # StreamEntryID 10 | ByteStream.writeLogicLong(0, info["PlayerID"]) # TargetID 11 | playertoken = db.getTokenByLowId(info["PlayerID"]) 12 | playersData = db.getSpecifiedPlayers([playertoken]) 13 | playerData = playersData[0] 14 | ByteStream.writeString(playerData['name']) 15 | try: 16 | ByteStream.writeVInt(info['PlayerRole']) 17 | except: 18 | ByteStream.writeVInt(0) 19 | ByteStream.writeVInt(int(time.time() - info['TimeStamp'])) 20 | ByteStream.writeBoolean(False) 21 | 22 | -------------------------------------------------------------------------------- /Packets/Commands/Client/LogicBuyCoinsDoublerCommand.py: -------------------------------------------------------------------------------- 1 | from Logic.Player import Player 2 | from Packets.Messages.Server.AvailableServerCommandMessage import AvailableServerCommandMessage 3 | from Database.DatabaseManager import DataBase 4 | from Utils.Reader import ByteStream 5 | class LogicBuyCoinsDoublerCommand(ByteStream): 6 | def __init__(self, device, player, data): 7 | super().__init__(data) 8 | self.player = player 9 | self.device = device 10 | 11 | def decode(self): 12 | self.readCommandHeader() 13 | 14 | def process(self): 15 | db = DataBase(self.player) 16 | if self.player.gems < 50: 17 | return "no cheating" 18 | self.player.gems - 50 19 | db.replaceValue("gems", self.player.gems) 20 | self.player.coinsdoubler += 1000 21 | db.replaceValue("coinsdoubler", self.player.coinsdoubler) -------------------------------------------------------------------------------- /Files/CsvLogic/Skills.py: -------------------------------------------------------------------------------- 1 | import csv 2 | from time import perf_counter 3 | from Files.CsvReader import CsvReader 4 | from Files.CsvLogic.Characters import Characters 5 | 6 | class Skills: 7 | 8 | 9 | def getSpecifiedSkillInfo(self, skill, info): 10 | 11 | with open('GameAssets/csv_logic/skills.csv', 'r') as csv_file: 12 | reader = csv.reader(csv_file) 13 | header = next(reader) 14 | index = header.index(info) 15 | with open('GameAssets/csv_logic/skills.csv') as csv_file: 16 | csv_reader = csv.reader(csv_file, delimiter=',') 17 | next(csv_reader) 18 | next(csv_reader) 19 | for count, row in enumerate(csv_reader, start=1): 20 | if count == skill + 1: 21 | information = row[index] 22 | break 23 | return information 24 | -------------------------------------------------------------------------------- /Packets/Messages/Server/AvailableServerCommandMessage.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | from Logic.Player import Player 3 | from Packets.ServerCommandsFactory import commands 4 | 5 | class AvailableServerCommandMessage(Writer): 6 | def __init__(self, device, player, commandID, data = None): 7 | super().__init__(device) 8 | self.player = player 9 | self.id = 24111 10 | self.device = device 11 | self.data = data 12 | self.commandID = commandID 13 | 14 | def encode(self): 15 | if self.commandID in commands: 16 | self.writeVInt(self.commandID) 17 | if not self.data: 18 | commands[self.commandID].encode(self) 19 | else: 20 | commands[self.commandID].encode(self, self.data) 21 | 22 | else: 23 | print("[*] Unable to create ", self.commandID) -------------------------------------------------------------------------------- /Packets/Messages/Client/CancelMatchMakingMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.MatchMakingStatusMessage import MatchMakingStatusMessage 2 | from Utils.Reader import ByteStream 3 | from Logic.Player import Player 4 | from Database.DatabaseManager import DataBase 5 | 6 | class CancelMatchMakingMessage(ByteStream): 7 | def __init__(self, data, device, player): 8 | super().__init__(data) 9 | self.device = device 10 | self.data = data 11 | self.player = player 12 | 13 | 14 | def decode(self): 15 | pass 16 | 17 | 18 | def process(self): 19 | db = DataBase(self.player) 20 | matchmaking = db.loadMatchmakingData([self.player.battleID])[0] 21 | MatchMakingStatusMessage(self.device, self.player, False).Send() 22 | self.player.battleID = 0 23 | db.replaceValue("battleID", self.player.battleID) 24 | matchmaking["players"].remove(self.player.low_id) -------------------------------------------------------------------------------- /Entries/JoinRequestAllianceStreamEntry.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | from Entries.StreamEntry import StreamEntry 3 | from Entries.PlayerDisplayData import PlayerDisplayData 4 | from Database.DatabaseManager import DataBase 5 | 6 | class JoinRequestAllianceStreamEntry: 7 | def encode(self: Writer, info): 8 | db = DataBase(self.player) 9 | StreamEntry.encode(self, info) 10 | playerToken = db.getTokenByLowId(info["PlayerID"]) 11 | playersData = db.getSpecifiedPlayers([playerToken]) 12 | playerData = playersData[0] 13 | self.writeString(info["Message"]) # promotion message 14 | self.writeString(info["PlayerName"]) # who accepted/rejected the player 15 | self.writeVInt(info["Event"]) # state (0: rejected, 1: pending, 2: accepted) 16 | self.writeVInt(0) # little thing wrote on pfp wth 17 | self.writeDataReference(28, playerData["profile_icon"]) # player pfp 18 | 19 | -------------------------------------------------------------------------------- /script.js: -------------------------------------------------------------------------------- 1 | var base = Module.findBaseAddress('Brawl Stars'); 2 | function startGrab() { 3 | Interceptor.attach(base.add(0x9F708), { 4 | onEnter: function(args) { 5 | this.arg2 = args[1].toInt32(); // Store the value of args[2] 6 | }, 7 | onLeave: function(retval) { 8 | console.log("self.writePositiveInt(" + retval.toUInt32() + ", " + this.arg2 + ")"); 9 | } 10 | }); 11 | Interceptor.attach(base.add(0x9F7D0), { 12 | onEnter: function(args) { 13 | console.log("self.writePositiveInt(" + args[1].toInt32() + "," + args[2].toInt32() + ")") 14 | }, 15 | }); 16 | } 17 | 18 | Interceptor.attach(base.add(0x39830), { 19 | onEnter: function(args) { 20 | startGrab() 21 | }, 22 | onLeave: function(retval) { 23 | Interceptor.detachAll() 24 | } 25 | }); 26 | //Interceptor.attach(base.add(0x9F7D0), { 27 | // onEnter: function(args) { 28 | // console.log("self.writePositiveInt(" + args[2].toInt32 + ")") 29 | // }, 30 | //}); -------------------------------------------------------------------------------- /Packets/Messages/Client/TeamTogglePracticeMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.TeamMessage import TeamMessage 2 | from Utils.Reader import ByteStream 3 | from Logic.Player import Player 4 | from Database.DatabaseManager import DataBase 5 | 6 | class TeamTogglePractiseMessage(ByteStream): 7 | def __init__(self, data, device, player): 8 | super().__init__(data) 9 | self.device = device 10 | self.data = data 11 | self.player = player 12 | 13 | def decode(self): 14 | pass 15 | 16 | 17 | def process(self): 18 | db = DataBase(self.player) 19 | gamerooomInfo = db.getGameroomInfo("info") 20 | gamerooomInfo["practice"] = not gamerooomInfo["practice"] 21 | db.updateGameroomInfo(gamerooomInfo["practice"], self.player.teamID, "practice") 22 | gameroomInfo = db.getGameroomInfo("info") 23 | for player_key, values in gameroomInfo["players"].items(): 24 | TeamMessage(self.device, self.player).SendTo(player_key) -------------------------------------------------------------------------------- /GameAssets/csv_client/music.csv: -------------------------------------------------------------------------------- 1 | "Name","FileName","Volume","Loop","PlayCount","FadeOutTimeSec","DurationSec" 2 | "String","String","int","boolean","int","int","int" 3 | "BattleMusic","music/Slugfest_ingame_01.ogg",65,"true",,,60 4 | ,"music/Slugfest_ingame_02.ogg",65,"true",,,60 5 | ,"music/Slugfest_ingame_03.ogg",65,"true",,,66 6 | ,"music/Slugfest_ingame_04.ogg",65,"true",,,57 7 | "SingleplayerBattlemusic","music/Slugfest_ingame_01.ogg",65,"true",,,60 8 | ,"music/Slugfest_ingame_02.ogg",65,"true",,,60 9 | ,"music/Slugfest_ingame_03.ogg",65,"true",,,66 10 | ,"music/Slugfest_ingame_04.ogg",65,"true",,,57 11 | "MenuMusic","music/Slugfest_menu_01.ogg",60,,1,,124 12 | "WinJingle","music/slugfest_game_won_01.ogg",80,,1,, 13 | "LoseJingle","music/slugfest_game_lost_01.ogg",70,,1,, 14 | "DrawJingle","music/laser_game_draw_01.ogg",70,,1,, 15 | "Win_loop","music/win_screen_loop_4x_01.ogg",60,"true",,,30 16 | "Draw_loop","music/draw_screen_loop_4x_01.ogg",60,"true",,,34 17 | "Lose_loop","music/lose_screen_loop_4x_01.ogg",60,"true",,,28 18 | -------------------------------------------------------------------------------- /Entries/AllianceTeamEntry.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | 3 | class AllianceTeamEntry: 4 | 5 | def encode(ByteStream: Writer): 6 | ByteStream.writeVInt(1) # forgor 7 | ByteStream.writeBoolean(True) # hmm 8 | ByteStream.writeVInt(1) # forgor 9 | ByteStream.writeVInt(2) # forgor 10 | ByteStream.writeLong(0, 1) # room id 11 | ByteStream.writeVInt(1) # forgor 12 | ByteStream.writeVInt(2) # forgor 13 | ByteStream.writeDataReference(15, 2) # map 14 | ByteStream.writeVInt(0) # i shouldn't touch it apparently 15 | ByteStream.writeString("hi") # tf? 16 | ByteStream.writeLong(0, 1) # host id ? 17 | ByteStream.writeLong(0, 1) # host id? 18 | ByteStream.writeBoolean(True) # fuck is that 19 | ByteStream.writeBoolean(True) # fuck is that 20 | ByteStream.writeVInt(1) # players in this fucking damm team 21 | for x in range(1): 22 | ByteStream.writeLong(0, 1) # player id 23 | 24 | -------------------------------------------------------------------------------- /Logic/Battle/Objects/GlobalId.py: -------------------------------------------------------------------------------- 1 | class GlobalId: 2 | @staticmethod 3 | def create_global_id(class_id: int, instance_id: int) -> int: 4 | """ 5 | Create a global ID using the class ID and instance ID. 6 | :param class_id: The class ID. 7 | :param instance_id: The instance ID. 8 | :return: The generated global ID. 9 | """ 10 | return 1000000 + instance_id if class_id <= 0 else class_id * 1000000 + instance_id 11 | 12 | @staticmethod 13 | def get_class_id(global_id: int) -> int: 14 | """ 15 | Extract the class ID from a global ID. 16 | :param global_id: The global ID. 17 | :return: The class ID. 18 | """ 19 | return global_id // 1000000 20 | 21 | @staticmethod 22 | def get_instance_id(global_id: int) -> int: 23 | """ 24 | Extract the instance ID from a global ID. 25 | :param global_id: The global ID. 26 | :return: The instance ID. 27 | """ 28 | return global_id % 1000000 29 | -------------------------------------------------------------------------------- /Packets/Messages/Client/TeamMemberStatusMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.TeamMessage import TeamMessage 2 | from Logic.Player import Player 3 | from Utils.Reader import ByteStream 4 | from Database.DatabaseManager import DataBase 5 | 6 | class TeamMemberStatusMessage(ByteStream): 7 | def __init__(self, data, device, player): 8 | super().__init__(data) 9 | self.device = device 10 | self.data = data 11 | self.player = player 12 | 13 | 14 | def decode(self): 15 | self.player.teamStatus = self.readVInt() 16 | 17 | 18 | 19 | def process(self): 20 | db = DataBase(self.player) 21 | playerInfo = db.getPlayerInfo(self.player.low_id) 22 | playerInfo['status'] = self.player.teamStatus 23 | db.updateGameroomPlayerInfo(self.player.low_id, self.player.teamID, playerInfo) 24 | gameroomInfo = db.getGameroomInfo("info") 25 | for player_key, values in gameroomInfo["players"].items(): 26 | TeamMessage(self.device, self.player).SendTo(player_key) 27 | -------------------------------------------------------------------------------- /Packets/Messages/Client/TeamChatMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.TeamStreamMessage import TeamStreamMessage 2 | import random 3 | from Logic.Player import Player 4 | from Utils.Reader import ByteStream 5 | from Database.DatabaseManager import DataBase 6 | 7 | class TeamChatMessage(ByteStream): 8 | def __init__(self, data, device, player): 9 | super().__init__(data) 10 | self.device = device 11 | self.data = data 12 | self.player = player 13 | 14 | 15 | def decode(self): 16 | self.messageContent = self.readString() 17 | 18 | 19 | def process(self): 20 | db = DataBase(self.player) 21 | 22 | db.addGameroomMsg(self.player.teamID, 2, self.player.low_id, self.player.name, self.messageContent, 0) 23 | tick = db.getNextGameroomKey(self.player.teamID) 24 | db.loadGameroom() 25 | gameroomInfo = db.getGameroomInfo("info") 26 | for player_key, values in gameroomInfo["players"].items(): 27 | TeamStreamMessage(self.device, self.player, tick).SendTo(player_key) -------------------------------------------------------------------------------- /Utils/EventData.py: -------------------------------------------------------------------------------- 1 | from Files.CsvLogic.Locations import Locations 2 | 3 | class EventData: 4 | def getGameModeVariation(self, location): 5 | variationString = Locations().GetGameModeString(self, location) 6 | if variationString == "CoinRush": 7 | gameModeVariation = 0 8 | elif variationString == "AttackDefend": 9 | gameModeVariation = 2 10 | elif variationString == "BossFight": 11 | gameModeVariation = 7 12 | elif variationString == "BountyHunter": 13 | gameModeVariation = 3 14 | elif variationString == "Artifact": 15 | gameModeVariation = 4 16 | elif variationString == "LaserBall": 17 | gameModeVariation = 5 18 | elif variationString == "BattleRoyale": 19 | gameModeVariation = 6 20 | elif variationString == "BattleRoyaleTeam": 21 | gameModeVariation = 9 22 | elif variationString == "Survival": 23 | gameModeVariation = 8 24 | else: 25 | print("[ERROR] Wrong game mode!") 26 | gameModeVariation = -1 27 | return gameModeVariation -------------------------------------------------------------------------------- /GameAssets/csv_logic/globals.csv: -------------------------------------------------------------------------------- 1 | "Name","NumberValue","BooleanValue","TextValue","StringArray","NumberArray" 2 | "String","int","boolean","string","String","int" 3 | "ALLIANCE_CREATE_RESOURCE",,,"Gold",, 4 | "ALLIANCE_CREATE_COST",0,,,, 5 | "STARTING_DIAMONDS",0,,,, 6 | "MAX_MESSAGE_LENGTH",128,,,, 7 | "MAX_ALLIANCE_MAIL_LENGTH",256,,,, 8 | "SPEED_UP_DIAMOND_COST_1_MIN",1,,,, 9 | "SPEED_UP_DIAMOND_COST_1_HOUR",4,,,, 10 | "SPEED_UP_DIAMOND_COST_24_HOURS",96,,,, 11 | "SPEED_UP_DIAMOND_COST_1_WEEK",672,,,, 12 | "SPEED_UP_FREE_SECONDS",0,,,, 13 | "RESOURCE_DIAMOND_COST_1",1,,,, 14 | "RESOURCE_DIAMOND_COST_10",2,,,, 15 | "RESOURCE_DIAMOND_COST_100",20,,,, 16 | "RESOURCE_DIAMOND_COST_1000",200,,,, 17 | "RESOURCE_DIAMOND_COST_10000",2000,,,, 18 | "RESOURCE_DIAMOND_COST_100000",20000,,,, 19 | "RESOURCE_DIAMOND_COST_1000000",200000,,,, 20 | "RESOURCE_DIAMOND_COST_10000000",2000000,,,, 21 | "ALLIANCE_SCORE_CONTRIBUTION_PERCENTAGE",,,,,50 22 | ,,,,,25 23 | ,,,,,12 24 | ,,,,,10 25 | ,,,,,3 26 | "STARTING_GOLD",90,,,, 27 | "BATTLE_PING_SAMPLE_SECONDS",15,,,, 28 | "ALLIANCE_UNLOCK_EXP_LEVEL",1,,,, 29 | -------------------------------------------------------------------------------- /Packets/Messages/Client/TeamChangeMemberSettingsMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.TeamMessage import TeamMessage 2 | from Utils.Reader import ByteStream 3 | from Logic.Player import Player 4 | from Database.DatabaseManager import DataBase 5 | 6 | class TeamChangeMemberSettingsMessage(ByteStream): 7 | def __init__(self, data, device, player): 8 | super().__init__(data) 9 | self.device = device 10 | self.data = data 11 | self.player = player 12 | 13 | 14 | def decode(self): 15 | self.readVInt() 16 | self.player.selectedCard = self.readDataReference() 17 | 18 | 19 | def process(self): 20 | db = DataBase(self.player) 21 | playerInfo = db.getPlayerInfo(self.player.low_id) 22 | playerInfo["brawler_id"] = self.player.selectedCard[1] 23 | db.updateGameroomPlayerInfo(self.player.low_id, self.player.teamID, playerInfo) 24 | gameroomInfo = db.getGameroomInfo("info") 25 | for player_key, values in gameroomInfo["players"].items(): 26 | TeamMessage(self.device, self.player).SendTo(player_key) 27 | -------------------------------------------------------------------------------- /Packets/Messages/Server/MatchMakingStatusMessage.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | import time 3 | from Database.DatabaseManager import DataBase 4 | 5 | class MatchMakingStatusMessage(Writer): 6 | def __init__(self, device, player, matchmakeState): 7 | self.device = device 8 | self.id = 20405 9 | self.player = player 10 | self.matchmakeState = matchmakeState 11 | super().__init__(self.device) 12 | 13 | 14 | def encode(self): 15 | db = DataBase(self.player) 16 | matchmakeData = db.loadMatchmakingData([self.player.battleID])[0] 17 | self.writeInt(matchmakeData["displayTime"]) # Matchmake Timer 18 | self.writeInt(len(matchmakeData["players"])) # Current Players in Matchmake 19 | for id in matchmakeData["players"]: 20 | player = db.getSpecifiedPlayers([db.getTokenByLowId(id)])[0] 21 | self.writeString(player["name"]) 22 | self.writeBoolean(self.matchmakeState) 23 | self.writeLong(0, id) 24 | self.writeInt(matchmakeData["maximumPlayers"]) # Maximum Players in Matchmake 25 | -------------------------------------------------------------------------------- /GameAssets/csv_logic/bosses.csv: -------------------------------------------------------------------------------- 1 | "Name","TID","PlayerCount","RequiredCampaignProgressToUnlock","Location","AllowedHeroes","Reward","LevelGenerationSeed","Map","Boss","BossLevel" 2 | "string","string","int","int","string","string","String","int","string","string","int" 3 | "boss1","TID_BOSS_1",3,6,"Planet1","Trooper,Techie,Vanguard,Sniper,PoisonDude,Healer","Diamonds:10:",,"Pvp4","Boss2",1 4 | "boss2","TID_BOSS_2",3,12,"Planet2","Trooper,Techie,Vanguard,Sniper,PoisonDude,Healer","Diamonds:10:",,"Pvp4","Boss1",5 5 | "boss3","TID_BOSS_3",3,18,"Planet3","Trooper,Techie,Vanguard,Sniper,PoisonDude,Healer","Diamonds:10:",,"Pvp4","Boss2",9 6 | "boss4","TID_BOSS_4",3,24,"Planet4","Trooper,Techie,Vanguard,Sniper,PoisonDude,Healer","Diamonds:10:",,"Pvp4","Boss1",12 7 | "boss5","TID_BOSS_5",3,30,"Planet5","Trooper,Techie,Vanguard,Sniper,PoisonDude,Healer","Diamonds:10:",,"Pvp4","Boss2",15 8 | "boss6","TID_BOSS_6",3,36,"Planet6","Trooper,Techie,Vanguard,Sniper,PoisonDude,Healer","Diamonds:10:",,"Pvp4","Boss1",18 9 | "boss7","TID_BOSS_7",3,54,"Planet7","Trooper,Techie,Vanguard,Sniper,PoisonDude,Healer","Diamonds:10:",,"Pvp4","Boss2",20 10 | -------------------------------------------------------------------------------- /Packets/Commands/Client/LogicGatchaCommand.py: -------------------------------------------------------------------------------- 1 | from Logic.Player import Player 2 | from Packets.Messages.Server.AvailableServerCommandMessage import AvailableServerCommandMessage 3 | from Database.DatabaseManager import DataBase 4 | from Utils.Reader import ByteStream 5 | 6 | class LogicGatchaCommand(ByteStream): 7 | def __init__(self, device, player, data): 8 | super().__init__(data) 9 | self.player = player 10 | self.device = device 11 | 12 | def decode(self): 13 | self.readCommandHeader() 14 | self.isUsingCoins = self.readBoolean() 15 | 16 | def process(self): 17 | db = DataBase(self.player) 18 | if self.isUsingCoins: 19 | if self.player.gold < 100: 20 | return "no cheating lol" 21 | self.player.gold -= 100 22 | db.replaceValue("gold", self.player.gold) 23 | else: 24 | if self.player.gems < 10: 25 | return "no cheating lol" 26 | self.player.gems -= 10 27 | db.replaceValue("gems", self.player.gems) 28 | 29 | AvailableServerCommandMessage(self.device, self.player, 203).Send() -------------------------------------------------------------------------------- /Packets/Commands/Client/LogicSelectControlMode.py: -------------------------------------------------------------------------------- 1 | from Logic.Player import Player 2 | from Packets.Messages.Server.AvailableServerCommandMessage import AvailableServerCommandMessage 3 | from Database.DatabaseManager import DataBase 4 | from Utils.Reader import ByteStream 5 | 6 | class LogicSelectControlModeCommand(ByteStream): 7 | def __init__(self, device, player, data): 8 | super().__init__(data) 9 | self.player = player 10 | self.device = device 11 | 12 | def decode(self): 13 | self.readCommandHeader() 14 | self.control_mode = self.readVInt() 15 | 16 | def encode(self, mode): 17 | for x in range(8): 18 | self.writeVInt() 19 | self.writeVInt(509) 20 | self.writeVInt(mode) 21 | 22 | def process(self): 23 | db = DataBase(self.player) 24 | if self.control_mode < 0: 25 | return "no cheating lol" 26 | 27 | elif self.control_mode > 2: 28 | return "no cheating lol" 29 | self.player.control_mode = self.control_mode 30 | db.replaceValue("control_mode", self.player.control_mode) 31 | 32 | -------------------------------------------------------------------------------- /GameAssets/csv_logic/player_thumbnails.csv: -------------------------------------------------------------------------------- 1 | "Name","RequiredExpLevel","RequiredTotalTrophies","RequiredHero","IconSWF","IconExportName" 2 | "string","int","int","string","string","string" 3 | "base1",1,0,,"sc/ui.sc","player_icon_00" 4 | "base2",10,0,,"sc/ui.sc","player_icon_01" 5 | "base3",20,0,,"sc/ui.sc","player_icon_02" 6 | "hero1",0,0,"ShotgunGirl","sc/ui.sc","player_icon_shelly" 7 | "hero2",0,0,"Gunslinger","sc/ui.sc","player_icon_colt" 8 | "hero3",0,0,"RocketGirl","sc/ui.sc","player_icon_brock" 9 | "hero4",0,0,"Mechanic","sc/ui.sc","player_icon_jess" 10 | "hero5",0,0,"Shaman","sc/ui.sc","player_icon_nita" 11 | "hero6",0,0,"TntDude","sc/ui.sc","player_icon_mike" 12 | "hero7",0,0,"Luchador","sc/ui.sc","player_icon_primo" 13 | "hero8",0,0,"BullDude","sc/ui.sc","player_icon_bull" 14 | "hero9",0,0,"TrickshotDude","sc/ui.sc","player_icon_rick" 15 | "hero10",0,0,"Barkeep","sc/ui.sc","player_icon_barley" 16 | "hero11",0,0,"DeadMariachi","sc/ui.sc","player_icon_poco" 17 | "hero12",0,0,"Undertaker","sc/ui.sc","player_icon_mortis" 18 | "hero13",0,0,"BowDude","sc/ui.sc","player_icon_bo" 19 | "hero14",0,0,"Cactus","sc/ui.sc","player_icon_spike" 20 | "hero15",0,0,"Crow","sc/ui.sc","player_icon_crow" 21 | -------------------------------------------------------------------------------- /GameAssets/csv_logic/alliance_badges.csv: -------------------------------------------------------------------------------- 1 | "Name","IconSWF","IconExportName","Category" 2 | "String","String","String","String" 3 | "clan_badge_01_01","sc/ui.sc","clan_badge_01_01", 4 | "clan_badge_01_02","sc/ui.sc","clan_badge_01_02", 5 | "clan_badge_01_03","sc/ui.sc","clan_badge_01_03", 6 | "clan_badge_01_04","sc/ui.sc","clan_badge_01_04", 7 | "clan_badge_02_01","sc/ui.sc","clan_badge_02_01", 8 | "clan_badge_02_02","sc/ui.sc","clan_badge_02_02", 9 | "clan_badge_02_03","sc/ui.sc","clan_badge_02_03", 10 | "clan_badge_02_04","sc/ui.sc","clan_badge_02_04", 11 | "clan_badge_03_01","sc/ui.sc","clan_badge_03_01", 12 | "clan_badge_03_02","sc/ui.sc","clan_badge_03_02", 13 | "clan_badge_03_03","sc/ui.sc","clan_badge_03_03", 14 | "clan_badge_03_04","sc/ui.sc","clan_badge_03_04", 15 | "clan_badge_04_01","sc/ui.sc","clan_badge_04_01", 16 | "clan_badge_04_02","sc/ui.sc","clan_badge_04_02", 17 | "clan_badge_04_03","sc/ui.sc","clan_badge_04_03", 18 | "clan_badge_04_04","sc/ui.sc","clan_badge_04_04", 19 | "clan_badge_05_01","sc/ui.sc","clan_badge_05_01", 20 | "clan_badge_05_02","sc/ui.sc","clan_badge_05_02", 21 | "clan_badge_05_03","sc/ui.sc","clan_badge_05_03", 22 | "clan_badge_05_04","sc/ui.sc","clan_badge_05_04", 23 | -------------------------------------------------------------------------------- /Packets/Messages/Client/Commands.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from Utils.Reader import ByteStream 4 | from Utils.Writer import Writer 5 | from Logic.Player import Player 6 | from Packets.LogicCommandManager import commands 7 | 8 | 9 | class Commands(ByteStream): 10 | 11 | def __init__(self, data, device): 12 | super().__init__(data) 13 | self.device = device 14 | self.data = data 15 | self.player = Player(device) 16 | 17 | def decode(self): 18 | 19 | self.isCommand = self.readBoolean() 20 | self.readVInt() 21 | self.readVInt() 22 | self.commandAmount = self.readVInt() 23 | self.commandID = self.readVInt() 24 | 25 | def process(self): 26 | if self.commandID in commands: 27 | print("[*]", self.commandID, "received") 28 | command = commands[self.commandID](self.device, self.player, self.data) 29 | command.decode() 30 | command.process() 31 | elif self.commandID > 0: 32 | print("[*] ", self.commandID, "not handled") 33 | else: 34 | print("[*] A negative length command got recieved") 35 | -------------------------------------------------------------------------------- /Packets/Messages/Client/EndClientTurnMessage.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from Utils.Reader import ByteStream 4 | from Utils.Writer import Writer 5 | from Logic.Player import Player 6 | from Packets.LogicCommandManager import commands 7 | 8 | 9 | class EndClientTurnMessage(ByteStream): 10 | 11 | def __init__(self, data, device, player): 12 | super().__init__(data) 13 | self.device = device 14 | self.data = data 15 | self.player = player 16 | 17 | def decode(self): 18 | self.isCommand = self.readBoolean() 19 | self.readVInt() 20 | self.readVInt() 21 | self.commandAmount = self.readVInt() 22 | self.commandID = self.readVInt() 23 | 24 | def process(self): 25 | if self.commandID in commands: 26 | print("[*]", self.commandID, "received") 27 | command = commands[self.commandID](self.device, self.player, self.data) 28 | command.decode() 29 | command.process() 30 | elif self.commandID > 0: 31 | print("[*] ", self.commandID, "not handled") 32 | else: 33 | print("[*] A negative length command got recieved") -------------------------------------------------------------------------------- /Files/CsvLogic/Locations.py: -------------------------------------------------------------------------------- 1 | import csv 2 | 3 | class Locations: 4 | def GetLocations(self): 5 | LocationsID = [] 6 | 7 | with open('GameAssets/csv_logic/locations.csv') as csv_file: 8 | csv_reader = csv.reader(csv_file, delimiter=',') 9 | line_count = 0 10 | for row in csv_reader: 11 | 12 | if line_count == 0 or line_count == 1: 13 | line_count += 1 14 | else: 15 | if row[0] != "Tutorial": 16 | LocationsID.append(line_count - 2) 17 | line_count += 1 18 | 19 | return LocationsID 20 | 21 | def GetGamemode(self, ID): 22 | Gamemode = "CoinRush" 23 | 24 | with open('GameAssets/csv_logic/locations.csv') as csv_file: 25 | csv_reader = csv.reader(csv_file, delimiter=',') 26 | next(csv_reader) 27 | next(csv_reader) 28 | line_count = 0 29 | for row in csv_reader: 30 | if line_count == ID: 31 | Gamemode = row[11] 32 | break 33 | line_count += 1 34 | 35 | return Gamemode -------------------------------------------------------------------------------- /Packets/Commands/Client/LogicBuyCoinsBoosterCommand.py: -------------------------------------------------------------------------------- 1 | from Logic.Player import Player 2 | from Packets.Messages.Server.AvailableServerCommandMessage import AvailableServerCommandMessage 3 | from Database.DatabaseManager import DataBase 4 | from Utils.Reader import ByteStream 5 | from datetime import datetime, timedelta 6 | class LogicBuyCoinsBoosterCommand(ByteStream): 7 | def __init__(self, device, player, data): 8 | super().__init__(data) 9 | self.player = player 10 | self.device = device 11 | 12 | def decode(self): 13 | self.readCommandHeader() 14 | 15 | def process(self): 16 | db = DataBase(self.player) 17 | if self.player.gems < 20: 18 | return "no cheating" 19 | self.player.gems - 20 20 | db.replaceValue("gems", self.player.gems) 21 | current_time = int(datetime.timestamp(datetime.now())) 22 | 23 | if self.player.coinsbooster is None or self.player.coinsbooster < current_time: 24 | self.player.coinsbooster = current_time + 7 * 24 * 60 * 60 25 | else: 26 | self.player.coinsbooster += 7 * 24 * 60 * 60 27 | 28 | db.replaceValue('coinsbooster', self.player.coinsbooster) -------------------------------------------------------------------------------- /Packets/LogicCommandManager.py: -------------------------------------------------------------------------------- 1 | from Packets.Commands.Client.LogicGatchaCommand import LogicGatchaCommand 2 | from Packets.Commands.Server.LogicGiveDeliveryItemsCommand import LogicGiveDeliveryItemsCommand 3 | from Packets.Commands.Client.LogicBuyCard import LogicBuyCardCommand 4 | from Packets.Commands.Client.LogicSelectBattleHints import LogicSelectBattleHintsCommand 5 | from Packets.Commands.Client.LogicSelectControlMode import LogicSelectControlModeCommand 6 | from Packets.Commands.Client.LogicSetPlayerThumbnailCommand import LogicSetPlayerThumbnailCommand 7 | from Packets.Commands.Client.LogicBuyCoinsBoosterCommand import LogicBuyCoinsBoosterCommand 8 | from Packets.Commands.Client.LogicBuyCoinsDoublerCommand import LogicBuyCoinsDoublerCommand 9 | from Packets.Commands.Client.LogicUnlockSkinCommand import LogicUnlockSkinCommand 10 | 11 | commands = { 12 | 203: LogicGiveDeliveryItemsCommand, 13 | 500: LogicGatchaCommand, 14 | 502: LogicBuyCardCommand, 15 | 506: LogicSetPlayerThumbnailCommand, 16 | 508: LogicUnlockSkinCommand, 17 | 509: LogicSelectControlModeCommand, 18 | 510: LogicBuyCoinsDoublerCommand, 19 | 511: LogicBuyCoinsBoosterCommand, 20 | 513: LogicSelectBattleHintsCommand 21 | } -------------------------------------------------------------------------------- /banned_acc.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": { 3 | "reason": "You are hereby permanently banned from Brawl Stars due to severe and repeated violations of our Terms of Service. Our records indicate that you have created unauthorized private servers, manipulated game data through hacking, and actively exploited in-game bugs for personal gain. These actions not only compromise the fairness and integrity of Brawl Stars but also negatively impact the experience of millions of players who engage with our game respectfully and legitimately. Creating private servers is a direct infringement of our policies, as it bypasses our security systems, undermines the official game economy, and introduces unauthorized content that destabilizes gameplay. Hacking and modifying the game to unlock content, gain unlimited resources, or alter core mechanics is strictly prohibited and constitutes a serious breach of trust within the Brawl Stars community. Furthermore, your deliberate use of exploits rather than reporting them to us demonstrates a clear intent to gain an unfair advantage at the expense of others. As developers, we are committed to maintaining a safe, fun, and competitive environment for all players, and as such, we cannot allow these actions to go unpunished. This ban is final and will not be reversed." 4 | } 5 | } -------------------------------------------------------------------------------- /Entries/StreamEntryFactory.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | from Entries.ChatStreamEntry import ChatStreamEntry 3 | from Entries.JoinRequestAllianceStreamEntry import JoinRequestAllianceStreamEntry 4 | from Entries.AllianceEventStreamEntry import AllianceEventStreamEntry 5 | from Entries.ReplayStreamEntry import ReplayStreamEntry 6 | from Entries.QuickChatStreamEntry import QuickChatStreamEntry 7 | from Entries.TeamCreatedStreamEntry import TeamCreatedStreamEntry 8 | 9 | class StreamEntryFactory: 10 | def createStreamEntryByType(ByteStream: Writer, message): 11 | v1 = message["EventType"] 12 | if v1 == 2: 13 | return ChatStreamEntry.encode(ByteStream, message) 14 | elif v1 == 3: 15 | return JoinRequestAllianceStreamEntry.encode(ByteStream, message) 16 | elif v1 == 4: 17 | return AllianceEventStreamEntry.encode(ByteStream, message) 18 | elif v1 == 5: 19 | return ReplayStreamEntry.encode(ByteStream, message) 20 | elif v1 == 8: 21 | return QuickChatStreamEntry.encode(ByteStream, message) 22 | elif v1 == 77: 23 | return TeamCreatedStreamEntry.encode(ByteStream, message) 24 | else: 25 | return None 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /banned_ip.json: -------------------------------------------------------------------------------- 1 | { 2 | "69.74.69.74": { 3 | "reason": "You are hereby permanently banned from Brawl Stars due to severe and repeated violations of our Terms of Service. Our records indicate that you have created unauthorized private servers, manipulated game data through hacking, and actively exploited in-game bugs for personal gain. These actions not only compromise the fairness and integrity of Brawl Stars but also negatively impact the experience of millions of players who engage with our game respectfully and legitimately. Creating private servers is a direct infringement of our policies, as it bypasses our security systems, undermines the official game economy, and introduces unauthorized content that destabilizes gameplay. Hacking and modifying the game to unlock content, gain unlimited resources, or alter core mechanics is strictly prohibited and constitutes a serious breach of trust within the Brawl Stars community. Furthermore, your deliberate use of exploits rather than reporting them to us demonstrates a clear intent to gain an unfair advantage at the expense of others. As developers, we are committed to maintaining a safe, fun, and competitive environment for all players, and as such, we cannot allow these actions to go unpunished. This ban is final and will not be reversed." 4 | } 5 | } -------------------------------------------------------------------------------- /Packets/Messages/Server/VisionUpdateMessage.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | from Logic.Battle.Objects.LogicGameObjectManagerServer import LogicGameObjectManagerServer 3 | import time 4 | from Utils.BitStream import BitStream 5 | from Database.DatabaseManager import DataBase 6 | 7 | class VisionUpdateMessage(Writer): 8 | def __init__(self, device, player): 9 | self.device = device 10 | self.id = 24109 11 | self.player = player 12 | #self.version = 1 13 | super().__init__(self.device) 14 | 15 | 16 | def encode(self): 17 | db = DataBase(self.player) 18 | battleInfo = db.getBattleInfo([self.player.battleID])[0] 19 | matchmake = db.loadMatchmakingData([self.player.battleID])[0] 20 | self.writeVInt(matchmake["battleTicks"]) # Battle Ticks 21 | self.writeVInt(0) # related to wifi? 22 | self.writeVInt(1) # Commands Count (just dont use this lmao) 23 | 24 | stream = BitStream() 25 | 26 | LogicGameObjectManagerServer.encode(stream, 2000000, 2, 1, 2, self.player, battleInfo) 27 | self.writeInt(stream.getLength()) 28 | self.buffer += stream.getByteArray() 29 | return self.buffer 30 | #self.writeBytes(stream.getByteArray(), stream.getLength()) 31 | -------------------------------------------------------------------------------- /Packets/Messages/Server/ClanStream.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from Entries.StreamEntryFactory import StreamEntryFactory 3 | from Database.DatabaseManager import DataBase 4 | from Utils.Writer import Writer 5 | 6 | class ClanStream(Writer): 7 | def __init__(self, device, player): 8 | self.id = 24311 9 | self.device = device 10 | self.player = player 11 | super().__init__(self.device) 12 | 13 | def encode(self): 14 | db = DataBase(self.player) 15 | msgCount = 0 16 | clubMessages = None 17 | if self.player.club_id != 0: 18 | clubMessages = db.loadClubMessages(self.player.club_id) 19 | if clubMessages != None: 20 | msgCount = len(clubMessages["info"]["messages"]) 21 | self.writeVint(msgCount) # Message count 22 | #self.writeVInt(0) 23 | 24 | for index in range(msgCount): # Loop through message indices 25 | #for index in range(0): 26 | messageKey = str(index) 27 | message = clubMessages["info"]["messages"][messageKey] 28 | self.writeVInt(message["EventType"]) 29 | StreamEntryFactory.createStreamEntryByType(self, message) 30 | else: 31 | self.writeVint(0) # No messages -------------------------------------------------------------------------------- /Packets/Messages/Server/TeamStreamMessage.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | from Database.DatabaseManager import DataBase 3 | from Entries.StreamEntryFactory import StreamEntryFactory 4 | 5 | class TeamStreamMessage(Writer): 6 | def __init__(self, device, player): 7 | self.id = 24131 8 | self.device = device 9 | self.player = player 10 | super().__init__(self.device) 11 | 12 | 13 | def encode(self): 14 | self.roomLowID = self.player.teamID 15 | self.writeLogicLong(0, self.player.teamID) 16 | db = DataBase(self.player) 17 | msgCount = 0 18 | if self.roomLowID != 0: 19 | roomMessages = db.loadRoomMessages(self.roomLowID) 20 | if roomMessages != None: 21 | msgCount = len(roomMessages["info"]["messages"]) 22 | self.writeVInt(msgCount) # Message count 23 | #self.writeVInt(0) 24 | 25 | for index in range(msgCount): # Loop through message indices 26 | #for index in range(0): 27 | messageKey = str(index) 28 | message = roomMessages["info"]["messages"][messageKey] 29 | self.writeVInt(message["EventType"]) 30 | StreamEntryFactory.createStreamEntryByType(self, message) 31 | else: 32 | self.writeVInt(0) # No messages -------------------------------------------------------------------------------- /Packets/Messages/Server/LoginFailedMessage.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | import json 3 | 4 | class LoginFailedMessage(Writer): 5 | 6 | def __init__(self, device, player, loginPayload, msg , errorCode): 7 | super().__init__(device) 8 | self.id = 20103 9 | self.device = device 10 | self.player = player 11 | self.loginPayload = loginPayload 12 | self.msg = msg 13 | self.errorCode = errorCode 14 | 15 | 16 | def encode(self): 17 | self.writeInt(self.errorCode) 18 | self.writeString(self.loginPayload["fingerprintData"]) 19 | self.writeString() # Server Host 20 | settings = json.load(open("Settings.json")) 21 | self.writeString(f"http://{settings['gameAssetsAddress']}:{settings['gameAssetsPort']}]/") 22 | self.writeString("https://github.com/Super-brawl-team/Obiad-Brawl") 23 | self.writeString(self.msg) 24 | 25 | self.writeInt(0) # maintenance time 26 | self.writeBoolean(False) # Show support page 27 | 28 | self.writeString() 29 | self.writeString() 30 | 31 | self.writeInt(0) 32 | self.writeInt(3) 33 | 34 | self.writeString() 35 | self.writeString() 36 | 37 | self.writeInt(0) 38 | self.writeInt(0) 39 | 40 | self.writeBoolean(False) 41 | self.writeBoolean(False) 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /Utils/Defs.py: -------------------------------------------------------------------------------- 1 | class Defs: 2 | # Translated from IDA's defs.h file 3 | def __ROL__(self, value, count): 4 | nbits = value.__sizeof__() * 8 5 | 6 | if count > 0: 7 | count % nbits 8 | high = value >> (nbits - count) 9 | if (high(-1) < 0): 10 | high & ~((high(-1) << count)) 11 | value < count 12 | value | high 13 | else: 14 | count = count % nbits 15 | low = value << (nbits - count) 16 | value >> count 17 | value | low 18 | 19 | return value 20 | 21 | def __ROL1__(self, value, count): 22 | return Defs.__ROL__(self, value, count) 23 | 24 | def __ROL2__(self, value, count): 25 | return Defs.__ROL__(self, value, count) 26 | 27 | def __ROL4__(self, value, count): 28 | return Defs.__ROL__(self, value, count) 29 | 30 | def __ROL8__(self, value, count): 31 | return Defs.__ROL__(self, value, count) 32 | 33 | def __ROR1__(self, value, count): 34 | return Defs.__ROL__(self, value, -count) 35 | 36 | def __ROR2__(self, value, count): 37 | return Defs.__ROL__(self, value, -count) 38 | 39 | def __ROR4__(self, value, count): 40 | return Defs.__ROL__(self, value, -count) 41 | 42 | def __ROR8__(self, value, count): 43 | return Defs.__ROL__(self, value, -count) -------------------------------------------------------------------------------- /Packets/Messages/Client/TeamCreateMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.TeamMessage import TeamMessage 2 | from Utils.Reader import ByteStream 3 | from Database.DatabaseManager import DataBase 4 | import time 5 | from Packets.Messages.Server.TeamStreamMessage import TeamStreamMessage 6 | 7 | class TeamCreateMessage(ByteStream): 8 | def __init__(self, data, device, player): 9 | super().__init__(data) 10 | self.device = device 11 | self.data = data 12 | self.player = player 13 | 14 | 15 | def decode(self): 16 | self.mapSlot = self.readVInt() 17 | self.player.map_id = self.readVInt() 18 | self.roomType = self.readVInt() 19 | 20 | 21 | def process(self): 22 | if self.player.teamID != 0: 23 | return "nuh uh" 24 | db = DataBase(self.player) 25 | db.getRoomId() 26 | db.replaceValue('teamID', self.player.teamID) 27 | if self.player.map_id > 100: 28 | self.player.map_id = 0 29 | 30 | db.createGameroom(self.roomType, {"info": {"roomID": self.player.teamID, "messages": { "0": {"EventType": 4, "Event": 101, "Tick": 1, "PlayerID": self.player.low_id, "PlayerName": self.player.name, "Message": "", "promotedTeam": 0, "TimeStamp": time.time(), "targetID": self.player.low_id, "targetName": self.player.name}}}}) 31 | 32 | TeamMessage(self.device, self.player).Send() 33 | TeamStreamMessage(self.device, self.player).Send() -------------------------------------------------------------------------------- /Packets/Messages/Client/RequestJoinAllianceMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.AllianceChatServer import AllianceChatServer 2 | from Packets.Messages.Server.AllianceEventMessage import AllianceEventMessage 3 | from Database.DatabaseManager import DataBase 4 | from Packets.PiranhaMessage import PiranhaMessage 5 | 6 | class RequestJoinAllianceMessage(PiranhaMessage): 7 | def __init__(self, data, device, player): 8 | super().__init__(data) 9 | self.device = device 10 | self.data = data 11 | self.player = player 12 | 13 | def decode(self): 14 | self.fields = {} 15 | self.fields["clubID"] = self.readLong() 16 | self.fields["promotionMessage"] = self.readString() 17 | 18 | def process(self): 19 | db = DataBase(self.player) 20 | db.addMsg(self.fields["clubID"][1], 3, self.player.low_id, self.player.name, self.player.club_role, self.fields["promotionMessage"], 1) 21 | self.plrids = [] 22 | club = db.loadClub(self.fields["clubID"][1]) 23 | nextKey = db.getNextKey(self.fields["clubID"][1]) 24 | for token in club["info"]["memberCount"]: 25 | memberData = db.getMemberData(token) 26 | self.plrids.append(memberData["low_id"]) 27 | for id in self.plrids: 28 | AllianceChatServer(self.device, self.player,self.fields["clubID"][1], nextKey+1).SendTo(id) 29 | AllianceEventMessage(self.device, self.player, 50).Send() 30 | -------------------------------------------------------------------------------- /Packets/Messages/Server/AllianceChatServer.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from Entries.StreamEntryFactory import StreamEntryFactory 3 | from Database.DatabaseManager import DataBase 4 | from Utils.Writer import Writer 5 | 6 | class AllianceChatServer(Writer): 7 | def __init__(self, device, player, clubLowID, tick): 8 | self.id = 24312 9 | self.device = device 10 | self.tick = tick 11 | self.player = player 12 | self.clubLowID = clubLowID 13 | super().__init__(self.device) 14 | 15 | def encode(self): 16 | db = DataBase(self.player) 17 | msgCount = 0 18 | messageKey = str(0) 19 | if self.clubLowID != 0: 20 | clubMessages = db.loadClubMessages(self.clubLowID) 21 | if clubMessages != None: 22 | for index in range(len(clubMessages["info"]["messages"])): 23 | if clubMessages["info"]["messages"][str(index)]["Tick"] == self.tick-1: 24 | messageKey = str(index) 25 | msgCount = 1 26 | print(msgCount) 27 | for index in range(msgCount): # Loop through message indices 28 | #for index in range(0): 29 | message = clubMessages["info"]["messages"][messageKey] 30 | self.writeVInt(message["EventType"]) 31 | StreamEntryFactory.createStreamEntryByType(self, message) 32 | else: 33 | self.writeVint(0) # No messages -------------------------------------------------------------------------------- /GameAssets/csv_logic/items.csv: -------------------------------------------------------------------------------- 1 | "Name","FileName","ExportName","ExportNameEnemy","ShadowExportName","GroundGlowExportName","LoopingEffect","Value","Value2","TriggerRangeSubTiles","TriggerAreaEffect","CanBePickedUp","SpawnEffect" 2 | "string","string","string","string","string","string","string","int","int","int","string","boolean","string" 3 | "Health","sc/effects.sc","red_pickup","red_pickup",,"pickup_glow_green","Health_fx",200,,3,,"true","Spawn_plasmoid" 4 | "Speed","sc/effects.sc","red_pickup","red_pickup",,"pickup_glow_green","Health_fx",300,,3,,"true","Spawn_plasmoid" 5 | "Damage","sc/effects.sc","red_pickup","red_pickup",,"pickup_glow_green","Health_fx",100,,3,,"true","Spawn_plasmoid" 6 | "Point","sc/effects.sc","blob_pickup","blob_pickup",,"pickup_glow","Blob_fx",,,3,,"true","Spawn_plasmoid" 7 | "Corpse","sc/effects.sc","Fear_face","Fear_face",,,,,,,,,"Spawn_plasmoid" 8 | "OrbSpawner","sc/level.sc","spawn_hole","spawn_hole","spawn_hole_shadow",,,,,,,,"Spawn_plasmoid" 9 | "Mine","sc/effects.sc","mine","mine_red",,,,200,,3,"MineExplosion","true","Spawn_mine" 10 | "SupplyCrate","sc/effects.sc","red_pickup","red_pickup",,"pickup_glow_green",,,,,,,"Spawn_plasmoid" 11 | "BoxOfMines","sc/effects.sc","red_pickup","red_pickup",,"pickup_glow_green",,,,,,,"Spawn_plasmoid" 12 | "BattleRoyaleBuff","sc/effects.sc","red_pickup","red_pickup",,"pickup_glow_green","Health_fx",5,100,3,,"true","Spawn_plasmoid" 13 | "Money","sc/effects.sc","wanted_star_pickup","wanted_star_pickup",,"pickup_glow_gold","Blob_fx",1,,3,,"true","Spawn_plasmoid" 14 | -------------------------------------------------------------------------------- /Packets/Messages/Client/AskForBattleEndMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.BattleEndMessage import * 2 | from Logic.Player import Player 3 | from Utils.Reader import ByteStream 4 | 5 | 6 | class AskForBattleEndMessage(ByteStream): 7 | 8 | def __init__(self, data, device, player): 9 | super().__init__(data) 10 | self.device = device 11 | self.data = data 12 | self.player = player 13 | 14 | def decode(self): 15 | self.plrs = {} 16 | self.plrs["BattleEndType"] = self.readVInt() # battle result 17 | self.plrs["BattleTime"] = self.readVInt() # time played ? 18 | 19 | self.plrs["BattleRank"] = self.readVInt() # rank so basically is won/lose/draw for 3v3 and the rank for sd 20 | self.plrs["CsvID0"] = self.readVInt() # secndary event index 21 | self.plrs["Location"] = self.readVInt() # actually its index of event 22 | self.plrs["PlayersAmount"] = self.readVInt() # Battle End Players 23 | self.plrs["Brawlers"] = [] 24 | for x in range(self.plrs["PlayersAmount"]): 25 | # HeroDataEntry::encode 26 | self.plrs["Brawlers"].append({ 27 | "CharacterID": self.readDataReference(), 28 | "SkinID": self.readDataReference(), 29 | "Team": self.readVInt(), 30 | "IsPlayer": self.readBoolean(), 31 | "Name": self.readString() 32 | }) 33 | self.plrs["isInRealGame"] = True 34 | def process(self): 35 | 36 | if self.plrs["BattleRank"] != 0: # showdown 37 | BattleEndSD(self.device, self.player, self.plrs).Send() 38 | else: 39 | BattleEndTrio(self.device, self.player, self.plrs).Send() -------------------------------------------------------------------------------- /Packets/Messages/Client/AllianceSearchMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.AllianceSearchResultMessage import AllianceSearchResultMessage 2 | from Utils.Reader import ByteStream 3 | from Logic.Player import Player 4 | from Database.DatabaseManager import DataBase 5 | from Utils.IdUtils import IdUtils 6 | 7 | class AllianceSearchMessage(ByteStream): 8 | 9 | def __init__(self, data, device, player): 10 | super().__init__(data) 11 | self.device = device 12 | self.data = data 13 | self.player = player 14 | 15 | def decode(self): 16 | self.fields = {} 17 | self.fields["RequestedName"] = self.readString() 18 | self.fields["Int1"] = self.readInt() 19 | self.fields["Int2"] = self.readInt() 20 | self.fields["Int3"] = self.readInt() 21 | self.fields["Int4"] = self.readInt() 22 | self.fields["Booolean"] = self.readBoolean() 23 | self.fields["Int5"] = self.readInt() 24 | self.fields["Int6"] = self.readInt() 25 | 26 | def process(self): 27 | db = DataBase(self.player) 28 | idutils = IdUtils() 29 | clubs = db.countClubs(1, 100, 2, 30) 30 | self.foundAlliances = [] 31 | for i in clubs[1]: 32 | if self.fields["RequestedName"].lower() in i["info"]["name"].lower() or idutils.getHLId(self.fields["RequestedName"].lower())[1] == i["info"]["clubID"]: 33 | self.foundAlliances.append(i) 34 | AllianceSearchResultMessage(self.device, self.player, self.fields, self.foundAlliances).Send() -------------------------------------------------------------------------------- /Packets/Factory.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from Packets.Messages.Client import * 3 | 4 | 5 | availablePackets = { 6 | 10100: ClientHelloMessage, 7 | 10101: LoginMessage, 8 | 10107: ClientCapabilitiesMessage, 9 | 10108: KeepAliveMessage, 10 | 10177: ClientInfoMessage, 11 | 10212: ChangeAvatarNameMessage, 12 | 10555: ClientInputMessage, 13 | 14101: GoHomeMessage, 14 | 14102: EndClientTurnMessage, 15 | 14103: MatchmakeRequestMessage, 16 | 14106: CancelMatchMakingMessage, 17 | 14109: GoHomeFromOfflineMessage, 18 | 14110: AskForBattleEndMessage, 19 | 14113: AskProfile, 20 | 14301: AllianceCreate, 21 | 14302: AskForClan, 22 | 14303: AskForJoinableAlliancesListMessage, 23 | 14305: AllianceJoin, 24 | 14306: AlliancePromoteMessage, 25 | 14307: AllianceKickMessage, 26 | 14308: AllianceLeave, 27 | 14315: AllianceChat, 28 | 14316: AllianceEditSettings, 29 | 14317: RequestJoinAllianceMessage, 30 | 14321: RespondToAllianceJoinRequestMessage, 31 | 14324: AllianceSearchMessage, 32 | 14350: TeamCreateMessage, 33 | 14351: TeamJoinMessage, 34 | 14352: TeamKickMessage, 35 | 14353: TeamLeaveMessage, 36 | 14354: TeamChangeMemberSettingsMessage, 37 | 14355: TeamSetMemberReadyMessage, 38 | 14356: TeamTogglePractiseMessage, 39 | 14357: TeamToggleMemberSideMessage, 40 | 14358: TeamSpectateMessage, 41 | 14359: TeamChatMessage, 42 | 14360: TeamPostAdMessage, 43 | 14361: TeamMemberStatusMessage, 44 | 14403: GetLeaderboardMessage 45 | } 46 | -------------------------------------------------------------------------------- /Packets/Messages/Client/TeamSpectateMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.TeamMessage import TeamMessage 2 | from Logic.Player import Player 3 | from Utils.Reader import ByteStream 4 | from Database.DatabaseManager import DataBase 5 | from Packets.Messages.Server.TeamErrorMessage import TeamErrorMessage 6 | 7 | class TeamSpectateMessage(ByteStream): 8 | def __init__(self, data, device, player): 9 | super().__init__(data) 10 | self.device = device 11 | self.data = data 12 | self.player = player 13 | 14 | 15 | def decode(self): 16 | self.fields = {} 17 | self.fields["Unk1"] = self.readVInt() 18 | self.fields["Unk2"] = self.readVInt() 19 | self.fields["Unk3"] = self.readVInt() 20 | 21 | def process(self): 22 | if self.player.teamID != 0: 23 | return "nuh uh" 24 | db = DataBase(self.player) 25 | #try: 26 | joined = db.joinGameroom(self.fields["Unk2"]) 27 | if joined: 28 | db.connection.commit() 29 | self.player.teamID = self.fields["Unk2"] 30 | db.replaceValue('teamID', self.player.teamID) 31 | db.addGameroomMsg(self.player.teamID, 4, self.player.low_id, self.player.name, " ", 102, self.player.low_id, self.player.name) 32 | gameroomInfo = db.getGameroomInfo("info") 33 | for player_key, values in gameroomInfo["players"].items(): 34 | TeamMessage(self.device, self.player).SendTo(player_key) 35 | else: 36 | TeamErrorMessage(self.device, self.player, 6).Send() -------------------------------------------------------------------------------- /UDPMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.PiranhaMessage import PiranhaMessage 2 | from Utils.ByteStream import ByteStream 3 | import asyncio 4 | from Logic.Device import Device 5 | class UDPMessage: 6 | def __init__(self, socket, udpSessionID, addr): 7 | self.byteStream: ByteStream = None 8 | self.socket: asyncio.DatagramTransport = socket 9 | self.udpSessionID: bytes = udpSessionID 10 | self.addr = addr 11 | self.device = Device() 12 | 13 | def encodeMessage(self, message: PiranhaMessage, id, device): 14 | self.buffer = message.encode() 15 | #print(self.buffer) 16 | stream = ByteStream(b"") 17 | stream.writeBytesWithoutLength(b'0123456789', 10) 18 | stream.writeVInt(id) 19 | self.buffer = device.crypto.encrypt(self.buffer) 20 | stream.writeVInt(len(self.buffer)) 21 | stream.writeBytesWithoutLength(self.buffer, len(self.buffer)) 22 | self.byteStream = stream 23 | print(str(id) + "created") 24 | return self.byteStream 25 | def decodeMessage(self, message: PiranhaMessage): 26 | #message.decode({"smack": "gok"}) 27 | fields = {} 28 | stream = ByteStream(message) 29 | fields["sessionToken"] = stream.readBytes(10) 30 | fields["messageType"] = stream.readVInt() 31 | fields["messageLenght"] = stream.readVInt() 32 | fields["payload"] = stream.readBytes(fields["messageLenght"]) 33 | return fields 34 | 35 | 36 | def send(self, byteStream): 37 | self.socket.sendto(byteStream.messagePayload, self.addr) -------------------------------------------------------------------------------- /Packets/Messages/Client/TeamLeaveMessage.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.TeamLeftMessage import TeamLeftMessage 2 | from Utils.Reader import ByteStream 3 | from Logic.Player import Player 4 | from Database.DatabaseManager import DataBase 5 | from Packets.Messages.Server.TeamChatServerMessage import TeamStreamMessage 6 | from Packets.Messages.Server.TeamMessage import TeamMessage 7 | 8 | class TeamLeaveMessage(ByteStream): 9 | def __init__(self, data, device, player): 10 | super().__init__(data) 11 | self.device = device 12 | self.data = data 13 | self.player = player 14 | 15 | 16 | def decode(self): 17 | pass 18 | 19 | 20 | def process(self): 21 | if self.player.teamID == 0: 22 | return "kek" 23 | 24 | db = DataBase(self.player) 25 | db.addGameroomMsg(self.player.teamID, 4, self.player.low_id, self.player.name, "", 103, self.player.low_id, self.player.name) 26 | tick = db.getNextGameroomKey(self.player.teamID) 27 | db.loadGameroom() 28 | gameroomInfo = db.getGameroomInfo("info") 29 | for player_key, values in gameroomInfo["players"].items(): 30 | TeamStreamMessage(self.device, self.player, tick).SendTo(player_key) 31 | TeamMessage(self.device, self.player).SendTo(player_key) 32 | db.removeGameroomPlayer(self.player.low_id, self.player.teamID, self.player.token) 33 | self.player.teamID = 0 34 | db.replaceValue("teamID", self.player.teamID) 35 | TeamLeftMessage(self.device, self.player, 0).Send() 36 | -------------------------------------------------------------------------------- /Packets/Messages/Server/LoginOkMessage.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import time 4 | from Utils.Writer import Writer 5 | 6 | 7 | class LoginOkMessage(Writer): 8 | 9 | def __init__(self, device, player, loginPayload): 10 | self.id = 20104 11 | self.version = 1 12 | self.player = player 13 | self.loginPayload = loginPayload 14 | self.device = device 15 | super().__init__(self.device) 16 | 17 | def encode(self): 18 | self.writeLong(self.loginPayload["highID"], self.loginPayload["lowID"]) # id 19 | 20 | self.writeLong(self.loginPayload["highID"], self.loginPayload["lowID"]) # id 21 | 22 | self.writeString(self.loginPayload["token"]) 23 | self.writeString("467606826913688") 24 | self.writeString("G:325378671") 25 | 26 | self.writeInt(self.loginPayload["majorVersion"]) 27 | self.writeInt(self.loginPayload["minorVersion"]) 28 | self.writeInt(self.loginPayload["build"]) 29 | 30 | self.writeString("-dev") 31 | 32 | self.writeInt(0) 33 | self.writeInt(0) 34 | self.writeInt(0) 35 | 36 | self.writeString() 37 | self.writeString() 38 | self.writeString() 39 | 40 | self.writeInt(0) 41 | 42 | self.writeString() 43 | self.writeString(self.loginPayload["region"]) 44 | self.writeString() 45 | 46 | self.writeInt(1) 47 | 48 | self.writeString() 49 | self.writeString() 50 | self.writeString() 51 | -------------------------------------------------------------------------------- /Packets/Messages/Server/FriendListMessage.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from Utils.Writer import Writer 3 | from Database.DatabaseManager import DataBase 4 | 5 | class FriendListMessage(Writer): 6 | 7 | def __init__(self, device, player): 8 | self.id = 20105 9 | self.device = device 10 | self.player = player 11 | super().__init__(self.device) 12 | 13 | def encode(self): 14 | """Supercell is very picky, the structure is correct but doesnt let me""" 15 | db = DataBase(self.player) 16 | player = db.getSpecifiedPlayers([db.getTokenByLowId(1)])[0] 17 | self.writeInt(0) # friends amount 18 | self.writeInt(1) # friends again 19 | for x in range(1): 20 | self.writeLong(0,1) 21 | self.writeString(player["name"]) 22 | self.writeString("buh") # faceboook id 23 | self.writeString("ah") # game center id 24 | self.writeString() # idk 25 | self.writeInt(0) # friend state 26 | self.writeInt(player["trophies"]) # trophies obv 27 | self.writeInt(0) 28 | self.writeInt(0) 29 | self.writeBoolean(player["club_id"]!=0) 30 | if player["club_id"]!=0: 31 | club = db.loadClub(player["club_id"]) 32 | self.writeLong(0, player["club_id"]) 33 | self.writeInt(0) 34 | self.writeString(club["info"]["name"]) 35 | self.writeInt(0) 36 | self.writeInt(0) 37 | self.writeString("hai") 38 | self.writeDataReference(28, 0) -------------------------------------------------------------------------------- /Packets/Messages/Client/AllianceChat.py: -------------------------------------------------------------------------------- 1 | from Utils.Reader import ByteStream 2 | from Database.DatabaseManager import DataBase 3 | from Packets.Messages.Server.AvailableServerCommandMessage import AvailableServerCommandMessage 4 | from Packets.Messages.Server.AllianceChatServer import AllianceChatServer 5 | 6 | class AllianceChat(ByteStream): 7 | 8 | def __init__(self, data, device, player): 9 | super().__init__(data) 10 | self.device = device 11 | self.data = data 12 | self.player = player 13 | self.HighID = 0 14 | self.LowID = 0 15 | 16 | def decode(self): 17 | self.msg = self.readString() 18 | 19 | def process(self): 20 | db = DataBase(self.player) 21 | """You can add your chat commands here if u want, here is a simple example to add 9999 gems to your account: 22 | if self.msg.lower() == "/addgems": 23 | AvailableServerCommandMessage(self.device, self.player, 202, 9999).Send() 24 | return 25 | """ 26 | db.addMsg(self.player.club_id, 2, self.player.low_id, self.player.name, self.player.club_role, self.msg, 0) 27 | db.loadClub(self.player.club_id) 28 | self.plrids = [] 29 | club = db.loadClub(self.player.club_id) 30 | nextKey = db.getNextKey(self.player.club_id) 31 | for token in club["info"]["memberCount"]: 32 | memberData = db.getMemberData(token) 33 | self.plrids.append(memberData["low_id"]) 34 | for low_id in self.plrids: 35 | AllianceChatServer(self.device, self.player, self.player.club_id, nextKey+1).SendTo(low_id) -------------------------------------------------------------------------------- /Logic/Player.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import json 3 | 4 | class Player: 5 | settings = json.load(open("Settings.json")) 6 | tutorialState = settings["startingTutorialState"] 7 | high_id = 0 8 | low_id = 1 9 | token = None 10 | usedVersion = 1 11 | name = "Brawler" 12 | eventCount = 4 13 | highest_trophies = 0 14 | teamID = 0 15 | teamStatus = 0 16 | isReady = False 17 | selectedCard = [16, 0] 18 | isTeamInPracticeMode = False 19 | teamEventIndex = 0 20 | teamType = 0 21 | teamStreamMessageCount = 0 22 | isAdvertiseToBand = False 23 | matchmakeStartTime = 0 24 | battleTicks = 0 25 | club_id = 0 26 | wifi = 0 27 | battleID = 0 28 | region = "CAT" 29 | player_status = 3 30 | last_connection_time = 0 31 | friends = {} 32 | room_id = 0 33 | unlocked_brawlers = { 34 | 0: {'Cards': {0: 1}, 'Skins': [0], 'selectedSkin': 0, 'Trophies': 0, 'HighestTrophies': 0, 'PowerLevel': 0, 'PowerPoints': 0, 'State': 2, 'StarPower': 0}} 35 | player_experience = 0 36 | profile_icon = 0 37 | trophies = 0 38 | solo_wins = 0 39 | duo_wins = 0 40 | ThreeVSThree_wins = 0 41 | gems = 0 42 | gold = 92 43 | chips = 0 44 | elexir = 0 45 | coinsdoubler = 0 46 | coinsbooster = 0 47 | coins_reward = 0 48 | map_id = 7 49 | skin_id = 0 50 | brawler_id = 0 51 | team = 0 52 | x = 1950 53 | y = 9750 54 | control_mode = 0 55 | has_battle_hints = False 56 | def __init__(self, device): 57 | self.device = device 58 | 59 | def encode(self): 60 | return None 61 | -------------------------------------------------------------------------------- /Packets/Messages/Server/TeamChatServerMessage.py: -------------------------------------------------------------------------------- 1 | from Utils.Writer import Writer 2 | import random 3 | from Database.DatabaseManager import DataBase 4 | from Entries.StreamEntryFactory import StreamEntryFactory 5 | 6 | class TeamStreamMessage(Writer): 7 | def __init__(self, device, player, tick): 8 | self.id = 24131 9 | self.tick = tick 10 | self.device = device 11 | self.player = player 12 | super().__init__(self.device) 13 | 14 | 15 | def encode(self): 16 | """This packet does not exists. Its TeamStreamMessage but i edited it bc i was lazy to code all the logic""" 17 | self.roomLowID = self.player.teamID 18 | self.writeLogicLong(0, self.player.teamID) 19 | 20 | db = DataBase(self.player) 21 | roomMessages = None 22 | matchedMessages = [] 23 | 24 | if self.roomLowID != 0: 25 | roomMessages = db.loadRoomMessages(self.roomLowID) 26 | 27 | if roomMessages and "info" in roomMessages and "messages" in roomMessages["info"]: 28 | messages = roomMessages["info"]["messages"] 29 | 30 | # Safely iterate through message dict 31 | for key, message in messages.items(): 32 | if message.get("Tick") == self.tick: 33 | matchedMessages.append(message) 34 | 35 | # Write number of messages that match the tick 36 | self.writeVInt(len(matchedMessages)) 37 | 38 | # Write each matched message 39 | for message in matchedMessages: 40 | self.writeVInt(message["EventType"]) 41 | StreamEntryFactory.createStreamEntryByType(self, message) 42 | -------------------------------------------------------------------------------- /Packets/Messages/Client/AllianceEditSettings.py: -------------------------------------------------------------------------------- 1 | from Packets.Messages.Server.MyAlliance import MyAlliance 2 | from Utils.Reader import ByteStream 3 | from Logic.Player import Player 4 | from Database.DatabaseManager import DataBase 5 | import time 6 | from Packets.Messages.Server.AllianceEventMessage import AllianceEventMessage 7 | from Packets.Messages.Server.AllianceChatServer import AllianceChatServer 8 | class AllianceEditSettings(ByteStream): 9 | 10 | def __init__(self, data, device, player): 11 | super().__init__(data) 12 | self.device = device 13 | self.data = data 14 | self.player = player 15 | self.HighID = 0 16 | self.LowID = 0 17 | 18 | def decode(self): 19 | self.desc = self.readString() 20 | self.badge = self.readDataReference() 21 | self.type = self.readVInt() 22 | self.trophiesRequired = self.readVInt() 23 | 24 | def process(self): 25 | db = DataBase(self.player) 26 | if self.player.club_id == 0: 27 | return "nop" 28 | if self.player.club_role in [0, 1]: 29 | return "nop" 30 | db.replaceClubValue(self.player.club_id, self.desc, self.badge[1], self.type, self.trophiesRequired) 31 | AllianceEventMessage(self.device, self.player, 10).Send() 32 | club = db.loadClub(self.player.club_id) 33 | self.plrids = [] 34 | for token in club["info"]["memberCount"]: 35 | memberData = db.getMemberData(token) 36 | self.plrids.append(memberData["low_id"]) 37 | for id in self.plrids: 38 | if id != self.targetID[1]: 39 | MyAlliance(self.device, self.player).SendTo(id) 40 | --------------------------------------------------------------------------------