public void OnPvpBattleComplete(PvpBattleEndResponse endResponse, object cookie) { CurrentPlayer currentPlayer = Service.Get <CurrentPlayer>(); currentPlayer.BattleHistory.AddBattle(endResponse.BattleEntry); this.CurrentPvpTarget = null; CurrentBattle currentBattle = Service.Get <BattleController>().GetCurrentBattle(); currentBattle.Attacker = endResponse.BattleEntry.Attacker; currentBattle.Defender = endResponse.BattleEntry.Defender; currentPlayer.AttackRating += endResponse.BattleEntry.Attacker.AttackRatingDelta; currentPlayer.DefenseRating += endResponse.BattleEntry.Attacker.DefenseRatingDelta; if (endResponse.BattleEntry.Won) { CurrentPlayer expr_93 = currentPlayer; int attacksWon = expr_93.AttacksWon; expr_93.AttacksWon = attacksWon + 1; } AchievementController achievementController = Service.Get <AchievementController>(); achievementController.TryUnlockAchievementByValue(AchievementType.LootCreditsPvp, currentPlayer.BattleHistory.GetTotalPvpCreditsLooted()); achievementController.TryUnlockAchievementByValue(AchievementType.LootAlloyPvp, currentPlayer.BattleHistory.GetTotalPvpMaterialLooted()); achievementController.TryUnlockAchievementByValue(AchievementType.LootContrabandPvp, currentPlayer.BattleHistory.GetTotalPvpContrabandLooted()); achievementController.TryUnlockAchievementByValue(AchievementType.PvpWon, currentPlayer.BattleHistory.GetTotalPvpWins()); this.recentBattleList.Add(endResponse.BattleEntry); Service.Get <TournamentController>().OnPvpBattleComplete(endResponse.TournamentData, currentBattle.Attacker.TournamentRatingDelta); }
public PvpManager() { Service.Set <PvpManager>(this); this.recentBattleList = new List <BattleEntry>(); this.CurrentPvpTarget = null; this.costByHqLevel = new Dictionary <int, int>(); string pVP_SEARCH_COST_BY_HQ_LEVEL = GameConstants.PVP_SEARCH_COST_BY_HQ_LEVEL; string[] array = pVP_SEARCH_COST_BY_HQ_LEVEL.Split(new char[] { ' ' }); this.costByHqLevel.Add(-1, Convert.ToInt32(array[0], CultureInfo.InvariantCulture)); int i; for (i = 0; i < array.Length; i++) { int key = i + 1; int value = Convert.ToInt32(array[i], CultureInfo.InvariantCulture); this.costByHqLevel.Add(key, value); } this.maxHqLevel = i; Service.Get <EventManager>().RegisterObserver(this, EventId.GameStateChanged, EventPriority.Default); this.pvpSearchTimerId = 0u; }
private void OnPvpTargetFound(PvpTarget target, object cookie) { this.KillSearchTimer(); this.CurrentPvpTarget = target; int pvpMatchCost = this.GetPvpMatchCost(); if (pvpMatchCost != target.CreditsCharged) { Service.Get <StaRTSLogger>().ErrorFormat("Pvp target credit cost mismatch. Client: {0}, Server: {1}", new object[] { pvpMatchCost, target.CreditsCharged }); } else { GameUtils.SpendCurrency(target.CreditsCharged, 0, 0, false); } ISupportController supportController = Service.Get <ISupportController>(); supportController.SimulateCheckAllContractsWithCurrentTime(); supportController.SyncCurrentPlayerInventoryWithServer(target.AttackerDeployableServerData); this.OnTargetReady(target, false); Service.Get <UserInputInhibitor>().AllowAll(); }
public void ReleasePvpTarget() { this.CurrentPvpTarget = null; PlayerIdChecksumRequest request = new PlayerIdChecksumRequest(); PvpReleaseTargetcommand command = new PvpReleaseTargetcommand(request); Service.Get <ServerAPI>().Enqueue(command); }
private void OnTargetReady(PvpTarget target, bool isRevenge) { Service.Get <CurrentPlayer>().ProtectedUntil = 0u; BattleInitializationData data = BattleInitializationData.CreateFromPvpTargetData(target, isRevenge); IState currentState = Service.Get <GameStateMachine>().CurrentState; if (currentState is BattleStartState) { BattleStartState.GoToBattleStartState((BattleStartState)currentState, data, new TransitionCompleteDelegate(this.OnBattleReady)); return; } BattleStartState.GoToBattleStartState(data, new TransitionCompleteDelegate(this.OnBattleReady)); }
public static BattleInitializationData CreateFromPvpTargetData(PvpTarget target, bool isRevenge) { BattleInitializationData battleInitializationData = new BattleInitializationData(); battleInitializationData.RecordId = target.BattleId; battleInitializationData.BattleType = BattleType.Pvp; CurrentPlayer currentPlayer = Service.CurrentPlayer; battleInitializationData.Attacker = new BattleParticipant(currentPlayer.PlayerId, currentPlayer.PlayerName, currentPlayer.Faction); battleInitializationData.Attacker.AttackRating = currentPlayer.AttackRating; battleInitializationData.Attacker.DefenseRating = currentPlayer.DefenseRating; battleInitializationData.Defender = new BattleParticipant(target.PlayerId, target.PlayerName, target.PlayerFaction); battleInitializationData.Defender.AttackRating = target.PlayerAttackRating; battleInitializationData.Defender.DefenseRating = target.PlayerDefenseRating; battleInitializationData.AttackerDeployableData = BattleDeploymentData.CreateEmpty(); battleInitializationData.DefenderDeployableData = BattleDeploymentData.CreateEmpty(); battleInitializationData.AllowMultipleHeroDeploys = false; battleInitializationData.OverrideDeployables = false; battleInitializationData.BattleLength = GameConstants.PVP_MATCH_DURATION; battleInitializationData.PlanetId = target.BaseMap.Planet.Uid; battleInitializationData.LootCreditsAvailable = target.AvailableCredits; battleInitializationData.LootMaterialsAvailable = target.AvailableMaterials; battleInitializationData.LootContrabandAvailable = target.AvailableContraband; battleInitializationData.BuildingLootCreditsMap = target.BuildingLootCreditsMap; battleInitializationData.BuildingLootMaterialsMap = target.BuildingLootMaterialsMap; battleInitializationData.BuildingLootContrabandMap = target.BuildingLootContrabandMap; battleInitializationData.PvpTarget = target; battleInitializationData.VictoryConditions = Service.VictoryConditionController.GetDefaultConditions(); battleInitializationData.DefenderGuildTroopsAvailable = target.GuildDonatedTroops; battleInitializationData.DefenderChampionsAvailable = target.Champions; battleInitializationData.AttackerGuildTroopsAvailable = BattleInitializationData.GetCurrentPlayerGuildTroops(); battleInitializationData.DisabledBuildings = new List <string>(); for (int i = 0; i < target.Contracts.Count; i++) { if (target.Contracts[i].ContractType == ContractType.Build || target.Contracts[i].ContractType == ContractType.Upgrade) { battleInitializationData.DisabledBuildings.Add(target.Contracts[i].BuildingKey); } } battleInitializationData.IsReplay = false; battleInitializationData.IsRevenge = isRevenge; battleInitializationData.AllowReplay = true; battleInitializationData.AttackerEquipment = BattleInitializationData.GetCurrentPlayerEquipment(battleInitializationData.PlanetId); battleInitializationData.DefenderEquipment = target.Equipment; return(battleInitializationData); }
private void OnPvpRevengeFound(PvpTarget target, object cookie) { this.CurrentPvpTarget = target; this.OnTargetReady(target, true); }
private void OnPvpCheatTargetFound(PvpTarget target, object cookie) { this.CurrentPvpTarget = target; this.OnTargetReady(target, false); Service.Get <UserInputInhibitor>().AllowAll(); }
public PvpMapDataLoader Initialize(BattleInitializationData battleData) { this.battleData = battleData; this.pvpTarget = battleData.PvpTarget; return(this); }