Decompiled source of P4N7H3R4 v0.1.3
plugins/Panthera/Panthera.dll
Decompiled 3 hours ago
The result has been truncated due to the large size, download it to view full contents!
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