Decompiled source of P4N7H3R4 v0.1.3

plugins/Panthera/Panthera.dll

Decompiled 3 hours ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Linq;
using BepInEx;
using EntityStates;
using KinematicCharacterController;
using LeTai.Asset.TranslucentImage;
using Microsoft.CodeAnalysis;
using MonoMod.RuntimeDetour.HookGen;
using Panthera.Abilities;
using Panthera.Abilities.Actives;
using Panthera.Abilities.Passives;
using Panthera.Abilities.Primaries;
using Panthera.Base;
using Panthera.BodyComponents;
using Panthera.Combos;
using Panthera.Combos.List;
using Panthera.Components;
using Panthera.Components.Projectiles;
using Panthera.GUI;
using Panthera.GUI.Tabs;
using Panthera.GUI.Tooltips;
using Panthera.MachineScripts;
using Panthera.Machines;
using Panthera.NetworkMessages;
using Panthera.Orbs;
using Panthera.Skills;
using Panthera.Skills.Actives;
using Panthera.Skills.Passives;
using Panthera.Utils;
using R2API;
using R2API.Networking;
using R2API.Networking.Interfaces;
using R2API.Utils;
using Rewired;
using Rewired.Data;
using RoR2;
using RoR2.Audio;
using RoR2.ContentManagement;
using RoR2.Navigation;
using RoR2.Networking;
using RoR2.Orbs;
using RoR2.PostProcess;
using RoR2.PostProcessing;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using TMPro;
using ThreeEyedGames;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.Rendering.PostProcessing;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("Panthera")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+8d42cafa92461672783da5d5406a31b08bda9a4c")]
[assembly: AssemblyProduct("Panthera")]
[assembly: AssemblyTitle("Panthera")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace Panthera
{
	[BepInPlugin("com.Dexy.Panthera", "P4N7H3R4", "0.0.1")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	public class Panthera : BaseUnityPlugin
	{
		public static BaseUnityPlugin Instance;

		public static PluginInfo PInfo;

		public static ProfileComponent ProfileComponent;

		public static PantheraPanel PantheraPanelController;

		public static PantheraHUD PantheraHUD;

		public static Character PantheraCharacter;

		public static LocalUser FirstLocalUser;

		public static Player InputPlayer;

		public static UserProfile LoadedUserProfile;

		public static SurgeComponent surgeComponent;

		public static Xoroshiro128Plus ptraRNG = new Xoroshiro128Plus((ulong)Time.time);

		public static Camera UICamera
		{
			get
			{
				List<Camera> list = Camera.allCameras.ToList();
				foreach (Camera item in list)
				{
					if (((Object)item).name == "UI Camera")
					{
						return item;
					}
				}
				return null;
			}
		}

		public void Awake()
		{
			Instance = (BaseUnityPlugin)(object)this;
			PInfo = ((BaseUnityPlugin)this).Info;
			PantheraSaveSystem.Init();
			Hooks.RegisterHooks();
			Tokens.RegisterTokens();
			PantheraAssets.PopulateAssets();
			Prefab.RegisterCharacter();
			Skin.RegisterSkins();
			Buff.RegisterBuffs();
			MessagesRegister.Register();
			Prefab.CreateDoppelganger();
			new ContentPacks().Initialize();
		}

		public static void ProfileLoaded(Action<UserProfile> orig, UserProfile self)
		{
			orig(self);
			Sound.PopulateSounds();
			ProfileComponent = ((Component)Instance).gameObject.GetComponent<ProfileComponent>();
			if ((Object)(object)ProfileComponent != (Object)null)
			{
				Object.DestroyImmediate((Object)(object)ProfileComponent);
			}
			ProfileComponent = ((Component)Instance).gameObject.AddComponent<ProfileComponent>();
			PantheraCharacter = new Character();
			PantheraCharacter.init();
			PantheraCharacter.CreateMasteryBossList();
			PantheraSaveSystem.saveFileName = self.fileName;
			PantheraSaveSystem.Load();
			FirstLocalUser = LocalUserManager.GetFirstLocalUser();
			InputPlayer = LocalUserManager.GetRewiredMainPlayer();
			LoadedUserProfile = self;
			PantheraPanelController = ((Component)Instance).gameObject.GetComponent<PantheraPanel>();
			if ((Object)(object)PantheraPanelController != (Object)null)
			{
				Object.DestroyImmediate((Object)(object)PantheraPanelController);
			}
			PantheraPanelController = ((Component)Instance).gameObject.AddComponent<PantheraPanel>();
			KeysBinder.InitPlayer();
			KeysBinder.SetAllDefaultKeyBinds();
		}

		public void Update()
		{
			if (InputPlayer != null && InputPlayer.GetButtonDown(PantheraConfig.Keys_OpenPantheraPanelActionCode))
			{
				if (!PantheraPanelController.pantheraPanelGUI.active)
				{
					PantheraPanelController.open();
				}
				else
				{
					PantheraPanelController.close();
				}
			}
		}
	}
	internal class PantheraConfig
	{
		public static readonly string SP_CharacterXP = "CharacterXP";

		public static readonly string SP_CharacterMastery = "CharacterMastery";

		public static readonly string SP_Endurance = "CharacterEndurance";

		public static readonly string SP_Force = "CharacterForce";

		public static readonly string SP_Agility = "CharacterAgility";

		public static readonly string SP_Swiftness = "CharacterSwiftness";

		public static readonly string SP_Dexterity = "CharacterDexterity";

		public static readonly string SP_Spirit = "CharacterSpirit";

		public static readonly string InteractKeyName = "Interact";

		public static readonly string EquipmentKeyName = "Activate Equipment";

		public static readonly string SprintKeyName = "Sprint";

		public static readonly string InfoKeyName = "Info";

		public static readonly string PingKeyName = "Ping";

		public static readonly string ForwardKeyName = "Move Forward";

		public static readonly string BackwardKeyName = "Move Backward";

		public static readonly string LeftKeyName = "Move Left";

		public static readonly string RightKeyName = "Move Right";

		public static readonly string JumpKeyName = "Jump";

		public static readonly string Skill1KeyName = "Primary Skill";

		public static readonly string Skill2KeyName = "Secondary Skill";

		public static readonly string Skill3KeyName = "Utility Skill";

		public static readonly string Skill4KeyName = "Special Skill";

		public static readonly int LeftRightKey = 0;

		public static readonly int ForwardBackwardKey = 1;

		public static readonly int JumpKey = 4;

		public static readonly int InteractKey = 5;

		public static readonly int EquipmentKey = 6;

		public static readonly int SprintKey = 18;

		public static readonly int InfoKey = 19;

		public static readonly int PingKey = 28;

		public static readonly int Skill1Key = 7;

		public static readonly int Skill2Key = 8;

		public static readonly int Skill3Key = 9;

		public static readonly int Skill4Key = 10;

		public static readonly int Keys_OpenPantheraPanelActionCode = 1300;

		public static readonly int Keys_Ability1ActionCode = 1301;

		public static readonly int Keys_Ability2ActionCode = 1302;

		public static readonly int Keys_Ability3ActionCode = 1303;

		public static readonly int Keys_Ability4ActionCode = 1304;

		public static readonly int Keys_SpellsModeActionCode = 1310;

		public static readonly string Keys_OpenPantheraPanelActionName = "OpenPantheraPanel";

		public static readonly string Keys_OpenPantheraPanelActionDesc = "Open Panthera Panel";

		public static readonly KeyCode Keys_OpenPantheraPanelDefaultKey = (KeyCode)112;

		public static readonly string Keys_Ability1ActionName = "Ability1";

		public static readonly string Keys_Ability1ActionDesc = "Ability 1";

		public static readonly KeyCode Keys_Ability1DefaultKey = (KeyCode)49;

		public static readonly int Keys_Ability1DefaultJoystickIdentifierID = 16;

		public static readonly string Keys_Ability2ActionName = "Ability2";

		public static readonly string Keys_Ability2ActionDesc = "Ability 2";

		public static readonly KeyCode Keys_Ability2DefaultKey = (KeyCode)50;

		public static readonly int Keys_Ability2DefaultJoystickIdentifierID = 17;

		public static readonly string Keys_Ability3ActionName = "Ability3";

		public static readonly string Keys_Ability3ActionDesc = "Ability 3";

		public static readonly KeyCode Keys_Ability3DefaultKey = (KeyCode)51;

		public static readonly int Keys_Ability3DefaultJoystickIdentifierID = 18;

		public static readonly string Keys_Ability4ActionName = "Ability4";

		public static readonly string Keys_Ability4ActionDesc = "Ability 4";

		public static readonly KeyCode Keys_Ability4DefaultKey = (KeyCode)52;

		public static readonly int Keys_Ability4DefaultJoystickIdentifierID = 19;

		public static readonly string Keys_SpellsModeActionName = "Spells";

		public static readonly string Keys_SpellsModeActionDesc = "Spell Mode";

		public static readonly KeyCode Keys_SpellsModeDefaultKey = (KeyCode)116;

		public static readonly int Keys_SpellModeDefaultJoystickIdentifierID = 7;

		public static readonly ScriptPriority Rip_priority = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority Rip_interruptPower = ScriptPriority.MinimumPriority;

		public static readonly ScriptPriority AirCleave_priority = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority AirCleave_interruptPower = ScriptPriority.MinimumPriority;

		public static readonly ScriptPriority Leap_priority = ScriptPriority.SmallPriority;

		public static readonly ScriptPriority Leap_interruptPower = ScriptPriority.VerySmallPriority;

		public static readonly ScriptPriority MightyRoar_priority = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority MightyRoar_interruptPower = ScriptPriority.HightPriority;

		public static readonly ScriptPriority Fury_priority = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority Fury_interruptPower = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority Guardian_priority = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority Guardian_interruptPower = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority Slash_priority = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority Slash_interruptPower = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority Detection_priority = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority Detection_interruptPower = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority Prowl_priority = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority Prowl_interruptPower = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority Ambition_priority = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority Ambition_interruptPower = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority AirSlash_priority = ScriptPriority.ExtraPriority;

		public static readonly ScriptPriority AirSlash_interruptPower = ScriptPriority.HightPriority;

		public static readonly ScriptPriority FrontShield_priority = ScriptPriority.MinimumPriority;

		public static readonly ScriptPriority FrontShield_interruptPower = ScriptPriority.ExtraPriority;

		public static readonly ScriptPriority ClawsStorm_priority = ScriptPriority.SmallPriority;

		public static readonly ScriptPriority ClawsStorm_interruptPower = ScriptPriority.SmallPriority;

		public static readonly ScriptPriority ShieldBash_priority = ScriptPriority.VeryHightPriority;

		public static readonly ScriptPriority ShieldBash_interruptPower = ScriptPriority.ExtraPriority;

		public static readonly ScriptPriority ArcaneAnchor_priority = ScriptPriority.ExtraHightPriority;

		public static readonly ScriptPriority ArcaneAnchor_interruptPower = ScriptPriority.VerySmallPriority;

		public static readonly ScriptPriority ConvergenceHook_priority = ScriptPriority.ExtraPriority;

		public static readonly ScriptPriority ConvergenceHook_interruptPower = ScriptPriority.MinimumPriority;

		public static readonly ScriptPriority PortalSurge_priority = ScriptPriority.MinimumPriority;

		public static readonly ScriptPriority PortalSurge_interruptPower = ScriptPriority.MinimumPriority;

		public static readonly ScriptPriority FeralBite_priority = ScriptPriority.SmallPriority;

		public static readonly ScriptPriority FeralBite_interruptPower = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority Dash_priority = ScriptPriority.MinimumPriority;

		public static readonly ScriptPriority Dash_interruptPower = ScriptPriority.MinimumPriority;

		public static readonly ScriptPriority ZoneHeal_priority = ScriptPriority.MinimumPriority;

		public static readonly ScriptPriority ZoneHeal_interruptPower = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority SaveMyFriend_priority = ScriptPriority.ExtraPriority;

		public static readonly ScriptPriority SaveMyFriend_interruptPower = ScriptPriority.ExtraPriority;

		public static readonly ScriptPriority FireBird_priority = ScriptPriority.ExtraPriority;

		public static readonly ScriptPriority FireBird_interruptPower = ScriptPriority.AveragePriority;

		public static readonly ScriptPriority Revive_priority = ScriptPriority.NoPriority;

		public static readonly ScriptPriority Revive_interruptPower = ScriptPriority.NoPriority;

		public static readonly int ResetAttributesCost = 2;

		public static readonly int ResetSkillsTreeCost = 3;

		public static readonly int MaxPantheraLevel = 1000;

		public static readonly float Default_MaxHealth = 200f;

		public static readonly float Default_MaxHealthLevel = 40f;

		public static readonly float Default_HealthRegen = 2.5f;

		public static readonly float Default_HealthRegenLevel = 0.4f;

		public static readonly float Default_MaxFury = 100f;

		public static readonly float Default_MaxFuryLevel = 15f;

		public static readonly float Default_MaxFrontShield = 100f;

		public static readonly float Default_MoveSpeed = 9f;

		public static readonly float Default_MoveSpeedLevel = 0.025f;

		public static readonly float Default_Damage = 25f;

		public static readonly float Default_DamageLevel = 2.5f;

		public static readonly float Default_AttackSpeed = 1f;

		public static readonly float Default_AttackSpeedLevel = 0.001f;

		public static readonly float Default_Critic = 8f;

		public static readonly float Default_CriticLevel = 0.075f;

		public static readonly float Default_Dodge = 5f;

		public static readonly float Default_DodgeLevel = 0.025f;

		public static readonly float Default_Defense = 15f;

		public static readonly float Default_DefenseLevel = 0.075f;

		public static readonly float Default_Mastery = 3f;

		public static readonly float Default_MasteryLevel = 0.01f;

		public static readonly float Default_jumpCount = 1f;

		public static readonly float Default_maxBlock = 10f;

		public static readonly float Default_blockImmunDuration = 0.3f;

		public static readonly Color32 ConfigButtonColor = new Color32(byte.MaxValue, byte.MaxValue, (byte)225, byte.MaxValue);

		public static readonly Color32 ConfigButtonHoveredColor = new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue);

		public static readonly Color32 ScaleWindowButtonHoveredColor = new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue);

		public static readonly Color32 ExitButtonHoveredColor = new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue);

		public static readonly Color32 TabButtonHoveredColor = new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue);

		public static readonly Color32 SkillTreeTabButtonHoveredColor = new Color32((byte)150, (byte)0, (byte)0, byte.MaxValue);

		public static readonly Color32 AbilityButtonHoveredColor = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);

		public static readonly Color32 SkillButtonHoveredColor = new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue);

		public static readonly Color32 KeysBindButtonDefaultColor = new Color32((byte)247, byte.MaxValue, (byte)135, byte.MaxValue);

		public static readonly Color32 KeysBindButtonConflictColor = new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue);

		public static readonly Color32 KeysBindButtonHoveredColor = new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue);

		public static readonly Color32 KeysBindWindowButtonHoveredColor = new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue);

		public static readonly Color32 PresetFrameNormalColor = new Color32((byte)197, (byte)104, (byte)42, byte.MaxValue);

		public static readonly Color32 PresetImageNormalColor = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);

		public static readonly Color32 PresetButtonHoveredColor = new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue);

		public static readonly Color32 PresetButtonSelectedColor = new Color32((byte)0, byte.MaxValue, (byte)91, byte.MaxValue);

		public static readonly Color32 OverviewButtonsHoveredColor = new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue);

		public static readonly Color32 OverviewAttributeButtonsEnabledColor = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);

		public static readonly Color32 OverviewAttributeButtonsDisabledColor = new Color32((byte)85, (byte)85, (byte)85, byte.MaxValue);

		public static readonly Color32 PresetActivateButtonNormalColor = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);

		public static readonly Color32 PresetActivateButtonDisabledColor = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, (byte)75);

		public static readonly Color32 PresetResetButtonNormalColor = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);

		public static readonly Color32 PresetResetButtonDisabledColor = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, (byte)75);

		public static readonly Color32 DetectionDefaultColor = new Color32((byte)0, (byte)0, byte.MaxValue, byte.MaxValue);

		public static readonly Color32 DetectionCharacterDefaultColor = new Color32((byte)0, byte.MaxValue, (byte)0, byte.MaxValue);

		public static readonly Color32 DetectionCanAffortChestColor = new Color32(byte.MaxValue, (byte)224, (byte)116, byte.MaxValue);

		public static readonly Color32 PantheraHUDLevelBarColor = new Color32(byte.MaxValue, (byte)125, (byte)0, byte.MaxValue);

		public static readonly Color32 SkillsNormalSkillColor = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);

		public static readonly Color32 SkillsLockedSkillColor = new Color32((byte)120, (byte)50, (byte)50, (byte)150);

		public static readonly Color32 SkillsNormalFrameColor = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);

		public static readonly Color32 SkillsMasteryFrameColor = new Color32((byte)159, (byte)0, (byte)219, byte.MaxValue);

		public static readonly Color32 SkillsTreeUnlockedAbilityColor = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);

		public static readonly Color32 SkillsTreeLockedAbilityColor = new Color32((byte)100, (byte)100, (byte)100, (byte)150);

		public static readonly Color32 SkillsTreeAbilityHoveredColor = new Color32((byte)0, byte.MaxValue, (byte)0, byte.MaxValue);

		public static readonly Color32 SkillsTreeLineUnlockedColor = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);

		public static readonly Color32 SkillsTreeLinelockedColor = new Color32((byte)68, (byte)68, (byte)68, byte.MaxValue);

		public static readonly Color32 ComboNormalColor = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);

		public static readonly Color32 ComboLockedColor = new Color32((byte)97, (byte)0, (byte)0, byte.MaxValue);

		public static readonly Color32 ComboCooldownNormalIconColor = new Color32((byte)0, (byte)170, (byte)0, byte.MaxValue);

		public static readonly Color32 ComboCooldownLoadingIconColor = new Color32((byte)200, (byte)0, (byte)0, byte.MaxValue);

		public static readonly Color32 DetectionCDFillNormalColor = new Color32((byte)0, (byte)224, (byte)218, (byte)200);

		public static readonly Color32 DetectionCDFillRechargeColor = new Color32(byte.MaxValue, (byte)27, (byte)0, (byte)200);

		public static readonly Color32 FrontShieldNormalColor = new Color32((byte)0, (byte)93, (byte)248, (byte)200);

		public static readonly Color32 FrontShieldCriticColor = new Color32((byte)237, (byte)0, (byte)0, (byte)200);

		public static readonly Color32 BlockBarColor = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, (byte)230);

		public static readonly float Model_defaultModelScale = 1.3f;

		public static readonly string Model_PrefabName = "Panthera";

		public static readonly float Model_fadeStartDistance = 5f;

		public static readonly float Model_fadeEndDistance = 10f;

		public static readonly float Model_defaultCapsuleRadius = 0.5f;

		public static readonly float Model_defaultCapsuleHeight = 1.75f;

		public static readonly float defaultFOV = 60f;

		public static readonly Vector3 defaultCamPosition = new Vector3(0f, 1f, -13f);

		public static readonly Vector3 Death_cameraPos = new Vector3(0f, 5f, -50f);

		public static readonly Vector3 ClawsStorm_cameraPos = new Vector3(0f, 3f, -40f);

		public static BuffDef CloakBuffDef;

		public static BuffDef WeakDebuffDef;

		public static BuffDef RegenBuffDef;

		public static BuffDef InvincibilityBuffDef;

		public static BuffDef HiddenInvincibilityBuffDef;

		public static DotIndex BleedDotIndex;

		public static DotIndex SuperBleedDotIndex;

		public static DotIndex BurnDotIndex;

		public static DotIndex SuperBurnDotIndex;

		public static readonly float Tracker_maxDistance = 100f;

		public static readonly float Tracker_maxAngle = 20f;

		public static readonly float normalMaxAngle = 65f;

		public static readonly float unsleepDuration = 2.2f;

		public static ItemDef ItemChange_steak;

		public static ItemDef ItemChange_magazineIndex;

		public static ItemDef ItemChange_alienHeadIndex;

		public static ItemDef ItemChange_bandolierIndex;

		public static ItemDef ItemChange_shurikenIndex;

		public static ItemDef ItemChange_squidIndex;

		public static ItemDef ItemChange_brainstalksIndex;

		public static ItemDef ItemChange_hardlightAfterburnerIndex;

		public static ItemDef ItemChange_heresyEssenceIndex;

		public static ItemDef ItemChange_heresyHooksIndex;

		public static ItemDef ItemChange_heresyStridesIndex;

		public static ItemDef ItemChange_heresyVisionsIndex;

		public static ItemDef ItemChange_brittleCrownIndex;

		public static ItemDef ItemChange_lightFluxPauldronIndex;

		public static ItemDef ItemChange_purityIndex;

		public static ItemDef ItemChange_lysateCellIndex;

		public static ItemDef ItemChange_transcendanceIndex;

		public static readonly float ItemChange_magazinePercentCooldownReduction = 0.95f;

		public static readonly float ItemChange_alienHeadPercentCooldownReduction = 0.85f;

		public static readonly float ItemChange_hardlightAfterburnerPercentCooldownReduction = 0.66f;

		public static readonly float ItemChange_lightFluxPauldronPercentCooldownReduction = 0.75f;

		public static readonly float ItemChange_purityPercentCooldownReduction = 0.8f;

		public static readonly float ItemChange_lysateCellCooldownReduction = 0.66f;

		public static readonly float ItemChange_noCooldownTimeRemoved = 0.02f;

		public static readonly float Death_effectStartTime = 3f;

		public static readonly float Death_minimumTimeBeforeDestroying = 6f;

		public static readonly string ShieldOrb_Name = "ShieldOrb";

		public static readonly float ShieldOrb_Duration = 1.5f;

		public static readonly int Rip_SkillID = 1;

		public static readonly int AirCleave_SkillID = 2;

		public static readonly int Leap_SkillID = 3;

		public static readonly int MightyRoar_SkillID = 4;

		public static readonly int Fury_SkillID = 5;

		public static readonly int Guardian_SkillID = 6;

		public static readonly int Slash_SkillID = 7;

		public static readonly int Prowl_SkillID = 8;

		public static readonly int Detection_SkillID = 9;

		public static readonly int Ambition_SkillID = 10;

		public static readonly int AirSlash_SkillID = 11;

		public static readonly int FrontShield_SkillID = 12;

		public static readonly int ClawsStorm_SkillID = 13;

		public static readonly int ShieldBash_SkillID = 14;

		public static readonly int ArcaneAnchor_SkillID = 15;

		public static readonly int ConvergenceHook_SkillID = 16;

		public static readonly int PortalSurge_SkillID = 17;

		public static readonly int FeralBite_SkillID = 18;

		public static readonly int PortalSurge_lunarCost = 15;

		public static readonly int PortalSurge_requiredIngameLevel = 30;

		public static readonly float PortalSurge_cooldown = 900f;

		public static readonly float PortalSurge_failCoolDown = 5f;

		public static readonly float PortalSurge_duration = 9.6f;

		public static readonly float PortalSurge_endEffectTime = 7.9f;

		public static readonly float PortalSurge_FailTime = 1.5f;

		public static readonly float PortalSurge_detectionRadius = 1f;

		public static readonly float PortalSurge_damage = 1000f;

		public static readonly float PortalSurge_teleporterChargeTime = 600f;

		public static readonly float PortalSurge_teleporterRadius = 500f;

		public static readonly float PortalSurge_addCreditsTime = 0.3f;

		public static readonly float PortalSurge_initialCredit = 800f;

		public static readonly string PortalSurge_megaBossAddedName = " PtraMegaBoss";

		public static readonly float PortalSurge_bossSizeMultiplier = 2f;

		public static readonly float PortalSurge_bossStatsMultiplier = 3f;

		public static readonly string Rip_hitboxName = "Rip";

		public static readonly float Rip_cooldown = 0.3f;

		public static readonly DamageType Rip_damageType = (DamageType)0;

		public static readonly float Rip_minimumAimTime = 1.5f;

		public static readonly float Rip_procCoefficient = 1f;

		public static readonly float Rip_dashForce = 10f;

		public static readonly float Rip_pushForce = 5f;

		public static readonly Vector3 Rip_bonusForce = Vector3.zero;

		public static readonly float Rip_atkDamageMultiplier = 1.5f;

		public static readonly float Rip_atkDuration = 0.6f;

		public static readonly float Rip_attackTime = 0.2f;

		public static readonly int Rip_furyAdded = 3;

		public static readonly float Rip_enemiesForwardScanDistance = 1.7f;

		public static readonly float Rip_enemiesScanRadius = 6f;

		public static readonly float Rip_hideCrosshairTime = 3f;

		public static readonly string AirCleave_leftProjectileName = "AirCleaveLeftProjectile";

		public static readonly string AirCleave_rightProjectileName = "AirCleaveRightProjectile";

		public static readonly string AirCleave_leftFireProjectileName = "FireAirCleaveLeftProjectile";

		public static readonly string AirCleave_rightFireProjectileName = "FireAirCleaveRightProjectile";

		public static readonly float AirCleave_cooldown = 0.3f;

		public static readonly float AirCleave_attackDuration = 0.8f;

		public static readonly float AirCleave_attackTime = 0.25f;

		public static readonly float AirCleave_attackDamageMultiplier = 1f;

		public static readonly float AirCleave_procCoefficient = 0.8f;

		public static readonly float AirCleave_projectileSpeed = 130f;

		public static readonly float AirCleave_projectileForce = 15f;

		public static readonly float AirCleave_pushForce = 10f;

		public static readonly float AirCleave_minimumAimTime = 1f;

		public static readonly float AirCleave_furyAdded = 4f;

		public static readonly float AirCleave_projScale = 0.5f;

		public static readonly float Leap_cooldown = 8f;

		public static readonly float Leap_airControl = 0.1f;

		public static readonly float Leap_maxMoveSpeed = 100f;

		public static readonly float Leap_speedMultiplier = 3.5f;

		public static readonly float Leap_minimumY = 5f;

		public static readonly float Leap_minimumYTarget = 10f;

		public static readonly float Leap_aimRayYMultiplier = 15f;

		public static readonly float Leap_upwardVelocity = 2.7f;

		public static readonly float Leap_targetSpeedMultiplier = 4f;

		public static readonly float Leap_naturalDown = 0.5f;

		public static readonly float Leap_minimumDuration = 0.7f;

		public static readonly float Leap_duration = 3f;

		public static readonly float Leap_leapStopDistance = 3f;

		public static readonly float Leap_leapScanRadius = 5f;

		public static readonly float Leap_Fov = 100f;

		public static readonly float MightyRoar_cooldown = 20f;

		public static readonly float MightyRoar_radius = 15f;

		public static readonly float MightyRoar_damage = 0.8f;

		public static readonly int MightyRoar_damageCount = 3;

		public static readonly float MightyRoar_damageTime = 0.2f;

		public static readonly float MightyRoar_stunDuration = 3f;

		public static readonly float MightyRoar_duration = 0.7f;

		public static readonly float MightyRoar_knockbackPowerMin = 2f;

		public static readonly float MightyRoar_knockbackPowerMax = 7f;

		public static readonly int MightyRoar_furyPointAdded = 1;

		public static readonly float Fury_cooldown = 30f;

		public static readonly float Fury_duration = 0.25f;

		public static readonly float Fury_furyPointsDecreaseTime = 0.05f;

		public static readonly float Fury_increasedAttackSpeed = 0.5f;

		public static readonly float Fury_increasedMoveSpeed = 0.5f;

		public static readonly float Guardian_cooldown = 8f;

		public static readonly float Guardian_duration = 0.25f;

		public static readonly float Guardian_increasedArmor = 0.75f;

		public static readonly float Guardian_increasedHealthRegen = 1f;

		public static readonly float Guardian_increasedMoveSpeedCoef = 1.15f;

		public static readonly float Guardian_barrierDecayRatePercent = 0.25f;

		public static readonly float Guardian_increasedSize = 1.5f;

		public static readonly float Guardian_masteryHealPercent = 0.15f;

		public static readonly int Slash_cooldown = 5;

		public static readonly float Slash_duration = 0.8f;

		public static readonly float Slash_radius = 8f;

		public static readonly float Slash_damageMultiplier = 2f;

		public static readonly float Slash_knockbackPowerMin = 5f;

		public static readonly float Slash_knockbackPowerMax = 15f;

		public static readonly float Slash_procCoefficient = 0.7f;

		public static readonly float Slash_BleedDuration = 7f;

		public static readonly int Slash_furyAdded = 2;

		public static readonly float Prowl_coolDown = 8f;

		public static readonly float Prowl_unStealDelay = 0.1f;

		public static readonly float Prowl_moveSpeedMultiplier = 0.6f;

		public static readonly float Prowl_skillDuration = 0.3f;

		public static readonly float Detection_cooldown = 2f;

		public static readonly float Detection_maxTime = 8f;

		public static readonly float Detection_scanRate = 0.5f;

		public static readonly float Detection_skillMinDuration = 0.3f;

		public static readonly float Detection_skillMaxDuration = 2.5f;

		public static readonly int Detection_maxScanPerFrame = 100;

		public static readonly int Detection_layerIndex = 31;

		public static readonly float Ambition_buffDuration = 30f;

		public static readonly float Ambition_cooldown = 300f;

		public static readonly float Ambition_duration = 0.5f;

		public static readonly string AirSlash_projectileName = "AirSlashProjectile";

		public static readonly float AirSlash_cooldown = 7f;

		public static readonly float AirSlash_comboMaxTime = 5f;

		public static readonly float AirSlash_atkDamageMultiplier = 2f;

		public static readonly float AirSlash_procCoefficient = 1.5f;

		public static readonly float AirSlash_furyAdded = 2f;

		public static readonly float AirSlash_attackDuration = 0.5f;

		public static readonly float AirSlash_attackTime = 0.25f;

		public static readonly float AirSlash_projScale = 0.5f;

		public static readonly float AirSlash_projectileSpeed = 50f;

		public static readonly float AirSlash_projectileForce = 15f;

		public static readonly float AirSlash_minimumAimTime = 0.8f;

		public static readonly float AirSlash_hideCrosshairTime = 1.5f;

		public static readonly string FrontShield_worldHitboxName = "FrontShieldWorldHitBox";

		public static readonly float FrontShield_cooldown = 0.1f;

		public static readonly float FrontShield_skillDuration = 0.5f;

		public static readonly float FrontShield_defaultScale = 0.7f;

		public static readonly float FrontShield_maxShieldHealthPercent = 0.33f;

		public static readonly float FrontShield_rechargeDelayAfterDamage = 3f;

		public static readonly float FrontShield_rechargeDelayAfterDestroyed = 5f;

		public static readonly float FrontShield_rechargeRatePercent = 0.1f;

		public static readonly float FrontShield_rechargeRatetime = 0.1f;

		public static readonly float FrontShield_moveSpeedMultiplier = 0.5f;

		public static readonly float FrontShield_addedforwardMultiplier = 1.1f;

		public static readonly float FrontShield_addedUpPosition = 0.5f;

		public static readonly float FrontShield_criticColorPercent = 0.3f;

		public static readonly string ClawsStorm_hitboxName = "ClawStorm";

		public static readonly float ClawsStorm_cooldown = 1f;

		public static readonly int ClawsStorm_requiredFury = 3;

		public static readonly int ClawsStorm_continuousConsumedFury = 1;

		public static readonly float ClawsStorm_continuousConsumeTime = 1f;

		public static readonly float ClawsStorm_destroyFXDelay = 0.5f;

		public static readonly DamageType ClawsStorm_damageType = (DamageType)0;

		public static readonly float ClawsStorm_procCoefficient = 0.2f;

		public static readonly float ClawsStorm_pushForce = 1f;

		public static readonly Vector3 ClawsStorm_bonusForce = Vector3.zero;

		public static readonly float ClawsStorm_damageMultiplier = 0.5f;

		public static readonly float ClawsStorm_baseDuration = 0.5f;

		public static readonly float ClawsStorm_dashSpeedMultiplicator = 18f;

		public static readonly float ClawsStorm_maxMoveSpeed = 38f;

		public static readonly float ClawsStorm_minMoveSpeed = 17f;

		public static readonly float clawsStorm_damageMultiplier = 0.3f;

		public static readonly float ClawsStorm_firedDelay = 0.14f;

		public static readonly float ShieldBash_grabScanRadius = 8f;

		public static readonly float ShieldBash_grabDistanceMultiplier = 2.5f;

		public static readonly float ShieldBash_moveSpeedMultiplier = 70f;

		public static readonly float ShieldBash_cooldown = 4f;

		public static readonly float ShieldBash_skillDuration = 0.5f;

		public static readonly float ShieldBash_effectDuration = 0.33f;

		public static readonly float ShieldBash_pushMinMultiplier = 1f;

		public static readonly float ShieldBash_pushMaxMultiplier = 10f;

		public static readonly float ShieldBash_upMinMultiplier = 1f;

		public static readonly float ShieldBash_upMaxMultiplier = 5f;

		public static readonly float ShieldBash_damageMultiplier = 3.5f;

		public static readonly float ShieldBash_procCoefficient = 1.5f;

		public static readonly float ShieldBash_stunDuration = 2f;

		public static readonly float ShieldBash_magnetudeDecreasePercent = 0.9f;

		public static readonly float ArcaneAnchor_cooldown = 3f;

		public static readonly float ArcaneAnchor_frontShieldCooldown = 2f;

		public static readonly float ArcaneAnchor_deployedScale = 4f;

		public static readonly float ArcaneAnchor_deployedScaleSpeed = 0.05f;

		public static readonly float ArcaneAnchor_skillDuration = 0.3f;

		public static readonly float ArcaneAnchor_MaxDistance = 75f;

		public static readonly float ConvergenceHook_cooldown = 5f;

		public static readonly float ConvergenceHook_skillDuration = 0.5f;

		public static readonly float ConvergenceHook_stunDuration = 2f;

		public static readonly float ConvergenceHook_compDuration = 5f;

		public static readonly float ConvergenceHook_hookSpeed = 2.5f;

		public static readonly float ConvergenceHook_StopDistance = 1f;

		public static readonly float FeralBite_cooldown = 1f;

		public static readonly float FeralBite_skillDuration = 0.75f;

		public static readonly float FeralBite_damagesMultiplier = 2.5f;

		public static readonly float FeralBite_healMultiplier = 0.3f;

		public static readonly int FeralBite_furyAdded = 4;

		public static readonly float FeralBite_procCoefficient = 1.5f;

		public static readonly int UntamedSpirit_AbilityID = -1;

		public static readonly int GodPower_AbilityID = -2;

		public static readonly int PortalSurge_AbilityID = -3;

		public static readonly int FelineSkills_AbilityID = 1;

		public static readonly int SharpenedFangs_AbilityID = 2;

		public static readonly int Fury_AbilityID = 3;

		public static readonly int EnchantedFur_AbilityID = 4;

		public static readonly int Guardian_AbilityID = 5;

		public static readonly int WindWalker_AbilityID = 6;

		public static readonly int Predator_AbilityID = 7;

		public static readonly int Prowl_AbilityID = 8;

		public static readonly int Detection_AbilityID = 9;

		public static readonly int Ambition_AbilityID = 10;

		public static readonly int AirSlash_AbilityID = 11;

		public static readonly int FrontShield_AbilityID = 12;

		public static readonly int ClawsStorm_AbilityID = 13;

		public static readonly int SwiftMoves_AbilityID = 14;

		public static readonly int GhostRip_AbilityID = 15;

		public static readonly int ImprovedShield_AbilityID = 16;

		public static readonly int ShieldBash_AbilityID = 17;

		public static readonly int GoldenRip_AbilityID = 18;

		public static readonly int Tornado_AbilityID = 19;

		public static readonly int ArcaneAnchor_AbilityID = 20;

		public static readonly int ConvergenceHook_AbilityID = 21;

		public static readonly int MassiveHook_AbilityID = 22;

		public static readonly int SixthSense_AbilityID = 23;

		public static readonly int RelentlessStalker_AbilityID = 24;

		public static readonly int RoarOfResilience_AbilityID = 25;

		public static readonly int ClawsSharpening_AbilityID = 26;

		public static readonly int GoldenStart_AbilityID = 27;

		public static readonly int StealthStrike_AbilityID = 28;

		public static readonly int CryoLeap_AbilityID = 29;

		public static readonly int ShadowStalker_AbilityID = 30;

		public static readonly int WardensVitality_AbilityID = 31;

		public static readonly int SavageRevitalization_AbilityID = 32;

		public static readonly int InnateProtection_AbilityID = 33;

		public static readonly int Furrify_AbilityID = 34;

		public static readonly int Concentration_AbilityID = 35;

		public static readonly int SuperiorFlair_AbilityID = 36;

		public static readonly int EternalFury_AbilityID = 37;

		public static readonly int InnerRage_AbilityID = 38;

		public static readonly int InfernalSwipe_AbilityID = 39;

		public static readonly int HeatWave_AbilityID = 40;

		public static readonly int KineticResorption_AbilityID = 41;

		public static readonly int ExtendedProtection_AbilityID = 42;

		public static readonly int UntamedSpitit_unlockLevel = 1;

		public static readonly int GodPower_unlockLevel = 15;

		public static readonly int PortalSurge_unlockLevel = 30;

		public static readonly int SharpenedFangs_maxLevel = 3;

		public static readonly float SharpenedFangs_damagePercent1 = 0.2f;

		public static readonly float SharpenedFangs_damagePercent2 = 0.4f;

		public static readonly float SharpenedFangs_damagePercent3 = 0.6f;

		public static readonly int Fury_maxLevel = 1;

		public static readonly int EnchantedFur_maxLevel = 3;

		public static readonly float EnchantedFur_percent1 = 0.05f;

		public static readonly float EnchantedFur_percent2 = 0.1f;

		public static readonly float EnchantedFur_percent3 = 0.15f;

		public static readonly int Guardian_maxLevel = 1;

		public static readonly int WindWalker_maxLevel = 1;

		public static readonly int Predator_maxLevel = 1;

		public static readonly float Predator_steakHealthAdded = 25f;

		public static readonly float Prowl_outOfCombatTime = 5f;

		public static readonly int Prowl_maxLevel = 1;

		public static readonly int Detection_maxLevel = 1;

		public static readonly int Ambition_maxLevel = 1;

		public static readonly int AirSlash_maxLevel = 1;

		public static readonly int FrontShield_maxLevel = 1;

		public static readonly int ClawsStorm_maxLevel = 1;

		public static readonly int SwiftMoves_maxLevel = 3;

		public static readonly float SwiftMoves_percent1 = 0.25f;

		public static readonly float SwiftMoves_percent2 = 0.5f;

		public static readonly float SwiftMoves_percent3 = 0.75f;

		public static readonly int GhostRip_maxLevel = 1;

		public static readonly float GhostRip_cooldown = 0.3f;

		public static readonly float GhostRip_damageMultiplier = 1.5f;

		public static readonly float GhostRip_critMultiplier = 2f;

		public static readonly float GhostRip_stunDuration = 3.5f;

		public static readonly int GhostRip_furyAdded = 4;

		public static readonly int ImprovedShield_maxLevel = 3;

		public static readonly float ImprovedShield_addedPercent1 = 0.01f;

		public static readonly float ImprovedShield_addedPercent2 = 0.02f;

		public static readonly float ImprovedShield_addedPercent3 = 0.03f;

		public static readonly float ImprovedShield_RemovedRechargeDelay1 = 0.5f;

		public static readonly float ImprovedShield_RemovedRechargeDelay2 = 1f;

		public static readonly float ImprovedShield_RemovedRechargeDelay3 = 1.5f;

		public static readonly int ShieldBash_maxLevel = 1;

		public static readonly int GoldenRip_maxLevel = 3;

		public static readonly int GoldenRip_addedCoin1 = 1;

		public static readonly int GoldenRip_addedCoin2 = 2;

		public static readonly int GoldenRip_addedCoin3 = 3;

		public static readonly float GoldenRip_cooldown = 0.3f;

		public static readonly float GoldenRip_DamageMultiplier = 1.5f;

		public static readonly int GoldenRip_furyAdded = 2;

		public static readonly int Tornado_maxLevel = 3;

		public static readonly float Tornado_damagePercent1 = 0.33f;

		public static readonly float Tornado_damagePercent2 = 0.66f;

		public static readonly float Tornado_damagePercent3 = 1f;

		public static readonly float Tornado_resistPercent1 = 0.25f;

		public static readonly float Tornado_resistPercent2 = 0.5f;

		public static readonly float Tornado_resistPercent3 = 0.75f;

		public static readonly int ArcaneAnchor_maxLevel = 1;

		public static readonly int ConvergenceHook_maxLevel = 1;

		public static readonly int MassiveHook_maxLevel = 1;

		public static readonly int SixthSense_maxLevel = 1;

		public static readonly int RelentlessStalker_maxLevel = 1;

		public static readonly int RelentlessStalker_CooldownReduction = 5;

		public static readonly int RoarOfResilience_maxLevel = 1;

		public static readonly int ClawsSharpening_maxLevel = 1;

		public static readonly int GoldenStart_maxLevel = 1;

		public static readonly int GoldenStart_addedGold = 25;

		public static readonly int StealthStrike_maxLevel = 1;

		public static readonly int CryoLeap_maxLevel = 3;

		public static readonly float CryoLeap_duration1 = 1f;

		public static readonly float CryoLeap_duration2 = 2f;

		public static readonly float CryoLeap_duration3 = 3f;

		public static readonly int ShadowStalker_maxLevel = 2;

		public static readonly float ShadowStalker_duration1 = 1f;

		public static readonly float ShadowStalker_duration2 = 2f;

		public static readonly int WardensVitality_maxLevel = 3;

		public static readonly float WardensVitality_maxHealthPercent1 = 1.1f;

		public static readonly float WardensVitality_maxHealthPercent2 = 1.2f;

		public static readonly float WardensVitality_maxHealthPercent3 = 1.3f;

		public static readonly int WardensVitality_BlockAdded1 = 1;

		public static readonly int WardensVitality_BlockAdded2 = 2;

		public static readonly int WardensVitality_BlockAdded3 = 3;

		public static readonly int SavageRevitalization_maxLevel = 1;

		public static readonly int SavageRevitalization_addedStack = 5;

		public static readonly float SavageRevitalization_buffTime = 5f;

		public static readonly float SavageRevitalization_MasteryBuffTime = 10f;

		public static readonly int InnateProtection_maxLevel = 2;

		public static readonly float InnateProtection_percent1 = 0.5f;

		public static readonly float InnateProtection_percent2 = 0.25f;

		public static readonly int Furrify_maxLevel = 1;

		public static readonly float Furrify_percent = 0.1f;

		public static readonly int Concentration_maxLevel = 1;

		public static readonly int SuperiorFlair_maxLevel = 5;

		public static readonly float SuperiorFlair_percent1 = 12f;

		public static readonly float SuperiorFlair_percent2 = 16f;

		public static readonly float SuperiorFlair_percent3 = 20f;

		public static readonly float SuperiorFlair_percent4 = 24f;

		public static readonly float SuperiorFlair_percent5 = 28f;

		public static readonly int EternalFury_maxLevel = 3;

		public static readonly float EternalFury_reductionPercent1 = 0.33f;

		public static readonly float EternalFury_reductionPercent2 = 0.66f;

		public static readonly float EternalFury_reductionPercent3 = 1f;

		public static readonly float EternalFury_startPercent1 = 0.2f;

		public static readonly float EternalFury_startPercent2 = 0.4f;

		public static readonly float EternalFury_startPercent3 = 0.6f;

		public static readonly int InnerRage_maxLevel = 4;

		public static readonly float InnerRage_addedFuryPercent1 = 0.03f;

		public static readonly float InnerRage_addedFuryPercent2 = 0.6f;

		public static readonly float InnerRage_addedFuryPercent3 = 0.9f;

		public static readonly float InnerRage_addedFuryPercent4 = 0.12f;

		public static readonly float InnerRage_enrageTime = 3f;

		public static readonly float InnerRage_enrageTimeFuryMode = 5f;

		public static readonly int InfernalSwipe_maxLevel = 2;

		public static readonly float InfernalSwipe_damagePercent1 = 0.25f;

		public static readonly float InfernalSwipe_damagePercent2 = 0.5f;

		public static readonly float InfernalSwipe_ingnitionChance1 = 0.15f;

		public static readonly float InfernalSwipe_ingnitionChance2 = 0.3f;

		public static readonly float InfernalSwipe_procCoefficient = 1.5f;

		public static readonly int HeatWave_maxLevel = 1;

		public static readonly int KineticResorption_maxLevel = 3;

		public static readonly float KineticResorption_regenPercent1 = 0.1f;

		public static readonly float KineticResorption_regenPercent2 = 0.2f;

		public static readonly float KineticResorption_regenPercent3 = 0.3f;

		public static readonly float KineticResorption_orbsCreationDelay = 1f;

		public static readonly int ExtendedProtection_maxLevel = 4;

		public static readonly float ExtendedProtection_percent1 = 0.1f;

		public static readonly float ExtendedProtection_percent2 = 0.2f;

		public static readonly float ExtendedProtection_percent3 = 0.3f;

		public static readonly float ExtendedProtection_percent4 = 0.4f;

		public static readonly int Rip_CombosID = 1;

		public static readonly int Slash_CombosID = 2;

		public static readonly int Leap_CombosID = 3;

		public static readonly int MightyRoar_CombosID = 4;

		public static readonly int Fury_CombosID = 5;

		public static readonly int Guardian_CombosID = 6;

		public static readonly int Prowl_CombosID = 7;

		public static readonly int Detection_CombosID = 8;

		public static readonly int AirSlash_CombosID = 9;

		public static readonly int FrontShield_CombosID = 10;

		public static readonly int ClawsStorm_CombosID = 11;

		public static readonly int ShieldBash_CombosID = 12;

		public static readonly int ArcaneAnchor_CombosID = 13;

		public static readonly int ConvergenceHook_CombosID = 14;

		public static readonly int MassiveHook_CombosID = 15;

		public static readonly int Ambition_CombosID = 16;

		public static readonly int PortalSurge_CombosID = 17;

		public static readonly int FeralBite_CombosID = 18;

		public static float Combos_maxTime = 3f;

		public static float Combos_failTimeFrame = 2.5f;

		public static readonly float Eclipse_duration = 10f;

		public static readonly int Cupidity_maxStacks = 50;

		public static readonly float Cupidity_goldMultiplier = 0.05f;

		public static readonly float Cupidity_decreaseTime = 1f;

		public static readonly int Tenacity_maxStacks = 15;

		public static readonly float Tenacity_duration = 5f;

		public static readonly float Tenacity_blockAdded = 0.02f;

		public static readonly int Razors_maxStacks = 10;

		public static readonly float MortalMirage_duration = 4f;

		public static readonly float BleedOut_duration = 5f;

		public static readonly float BleedOut_damage = 0.1f;

		public static readonly float BleedOut_damageTime = 0.3f;

		public static readonly float FrozenPaws_duration = 1f;

		public static readonly float FrozenPaws_minGroundDistance = 5f;

		public static readonly float Regeneration_duration = 10f;

		public static readonly int Regeneration_maxStack = 15;

		public static readonly float Regeneration_percentHeal = 0.01f;

		public static readonly float Regeneration_time = 1f;

		public static readonly float Resilience_duration = 10f;

		public static readonly int Resilience_maxStack = 15;

		public static readonly float Resilience_percentArmor = 0.05f;

		public static readonly float Enrage_duration = 5f;

		public static readonly int Enrage_maxStack = 20;

		public static readonly float Enrage_furyPercent = 0.01f;

		public static readonly float Ignition_duration = 10f;

		public static readonly float Ignition_damage = 0.5f;

		public static readonly float Ignition_damageTime = 1f;
	}
}
namespace Panthera.Utils
{
	public class Animation
	{
		public static void PlayAnimation(PantheraObj ptraObj, string animName, float crossFadeTime = 0f, bool transmit = true)
		{
			if ((Object)(object)ptraObj == (Object)null)
			{
				return;
			}
			Animator modelAnimator = ptraObj.modelAnimator;
			if (!((Object)(object)modelAnimator == (Object)null))
			{
				modelAnimator.speed = 1f;
				modelAnimator.Update(0f);
				if (crossFadeTime > 0f)
				{
					modelAnimator.CrossFadeInFixedTime(animName, crossFadeTime, -1, 0f);
				}
				else
				{
					modelAnimator.PlayInFixedTime(animName, -1, 0f);
				}
				if (RoR2Application.isInMultiPlayer && transmit)
				{
					NetMessageExtensions.Send((INetMessage)(object)new ServerPlayAnimation(((Component)ptraObj).gameObject, animName, crossFadeTime), (NetworkDestination)2);
				}
			}
		}

		public static void SetBoolean(PantheraObj ptraObj, string paramName, bool setValue, bool transmit = true)
		{
			if ((Object)(object)ptraObj == (Object)null)
			{
				return;
			}
			Animator modelAnimator = ptraObj.modelAnimator;
			if (!((Object)(object)modelAnimator == (Object)null))
			{
				modelAnimator.SetBool(paramName, setValue);
				if (RoR2Application.isInMultiPlayer && transmit)
				{
					NetMessageExtensions.Send((INetMessage)(object)new ServerSetAnimatorBoolean(((Component)ptraObj).gameObject, paramName, setValue), (NetworkDestination)2);
				}
			}
		}

		public static void SetFloat(PantheraObj ptraObj, string paramName, float value1 = 0f, float value2 = 0f, float value3 = 0f, bool transmit = true)
		{
			if ((Object)(object)ptraObj == (Object)null)
			{
				return;
			}
			Animator modelAnimator = ptraObj.modelAnimator;
			if (!((Object)(object)modelAnimator == (Object)null))
			{
				modelAnimator.SetFloat(paramName, value1, value2, value3);
				if (RoR2Application.isInMultiPlayer && transmit)
				{
					NetMessageExtensions.Send((INetMessage)(object)new ServerSetAnimatorFloat(((Component)ptraObj).gameObject, paramName, value1, value2, value3), (NetworkDestination)2);
				}
			}
		}
	}
	public class CamHelper
	{
		public enum AimType
		{
			Standard,
			Death,
			ClawsStorm,
			Leap
		}

		public static void ApplyCameraType(AimType type, PantheraObj ptraObj, float transitionDuration = 0.3f)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: Unknown result type (might be due to invalid IL or missing references)
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0142: Unknown result type (might be due to invalid IL or missing references)
			//IL_0147: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_016f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0174: Unknown result type (might be due to invalid IL or missing references)
			switch (type)
			{
			case AimType.Standard:
			{
				Vector3 defaultCamPosition = PantheraConfig.defaultCamPosition;
				Vector3 value = default(Vector3);
				((Vector3)(ref value))..ctor(defaultCamPosition.x, defaultCamPosition.y, defaultCamPosition.z * ptraObj.actualModelScale);
				CharacterCameraParamsData data = ptraObj.pantheraCamParam.cameraParams.data;
				data.idealLocalCameraPos.value = value;
				data.idealLocalCameraPos.alpha = 1f;
				ptraObj.pantheraCamParam.cameraParams.data = data;
				if ((Object)(object)ptraObj.cameraRigController != (Object)null)
				{
					ptraObj.cameraRigController.baseFov = PantheraConfig.defaultFOV;
				}
				ApplyParam(data, ptraObj, transitionDuration);
				break;
			}
			case AimType.Death:
			{
				CharacterCameraParamsData currentCameraParamsData2 = ptraObj.pantheraCamParam.currentCameraParamsData;
				ref Vector3 value3 = ref currentCameraParamsData2.idealLocalCameraPos.value;
				value3 += PantheraConfig.Death_cameraPos;
				currentCameraParamsData2.idealLocalCameraPos.alpha = 1f;
				ptraObj.pantheraCamParam.cameraParams.data = currentCameraParamsData2;
				ApplyParam(currentCameraParamsData2, ptraObj, transitionDuration);
				break;
			}
			case AimType.ClawsStorm:
			{
				CharacterCameraParamsData currentCameraParamsData = ptraObj.pantheraCamParam.currentCameraParamsData;
				ref Vector3 value2 = ref currentCameraParamsData.idealLocalCameraPos.value;
				value2 += PantheraConfig.ClawsStorm_cameraPos;
				currentCameraParamsData.idealLocalCameraPos.alpha = 1f;
				ptraObj.pantheraCamParam.cameraParams.data = currentCameraParamsData;
				ApplyParam(currentCameraParamsData, ptraObj, transitionDuration);
				break;
			}
			case AimType.Leap:
				if ((Object)(object)ptraObj.cameraRigController != (Object)null)
				{
					ptraObj.cameraRigController.baseFov = PantheraConfig.Leap_Fov;
				}
				break;
			}
		}

		public static void ApplyParam(CharacterCameraParamsData data, PantheraObj ptraObj, float transitionDuration)
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)ptraObj.pantheraCamParam == (Object)null))
			{
				CameraParamsOverrideRequest val = default(CameraParamsOverrideRequest);
				val.cameraParamsData = data;
				val.priority = 1f;
				ptraObj.pantheraCamParam.RemoveParamsOverride(ptraObj.lastCamHandle, 0.2f);
				ptraObj.lastCamHandle = ptraObj.pantheraCamParam.AddParamsOverride(val, transitionDuration);
			}
		}
	}
	public class ColorHelper
	{
		public static string EnergyColor = "F9FF00";

		public static string PowerColor = "6F00EC";

		public static string FuryColor = "FF4A00";

		public static string ShieldColor = "B0E0E6";

		public static string BarrierColor = "FFE800";

		public static string BlockColor = "805500";

		public static string ComboPointColor = "AFAF00";

		public static string StaminaColor = "87CEEB";

		public static string BuffColor = "00FFF0";

		public static string DeBuffColor = "38005F";

		public static string MasteryColor = "9F00DB";

		public static string Green = "50C878";

		public static string Red = "FF0000";

		public static string Cyan = "30F9FF";

		public static string Blue = "1D59FE";

		public static string Yellow = "FFEA00";

		public static string SetEnergy(string text)
		{
			return $"<color=#{EnergyColor}>{text}</color>";
		}

		public static string SetPower(string text)
		{
			return $"<color=#{PowerColor}>{text}</color>";
		}

		public static string SetFury(string text)
		{
			return $"<color=#{FuryColor}>{text}</color>";
		}

		public static string SetShield(string text)
		{
			return $"<color=#{ShieldColor}>{text}</color>";
		}

		public static string SetBarrier(string text)
		{
			return $"<color=#{BarrierColor}>{text}</color>";
		}

		public static string SetBlock(string text)
		{
			return $"<color=#{BlockColor}>{text}</color>";
		}

		public static string SetComboPoint(string text)
		{
			return $"<color=#{ComboPointColor}>{text}</color>";
		}

		public static string SetStamina(string text)
		{
			return $"<color=#{StaminaColor}>{text}</color>";
		}

		public static string SetBuff(string text)
		{
			return $"<color=#{BuffColor}>{text}</color>";
		}

		public static string SetDeBuff(string text)
		{
			return $"<color=#{DeBuffColor}>{text}</color>";
		}

		public static string SetMastery(string text)
		{
			return $"<color=#{MasteryColor}>{text}</color>";
		}

		public static string SetGreen(string text)
		{
			return $"<color=#{Green}>{text}</color>";
		}

		public static string SetRed(string text)
		{
			return $"<color=#{Red}>{text}</color>";
		}

		public static string SetCyan(string text)
		{
			return $"<color=#{Cyan}>{text}</color>";
		}

		public static string SetBlue(string text)
		{
			return $"<color=#{Blue}>{text}</color>";
		}

		public static string SetYellow(string text)
		{
			return $"<color=#{Yellow}>{text}</color>";
		}

		public static string SetDamage(string text)
		{
			return $"<style=cIsDamage>{text}</style>";
		}

		public static string SetUtility(string text)
		{
			return $"<style=cIsUtility>{text}</style>";
		}

		public static string SetHeal(string text)
		{
			return $"<style=cIsHealing>{text}</style>";
		}
	}
	public class ContentPacks : IContentPackProvider
	{
		public ContentPack contentPack = new ContentPack();

		public string identifier => "com.Dexy.Panthera";

		public void Initialize()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders);
		}

		private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider)
		{
			addContentPackProvider.Invoke((IContentPackProvider)(object)this);
		}

		public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args)
		{
			contentPack.identifier = identifier;
			contentPack.bodyPrefabs.Add(Prefab.bodyPrefabs.ToArray());
			contentPack.survivorDefs.Add(Prefab.SurvivorDefinitions.ToArray());
			contentPack.projectilePrefabs.Add(PantheraAssets.projectilePrefabs.ToArray());
			contentPack.skillFamilies.Add(Prefab.skillFamilies.ToArray());
			contentPack.skillDefs.Add(Prefab.skillDefs.ToArray());
			contentPack.entityStateTypes.Add(Prefab.entityStates.ToArray());
			contentPack.buffDefs.Add(Buff.buffDefs.ToArray());
			contentPack.effectDefs.Add(PantheraAssets.effectDefs.ToArray());
			contentPack.masterPrefabs.Add(Prefab.masterPrefabs.ToArray());
			args.ReportProgress(1f);
			yield break;
		}

		public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args)
		{
			ContentPack.Copy(contentPack, args.output);
			args.ReportProgress(1f);
			yield break;
		}

		public IEnumerator FinalizeAsync(FinalizeAsyncArgs args)
		{
			args.ReportProgress(1f);
			yield break;
		}
	}
	public class DebugInfo : MonoBehaviour
	{
		public static DebugInfo DebugInfoComp;

		private GameObject debugInfoObj;

		private Dictionary<string, TextMeshProUGUI> infosList = new Dictionary<string, TextMeshProUGUI>();

		public void Start()
		{
			if (NetworkClient.active)
			{
				debugInfoObj = Object.Instantiate<GameObject>(PantheraAssets.debugInfo, Panthera.PantheraHUD.origMainContainer.transform);
			}
		}

		public static void addText(string key, string text)
		{
			if (!((Object)(object)DebugInfoComp == (Object)null) && !((Object)(object)DebugInfoComp.debugInfoObj == (Object)null))
			{
				if (DebugInfoComp.infosList.ContainsKey(key))
				{
					((TMP_Text)DebugInfoComp.infosList[key]).text = text;
					return;
				}
				GameObject val = Object.Instantiate<GameObject>(PantheraAssets.debugInfoText, DebugInfoComp.debugInfoObj.transform);
				TextMeshProUGUI component = val.GetComponent<TextMeshProUGUI>();
				((TMP_Text)component).text = text;
				DebugInfoComp.infosList.Add(key, component);
			}
		}
	}
	public class Functions
	{
		public static T CopyComponent<T>(T original, GameObject destination) where T : Component
		{
			Type type = ((object)original).GetType();
			Component val = destination.AddComponent(type);
			FieldInfo[] fields = type.GetFields();
			FieldInfo[] array = fields;
			foreach (FieldInfo fieldInfo in array)
			{
				fieldInfo.SetValue(val, fieldInfo.GetValue(original));
			}
			return (T)(object)((val is T) ? val : null);
		}

		public static void CreateHitbox(GameObject prefab, Transform hitboxTransform, string hitboxName)
		{
			HitBoxGroup val = prefab.AddComponent<HitBoxGroup>();
			HitBox val2 = ((Component)hitboxTransform).gameObject.AddComponent<HitBox>();
			((Component)hitboxTransform).gameObject.layer = LayerIndex.projectile.intVal;
			val.hitBoxes = (HitBox[])(object)new HitBox[1] { val2 };
			val.groupName = hitboxName;
		}

		public static OverlapAttack CreateOverlapAttack(GameObject attacker, float damage, bool isCrit, float procCoefficient, string hitBoxName, Vector3 forceVector = default(Vector3), float pushAwayForce = 1f, GameObject hitEffect = null)
		{
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Expected O, but got Unknown
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			HitBoxGroup hitBoxGroup = null;
			Transform modelTransform = attacker.GetComponent<ModelLocator>().modelTransform;
			if (Object.op_Implicit((Object)(object)modelTransform))
			{
				hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == hitBoxName);
			}
			CharacterBody component = attacker.GetComponent<CharacterBody>();
			OverlapAttack val = new OverlapAttack();
			val.damageType = DamageTypeCombo.op_Implicit(PantheraConfig.Rip_damageType);
			val.attacker = attacker;
			val.inflictor = attacker;
			val.teamIndex = TeamComponent.GetObjectTeam(attacker);
			val.damage = damage;
			val.procCoefficient = procCoefficient;
			val.hitEffectPrefab = hitEffect;
			val.forceVector = forceVector;
			val.pushAwayForce = pushAwayForce;
			val.hitBoxGroup = hitBoxGroup;
			val.isCrit = isCrit;
			return val;
		}

		public static BlastAttack CreateBlastAttack(GameObject attacker, float damage, FalloffModel falloffModel, bool isCrit, float procCoefficient, Vector3 position, float radius, Vector3 forceVector = default(Vector3), float pushAwayForce = 1f)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			CharacterBody component = attacker.GetComponent<CharacterBody>();
			BlastAttack val = new BlastAttack();
			val.damageType = DamageTypeCombo.op_Implicit(PantheraConfig.Rip_damageType);
			val.attacker = attacker;
			val.inflictor = attacker;
			val.position = position;
			val.teamIndex = TeamComponent.GetObjectTeam(attacker);
			val.baseDamage = damage;
			val.falloffModel = falloffModel;
			val.procCoefficient = procCoefficient;
			val.bonusForce = forceVector;
			val.baseForce = pushAwayForce;
			val.radius = radius;
			val.crit = isCrit;
			return val;
		}

		public static DamageInfo CreateDotDamageInfo(PantheraBuff buff, GameObject inflictor, GameObject victime, float damage = 0f, DamageColorIndex damageColorIndex = 0)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			DamageInfo val = new DamageInfo();
			val.damage = ((damage == 0f) ? buff.damage : damage);
			val.crit = false;
			val.inflictor = inflictor;
			val.attacker = inflictor;
			val.position = victime.transform.position;
			val.damageType = DamageTypeCombo.op_Implicit((DamageType)67108864);
			val.damageColorIndex = (DamageColorIndex)2;
			val.force = Vector3.zero;
			val.procChainMask = default(ProcChainMask);
			val.procCoefficient = 1f;
			val.damageColorIndex = damageColorIndex;
			return val;
		}

		public static void ApplyKnockback(GameObject attacker, GameObject victim, float knockbackPower)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			Vector3 val = victim.transform.position - attacker.transform.position;
			Vector3 normalized = ((Vector3)(ref val)).normalized;
			Vector3 force = normalized * knockbackPower;
			NetMessageExtensions.Send((INetMessage)(object)new ServerApplyForceToBody(victim, force), (NetworkDestination)2);
		}

		public static float GetCollideDistance(Rigidbody r1, Rigidbody r2)
		{
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)r1 == (Object)null || (Object)(object)r2 == (Object)null)
			{
				return 999999f;
			}
			Collider component = ((Component)r1).GetComponent<Collider>();
			Collider component2 = ((Component)r2).GetComponent<Collider>();
			if ((Object)(object)component == (Object)null || (Object)(object)component2 == (Object)null)
			{
				return 999999f;
			}
			Vector3 val = component.ClosestPoint(r2.position);
			Vector3 val2 = component2.ClosestPoint(r1.position);
			return Vector3.Distance(val, val2);
		}

		public static float GetCollideDistance(CharacterBody b1, CharacterBody b2)
		{
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)b1 == (Object)null || (Object)(object)b2 == (Object)null)
			{
				return 999999f;
			}
			Collider component = ((Component)b1).GetComponent<Collider>();
			Collider component2 = ((Component)b2).GetComponent<Collider>();
			if ((Object)(object)component == (Object)null || (Object)(object)component2 == (Object)null)
			{
				return 999999f;
			}
			Vector3 val = component.ClosestPoint(b2.corePosition);
			Vector3 val2 = component2.ClosestPoint(b1.corePosition);
			return Vector3.Distance(val, val2);
		}

		public static Sprite KeyEnumToSprite(KeysBinder.KeysEnum keyEnum)
		{
			return (Sprite)(keyEnum switch
			{
				KeysBinder.KeysEnum.Interact => PantheraAssets.XButtonIcon, 
				KeysBinder.KeysEnum.Equipment => PantheraAssets.YButtonIcon, 
				KeysBinder.KeysEnum.Sprint => PantheraAssets.LButtonIcon, 
				KeysBinder.KeysEnum.Info => PantheraAssets.InfoButtonIcon, 
				KeysBinder.KeysEnum.Ping => PantheraAssets.RButtonIcon, 
				KeysBinder.KeysEnum.Forward => PantheraAssets.LUpButtonIcon, 
				KeysBinder.KeysEnum.Backward => PantheraAssets.LDownButtonIcon, 
				KeysBinder.KeysEnum.Left => PantheraAssets.LLeftButtonIcon, 
				KeysBinder.KeysEnum.Right => PantheraAssets.LRightButtonIcon, 
				KeysBinder.KeysEnum.Jump => PantheraAssets.AButtonIcon, 
				KeysBinder.KeysEnum.Skill1 => PantheraAssets.RTButtonIcon, 
				KeysBinder.KeysEnum.Skill2 => PantheraAssets.LTButtonIcon, 
				KeysBinder.KeysEnum.Skill3 => PantheraAssets.LBButtonIcon, 
				KeysBinder.KeysEnum.Skill4 => PantheraAssets.RBButtonIcon, 
				KeysBinder.KeysEnum.Ability1 => PantheraAssets.UpArrowButtonIcon, 
				KeysBinder.KeysEnum.Ability2 => PantheraAssets.RightArrowButtonIcon, 
				KeysBinder.KeysEnum.Ability3 => PantheraAssets.DownArrowButtonIcon, 
				KeysBinder.KeysEnum.Ability4 => PantheraAssets.LeftArrowButtonIcon, 
				KeysBinder.KeysEnum.SpellsMode => PantheraAssets.BButtonIcon, 
				_ => null, 
			});
		}

		public static bool IsSinglePlayer()
		{
			return RoR2Application.isInSinglePlayer;
		}

		public static bool IsMultiplayer()
		{
			return RoR2Application.isInMultiPlayer;
		}

		public static bool IsHost()
		{
			if (RoR2Application.isInMultiPlayer && NetworkClient.active && NetworkServer.active)
			{
				return true;
			}
			return false;
		}

		public static bool IsClient()
		{
			if (RoR2Application.isInMultiPlayer && NetworkClient.active && !NetworkServer.active)
			{
				return true;
			}
			return false;
		}

		public static bool IsServer()
		{
			if (!NetworkClient.active && NetworkServer.active)
			{
				return true;
			}
			return false;
		}

		public static bool IsSingleOrHost()
		{
			if (NetworkClient.active && NetworkServer.active)
			{
				return true;
			}
			return false;
		}

		public static bool IsHostOrClient()
		{
			if (NetworkClient.active && RoR2Application.isInMultiPlayer)
			{
				return true;
			}
			return false;
		}

		public static void ToOpaqueMode(Material material)
		{
			material.SetOverrideTag("RenderType", "");
			material.SetInt("_SrcBlend", 1);
			material.SetInt("_DstBlend", 0);
			material.SetFloat("_Mode", 0f);
			material.SetInt("_ZWrite", 1);
			material.EnableKeyword("_EMISSION");
			material.DisableKeyword("_ALPHABLEND_ON");
			material.DisableKeyword("_ALPHABLEND_ON_EMISSION");
			material.renderQueue = -1;
		}

		public static void ToTransparentMode(Material material)
		{
			material.SetOverrideTag("RenderType", "Transparent");
			material.SetInt("_SrcBlend", 5);
			material.SetInt("_DstBlend", 10);
			material.SetFloat("_Mode", 2f);
			material.EnableKeyword("_EMISSION");
			material.EnableKeyword("_ALPHABLEND_ON");
			material.EnableKeyword("_ALPHABLEND_ON_EMISSION");
			material.renderQueue = 3000;
		}

		public static int StringToInt(string text)
		{
			if (text == null)
			{
				return 0;
			}
			int num = 0;
			try
			{
				num = int.Parse(text);
			}
			catch (Exception ex)
			{
				Debug.LogError((object)"[Panthera -> Function.StringToInt] Unable to parse the String.");
				Debug.LogError((object)ex.ToString());
				num = 0;
			}
			return num;
		}

		public static float StringToFloat(string text)
		{
			if (text == null)
			{
				return 0f;
			}
			float num = 0f;
			try
			{
				num = float.Parse(text);
			}
			catch (Exception ex)
			{
				Debug.LogError((object)"[Panthera -> Function.StringToFloat] Unable to parse the String.");
				Debug.LogError((object)ex.ToString());
				num = 0f;
			}
			return num;
		}

		public static float RandomLog(float minValue, float maxValue, float curveIntensity = 1f)
		{
			curveIntensity = Mathf.Clamp(curveIntensity, 0.1f, 10f);
			float num = Mathf.Log(1f - Random.value * 0.99f + 0.01f) / curveIntensity;
			return minValue + (maxValue - minValue) * (0f - num);
		}
	}
	public class FXManager
	{
		public static Dictionary<int, GameObject> EffectsList = new Dictionary<int, GameObject>();

		public static int GetID()
		{
			return Panthera.ptraRNG.nextInt;
		}

		public static void CleanList()
		{
			KeyValuePair<int, GameObject>[] array = EffectsList.ToArray();
			for (int i = 0; i < array.Length; i++)
			{
				KeyValuePair<int, GameObject> keyValuePair = array[i];
				if ((Object)(object)keyValuePair.Value == (Object)null)
				{
					EffectsList.Remove(keyValuePair.Key);
				}
			}
		}

		public static void AddEffectToList(int ID, GameObject effect)
		{
			CleanList();
			if (EffectsList.ContainsKey(ID))
			{
				EffectsList[ID] = effect;
			}
			else
			{
				EffectsList.Add(ID, effect);
			}
		}

		public static void DestroyEffectInternal(int ID, float delay)
		{
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			CleanList();
			if (!EffectsList.ContainsKey(ID))
			{
				return;
			}
			if (delay <= 0f)
			{
				Object.Destroy((Object)(object)EffectsList[ID]);
				EffectsList.Remove(ID);
				return;
			}
			ParticleSystem[] componentsInChildren = GetEffect(ID).GetComponentsInChildren<ParticleSystem>();
			foreach (ParticleSystem val in componentsInChildren)
			{
				EmissionModule emission = val.emission;
				((EmissionModule)(ref emission)).enabled = false;
			}
			((MonoBehaviour)GlobalEventManager.instance).StartCoroutine(DelayDestroyEffect(EffectsList[ID], ID, delay));
		}

		public static IEnumerator DelayDestroyEffect(GameObject effect, int ID, float delay)
		{
			ParticleSystem[] componentsInChildren = effect.GetComponentsInChildren<ParticleSystem>();
			foreach (ParticleSystem particle in componentsInChildren)
			{
				EmissionModule emission = particle.emission;
				((EmissionModule)(ref emission)).enabled = false;
				emission = default(EmissionModule);
			}
			yield return (object)new WaitForSeconds(delay);
			if (EffectsList.ContainsKey(ID))
			{
				Object.Destroy((Object)(object)EffectsList[ID]);
				EffectsList.Remove(ID);
			}
		}

		public static GameObject CreateEffectInternal(GameObject creator, GameObject prefab, Vector3 origin, float scale = 1f, GameObject parent = null, Quaternion rotation = default(Quaternion), bool isModelTransform = false)
		{
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Invalid comparison between Unknown and I4
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
			if (isModelTransform)
			{
				parent = ((Component)parent.GetComponent<ModelLocator>().modelTransform).gameObject;
			}
			EffectData val = new EffectData();
			val.origin = origin;
			val.scale = scale;
			val.rotation = rotation;
			EffectIndex val2 = EffectCatalog.FindEffectIndexFromPrefab(prefab);
			if ((int)val.networkSoundEventIndex != -1)
			{
				PointSoundManager.EmitSoundLocal(AkEventIdArg.op_Implicit(NetworkSoundEventCatalog.GetAkIdFromNetworkSoundEventIndex(val.networkSoundEventIndex)), val.origin);
			}
			EffectDef effectDef = EffectCatalog.GetEffectDef(val2);
			if (effectDef == null)
			{
				return null;
			}
			string spawnSoundEventName = effectDef.spawnSoundEventName;
			if (!string.IsNullOrEmpty(spawnSoundEventName))
			{
				PointSoundManager.EmitSoundLocal((AkEventIdArg)spawnSoundEventName, origin);
			}
			SurfaceDef surfaceDef = SurfaceDefCatalog.GetSurfaceDef(val.surfaceDefIndex);
			if ((Object)(object)surfaceDef != (Object)null)
			{
				string impactSoundString = surfaceDef.impactSoundString;
				if (!string.IsNullOrEmpty(impactSoundString))
				{
					PointSoundManager.EmitSoundLocal((AkEventIdArg)impactSoundString, val.origin);
				}
			}
			if (!VFXBudget.CanAffordSpawn(effectDef.prefabVfxAttributes))
			{
				return null;
			}
			if (effectDef.cullMethod != null && !effectDef.cullMethod(val))
			{
				return null;
			}
			EffectData val3 = val.Clone();
			GameObject val4 = Object.Instantiate<GameObject>(effectDef.prefab);
			EffectComponent component = val4.GetComponent<EffectComponent>();
			if (Object.op_Implicit((Object)(object)component))
			{
				component.effectData = val3.Clone();
			}
			if ((Object)(object)parent != (Object)null)
			{
				val4.transform.parent = parent.transform;
			}
			val4.transform.position = origin;
			val4.transform.rotation = rotation;
			val4.transform.localScale = new Vector3(scale, scale, scale);
			if ((Object)(object)parent != (Object)null)
			{
				val4.transform.localPosition = Vector3.zero;
				val4.transform.localRotation = Quaternion.identity;
			}
			return val4;
		}

		public static int SpawnEffect(GameObject creator, GameObject prefab, Vector3 origin, float scale = 1f, GameObject parent = null, Quaternion rotation = default(Quaternion), bool isModelTransform = false, bool emit = true)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			int iD = GetID();
			GameObject effect = CreateEffectInternal(creator, prefab, origin, scale, parent, rotation, isModelTransform);
			AddEffectToList(iD, effect);
			if (NetworkServer.active)
			{
				NetMessageExtensions.Send((INetMessage)(object)new ClientSpawnEffect(iD, creator, Prefabs.GetIndex(prefab), origin, scale, parent, rotation, isModelTransform), (NetworkDestination)1);
			}
			else
			{
				NetMessageExtensions.Send((INetMessage)(object)new ServerSpawnEffect(iD, creator, Prefabs.GetIndex(prefab), origin, scale, parent, rotation, isModelTransform), (NetworkDestination)2);
			}
			return iD;
		}

		public static GameObject GetEffect(int ID)
		{
			CleanList();
			if (EffectsList.ContainsKey(ID))
			{
				return EffectsList[ID];
			}
			return null;
		}

		public static void DestroyEffect(int ID, float delay = 0f, bool emit = true)
		{
			DestroyEffectInternal(ID, delay);
			if (NetworkServer.active)
			{
				NetMessageExtensions.Send((INetMessage)(object)new ClientDestroyEffect(ID, delay), (NetworkDestination)1);
			}
			else
			{
				NetMessageExtensions.Send((INetMessage)(object)new ServerDestroyEffect(ID, delay), (NetworkDestination)2);
			}
		}
	}
	public class Hooks
	{
		public static void AddHooks(Type classType, string methodName, Delegate calledMethod)
		{
			AddHooks(classType, methodName, null, calledMethod);
		}

		public static void AddHooks(Type classType, string methodName, Type[] methodType, Delegate calledMethod)
		{
			if (classType == null || methodName == null || (object)calledMethod == null)
			{
				Debug.LogWarning((object)("PantheraHooks -> Failed to create hook, argument null: " + classType.Name + "." + methodName + " -> " + DotNetCompatibility.GetMethodName(calledMethod)));
				return;
			}
			MethodInfo methodInfo = null;
			methodInfo = ((methodType == null) ? classType.GetMethod(methodName, (BindingFlags)(-1)) : classType.GetMethod(methodName, (BindingFlags)(-1), null, methodType, null));
			if (methodInfo == null)
			{
				Debug.LogWarning((object)("PantheraHooks -> Failed to create hook, method null : " + classType.Name + "." + methodName + " -> " + DotNetCompatibility.GetMethodName(calledMethod)));
			}
			else
			{
				HookEndpointManager.Add((MethodBase)methodInfo, calledMethod);
				Debug.Log((object)("PantheraHooks -> Hook Added for " + classType.Name + "." + methodName + " -> " + DotNetCompatibility.GetMethodName(calledMethod)));
			}
		}

		public static void RegisterHooks()
		{
			AddHooks(typeof(UserProfile), "OnLogin", new Action<Action<UserProfile>, UserProfile>(Panthera.ProfileLoaded));
			AddHooks(typeof(CharacterSelectController), "Awake", new Action<Action<CharacterSelectController>, CharacterSelectController>(PantheraPanel.CharacterSelectionStart));
			AddHooks(typeof(UserData), "gLOOAxUFAvrvUufkVjaYyZoeLbLE", new Action<Action<UserData>, UserData>(KeysBinder.RegistersExtraInput));
			AddHooks(typeof(CharacterBody), "RecalculateStats", new Action<Action<CharacterBody>, CharacterBody>(PantheraBody.RecalculateStatsHook));
			AddHooks(typeof(HUD), "Awake", new Action<Action<HUD>, HUD>(PantheraHUD.HUDAwakeHook));
			AddHooks(typeof(CharacterDeathBehavior), "OnDeath", new Action<Action<CharacterDeathBehavior>, CharacterDeathBehavior>(PantheraDeathBehavior.CharacterDeathBehaviorHook));
			AddHooks(typeof(HealthComponent), "TakeDamage", new Action<Action<HealthComponent, DamageInfo>, HealthComponent, DamageInfo>(PantheraHealthComponent.TakeDamageHook));
			AddHooks(typeof(SkillLocator), "ApplyAmmoPack", new Action<Action<SkillLocator>, SkillLocator>(PantheraSkillLocator.applyAmmoPackHook));
			AddHooks(typeof(CharacterBody), "GetVisibilityLevel", new Type[1] { typeof(TeamIndex) }, new Func<Func<CharacterBody, TeamIndex, VisibilityLevel>, CharacterBody, TeamIndex, VisibilityLevel>(PantheraBody.GetVisibilityLevelHook));
			AddHooks(typeof(CharacterModel), "UpdateRendererMaterials", new Action<Action<CharacterModel, Renderer, Material, bool>, CharacterModel, Renderer, Material, bool>(PantheraFX.UpdateRendererMaterialsHook));
			AddHooks(typeof(CharacterMaster), "GiveMoney", new Action<Action<CharacterMaster, uint>, CharacterMaster, uint>(AmbitionMode.CalculateAddedMoney));
			AddHooks(typeof(Interactor), "FindBestInteractableObject", new Type[4]
			{
				typeof(Ray),
				typeof(float),
				typeof(Vector3),
				typeof(float)
			}, new Func<Func<Interactor, Ray, float, Vector3, float, GameObject>, Interactor, Ray, float, Vector3, float, GameObject>(PantheraInteractor.FindBestInteractableObjectHook));
			AddHooks(typeof(CombatDirector), "FixedUpdate", new Action<Action<CombatDirector>, CombatDirector>(PantheraCombatDirector.FixedUpdate));
			AddHooks(typeof(CombatDirector), "PrepareNewMonsterWave", new Action<Action<CombatDirector, DirectorCard>, CombatDirector, DirectorCard>(PantheraCombatDirector.PrepareNewMonsterWave));
			AddHooks(typeof(CombatDirector), "SetNextSpawnAsBoss", new Action<Action<CombatDirector>, CombatDirector>(PantheraCombatDirector.SetNextSpawnAsBoss));
			AddHooks(typeof(ChargingState), "OnEnter", new Action<Action<ChargingState>, ChargingState>(PantheraCombatDirector.OnPortalCharging));
			AddHooks(typeof(ChargedState), "OnEnter", new Action<Action<ChargedState>, ChargedState>(PantheraCombatDirector.OnPortalCharged));
			AddHooks(typeof(BlastAttack), "CollectHits", new Func<Func<BlastAttack, HitPoint[]>, BlastAttack, HitPoint[]>(FrontShieldComponent.OnBlastAttack));
		}

		public static void HookProvisoirePourDebugger(Action<HUDBossHealthBarController, DamageDealtMessage> orig, HUDBossHealthBarController self, DamageDealtMessage damageDealtMessage)
		{
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			if (!((TimeStamp)(ref self.nextAllowedSourceUpdateTime)).hasPassed || !Object.op_Implicit((Object)(object)damageDealtMessage.victim))
			{
				return;
			}
			CharacterBody component = damageDealtMessage.victim.GetComponent<CharacterBody>();
			if (Object.op_Implicit((Object)(object)component) && component.isBoss && (Object)(object)damageDealtMessage.attacker == (Object)(object)self.hud.targetBodyObject)
			{
				BossGroup val = BossGroup.FindBossGroup(component);
				if (Object.op_Implicit((Object)(object)val) && val.shouldDisplayHealthBarOnHud)
				{
					self.currentBossGroup = val;
					self.nextAllowedSourceUpdateTime = TimeStamp.now + 1f;
				}
			}
		}
	}
	public class PantheraSaveSystem
	{
		public static string saveDir = Path.Combine(Application.persistentDataPath, "Panthera");

		public static string saveFileName;

		public static Dictionary<string, string> savedData = new Dictionary<string, string>();

		public static void Init()
		{
			try
			{
				Directory.CreateDirectory(saveDir);
			}
			catch (Exception ex)
			{
				Debug.LogWarning((object)"Failed to create Panthera Dir");
				Debug.LogError((object)ex);
			}
		}

		public static void Save()
		{
			Dictionary<string, string> dictionary = new Dictionary<string, string>();
			foreach (string key in savedData.Keys)
			{
				dictionary[key] = savedData[key];
			}
			string fileName = Path.Combine(saveDir, saveFileName + "--Data");
			XElement xElement = new XElement("Root", dictionary.Select(delegate(KeyValuePair<string, string> keyValue)
			{
				KeyValuePair<string, string> keyValuePair = keyValue;
				XName? name = keyValuePair.Key;
				keyValuePair = keyValue;
				return new XElement(name, keyValuePair.Value);
			}));
			try
			{
				xElement.Save(fileName, SaveOptions.OmitDuplicateNamespaces);
			}
			catch (Exception ex)
			{
				Debug.LogError((object)"[Panthera] Unable to save ...");
				Debug.LogError((object)ex);
			}
		}

		public static void Load()
		{
			string path = Path.Combine(saveDir, saveFileName + "--Data");
			savedData.Clear();
			if (!File.Exists(path))
			{
				Save();
			}
			string text = null;
			try
			{
				text = File.ReadAllText(path);
			}
			catch (Exception ex)
			{
				Debug.LogError((object)"[Panthera] Unable to load ...");
				Debug.LogError((object)ex);
				return;
			}
			Dictionary<string, string> dictionary = new Dictionary<string, string>();
			try
			{
				dictionary = XElement.Parse(text).Elements().ToDictionary((XElement k) => k.Name.ToString(), (XElement v) => v.Value.ToString());
			}
			catch (XmlException ex2)
			{
				Debug.LogError((object)"[Panthera] XML ERROR, creating a new save ...");
				Debug.LogError((object)ex2);
				File.Delete(path);
				Save();
			}
			foreach (KeyValuePair<string, string> item in dictionary)
			{
				savedData[item.Key] = item.Value;
			}
		}

		public static void SetValue(string key, string value)
		{
			if (savedData.ContainsKey(key))
			{
				savedData[key] = value;
			}
			else
			{
				savedData.Add(key, value);
			}
		}

		public static string ReadValue(string key)
		{
			if (savedData.ContainsKey(key))
			{
				return savedData[key];
			}
			return null;
		}

		public static Dictionary<string, string> LoadPreset(int ID)
		{
			string path = Path.Combine(saveDir, saveFileName + "--Preset" + ID);
			Dictionary<string, string> dictionary = new Dictionary<string, string>();
			if (!File.Exists(path))
			{
				return null;
			}
			string text = null;
			try
			{
				text = File.ReadAllText(path);
			}
			catch (Exception ex)
			{
				Debug.LogError((object)("[Panthera] Unable to load preset " + ID + " ..."));
				Debug.LogError((object)ex);
				return null;
			}
			return XElement.Parse(text).Elements().ToDictionary((XElement k) => k.Name.ToString(), (XElement v) => v.Value.ToString());
		}

		public static void SavePreset(int ID, Dictionary<string, string> dataList)
		{
			string fileName = Path.Combine(saveDir, saveFileName + "--Preset" + ID);
			XElement xElement = new XElement("Root", dataList.Select(delegate(KeyValuePair<string, string> keyValue)
			{
				KeyValuePair<string, string> keyValuePair = keyValue;
				XName? name = keyValuePair.Key;
				keyValuePair = keyValue;
				return new XElement(name, keyValuePair.Value);
			}));
			try
			{
				xElement.Save(fileName, SaveOptions.OmitDuplicateNamespaces);
			}
			catch (Exception ex)
			{
				Debug.LogError((object)("[Panthera] Unable to save preset + " + ID + " ..."));
				Debug.LogError((object)ex);
			}
		}
	}
	public class PantheraTokens
	{
		public static Dictionary<string, string> TokensList = new Dictionary<string, string>();

		public static void Add(string name, string text)
		{
			if (TokensList.ContainsKey(name))
			{
				TokensList[name] = text;
			}
			else
			{
				TokensList.Add(name, text);
			}
		}

		public static string Get(string name)
		{
			if (TokensList.ContainsKey(name))
			{
				return TokensList[name];
			}
			return "";
		}
	}
	public class Prefabs
	{
		public static Dictionary<int, GameObject> PrefabsList = new Dictionary<int, GameObject>();

		public static int index = 1;

		public static void AddPrefab(GameObject prefab)
		{
			PrefabsList.Add(index, prefab);
			index++;
		}

		public static GameObject GetPrefab(int index)
		{
			if (PrefabsList.ContainsKey(index))
			{
				return PrefabsList[index];
			}
			return null;
		}

		public static int GetIndex(GameObject prefab)
		{
			foreach (KeyValuePair<int, GameObject> prefabs in PrefabsList)
			{
				if ((Object)(object)prefabs.Value == (Object)(object)prefab)
				{
					return prefabs.Key;
				}
			}
			return 0;
		}
	}
	internal class Sound
	{
		public const string soundBankFolder = "SoundBanks";

		public const string soundBankFileName = "PantheraBank.bnk";

		public const string soundBankName = "PantheraBank";

		public static uint soundBankId;

		public static string Dodge = "Dodge";

		public static string Block = "Block";

		public static string Reduced = "Reduced";

		public static string Rip1 = "Rip1";

		public static string RipHit1 = "RipHit1";

		public static string IntroRoar = "IntroRoar";

		public static string MightyRoar = "MightyRoar";

		public static string AirCleave1 = "AirCleave1";

		public static string AirCleave2 = "AirCleave2";

		public static string AirCleaveHit = "AirCleaveHit";

		public static string ClawsStorm = "ClawsStorm";

		public static string Leap = "Leap";

		public static string Prowl = "Prowl";

		public static string ShieldAbsorb = "ShieldAbsorb";

		public static string FrontShieldBreak = "FrontShieldBreak";

		public static string ShieldBash = "ShieldBash";

		public static string GhostRip = "GhostRip";

		public static string Slash = "Slash";

		public static string DetectionEnable = "DetectionEnable";

		public static string DetectionDisable = "DetectionDisable";

		public static string FuryOn = "FuryOn";

		public static string GardianOn = "GardianOn";

		public static string GardianOff = "GardianOff";

		public static string AmbitionOn = "AmbitionOn";

		public static string AmbitionBuff = "AmbitionBuff";

		public static string AirSlash = "AirSlash";

		public static string GoldenRip = "GoldenRip";

		public static string ArcaneAnchor = "ArcaneAnchor";

		public static string ConvergenceHook = "ConvergenceHook";

		public static string PortalCharging = "PortalCharging";

		public static string PortalChargingStop = "PortalChargingStop";

		public static string PortalChargeFailed = "PortalChargeFailed";

		public static string Regeneration = "Regeneration";

		public static string Resilience = "Resilience";

		public static string Enrage = "Enrage";

		public static string FireRip1 = "FireRip1";

		public static string FeralBite = "FeralBite";

		public static string Dead1 = "Dead1";

		public static string Dead2 = "Dead2";

		public static string LevelUP = "LevelUP";

		public static string Click1 = "Click1";

		public static string OpenGUI = "OpenGUI";

		public static string CloseGUI = "CloseGUI";

		public static string ResetChar = "ResetChar";

		public static void PopulateSounds()
		{
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Invalid comparison between Unknown and I4
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Invalid comparison between Unknown and I4
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			string text = Path.Combine(Path.GetDirectoryName(Panthera.PInfo.Location), "SoundBanks");
			AKRESULT val = AkSoundEngine.AddBasePath(text);
			if ((int)val == 1)
			{
				Debug.Log((object)("Added bank base path : " + text));
			}
			else
			{
				Debug.LogError((object)("Error adding base path : " + text + " " + $"Error code : {val}"));
			}
			val = AkSoundEngine.LoadBank("PantheraBank.bnk", ref soundBankId);
			if ((int)val == 1)
			{
				Debug.Log((object)"Added bank : PantheraBank.bnk");
			}
			else
			{
				Debug.LogError((object)("Error loading bank : PantheraBank.bnk " + $"Error code : {val}"));
			}
		}

		public static void playSound(string soundName, GameObject obj, bool emit = true)
		{
			if (NetworkClient.active)
			{
				AkSoundEngine.PostEvent(soundName, obj);
			}
			if (emit)
			{
				if (Functions.IsHost())
				{
					NetMessageExtensions.Send((INetMessage)(object)new ServerPlaySound(obj, soundName), (NetworkDestination)2);
				}
				else if (Functions.IsClient())
				{
					NetMessageExtensions.Send((INetMessage)(object)new ServerPlaySound(obj, soundName), (NetworkDestination)2);
				}
				else if (Functions.IsServer())
				{
					NetMessageExtensions.Send((INetMessage)(object)new ServerPlaySound(obj, soundName, ingloreAuthority: true), (NetworkDestination)2);
				}
			}
		}
	}
	internal class Tokens
	{
		public static void RegisterTokens()
		{
			string text = "P4N7H3R4";
			string text2 = "Play like a predator!";
			string text3 = ColorHelper.SetCyan("Don't be the prey, be the predator!") + Environment.NewLine + Environment.NewLine + "P4N7H3R4 (Panthera) is a powerful Panther who belongs to the Wild Gods family. Unlike humans, Big Cats are naturally equipped to hunt and kill, this makes P4N7H3R4 a very strong predator.";
			PantheraTokens.Add("PANTHERA_NAME", text);
			PantheraTokens.Add("PAN