public override void Execute(Level level) { try { while (true) { var defender = ObjectManager.GetRandomOnlinePlayer(); if (defender != null) { var allianceId = defender.GetPlayerAvatar().GetAllianceId(); if (allianceId > 0) { var defenderAlliance = ObjectManager.GetAlliance(allianceId); if (defenderAlliance == null) { continue; } } level.GetPlayerAvatar().State = ClientAvatar.UserState.Searching; var trophyDiff = Math.Abs(level.GetPlayerAvatar().GetScore() - defender.GetPlayerAvatar().GetScore()); var reward = (int)Math.Round(Math.Pow((5 * trophyDiff), 0.25) + 5d); var lost = (int)Math.Round(Math.Pow((2 * trophyDiff), 0.35) + 5d); var info = new ClientAvatar.AttackInfo { Attacker = level, Defender = defender, Lost = lost, Reward = reward, UsedTroop = new List <DataSlot>() }; // Just f*****g clear it since its per user and a user can attack only once at a time. level.GetPlayerAvatar().AttackingInfo.Clear(); level.GetPlayerAvatar().AttackingInfo.Add(level.GetPlayerAvatar().GetId(), info); //Use UserID For a while..Working on AttackID soon defender.Tick(); new EnemyHomeDataMessage(level.GetClient(), defender, level).Send(); } else { Logger.Error("Could not find opponent in memory, returning home."); new OwnHomeDataMessage(level.GetClient(), level).Send(); } break; } } catch (Exception ex) { // Ultimate fail safe in case unexpected shit happens. ExceptionLogger.Log(ex, "Could not find opponent in memory, returning home."); new OwnHomeDataMessage(level.GetClient(), level).Send(); } }
public override void Execute(Level level) { for (int i = 0; i < 31; i++) { var unitData = CSVManager.DataTables.GetDataById(4000000 + i); var combatData = (CharacterData)unitData; var maxLevel = combatData.GetUpgradeLevelCount(); var unitSlot = new DataSlot(unitData, 6969); level.GetPlayerAvatar().GetUnits().Add(unitSlot); level.GetPlayerAvatar().SetUnitUpgradeLevel(combatData, maxLevel - 1); } for (int i = 0; i < 18; i++) { var spellData = CSVManager.DataTables.GetDataById(26000000 + i); var combatData = (SpellData)spellData; var maxLevel = combatData.GetUpgradeLevelCount(); var spellSlot = new DataSlot(spellData, 6969); level.GetPlayerAvatar().GetSpells().Add(spellSlot); level.GetPlayerAvatar().SetUnitUpgradeLevel(combatData, maxLevel - 1); } var l = ObjectManager.GetRandomOnlinePlayer(); if (l != null) { l.Tick(); level.GetPlayerAvatar().State = ClientAvatar.UserState.Searching; var trophyDiff = Math.Abs(level.GetPlayerAvatar().GetScore() - l.GetPlayerAvatar().GetScore()); var reward = (int)Math.Round(Math.Pow((5 * trophyDiff), 0.25) + 5d); var lost = (int)Math.Round(Math.Pow((2 * trophyDiff), 0.35) + 5d); var info = new ClientAvatar.AttackInfo { Attacker = level, Defender = l, Lost = lost, Reward = reward, UsedTroop = new List <DataSlot>() }; level.GetPlayerAvatar().AttackingInfo.Add(l.GetPlayerAvatar().GetId(), info); //Use UserID For a while..Working on AttackID soon l.Tick(); new EnemyHomeDataMessage(level.GetClient(), l, level).Send(); } else { new EnemyHomeDataMessage(level.GetClient(), l, level).Send(); } }