private void onRewardConsumed(Player player, Reward reward) { if (reward.Pets.Count > 0) { TrackingEvent e = new TrackingEvent("petbox_opened"); if (reward.Pets.Count > 1) { e.Payload.Add("box_type", "mega_pet"); } else { e.Payload.Add("box_type", "pet"); } for (int i = 0; i < reward.Pets.Count; i++) { e.Payload.Add("reward_" + (i + 1), reward.Pets[i].PetId); e.Payload.Add("reward_" + (i + 1) + "_amount", reward.Pets[i].Amount); } for (int j = 0; j < player.Pets.Instances.Count; j++) { PetInstance instance = player.Pets.Instances[j]; e.Payload.Add("pet_" + (j + 1), instance.CharacterId); e.Payload.Add("pet_" + (j + 1) + "_state", instance.Level); } this.injectStandardPayload(player, e); Service.Binder.TrackingService.AddEvent(e); } }
public void attachSupportPerk(PerkType perkType) { PetInstance instance = base.Character.OwningPlayer.Pets.getPetInstance(base.Character.Character); if ((instance != null) && instance.Character.FixedPerks.hasUnlockedPerkOfType(instance.Level, perkType)) { PerkInstance item = new PerkInstance(); item.Type = perkType; item.Modifier = ConfigPerks.GetBestModifier(perkType); base.Character.SupportPerks.PerkInstances.Add(item); } }
private void sendPlayerProgressEvent(Player player) { TrackingEvent e = new TrackingEvent("player_progress"); e.Payload.Add("tokens_earned", player.TrackingData.TokensEarned); e.Payload.Add("diamonds_earned", player.TrackingData.DiamondsEarned); e.Payload.Add("coins_earned_active", player.TrackingData.CoinsEarnedActive); e.Payload.Add("coins_earned_passive", player.TrackingData.CoinsEarnedPassive); e.Payload.Add("items_gained", player.TrackingData.ItemsGained); e.Payload.Add("weapon_levelups", player.TrackingData.WeaponLevelups); e.Payload.Add("armor_levelups", player.TrackingData.ArmorLevelups); e.Payload.Add("cloak_levelups", player.TrackingData.CloakLevelups); e.Payload.Add("killed_by_minions", player.TrackingData.KilledByMinions); e.Payload.Add("boss_fights_lost", player.TrackingData.BossFightsLost); e.Payload.Add("active_floor_completions", player.TrackingData.ActiveFloorCompletions); e.Payload.Add("passive_floor_completions", player.TrackingData.PassiveFloorCompletions); e.Payload.Add("free_revives_used", player.TrackingData.FreeRevivesUsed); PetInstance instance = player.Pets.getSelectedPetInstance(); if (instance != null) { e.Payload.Add("active_pet", instance.CharacterId); e.Payload.Add("active_pet_level", instance.Level); } e.Payload.Add("boss_auto_summon_enabled", player.Preferences.AutoSummonBosses); e.Payload.Add("combat_stats_enabled", player.Preferences.CombatStatsEnabled); e.Payload.Add("main_menu_opens_top", player.TrackingData.NumMainMenuOpensTopButton); e.Payload.Add("main_menu_opens_arrow", player.TrackingData.NumMainMenuOpensArrowButton); e.Payload.Add("main_menu_opens_swipe", player.TrackingData.NumMainMenuOpensSwipe); for (int i = 0; i < ConfigSkills.SkillGroupCount; i++) { string str3; string key = "skill_" + (i + 1); SkillInstance instance2 = player.ActiveCharacter.getActiveSkillInstanceForGroup(i); if (instance2 == null) { goto Label_03DE; } string str2 = string.Empty; SkillType skillType = instance2.SkillType; switch (skillType) { case SkillType.Omnislash: str2 = "slash"; goto Label_036F; case SkillType.Slam: str2 = "slam"; goto Label_036F; case SkillType.Implosion: str2 = "void"; goto Label_036F; case SkillType.Clone: str2 = "clone"; goto Label_036F; default: if (skillType != SkillType.Leap) { if (skillType != SkillType.Whirlwind) { break; } str2 = "whirl"; } else { str2 = "leap"; } goto Label_036F; } str2 = "changeme"; Debug.LogError("Unsupported skill type: " + instance2.SkillType); Label_036F: str3 = player.Runestones.getSelectedRunestoneId(instance2.SkillType, RunestoneSelectionSource.Player); if (str3 != null) { int num2 = ConfigRunestones.GetRunestoneOrderNumberForSkillType(str3, instance2.SkillType) + 2; e.Payload.Add(key, str2 + "_" + num2); } else { e.Payload.Add(key, str2 + "_1"); } continue; Label_03DE: e.Payload.Add(key, string.Empty); } if ((player.TrackingData.FpsTotalFrames >= 5L) && (player.TrackingData.FpsTotalSeconds >= 5f)) { e.Payload.Add("fps", (int)(player.TrackingData.FpsTotalFrames / ((long)player.TrackingData.FpsTotalSeconds))); } else { e.Payload.Add("fps", 0); } this.injectStandardPayload(player, e); Service.Binder.TrackingService.AddEvent(e); player.TrackingData.clearPlayerProgressFields(); }