public void unregisterHeroStatsTarget(HeroStats heroStats) { if (this.m_heroStats.Contains(heroStats)) { this.m_heroStats.Remove(heroStats); } }
private void onDungeonBoostActivated(DungeonBoost dungeonBoost, SkillType fromSkill) { if (ConfigDungeonBoosts.IsBox(dungeonBoost.Properties.Type)) { for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats stats = this.m_heroStats[i]; if (fromSkill != SkillType.NONE) { string key = fromSkill.ToString(); if (!stats.SkillDungeonBoostBoxDestructionCounts.ContainsKey(key)) { stats.SkillDungeonBoostBoxDestructionCounts.Add(key, 1.0); } else { Dictionary <string, double> dictionary; string str2; double num2 = dictionary[str2]; (dictionary = stats.SkillDungeonBoostBoxDestructionCounts)[str2 = key] = num2 + 1.0; } } stats.DungeonBoostBoxesDestroyed++; } } }
private void onResourcesGained(Player player, ResourceType resourceType, double amount, bool visualizationManuallyControlled, string analyticsSourceId, Vector3?worldPt) { if (resourceType == ResourceType.Coin) { if (amount > 0.0) { for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats local1 = this.m_heroStats[i]; local1.CoinsEarned += amount; } if (App.Binder.ConfigMeta.COMBAT_STATS_ENABLED && worldPt.HasValue) { GameLogic.Binder.HeroStatRecordingSystem.RealtimeCombatStats.addDatapoint(amount, GameLogic.RealtimeCombatStats.DatapointType.Coins); } } } else if ((resourceType == ResourceType.Token) && (amount > 0.0)) { for (int j = 0; j < this.m_heroStats.Count; j++) { HeroStats local2 = this.m_heroStats[j]; local2.TokensEarned += amount; } } }
private void onRewardConsumed(Player player, Reward drop) { if (drop.isWrappedInsideChest()) { for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats stats = this.m_heroStats[i]; if (ConfigMeta.IsMysteryChest(drop.ChestType)) { stats.SilverChestsOpened++; } else if (drop.ChestType == App.Binder.ConfigMeta.MISSION_BIG_PRIZE_CHEST_TYPE) { stats.MissionBigPrizesOpened++; } else { stats.GoldChestsOpened++; } string item = drop.ChestType.ToString(); if (!stats.EncounteredChestTypes.Contains(item)) { stats.EncounteredChestTypes.Add(item); } } } }
public TournamentInstance() { this.OutgoingLogQueue = new List <TournamentLogEvent>(); this.HeroStats = new GameLogic.HeroStats(); this.Resources = new Dictionary <string, double>(); this.Upgrades = new TournamentUpgrades(); this.LastAdventurePanelSubTabIdx = -1; }
private void onMissionStarted(Player player, MissionInstance mission) { for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats local1 = this.m_heroStats[i]; local1.MissionsStarted++; } }
private void onPlayerAugmentationGained(Player player, string id) { for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats local1 = this.m_heroStats[i]; local1.KnightUpgrades++; } }
private void onBossTrainStarted(Player player, int numCharges) { for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats local1 = this.m_heroStats[i]; local1.UsedBossTickets++; } }
private void onItemRankUpped(CharacterInstance character, ItemInstance itemInstance, int rankUpCount, bool free) { for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats local1 = this.m_heroStats[i]; local1.ItemUpgrades++; } }
private void onItemUnlocked(CharacterInstance character, ItemInstance itemInstance) { for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats local1 = this.m_heroStats[i]; local1.ItemsUnlocked++; } }
private void onPassiveProgress(Player player, int numPassiveMinionKills, int numPassiveFloorCompletions, int numPassiveBossKills) { for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats stats = this.m_heroStats[i]; stats.MonstersKilled += numPassiveMinionKills; stats.FloorsCompleted += numPassiveFloorCompletions; stats.BossesBeat += numPassiveBossKills; } }
public void registerHeroStatsTarget(HeroStats heroStats) { if (this.m_heroStats.Contains(heroStats)) { Debug.LogWarning("Trying to re-register HeroStats: " + heroStats); } else { this.m_heroStats.Add(heroStats); } }
private void onRoomCompleted(Room activeRoom) { if ((activeRoom.EndCondition == RoomEndCondition.NORMAL_COMPLETION) || (activeRoom.EndCondition == RoomEndCondition.FRENZY_COMPLETION)) { for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats local1 = this.m_heroStats[i]; local1.FloorsCompleted++; } } }
public TournamentInstance(TournamentInfo tournamentInfo, GameLogic.Player player) { this.OutgoingLogQueue = new List <TournamentLogEvent>(); this.HeroStats = new GameLogic.HeroStats(); this.Resources = new Dictionary <string, double>(); this.Upgrades = new TournamentUpgrades(); this.LastAdventurePanelSubTabIdx = -1; this.TournamentId = tournamentInfo.Id; this.Player = player; this.CurrentState = State.PENDING_JOIN_CONFIRMATION; }
private void onBossTrainEnded(Player player, int numCharges, int numBossesKilled) { if (numCharges == numBossesKilled) { for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats local1 = this.m_heroStats[i]; local1.CompletedBossTickets++; } } }
protected void Update() { this.m_activePlaytimeTimer.tick(Time.unscaledDeltaTime); if (this.m_activePlaytimeTimer.Idle) { for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats local1 = this.m_heroStats[i]; local1.SecondsPlayedActive += 1L; } this.m_activePlaytimeTimer.reset(); } }
private void onCharacterSpawned(CharacterInstance c) { ActiveDungeon activeDungeon = GameLogic.Binder.GameState.ActiveDungeon; if (c.IsBoss && (activeDungeon.Floor == 2)) { for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats local1 = this.m_heroStats[i]; local1.FirstBossSummonCount++; } } }
public HeroStats(HeroStats another) { this.EncounteredChestTypes = new List <string>(); this.EncounteredItemsIds = new List <string>(); this.EncounteredCharacterTypes = new List <GameLogic.CharacterType>(); this.SkillActivationCounts = new Dictionary <string, int>(); this.SkillDamageCounts = new Dictionary <string, double>(); this.CharacterTypeKillCounts = new Dictionary <string, int>(); this.SkillMinionKills = new Dictionary <string, int>(); this.Multikills = new Dictionary <int, int>(); this.ItemsGainedByRarity = new Dictionary <int, int>(); this.SkillDungeonBoostBoxDestructionCounts = new Dictionary <string, double>(); this.copyFrom(another); }
private void onItemGained(CharacterInstance character, ItemInstance itemInstance, string trackingId) { for (int i = 0; i < this.m_heroStats.Count; i++) { Dictionary <int, int> dictionary; int num2; HeroStats stats = this.m_heroStats[i]; if (!stats.ItemsGainedByRarity.ContainsKey(itemInstance.Rarity)) { stats.ItemsGainedByRarity.Add(itemInstance.Rarity, 0); } num2 = dictionary[num2]; (dictionary = stats.ItemsGainedByRarity)[num2 = itemInstance.Rarity] = num2 + 1; } }
public void copyFrom(HeroStats another) { this.FloorsCompleted = another.FloorsCompleted; this.CreationTimestamp = another.CreationTimestamp; this.SecondsPlayedActive = another.SecondsPlayedActive; this.MonstersKilled = another.MonstersKilled; this.MultikilledMonsters = another.MultikilledMonsters; this.CoinsEarned = another.CoinsEarned; this.TokensEarned = another.TokensEarned; this.ItemsUnlocked = another.ItemsUnlocked; this.ItemUpgrades = another.ItemUpgrades; this.KnightUpgrades = another.KnightUpgrades; this.GoldChestsOpened = another.GoldChestsOpened; this.SilverChestsOpened = another.SilverChestsOpened; this.HeroesRetired = another.HeroesRetired; this.HighestFloor = another.HighestFloor; this.RankUps = another.RankUps; this.EncounteredChestTypes = new List <string>(another.EncounteredChestTypes); this.EncounteredItemsIds = new List <string>(another.EncounteredItemsIds); this.EncounteredCharacterTypes = new List <GameLogic.CharacterType>(another.EncounteredCharacterTypes); this.HighestTokenMultiplier = another.HighestTokenMultiplier; this.FirstBossSummonCount = another.FirstBossSummonCount; this.HighestTokenGainWithRetirement = another.HighestTokenGainWithRetirement; this.HighestMultikill = another.HighestMultikill; this.HighestCriticalHit = another.HighestCriticalHit; this.SkillActivationCounts = new Dictionary <string, int>(another.SkillActivationCounts); this.SkillDamageCounts = new Dictionary <string, double>(another.SkillDamageCounts); this.CharacterTypeKillCounts = new Dictionary <string, int>(another.CharacterTypeKillCounts); this.DamageDealt = another.DamageDealt; this.BossesBeat = another.BossesBeat; this.BossesBeatDuringFrenzy = another.BossesBeatDuringFrenzy; this.MinionsKilledDuringFrenzy = another.MinionsKilledDuringFrenzy; this.SkillMinionKills = new Dictionary <string, int>(another.SkillMinionKills); this.EnemiesFrozen = another.EnemiesFrozen; this.EnemiesPoisoned = another.EnemiesPoisoned; this.EnemiesStunned = another.EnemiesStunned; this.Multikills = new Dictionary <int, int>(another.Multikills); this.UsedBossTickets = another.UsedBossTickets; this.CompletedBossTickets = another.CompletedBossTickets; this.MissionsStarted = another.MissionsStarted; this.MissionBigPrizesOpened = another.MissionBigPrizesOpened; this.ItemsGainedByRarity = new Dictionary <int, int>(another.ItemsGainedByRarity); this.EliteBossesBeat = another.EliteBossesBeat; this.FrenzyActivations = another.FrenzyActivations; this.DungeonBoostBoxesDestroyed = another.DungeonBoostBoxesDestroyed; this.SkillDungeonBoostBoxDestructionCounts = new Dictionary <string, double>(another.SkillDungeonBoostBoxDestructionCounts); }
private void onCharacterDealtDamage(CharacterInstance sourceCharacter, CharacterInstance targetCharacter, Vector3 worldPos, double amount, bool critted, bool damageReduced, DamageType damageType, SkillType fromSkill) { if ((sourceCharacter != null) && sourceCharacter.IsPlayerCharacter) { for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats stats = this.m_heroStats[i]; stats.DamageDealt += amount; if (fromSkill != SkillType.NONE) { string key = fromSkill.ToString(); if (!stats.SkillDamageCounts.ContainsKey(key)) { stats.SkillDamageCounts.Add(key, amount); } else { Dictionary <string, double> dictionary; string str2; double num2 = dictionary[str2]; (dictionary = stats.SkillDamageCounts)[str2 = key] = num2 + amount; } } if (critted) { stats.HighestCriticalHit = Math.Max(stats.HighestCriticalHit, amount); } } if (App.Binder.ConfigMeta.COMBAT_STATS_ENABLED) { GameLogic.RealtimeCombatStats.DatapointType damageSupport; if (sourceCharacter.IsSupport) { damageSupport = GameLogic.RealtimeCombatStats.DatapointType.DamageSupport; } else if (fromSkill != SkillType.NONE) { damageSupport = GameLogic.RealtimeCombatStats.DatapointType.DamageSkill; } else { damageSupport = GameLogic.RealtimeCombatStats.DatapointType.DamageWeapon; } this.m_realtimeCombatStats.addDatapoint(amount, damageSupport); } } }
private void onGameplayStarted(ActiveDungeon activeDungeon) { Player player = GameLogic.Binder.GameState.Player; this.unregisterAllHeroStatsTargets(); this.registerHeroStatsTarget(player.ActiveCharacter.HeroStats); if (activeDungeon.ActiveTournament != null) { this.registerHeroStatsTarget(activeDungeon.ActiveTournament.HeroStats); } for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats stats = this.m_heroStats[i]; stats.HighestFloor = Mathf.Max(stats.HighestFloor, activeDungeon.Floor); stats.HighestTokenMultiplier = Math.Max(stats.HighestTokenMultiplier, player.getActiveTokenRewardFloorMultiplier()); } }
public void onMultikillBonusGranted(Player player, int killCount, double coinAmount) { for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats stats = this.m_heroStats[i]; stats.MultikilledMonsters += killCount; stats.HighestMultikill = Mathf.Max(stats.HighestMultikill, killCount); if (!stats.Multikills.ContainsKey(killCount)) { stats.Multikills.Add(killCount, 1); } else { Dictionary <int, int> dictionary; int num2; num2 = dictionary[num2]; (dictionary = stats.Multikills)[num2 = killCount] = num2 + 1; } } }
private void onBuffStarted(CharacterInstance character, Buff buff) { if (!character.IsPlayerCharacter) { EffectType effectTypeForBuff = ConfigUi.GetEffectTypeForBuff(buff); for (int i = 0; i < this.m_heroStats.Count; i++) { HeroStats stats = this.m_heroStats[i]; if (effectTypeForBuff == ConfigPerks.GlobalFrostEffect.EffectType) { stats.EnemiesFrozen++; } else if (effectTypeForBuff == ConfigPerks.GlobalPoisonEffect.EffectType) { stats.EnemiesPoisoned++; } if (buff.Stuns) { stats.EnemiesStunned++; } } } }
public void add(HeroStats another) { string str; int num4; double num5; this.FloorsCompleted += another.FloorsCompleted; this.SecondsPlayedActive += another.SecondsPlayedActive; this.MonstersKilled += another.MonstersKilled; this.MultikilledMonsters += another.MultikilledMonsters; this.CoinsEarned += another.CoinsEarned; this.TokensEarned += another.TokensEarned; this.ItemsUnlocked += another.ItemsUnlocked; this.ItemUpgrades += another.ItemUpgrades; this.KnightUpgrades += another.KnightUpgrades; this.GoldChestsOpened += another.GoldChestsOpened; this.SilverChestsOpened += another.SilverChestsOpened; this.HeroesRetired += another.HeroesRetired; this.HighestFloor = Mathf.Max(this.HighestFloor, another.HighestFloor); this.RankUps += another.RankUps; for (int i = 0; i < another.EncounteredChestTypes.Count; i++) { if (!this.EncounteredChestTypes.Contains(another.EncounteredChestTypes[i])) { this.EncounteredChestTypes.Add(another.EncounteredChestTypes[i]); } } for (int j = 0; j < another.EncounteredItemsIds.Count; j++) { if (!this.EncounteredItemsIds.Contains(another.EncounteredItemsIds[j])) { this.EncounteredItemsIds.Add(another.EncounteredItemsIds[j]); } } for (int k = 0; k < another.EncounteredCharacterTypes.Count; k++) { if (!this.EncounteredCharacterTypes.Contains(another.EncounteredCharacterTypes[k])) { this.EncounteredCharacterTypes.Add(another.EncounteredCharacterTypes[k]); } } this.HighestTokenMultiplier = Math.Max(this.HighestTokenMultiplier, another.HighestTokenMultiplier); this.FirstBossSummonCount = Mathf.Max(this.FirstBossSummonCount, another.FirstBossSummonCount); this.HighestTokenGainWithRetirement = Math.Max(this.HighestTokenGainWithRetirement, another.HighestTokenGainWithRetirement); this.HighestMultikill = Math.Max(this.HighestMultikill, another.HighestMultikill); this.HighestCriticalHit = Math.Max(this.HighestCriticalHit, another.HighestCriticalHit); foreach (KeyValuePair <string, int> pair in another.SkillActivationCounts) { if (this.SkillActivationCounts.ContainsKey(pair.Key)) { Dictionary <string, int> dictionary; num4 = dictionary[str]; (dictionary = this.SkillActivationCounts)[str = pair.Key] = num4 + pair.Value; } else { this.SkillActivationCounts.Add(pair.Key, pair.Value); } } foreach (KeyValuePair <string, double> pair2 in another.SkillDamageCounts) { if (this.SkillDamageCounts.ContainsKey(pair2.Key)) { Dictionary <string, double> dictionary2; num5 = dictionary2[str]; (dictionary2 = this.SkillDamageCounts)[str = pair2.Key] = num5 + pair2.Value; } else { this.SkillDamageCounts.Add(pair2.Key, pair2.Value); } } foreach (KeyValuePair <string, int> pair3 in another.CharacterTypeKillCounts) { if (this.CharacterTypeKillCounts.ContainsKey(pair3.Key)) { Dictionary <string, int> dictionary3; num4 = dictionary3[str]; (dictionary3 = this.CharacterTypeKillCounts)[str = pair3.Key] = num4 + pair3.Value; } else { this.CharacterTypeKillCounts.Add(pair3.Key, pair3.Value); } } this.DamageDealt += another.DamageDealt; this.BossesBeat += another.BossesBeat; this.BossesBeatDuringFrenzy += another.BossesBeatDuringFrenzy; this.MinionsKilledDuringFrenzy += another.MinionsKilledDuringFrenzy; foreach (KeyValuePair <string, int> pair4 in another.SkillMinionKills) { if (this.SkillMinionKills.ContainsKey(pair4.Key)) { Dictionary <string, int> dictionary4; num4 = dictionary4[str]; (dictionary4 = this.SkillMinionKills)[str = pair4.Key] = num4 + pair4.Value; } else { this.SkillMinionKills.Add(pair4.Key, pair4.Value); } } this.EnemiesFrozen += another.EnemiesFrozen; this.EnemiesPoisoned += another.EnemiesPoisoned; this.EnemiesStunned += another.EnemiesStunned; foreach (KeyValuePair <int, int> pair5 in another.Multikills) { if (this.Multikills.ContainsKey(pair5.Key)) { Dictionary <int, int> dictionary5; num4 = dictionary5[num4]; (dictionary5 = this.Multikills)[num4 = pair5.Key] = num4 + pair5.Value; } else { this.Multikills.Add(pair5.Key, pair5.Value); } } foreach (KeyValuePair <int, int> pair6 in another.ItemsGainedByRarity) { if (this.ItemsGainedByRarity.ContainsKey(pair6.Key)) { Dictionary <int, int> dictionary6; num4 = dictionary6[num4]; (dictionary6 = this.ItemsGainedByRarity)[num4 = pair6.Key] = num4 + pair6.Value; } else { this.ItemsGainedByRarity.Add(pair6.Key, pair6.Value); } } this.UsedBossTickets += another.UsedBossTickets; this.CompletedBossTickets += another.CompletedBossTickets; this.MissionsStarted += another.MissionsStarted; this.MissionBigPrizesOpened += another.MissionBigPrizesOpened; this.EliteBossesBeat += another.EliteBossesBeat; this.FrenzyActivations += another.FrenzyActivations; this.DungeonBoostBoxesDestroyed += another.DungeonBoostBoxesDestroyed; foreach (KeyValuePair <string, double> pair7 in another.SkillDungeonBoostBoxDestructionCounts) { if (this.SkillDungeonBoostBoxDestructionCounts.ContainsKey(pair7.Key)) { Dictionary <string, double> dictionary7; num5 = dictionary7[str]; (dictionary7 = this.SkillDungeonBoostBoxDestructionCounts)[str = pair7.Key] = num5 + pair7.Value; } else { this.SkillDungeonBoostBoxDestructionCounts.Add(pair7.Key, pair7.Value); } } }
private void onCharacterKilled(CharacterInstance character, CharacterInstance killer, bool critted, SkillType fromSkill) { if ((killer != null) && killer.IsPlayerCharacter) { Room activeRoom = GameLogic.Binder.GameState.ActiveDungeon.ActiveRoom; bool flag = GameLogic.Binder.FrenzySystem.isFrenzyActive(); int num = activeRoom.numberOfBossesAlive(); for (int i = 0; i < this.m_heroStats.Count; i++) { string str3; int num3; HeroStats stats = this.m_heroStats[i]; stats.MonstersKilled++; bool flag2 = character.IsBoss && (num == 0); if (flag2) { stats.BossesBeat++; if (character.IsEliteBoss) { stats.EliteBossesBeat++; } } if (flag) { if (flag2) { stats.BossesBeatDuringFrenzy++; } else { stats.MinionsKilledDuringFrenzy++; } } if (!stats.EncounteredCharacterTypes.Contains(character.Type)) { stats.EncounteredCharacterTypes.Add(character.Type); } string key = character.Type.ToString(); if (!stats.CharacterTypeKillCounts.ContainsKey(key)) { stats.CharacterTypeKillCounts.Add(key, 1); } else { Dictionary <string, int> dictionary; num3 = dictionary[str3]; (dictionary = stats.CharacterTypeKillCounts)[str3 = key] = num3 + 1; } if (fromSkill != SkillType.NONE) { string str2 = fromSkill.ToString(); if (!stats.SkillMinionKills.ContainsKey(str2)) { stats.SkillMinionKills.Add(str2, 1); } else { Dictionary <string, int> dictionary2; num3 = dictionary2[str3]; (dictionary2 = stats.SkillMinionKills)[str3 = str2] = num3 + 1; } } } } }