namespace Supercell.Laser.Logic.Message.Battle { using Supercell.Laser.Logic.Battle.Structures; using Supercell.Laser.Logic.Helper; using Supercell.Laser.Logic.Home.Quest; public class BattleEndMessage : GameMessage { public BattleEndMessage() : base() { ProgressiveQuests = new List(); } public int Result; public int TokensReward; public int ExpReward; public int TrophiesReward; public int DoubledTokensReward; public int TokenDoublersLeft; public List Players; public List ProgressiveQuests; public BattlePlayer OwnPlayer; public bool StarToken; public bool HasNoTokens; public int UnderdogTrophies; public int PowerPlayScoreGained; public int PowerPlayEpicScoreGained; // events public int DoubleTokenEvent; public int CoinEventReward; // end events public int GameMode; public bool IsPvP; public int Counts; public override void Encode() { Stream.WriteVInt(GameMode); // game mode Stream.WriteVInt(Result); Stream.WriteVInt(TokensReward); // tokens reward Stream.WriteVInt(TrophiesReward); // trophies reward Stream.WriteVInt(PowerPlayScoreGained); Stream.WriteVInt(DoubledTokensReward); Stream.WriteVInt(DoubleTokenEvent); Stream.WriteVInt(TokenDoublersLeft); Stream.WriteVInt(0); Stream.WriteVInt(PowerPlayEpicScoreGained); Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(CoinEventReward); // i think so Stream.WriteVInt(UnderdogTrophies); Stream.WriteBoolean(StarToken); Stream.WriteBoolean(false); // no experience Stream.WriteBoolean(HasNoTokens); // no tokens left Stream.WriteBoolean(false); Stream.WriteBoolean(IsPvP); // is PvP Stream.WriteBoolean(false); Stream.WriteBoolean(false); Stream.WriteVInt(-1); Stream.WriteBoolean(false); Console.WriteLine(Players.Count); Counts = Players.Count; Stream.WriteVInt(Counts); foreach (BattlePlayer player in Players) { Stream.WriteBoolean(player.AccountId == OwnPlayer.AccountId); // is own player Stream.WriteBoolean(player.TeamIndex != OwnPlayer.TeamIndex); // is enemy Stream.WriteBoolean(false); // Star player ByteStreamHelper.WriteDataReference(Stream, player.CharacterId); Stream.WriteVInt(0); // skin Stream.WriteVInt(player.Trophies); // trophies Stream.WriteVInt(0); Stream.WriteVInt(player.HeroPowerLevel + 1); // power level bool isOwn = player.AccountId == OwnPlayer.AccountId; Stream.WriteBoolean(isOwn); if (isOwn) { Stream.WriteLong(player.AccountId); } player.DisplayData.Encode(Stream); } Stream.WriteVInt(2); // Experience Array Stream.WriteVInt(0); // Normal Experience ID Stream.WriteVInt(ExpReward); // Normal Experience Gained Stream.WriteVInt(8); // Star Player Experience ID Stream.WriteVInt(0);// Star Player Experience Gained Stream.WriteVInt(1); { Stream.WriteVInt(39); Stream.WriteVInt(20); } Stream.WriteVInt(2); { Stream.WriteVInt(1); Stream.WriteVInt(OwnPlayer.Trophies); // Trophies Stream.WriteVInt(OwnPlayer.HighestTrophies); // Highest Trophies Stream.WriteVInt(5); Stream.WriteVInt(100); Stream.WriteVInt(100); } ByteStreamHelper.WriteDataReference(Stream, 28000000); Stream.WriteBoolean(false); if (Stream.WriteBoolean(ProgressiveQuests.Count > 0)) { Stream.WriteVInt(ProgressiveQuests.Count); foreach (Quest quest in ProgressiveQuests) { quest.Encode(Stream); } } } public override int GetMessageType() { return 23456; } public override int GetServiceNodeType() { return 27; } } }