Decompiled source of Faithful v1.4.2
Faithful.dll
Decompiled 5 days ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using EntityStates.Commando.CommandoWeapon; using EntityStates.Drone.Command; using EntityStates.Huntress; using EntityStates.Huntress.HuntressWeapon; using EntityStates.Mage; using Faithful; using Faithful.Shared; using Faithful.Skills.Technician; using Faithful.Skills.Temp; using HG; using HG.BlendableTypes; using HarmonyLib; using IL.RoR2; using Microsoft.CodeAnalysis; using Mono.Cecil; using Mono.Cecil.Cil; using MonoMod.Cil; using Newtonsoft.Json; using On.EntityStates; using On.EntityStates.Drone.Command; using On.EntityStates.Huntress.HuntressWeapon; using On.EntityStates.Mage; using On.RoR2; using On.RoR2.Items; using On.RoR2.UI; using On.RoR2.UI.LogBook; using On.RoR2.UI.MainMenu; using R2API; using Rewired.ComponentControls.Effects; using RoR2; using RoR2.ContentManagement; using RoR2.ExpansionManagement; using RoR2.Hologram; using RoR2.Navigation; using RoR2.Networking; using RoR2.Skills; using RoR2.UI; using RoR2.UI.MainMenu; using TMPro; using Unity; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.ResourceManagement.AsyncOperations; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: AssemblyTitle("Faithful")] [assembly: AssemblyProduct("Faithful")] [assembly: AssemblyInformationalVersion("1.0.0+65ed4da0548071b8f67039db4f2acda3bad2e75d")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyCompany("Faithful")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: CompilationRelaxations(8)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] [module: UnverifiableCode] 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 Faithful { internal static class Assets { public const string bundleName = "faithfulbundle"; public static AssetBundle assetBundle; public static Material mageJetMaterial; public static Material infusionGlassMaterial; public static Material areaIndicatorIntersectionOnlyMaterial; public static Material areaIndicatorRimMaterial; public static Material artifactMaterial; public static Material artifactShellExplosionIndicatorMaterial; public static Material baubleTimestopSphereMaterial; public static Material blueprintScreenMaterial; public static Material blueprintsInvalidMaterial; public static Material blueprintsOkMaterial; public static Material bootShockwaveMaterial; public static Material captainAirstrikeAltAreaIndicatorInnerMaterial; public static Material captainAirstrikeAltAreaIndicatorOuterMaterial; public static Material captainAirstrikeAreaIndicatorMaterial; public static Material captainSupplyDropAreaIndicator2Material; public static Material captainSupplyDropAreaIndicatorOuterMaterial; public static Material chefAlwaysOnTopMaterial; public static Material childStarCoreMaterial; public static Material childStarGlowMaterial; public static Material chipProjectileMaterial; public static Material clayBubbleMaterial; public static Material combinerEnergyFadeMaterial; public static Material coreCage2Material; public static Material defectiveUnitDenialSphereNoiseMaterial; public static Material defectiveUnitDetonateSphereEnergyMaterial; public static Material defectiveUnitDetonateSphereEnergyPersMaterial; public static Material defectiveUnitDetonateSphereNoiseMaterial; public static Material defectiveUnitDetonateSpherePulseMaterial; public static Material defectiveUnitNullifySpherePulseMaterial; public static Material droneBrokenGenericMaterial; public static Material nullifierArmorMaterial; public static Material nullifierGemPortalMaterial; public static Material nullifierGemPortal3Material; public static Material nullifierBlackholeZoneAreaIndicatorMaterial; public static Material nullifierExplosionAreaIndicatorHardMaterial; public static Material radarTowerAreaIndicatorMaterial; public static Material shockDamageAuraGlassMaterial; public static Material teamAreaIndicatorFullMonsterMaterial; public static Material teamAreaIndicatorFullPlayerMaterial; public static Material teamAreaIndicatorIntersectionMonsterMaterial; public static Material teamAreaIndicatorIntersectionPlayerMaterial; public static Material timeCrystalAreaIndicatorMaterial; public static Material voidDeathBombAreaIndicatorBackMaterial; public static Material voidDeathBombAreaIndicatorFrontMaterial; public static Material voidSurvivorBlasterSphereAreaIndicatorMaterial; public static Material voidSurvivorBlasterSphereAreaIndicatorCorruptedMaterial; public static Material chestMaterial; public static Wave[] mageJetWaves; public static GameObject mageJetAkEventsPrefab; public static GameObject radiusIndicatorPrefab; public static GameObject pennonEffectPrefab; public static GameObject matrixEffectPrefab; public static GameObject matrixEffectLocalPrefab; public static GameObject shrineUseEffectPrefab; public static GameObject technicianArcPrefab; public static GameObject technicianTrackingIndicatorPrefab; public static PhysicMaterial ragdollMaterial; public static DynamicBone scarfDynamicBone; public static Sprite dronePingIcon; public static Sprite inventoryPingIcon; public static Sprite lootPingIcon; public static Sprite shrinePingIcon; public static Sprite teleporterPingIcon; public static Sprite mysteryPingIcon; public static Sprite chestInspectIcon; public static Sprite droneInspectIcon; public static Sprite lunarInspectIcon; public static Sprite pillarInspectIcon; public static Sprite printerInspectIcon; public static Sprite radioScannerInspectIcon; public static Sprite scapperInspectIcon; public static Sprite shrineInspectIcon; public static Sprite meridianInspectIcon; public static Sprite voidInspectIcon; public static Sprite mysteryInspectIcon; public static Material chanceShrineSymbolMaterial; public static ExpansionDef sotvDef; public static ExpansionDef sotsDef; private const string defaultModel = "temporalcubemesh"; private const string defaultIcon = "textemporalcubeicon"; private const string defaultConsumedIcon = "textemporalcubeconsumedicon"; private const string defaultBuffIcon = "texbufftemporalcube"; public static string AssetBundlePath => Path.Combine(Path.GetDirectoryName(Utils.pluginInfo.Location), "faithfulbundle"); public static void Init() { assetBundle = AssetBundle.LoadFromFile(AssetBundlePath); if (Utils.verboseConsole) { string[] allAssetNames = assetBundle.GetAllAssetNames(); string[] array = allAssetNames; foreach (string text in array) { Log.Debug("[ASSETS] - Loaded asset '" + text + "'"); } } FetchNeededRoR2Resources(); RiskOfOptionsWrapper.UpdateModIcon(); } private static void FetchNeededRoR2Resources() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_02ef: Unknown result type (might be due to invalid IL or missing references) //IL_02f4: Unknown result type (might be due to invalid IL or missing references) //IL_0370: Unknown result type (might be due to invalid IL or missing references) //IL_0375: Unknown result type (might be due to invalid IL or missing references) //IL_04ac: Unknown result type (might be due to invalid IL or missing references) //IL_04c1: Unknown result type (might be due to invalid IL or missing references) //IL_04d6: Unknown result type (might be due to invalid IL or missing references) //IL_04f6: Unknown result type (might be due to invalid IL or missing references) //IL_04fb: Unknown result type (might be due to invalid IL or missing references) //IL_055e: Unknown result type (might be due to invalid IL or missing references) //IL_05a5: Unknown result type (might be due to invalid IL or missing references) //IL_069e: Unknown result type (might be due to invalid IL or missing references) //IL_06e5: Unknown result type (might be due to invalid IL or missing references) //IL_072c: Unknown result type (might be due to invalid IL or missing references) //IL_0773: Unknown result type (might be due to invalid IL or missing references) //IL_07ba: Unknown result type (might be due to invalid IL or missing references) //IL_0801: Unknown result type (might be due to invalid IL or missing references) //IL_0811: Unknown result type (might be due to invalid IL or missing references) //IL_0816: Unknown result type (might be due to invalid IL or missing references) //IL_0898: Unknown result type (might be due to invalid IL or missing references) //IL_08b8: Unknown result type (might be due to invalid IL or missing references) //IL_093c: Unknown result type (might be due to invalid IL or missing references) //IL_0983: Unknown result type (might be due to invalid IL or missing references) //IL_09f3: Unknown result type (might be due to invalid IL or missing references) //IL_0a3a: Unknown result type (might be due to invalid IL or missing references) //IL_0a4a: Unknown result type (might be due to invalid IL or missing references) //IL_0a4f: Unknown result type (might be due to invalid IL or missing references) //IL_0ac6: Unknown result type (might be due to invalid IL or missing references) //IL_0ae7: Unknown result type (might be due to invalid IL or missing references) //IL_0b6e: Unknown result type (might be due to invalid IL or missing references) //IL_0bb5: Unknown result type (might be due to invalid IL or missing references) //IL_0c25: Unknown result type (might be due to invalid IL or missing references) //IL_0c6c: Unknown result type (might be due to invalid IL or missing references) //IL_0c7c: Unknown result type (might be due to invalid IL or missing references) //IL_0c81: Unknown result type (might be due to invalid IL or missing references) //IL_0cee: Unknown result type (might be due to invalid IL or missing references) //IL_0d1c: Unknown result type (might be due to invalid IL or missing references) //IL_0d4a: Unknown result type (might be due to invalid IL or missing references) //IL_0d78: Unknown result type (might be due to invalid IL or missing references) //IL_0d8d: Unknown result type (might be due to invalid IL or missing references) //IL_0da2: Unknown result type (might be due to invalid IL or missing references) //IL_0dc6: Unknown result type (might be due to invalid IL or missing references) //IL_0e6c: Unknown result type (might be due to invalid IL or missing references) //IL_0ea9: Unknown result type (might be due to invalid IL or missing references) //IL_0f56: Unknown result type (might be due to invalid IL or missing references) //IL_0f9d: Unknown result type (might be due to invalid IL or missing references) //IL_105e: Unknown result type (might be due to invalid IL or missing references) //IL_10e2: Unknown result type (might be due to invalid IL or missing references) //IL_115c: Unknown result type (might be due to invalid IL or missing references) //IL_11a3: Unknown result type (might be due to invalid IL or missing references) //IL_11ea: Unknown result type (might be due to invalid IL or missing references) //IL_1296: Unknown result type (might be due to invalid IL or missing references) //IL_129b: Unknown result type (might be due to invalid IL or missing references) //IL_12a4: Unknown result type (might be due to invalid IL or missing references) //IL_12b4: Unknown result type (might be due to invalid IL or missing references) //IL_12b9: Unknown result type (might be due to invalid IL or missing references) //IL_1310: Unknown result type (might be due to invalid IL or missing references) //IL_1368: Unknown result type (might be due to invalid IL or missing references) //IL_1396: Unknown result type (might be due to invalid IL or missing references) //IL_1451: Unknown result type (might be due to invalid IL or missing references) //IL_1465: Unknown result type (might be due to invalid IL or missing references) //IL_1497: Unknown result type (might be due to invalid IL or missing references) //IL_14c9: Unknown result type (might be due to invalid IL or missing references) //IL_14fb: Unknown result type (might be due to invalid IL or missing references) //IL_152d: Unknown result type (might be due to invalid IL or missing references) //IL_155f: Unknown result type (might be due to invalid IL or missing references) //IL_1591: Unknown result type (might be due to invalid IL or missing references) //IL_1618: Unknown result type (might be due to invalid IL or missing references) //IL_164f: Unknown result type (might be due to invalid IL or missing references) //IL_1669: Unknown result type (might be due to invalid IL or missing references) //IL_166e: Unknown result type (might be due to invalid IL or missing references) //IL_1697: Unknown result type (might be due to invalid IL or missing references) //IL_169c: Unknown result type (might be due to invalid IL or missing references) mageJetMaterial = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"aa5dbb90045bc694bb20ffb706507091").WaitForCompletion()); mageJetMaterial.SetTexture("_RemapTex", GetTexture("texRamp4T0NFire")); infusionGlassMaterial = FetchAsset<Material>("RoR2/Base/Infusion/matInfusionGlass.mat"); areaIndicatorIntersectionOnlyMaterial = FetchAsset<Material>("RoR2/Base/Common/VFX/matAreaIndicatorIntersectionOnly.mat"); areaIndicatorRimMaterial = FetchAsset<Material>("RoR2/Base/Common/VFX/matAreaIndicatorRim.mat"); artifactMaterial = FetchAsset<Material>("RoR2/GlobalContent/matArtifact.mat"); artifactShellExplosionIndicatorMaterial = FetchAsset<Material>("RoR2/Base/artifactworld/matArtifactShellExplosionIndicator.mat"); baubleTimestopSphereMaterial = FetchAsset<Material>("RoR2/Base/SlowOnHit/matBaubleTimestopSphere.mat"); blueprintScreenMaterial = FetchAsset<Material>("RoR2/Junk/Misc/matBlueprintScreen.mat"); blueprintsInvalidMaterial = FetchAsset<Material>("RoR2/Base/Engi/matBlueprintsInvalid.mat"); blueprintsOkMaterial = FetchAsset<Material>("RoR2/Base/Engi/matBlueprintsOk.mat"); bootShockwaveMaterial = FetchAsset<Material>("RoR2/Base/FallBoots/matBootShockwave.mat"); captainAirstrikeAltAreaIndicatorInnerMaterial = FetchAsset<Material>("RoR2/Base/Captain/matCaptainAirstrikeAltAreaIndicatorInner.mat"); captainAirstrikeAltAreaIndicatorOuterMaterial = FetchAsset<Material>("RoR2/Base/Captain/matCaptainAirstrikeAltAreaIndicatorOuter.mat"); captainAirstrikeAreaIndicatorMaterial = FetchAsset<Material>("RoR2/Base/Captain/matCaptainAirstrikeAreaIndicator.mat"); captainSupplyDropAreaIndicator2Material = FetchAsset<Material>("RoR2/Base/Captain/matCaptainSupplyDropAreaIndicator2.mat"); captainSupplyDropAreaIndicatorOuterMaterial = FetchAsset<Material>("RoR2/Base/Captain/matCaptainSupplyDropAreaIndicatorOuter.mat"); chefAlwaysOnTopMaterial = FetchAsset<Material>("RoR2/DLC2/Chef/matChef_AlwaysOnTop.mat"); childStarCoreMaterial = FetchAsset<Material>("RoR2/DLC2/Child/matChildStarCore.mat"); childStarGlowMaterial = FetchAsset<Material>("RoR2/DLC2/Child/matChildStarGlow.mat"); chipProjectileMaterial = FetchAsset<Material>("RoR2/DLC3/SolusHeart/matChipProjectile.mat"); clayBubbleMaterial = FetchAsset<Material>("RoR2/Base/Clay/matClayBubble.mat"); combinerEnergyFadeMaterial = FetchAsset<Material>("RoR2/DLC3/DroneCombinerStation/matCombinerEnergyFade.mat"); coreCage2Material = FetchAsset<Material>("RoR2/DLC3/Items/MasterCore/matCoreCage2.mat"); defectiveUnitDenialSphereNoiseMaterial = FetchAsset<Material>("RoR2/DLC3/DefectiveUnit/matDefectiveUnitDenialSphereNoise.mat"); defectiveUnitDetonateSphereEnergyMaterial = FetchAsset<Material>("RoR2/DLC3/DefectiveUnit/matDefectiveUnitDetonateSphereEnergy.mat"); defectiveUnitDetonateSphereEnergyPersMaterial = FetchAsset<Material>("RoR2/DLC3/DefectiveUnit/matDefectiveUnitDetonateSphereEnergyPers.mat"); defectiveUnitDetonateSphereNoiseMaterial = FetchAsset<Material>("RoR2/DLC3/DefectiveUnit/matDefectiveUnitDetonateSphereNoise.mat"); defectiveUnitDetonateSpherePulseMaterial = FetchAsset<Material>("RoR2/DLC3/DefectiveUnit/matDefectiveUnitDetonateSpherePulse.mat"); defectiveUnitNullifySpherePulseMaterial = FetchAsset<Material>("RoR2/DLC3/DefectiveUnit/matDefectiveUnitNullifySpherePulse.mat"); droneBrokenGenericMaterial = FetchAsset<Material>("RoR2/Base/Drones/matDroneBrokenGeneric.mat"); nullifierArmorMaterial = FetchAsset<Material>("RoR2/Base/Nullifier/matNullifierArmor.mat"); nullifierGemPortalMaterial = FetchAsset<Material>("RoR2/Base/Nullifier/matNullifierGemPortal.mat"); nullifierGemPortal3Material = FetchAsset<Material>("RoR2/DLC1/Common/Void/matNullifierGemPortal3.mat"); nullifierBlackholeZoneAreaIndicatorMaterial = FetchAsset<Material>("RoR2/DLC1/Common/Void/matNullifierBlackholeZoneAreaIndicator.mat"); nullifierExplosionAreaIndicatorHardMaterial = FetchAsset<Material>("RoR2/Base/Nullifier/matNullifierExplosionAreaIndicatorHard.mat"); radarTowerAreaIndicatorMaterial = FetchAsset<Material>("RoR2/Base/RadarTower/matRadarTowerAreaIndicator.mat"); shockDamageAuraGlassMaterial = FetchAsset<Material>("RoR2/DLC3/Items/ShockDamageAura/matShockDamageAuraGlass.mat"); teamAreaIndicatorFullMonsterMaterial = FetchAsset<Material>("RoR2/Base/Common/matTeamAreaIndicatorFullMonster.mat"); teamAreaIndicatorFullPlayerMaterial = FetchAsset<Material>("RoR2/Base/Common/matTeamAreaIndicatorFullPlayer.mat"); teamAreaIndicatorIntersectionMonsterMaterial = FetchAsset<Material>("RoR2/Base/Common/matTeamAreaIndicatorIntersectionMonster.mat"); teamAreaIndicatorIntersectionPlayerMaterial = FetchAsset<Material>("RoR2/Base/Common/matTeamAreaIndicatorIntersectionPlayer.mat"); timeCrystalAreaIndicatorMaterial = FetchAsset<Material>("RoR2/Base/crystalworld/matTimeCrystalAreaIndicator.mat"); voidDeathBombAreaIndicatorBackMaterial = FetchAsset<Material>("RoR2/Base/Common/matVoidDeathBombAreaIndicatorBack.mat"); voidDeathBombAreaIndicatorFrontMaterial = FetchAsset<Material>("RoR2/Base/Common/matVoidDeathBombAreaIndicatorFront.mat"); voidSurvivorBlasterSphereAreaIndicatorMaterial = FetchAsset<Material>("RoR2/DLC1/VoidSurvivor/matVoidSurvivorBlasterSphereAreaIndicator.mat"); voidSurvivorBlasterSphereAreaIndicatorCorruptedMaterial = FetchAsset<Material>("RoR2/DLC1/VoidSurvivor/matVoidSurvivorBlasterSphereAreaIndicatorCorrupted.mat"); chestMaterial = FetchAsset<Material>("RoR2/Base/Chest1/matChest1.mat"); mageJetWaves = ((Component)Addressables.LoadAssetAsync<GameObject>((object)"92199783eae803f4095bc93685a5ee70").WaitForCompletion().GetComponent<Transform>() .Find("ModelBase") .Find("mdlMage") .Find("MageArmature") .Find("ROOT") .Find("base") .Find("stomach") .Find("chest") .Find("JetsOn") .Find("Point Light")).GetComponent<FlickerLight>().sinWaves; GameObject val = Object.Instantiate<GameObject>(((Component)Addressables.LoadAssetAsync<GameObject>((object)"92199783eae803f4095bc93685a5ee70").WaitForCompletion().transform.Find("ModelBase").Find("mdlMage").Find("MageArmature") .Find("ROOT") .Find("base") .Find("stomach") .Find("chest") .Find("JetsOn")).gameObject); mageJetAkEventsPrefab = PrefabAPI.InstantiateClone(val, "faithfulMageJetAkEvents", false); Object.DestroyImmediate((Object)(object)val); Object.DestroyImmediate((Object)(object)((Component)mageJetAkEventsPrefab.transform.Find("Fire")).gameObject); Object.DestroyImmediate((Object)(object)((Component)mageJetAkEventsPrefab.transform.Find("Point Light")).gameObject); Object.DestroyImmediate((Object)(object)((Component)mageJetAkEventsPrefab.transform.Find("JetsL")).gameObject); Object.DestroyImmediate((Object)(object)((Component)mageJetAkEventsPrefab.transform.Find("JetsR")).gameObject); Object.DestroyImmediate((Object)(object)((Component)mageJetAkEventsPrefab.transform.Find("FireRing")).gameObject); mageJetAkEventsPrefab.transform.SetParent((Transform)null); mageJetAkEventsPrefab.transform.position = Vector3.zero; mageJetAkEventsPrefab.transform.localEulerAngles = Vector3.zero; mageJetAkEventsPrefab.transform.localScale = Vector3.zero; Object.DestroyImmediate((Object)(object)mageJetAkEventsPrefab.GetComponent<Rigidbody>()); GameObject val2 = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)"6b314230ed88f3c4b8d55cc64846854b").WaitForCompletion()); pennonEffectPrefab = PrefabAPI.InstantiateClone(val2, "faithfulLeadersPennonEffect", false); Object.DestroyImmediate((Object)(object)val2); ((Renderer)((Component)pennonEffectPrefab.transform.Find("Visual").Find("PulseEffect, Ring")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_Color", new Color(0.5803921f, 0.22745098f, 61f / 85f)); ((Renderer)((Component)pennonEffectPrefab.transform.Find("Visual").Find("PulseEffect, Ring")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_TintColor", new Color(0.5803921f, 0.22745098f, 61f / 85f)); ((Renderer)((Component)pennonEffectPrefab.transform.Find("Visual").Find("PulseEffect, Ring")).GetComponent<ParticleSystemRenderer>()).material.SetTexture("_RemapTex", GetTexture("texRampPennonBuff")); ((Renderer)((Component)pennonEffectPrefab.transform.Find("Visual").Find("PulseEffect, Ring")).GetComponent<ParticleSystemRenderer>()).material.SetTexture("_MainTex", GetTexture("texIndicatorPennonMask")); ((Renderer)((Component)pennonEffectPrefab.transform.Find("Visual").Find("PulseEffect, Ring")).GetComponent<ParticleSystemRenderer>()).material.mainTexture = GetTexture("texIndicatorPennonMask"); ((Renderer)((Component)pennonEffectPrefab.transform.Find("Visual").Find("ColoredLightShafts (1)")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_Color", new Color(0.1f, 0f, 2.6384087f)); ((Renderer)((Component)pennonEffectPrefab.transform.Find("Visual").Find("ColoredLightShafts (1)")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_TintColor", new Color(0.1f, 0f, 2.6384087f)); ((Renderer)((Component)pennonEffectPrefab.transform.Find("Visual").Find("FlarePerst_Ps (1)")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_Color", new Color(0.1f, 0f, 1f)); ((Renderer)((Component)pennonEffectPrefab.transform.Find("Visual").Find("FlarePerst_Ps (1)")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_TintColor", new Color(0.1f, 0f, 1f)); ((Renderer)((Component)pennonEffectPrefab.transform.Find("Visual").Find("SoftGlow")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_Color", new Color(0.5803921f, 0.22745098f, 1f)); ((Renderer)((Component)pennonEffectPrefab.transform.Find("Visual").Find("SoftGlow")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_TintColor", new Color(0.5803921f, 0.22745098f, 1f)); GameObject val3 = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)"6b314230ed88f3c4b8d55cc64846854b").WaitForCompletion()); matrixEffectPrefab = PrefabAPI.InstantiateClone(val3, "faithfulTargetingMatrixEffect", false); Object.DestroyImmediate((Object)(object)val3); Material material = ((Renderer)((Component)matrixEffectPrefab.transform.Find("Visual").Find("PulseEffect, Ring")).GetComponent<ParticleSystemRenderer>()).material; ((Object)material).name = "matTargetingMatrixEffect"; material.SetFloat("_InvFade", 0f); material.SetColor("_Color", new Color(1f, 0f, 0f)); material.SetColor("_TintColor", new Color(1f, 0f, 0f)); material.SetTexture("_RemapTex", GetTexture("texRampPennonBuff")); material.SetTexture("_MainTex", GetTexture("texIndicatorMatrixMask")); material.mainTexture = GetTexture("texIndicatorMatrixMask"); ((Renderer)((Component)matrixEffectPrefab.transform.Find("Visual").Find("ColoredLightShafts (1)")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_Color", new Color(1f, 0f, 0f)); ((Renderer)((Component)matrixEffectPrefab.transform.Find("Visual").Find("ColoredLightShafts (1)")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_TintColor", new Color(1f, 0f, 0f)); Object.DestroyImmediate((Object)(object)((Component)matrixEffectPrefab.transform.Find("Visual").Find("FlarePerst_Ps (1)")).gameObject); ((Renderer)((Component)matrixEffectPrefab.transform.Find("Visual").Find("SoftGlow")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_Color", new Color(1f, 0f, 0f)); ((Renderer)((Component)matrixEffectPrefab.transform.Find("Visual").Find("SoftGlow")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_TintColor", new Color(1f, 0f, 0f)); GameObject val4 = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)"6b314230ed88f3c4b8d55cc64846854b").WaitForCompletion()); matrixEffectLocalPrefab = PrefabAPI.InstantiateClone(val4, "faithfulTargetingMatrixEffect", false); Object.DestroyImmediate((Object)(object)val4); Material material2 = ((Renderer)((Component)matrixEffectLocalPrefab.transform.Find("Visual").Find("PulseEffect, Ring")).GetComponent<ParticleSystemRenderer>()).material; ((Object)material2).name = "matTargetingMatrixLocalEffect"; material2.SetColor("_Color", new Color(1f, 0f, 0f)); material2.SetColor("_TintColor", new Color(1f, 0f, 0f)); material2.SetTexture("_RemapTex", GetTexture("texRampPennonBuff")); material2.SetTexture("_MainTex", GetTexture("texIndicatorMatrixMask")); material2.mainTexture = GetTexture("texIndicatorMatrixMask"); ((Renderer)((Component)matrixEffectLocalPrefab.transform.Find("Visual").Find("ColoredLightShafts (1)")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_Color", new Color(1f, 0f, 0f)); ((Renderer)((Component)matrixEffectLocalPrefab.transform.Find("Visual").Find("ColoredLightShafts (1)")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_TintColor", new Color(1f, 0f, 0f)); Object.DestroyImmediate((Object)(object)((Component)matrixEffectLocalPrefab.transform.Find("Visual").Find("FlarePerst_Ps (1)")).gameObject); ((Renderer)((Component)matrixEffectLocalPrefab.transform.Find("Visual").Find("SoftGlow")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_Color", new Color(1f, 0f, 0f)); ((Renderer)((Component)matrixEffectLocalPrefab.transform.Find("Visual").Find("SoftGlow")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_TintColor", new Color(1f, 0f, 0f)); GameObject val5 = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)"5ba295c0a3919a544939e6efe1ff17b3").WaitForCompletion()); radiusIndicatorPrefab = PrefabAPI.InstantiateClone(val5, "faithfulRadiusIndicator", false); Object.DestroyImmediate((Object)(object)val5); Object.DestroyImmediate((Object)(object)radiusIndicatorPrefab.GetComponent<NetworkedBodyAttachment>()); Object.DestroyImmediate((Object)(object)radiusIndicatorPrefab.GetComponent<NetworkIdentity>()); ((Renderer)((Component)radiusIndicatorPrefab.transform.Find("Donut")).GetComponent<MeshRenderer>()).material.SetColor("_Color", Color.white); ((Renderer)((Component)radiusIndicatorPrefab.transform.Find("Donut")).GetComponent<MeshRenderer>()).material.SetColor("_TintColor", Color.white); ((Renderer)((Component)radiusIndicatorPrefab.transform.Find("Radius, Spherical")).GetComponent<MeshRenderer>()).material.SetColor("_Color", Color.white); ((Renderer)((Component)radiusIndicatorPrefab.transform.Find("Radius, Spherical")).GetComponent<MeshRenderer>()).material.SetColor("_TintColor", Color.white); radiusIndicatorPrefab.transform.position = Vector3.zero; radiusIndicatorPrefab.transform.eulerAngles = Vector3.zero; radiusIndicatorPrefab.transform.localScale = new Vector3(1f, 1f, 1f); radiusIndicatorPrefab.AddComponent<FaithfulRadiusIndicatorBehaviour>(); shrineUseEffectPrefab = FetchAsset<GameObject>("RoR2/Base/Common/VFX/ShrineUseEffect.prefab"); GameObject val6 = Object.Instantiate<GameObject>(FetchAsset<GameObject>("RoR2/Base/Engi/LaserEngiTurret.prefab")); technicianArcPrefab = PrefabAPI.InstantiateClone(val6, "faithfulTechnicianArc", false); Object.DestroyImmediate((Object)(object)val6); ((Component)technicianArcPrefab.transform.Find("LaserStart")).GetComponent<LineRenderer>().widthMultiplier = 3f; ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserStart")).GetComponent<LineRenderer>()).material.SetColor("_Color", new Color(0.9725f, 1f, 0.5373f)); ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserStart")).GetComponent<LineRenderer>()).material.SetColor("_TintColor", new Color(0.9725f, 1f, 0.5373f)); ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserStart")).GetComponent<LineRenderer>()).material.SetTexture("_RemapTex", GetTexture("texRampTechnician")); ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserStart")).GetComponent<LineRenderer>()).material.SetTexture("_Cloud2Tex", GetTexture("texLightningTechnician")); ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserStart").Find("Flare")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_Color", new Color(0.9725f, 1f, 0.5373f)); ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserStart").Find("Flare")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_TintColor", new Color(0.9725f, 1f, 0.5373f)); ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserStart").Find("Flare")).GetComponent<ParticleSystemRenderer>()).material.SetTexture("_MainTex", GetTexture("texTechnicianFlare")); ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserStart").Find("Flare")).GetComponent<ParticleSystemRenderer>()).material.SetTexture("_RemapTex", GetTexture("texRampTechnician")); ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserStart").Find("HitFlash")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_Color", new Color(0.9725f, 1f, 0.5373f)); ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserStart").Find("HitFlash")).GetComponent<ParticleSystemRenderer>()).material.SetTexture("_RemapTex", GetTexture("texRampTechnician")); ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserStart").Find("Ring, Bright")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_Color", new Color(0.9725f, 1f, 0.5373f)); ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserStart").Find("Ring, Bright")).GetComponent<ParticleSystemRenderer>()).material.SetTexture("_RemapTex", GetTexture("texRampTechnician")); ((Component)technicianArcPrefab.transform.Find("LaserStart").Find("Point light")).GetComponent<Light>().color = new Color(0.9725f, 1f, 0.5373f); ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserEnd").Find("Flare")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_Color", new Color(0.9725f, 1f, 0.5373f)); ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserEnd").Find("Flare")).GetComponent<ParticleSystemRenderer>()).material.SetColor("_TintColor", new Color(0.9725f, 1f, 0.5373f)); ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserEnd").Find("Flare")).GetComponent<ParticleSystemRenderer>()).material.SetTexture("_MainTex", GetTexture("texTechnicianFlare")); ((Renderer)((Component)technicianArcPrefab.transform.Find("LaserEnd").Find("Flare")).GetComponent<ParticleSystemRenderer>()).material.SetTexture("_RemapTex", GetTexture("texRampTechnician")); ParticleSystem component = ((Component)technicianArcPrefab.transform.Find("LaserEnd").Find("Flare")).GetComponent<ParticleSystem>(); MainModule main = component.main; ((MainModule)(ref main)).startSize = MinMaxCurve.op_Implicit(4f); GameObject val7 = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)"2c791c24593eab442b64bb8c822a4f01").WaitForCompletion()); technicianTrackingIndicatorPrefab = PrefabAPI.InstantiateClone(val7, "faithfulTechnicianTracker", false); Object.DestroyImmediate((Object)(object)val7); ((Component)technicianTrackingIndicatorPrefab.transform.Find("Core Pip")).GetComponent<SpriteRenderer>().color = new Color(1f, 1f, 0.375f, 0.286f); ((Renderer)((Component)technicianTrackingIndicatorPrefab.transform.Find("Core Pip")).GetComponent<SpriteRenderer>()).sortingOrder = 1; ((Component)technicianTrackingIndicatorPrefab.transform.Find("Core, Dark")).GetComponent<SpriteRenderer>().color = new Color(0.5f, 0.5f, 0.25f, 0.953f); technicianTrackingIndicatorPrefab.transform.Find("Holder").localScale = new Vector3(1f, 1f, 1f); ((Component)technicianTrackingIndicatorPrefab.transform.Find("Holder")).GetComponent<RotateAroundAxis>().reverse = true; ((Component)technicianTrackingIndicatorPrefab.transform.Find("Holder")).GetComponent<RotateAroundAxis>().fastRotationSpeed = 60f; ((Component)technicianTrackingIndicatorPrefab.transform.Find("Holder")).GetComponent<RotateAroundAxis>().slowRotationSpeed = 30f; Object.DestroyImmediate((Object)(object)((Component)technicianTrackingIndicatorPrefab.transform.Find("Holder")).GetComponent<ObjectScaleCurve>()); GameObject[] array = Utils.FindChildrenWithTerm(technicianTrackingIndicatorPrefab.transform.Find("Holder"), "Nib Holder"); array[0].transform.localEulerAngles = Vector3.zero; array[1].transform.localEulerAngles = Vector3.zero; ((Component)array[0].transform.Find("Nib")).transform.localPosition = new Vector3(0.22f, 0f, 0f); ((Component)array[1].transform.Find("Nib")).transform.localPosition = new Vector3(-0.22f, 0f, 0f); ((Component)array[0].transform.Find("Nib")).transform.localEulerAngles = new Vector3(0f, 0f, 90f); ((Component)array[1].transform.Find("Nib")).transform.localEulerAngles = new Vector3(0f, 0f, 270f); ((Component)array[0].transform.Find("Nib")).transform.localScale = new Vector3(0.15f, 0.15f, 1f); ((Component)array[1].transform.Find("Nib")).transform.localScale = new Vector3(0.15f, 0.15f, 1f); ((Component)array[0].transform.Find("Nib")).GetComponent<SpriteRenderer>().sprite = GetSprite("texCrosshairTrackerBracket"); ((Component)array[1].transform.Find("Nib")).GetComponent<SpriteRenderer>().sprite = GetSprite("texCrosshairTrackerBracket"); ((Component)array[0].transform.Find("Nib")).GetComponent<SpriteRenderer>().color = new Color(1f, 1f, 0.375f, 0.286f); ((Component)array[1].transform.Find("Nib")).GetComponent<SpriteRenderer>().color = new Color(1f, 1f, 0.375f, 0.286f); Object.DestroyImmediate((Object)(object)array[2]); ragdollMaterial = ((Component)Addressables.LoadAssetAsync<GameObject>((object)"64ee0a4463fdfdc41ac7a06c8f5f2f0f").WaitForCompletion().GetComponentInChildren<RagdollController>() .bones[1]).GetComponent<Collider>().material; scarfDynamicBone = Utils.FindChildByName(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/LunarSun/DisplaySunHeadNeck.prefab").WaitForCompletion().transform, "Bandage1").GetComponent<DynamicBone>(); dronePingIcon = FetchAsset<Sprite>("RoR2/Base/Common/MiscIcons/texDroneIconOutlined.png"); inventoryPingIcon = FetchAsset<Sprite>("RoR2/Base/Common/MiscIcons/texInventoryIconOutlined.png"); lootPingIcon = FetchAsset<Sprite>("RoR2/Base/Common/MiscIcons/texLootIconOutlined.png"); shrinePingIcon = FetchAsset<Sprite>("RoR2/Base/Common/MiscIcons/texShrineIconOutlined.png"); teleporterPingIcon = FetchAsset<Sprite>("RoR2/Base/Common/MiscIcons/texTeleporterIconOutlined.png"); mysteryPingIcon = FetchAsset<Sprite>("RoR2/Base/Common/MiscIcons/texMysteryIcon.png"); chestInspectIcon = FetchAsset<Sprite>("RoR2/Base/ChestIcon_1.png"); droneInspectIcon = FetchAsset<Sprite>("RoR2/Base/Common/MiscIcons/texDroneIconOutlined.png"); lunarInspectIcon = FetchAsset<Sprite>("RoR2/Base/LunarIcon_1.png"); pillarInspectIcon = FetchAsset<Sprite>("RoR2/Base/PillarIcon.png"); printerInspectIcon = FetchAsset<Sprite>("RoR2/Base/PrinterIcon_1.png"); radioScannerInspectIcon = FetchAsset<Sprite>("RoR2/Base/RadioScannerIcon_2.png"); scapperInspectIcon = FetchAsset<Sprite>("RoR2/Base/ScrapperIcon.png"); shrineInspectIcon = FetchAsset<Sprite>("RoR2/Base/ShrineIcon.png"); meridianInspectIcon = FetchAsset<Sprite>("RoR2/DLC2/texColossusExpansionIcon.png"); voidInspectIcon = FetchAsset<Sprite>("RoR2/Base/VoidIcon_2.png"); mysteryInspectIcon = FetchAsset<Sprite>("RoR2/Base/Common/MiscIcons/texMysteryIcon.png"); chanceShrineSymbolMaterial = FetchAsset<Material>("RoR2/Base/ShrineChance/matShrineChanceSymbol.mat"); sotvDef = FetchAsset<ExpansionDef>("RoR2/DLC1/Common/DLC1.asset"); sotsDef = FetchAsset<ExpansionDef>("RoR2/DLC2/Common/DLC2.asset"); if (Utils.verboseConsole) { Log.Debug("[ASSETS] - Fetched all needed resources from RoR2 assets."); } } public static string FindAsset(string _file) { _file = _file.ToLower(); string[] allAssetNames = assetBundle.GetAllAssetNames(); foreach (string text in allAssetNames) { if (text.ToLower().Contains(_file)) { return text; } } return null; } public static bool HasAsset(string _name) { string text = FindAsset(_name); return text != null; } public static void LogRoR2Resources() { List<KeyValuePair<string, string>> list = new List<KeyValuePair<string, string>>(); LegacyResourcesAPI.GetAllPathGuidPairs(list); foreach (KeyValuePair<string, string> item in list) { Log.Debug("[ASSETS] - Resource found: '" + item.Key + "' | GUID: " + item.Value); } } public static void FindRoR2Resources(string _searchTerm) { List<KeyValuePair<string, string>> list = new List<KeyValuePair<string, string>>(); LegacyResourcesAPI.GetAllPathGuidPairs(list); string text = "\n[ASSETS]\n====================\nAttempting to find resources with search term: '" + _searchTerm + "'\n--------------------"; bool flag = false; foreach (KeyValuePair<string, string> item in list) { if (item.Key.ToUpper().Contains(_searchTerm.ToUpper())) { flag = true; text = text + "\nResource found: '" + item.Key + "' | GUID: " + item.Value; } } text += (flag ? "\n====================" : "\nNo resources found...\n===================="); Log.Info(text); } public static T FetchAsset<T>(string _path) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) return Addressables.LoadAssetAsync<T>((object)_path).WaitForCompletion(); } public static Sprite GetIcon(string _name) { string text = _name + ".png"; string text2 = FindAsset(text); if (text2 == null) { if (Utils.verboseConsole) { Log.Error("Requested asset '" + text + "' could not be found."); } _name = _name.ToLower(); return assetBundle.LoadAsset<Sprite>(_name.Contains("buff") ? FindAsset("texbufftemporalcube") : (_name.Contains("consumed") ? FindAsset("textemporalcubeconsumedicon") : FindAsset("textemporalcubeicon"))); } return assetBundle.LoadAsset<Sprite>(text2); } public static GameObject GetCrosshair(string _crosshairName) { GameObject val = LegacyResourcesAPI.Load<GameObject>("Prefabs/Crosshair/" + _crosshairName + "Crosshair"); if ((Object)(object)val == (Object)null) { Log.Error("Crosshair '" + _crosshairName + "' could not be found - defaulting to standard crosshair."); return LegacyResourcesAPI.Load<GameObject>("Prefabs/Crosshair/StandardCrosshair"); } return val; } public static GameObject GetObject(string _name, string _default = null) { string text = _name + ".prefab"; string text2 = FindAsset(text); if (text2 == null) { if (Utils.verboseConsole) { Log.Error("Requested asset '" + text + "' could not be found."); } if (_default != null) { return assetBundle.LoadAsset<GameObject>(_default); } return null; } return assetBundle.LoadAsset<GameObject>(text2); } public static Mesh GetMesh(string _name, string _default = null) { string text = _name + ".prefab"; string text2 = FindAsset(text); GameObject val = null; if (text2 == null) { if (Utils.verboseConsole) { Log.Error("Requested asset '" + text + "' could not be found."); } if (_default != null) { val = assetBundle.LoadAsset<GameObject>(_default); } } else { val = assetBundle.LoadAsset<GameObject>(text2); } if ((Object)(object)val == (Object)null) { return null; } MeshFilter component = val.GetComponent<MeshFilter>(); if ((Object)(object)component == (Object)null) { Log.Error("[ASSETS] | Unable to get mesh for asset '" + text + "' - Mesh filter component not found!"); return null; } return component.sharedMesh; } public static GameObject GetModel(string _name) { return GetObject(_name, "temporalcubemesh"); } public static Texture GetTexture(string _name) { string text = _name + ".png"; string text2 = FindAsset(text); if (text2 == null) { Log.Error("Requested asset '" + text + "' could not be found."); return null; } return assetBundle.LoadAsset<Texture>(text2); } public static Sprite GetSprite(string _name) { string text = _name + ".png"; string text2 = FindAsset(text); if (text2 == null) { Log.Error("Requested asset '" + text + "' could not be found."); return null; } return assetBundle.LoadAsset<Sprite>(text2); } public static Material GetMaterial(string _name) { string text = _name + ".mat"; string text2 = FindAsset(text); if (text2 == null) { Log.Error("Requested asset '" + text + "' could not be found."); return null; } return assetBundle.LoadAsset<Material>(text2); } public static Shader GetShader(string _name) { string text = _name + ".shader"; string text2 = FindAsset(text); if (text2 == null) { Log.Error("Requested asset '" + text + "' could not be found."); return null; } return assetBundle.LoadAsset<Shader>(text2); } public static Material GetShrineSymbolMaterial(Texture _texture, Color _colour) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_001f: Unknown result type (might be due to invalid IL or missing references) Material val = new Material(chanceShrineSymbolMaterial); val.SetTexture("_MainTex", _texture); val.SetColor("_TintColor", _colour); return val; } public static GameObject GetClonedDopplegangerMaster(GameObject _bodyPrefab, string _masterName, string _masterToCopy) { GameObject val = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("Prefabs/CharacterMasters/" + _masterToCopy + "MonsterMaster"), _masterName, true); val.GetComponent<CharacterMaster>().bodyPrefab = _bodyPrefab; ContentAddition.AddMaster(val); return val; } } internal delegate void Callback(); internal delegate void InHoldoutZoneCallback(CharacterBody _contained, HoldoutZoneController _zone); internal delegate void OnHoldoutZoneStartCallback(HoldoutZoneController _zone); internal delegate void OnHoldoutZoneCalcRadiusCallback(ref float _radius, HoldoutZoneController _zone); internal delegate void StatsModCallback(int _count, StatHookEventArgs _stats); internal delegate void OnIncomingDamageCallback(DamageInfo _report, CharacterMaster _attacker, CharacterMaster _victim); internal delegate void OnHitEnemyCallback(DamageInfo _info, GameObject _victim); internal delegate void OnTakeDamageProcessCallback(HealthComponent _healthComponent, DamageInfo _info); internal delegate void DamageReportCallback(DamageReport _report); internal delegate void OnAddBuffCallback(BuffIndex _buff, CharacterBody _character); internal delegate void OnAddTimedBuffCallback(BuffDef _buff, ref float _duration, CharacterBody _character); internal delegate void OnAddTimedBuffMaxStacksCallback(BuffDef _buff, ref float _duration, ref int _maxStacks, CharacterBody _character); internal delegate void OnExtendTimedBuffsCallback(BuffDef _buff, ref float _duration, ref float _max, CharacterBody _character); internal delegate void OnSetTimedBuffDurationCallback(BuffDef _buff, ref float _duration, bool _allStacks, CharacterBody _character); internal delegate void OnInflictDamageOverTimeCallback(GameObject _victimObject, GameObject _attackerObject, DotIndex _dotIndex, float _duration, float _damageMultiplier, uint? _maxStacksFromAttacker); internal delegate void OnInflictDamageOverTimeRefCallback(ref InflictDotInfo _inflictDotInfo); internal delegate void OnTransferItemCallback(Inventory _inventory, ItemIndex _index, int _count); internal delegate void OnTransferItemFloatCallback(Inventory _inventory, ItemIndex _index, float _count); internal delegate void OnInventoryCallback(Inventory _inventory); internal delegate void OnHealCallback(HealthComponent _healthComponent, ref float _amount, ref ProcChainMask _procChainMask, ref bool _nonRegen); internal delegate void CharacterBodyCallback(CharacterBody _body); internal delegate void OnPurchaseInteractionBeginCallback(PurchaseInteraction _shop, CharacterMaster _activator); internal delegate bool OnPurchaseCanBeAffordedCallback(PurchaseInteraction _shop, CharacterMaster _activator); internal delegate void InteractorCallback(Interactor _interactor); internal delegate void FaithfulInteractorCallback(FaithfulInteractableBehaviour _behaviour, Interactor _interactor); internal delegate void OnProcessJumpCallback(GenericCharacterMain _character); internal delegate void PlayerToPlayerCallback(PlayerCharacterMasterController _player1, PlayerCharacterMasterController _player2); internal delegate void PlayerHolderToPlayerCallback(int _count, PlayerCharacterMasterController _holder, PlayerCharacterMasterController _other); internal delegate void AllyHolderToAllyCallback(int _count, CharacterMaster _holder, CharacterMaster _other); internal delegate void GenericCharacterCallback(GenericCharacterMain _character); internal delegate void SceneDirectorCallback(SceneDirector _director); internal delegate void SceneExitControllerCallback(SceneExitController _exitController); internal static class Behaviour { [CompilerGenerated] private static class <>O { public static hook_Update <0>__HookHoldoutZoneControllerUpdate; public static hook_Start <1>__HookHoldoutZoneControllerStart; public static hook_Awake <2>__HookCharacterBodyAwake; public static hook_Start <3>__HookCharacterBodyStart; public static hook_AddBuff_BuffIndex <4>__HookAddBuffIndex; public static hook_AddTimedBuff_BuffDef_float <5>__HookAddTimedBuffDef; public static hook_AddTimedBuff_BuffDef_float_int <6>__HookAddTimedBuffDefMaxStacks; public static hook_ExtendTimedBuffIfPresent_BuffDef_float_float <7>__HookExtendTimedBuffs; public static hook_SetTimedBuffDurationIfPresent <8>__HookSetTimedBuffDuration; public static hook_GiveItemPermanent_ItemIndex_int <9>__HookServerGiveItemPermanent; public static hook_GiveItemTemp <10>__HookServerGiveItemTemporary; public static hook_RemoveItem_ItemIndex_int <11>__HookServerRemoveItem; public static hook_HandleInventoryChanged <12>__HookInventoryChanged; public static hook_RpcItemAdded <13>__HookItemAdded; public static hook_InflictDot_GameObject_GameObject_DotIndex_float_float_Nullable1 <14>__HookInflictDamageOverTime; public static hook_InflictDot_refInflictDotInfo <15>__HookInflictDamageOverTimeRef; public static hook_Awake <16>__HookHealthComponentAwake; public static hook_Heal <17>__HookHeal; public static hook_TakeDamageProcess <18>__HookTakeDamageProcess; public static hook_RecalculateStats <19>__HookRecalculateStats; public static hook_UpdateAllTemporaryVisualEffects <20>__HookUpdateVisualEffects; public static hook_FixedUpdate <21>__HookCharacterBodyFixedUpdate; public static hook_RollCrit <22>__HookCharacterBodyRollCrit; public static hook_OnInteractionBegin <23>__HookPurchaseInteractionBegin; public static hook_CanBeAffordedByInteractor <24>__HookPurchaseCanBeAfforded; public static hook_ProcessJump <25>__HookProcessJump; public static hook_FixedUpdate <26>__HookGenericCharacterFixedUpdate; public static hook_SetState <27>__HookSceneExitControllerSetState; public static hook_OnHitEnemy <28>__HookOnHitEnemy; public static StatHookEventHandler <29>__HookStatsMod; public static Action<DamageReport> <30>__HookOnDamageDealt; public static Action<DamageReport> <31>__HookOnCharacterDeath; public static Action<SceneDirector> <32>__HookPrePopulateScene; } private static bool enabled = false; internal static GameObject characterBodyHelperPrefab; private static List<Callback> updateCallbacks = new List<Callback>(); private static List<Callback> debugUpdateCallbacks = new List<Callback>(); private static List<Callback> fixedUpdateCallbacks = new List<Callback>(); private static List<Callback> debugFixedUpdateCallbacks = new List<Callback>(); private static List<InHoldoutZoneCallback> inHoldoutZoneCallbacks = new List<InHoldoutZoneCallback>(); private static List<OnHoldoutZoneStartCallback> onHoldoutZoneStartCallbacks = new List<OnHoldoutZoneStartCallback>(); private static List<OnHoldoutZoneCalcRadiusCallback> onHoldoutZoneCalcRadiusCallbacks = new List<OnHoldoutZoneCalcRadiusCallback>(); private static List<ItemStatsMod> itemStatsMods = new List<ItemStatsMod>(); private static List<BuffStatsMod> buffStatsMods = new List<BuffStatsMod>(); private static List<OnIncomingDamageCallback> onIncomingDamageCallbacks = new List<OnIncomingDamageCallback>(); private static List<OnHitEnemyCallback> onHitEnemyLateCallbacks = new List<OnHitEnemyCallback>(); private static List<OnTakeDamageProcessCallback> onTakeDamageProcessCallbacks = new List<OnTakeDamageProcessCallback>(); private static List<DamageReportCallback> onDamageDealtCallbacks = new List<DamageReportCallback>(); private static List<DamageReportCallback> onCharacterDeathCallbacks = new List<DamageReportCallback>(); private static List<OnAddBuffCallback> onAddBuffCallbacks = new List<OnAddBuffCallback>(); private static List<OnAddTimedBuffCallback> onAddTimedBuffCallbacks = new List<OnAddTimedBuffCallback>(); private static List<OnAddTimedBuffMaxStacksCallback> onAddTimedBuffMaxStacksCallbacks = new List<OnAddTimedBuffMaxStacksCallback>(); private static List<OnExtendTimedBuffsCallback> onExtendTimedBuffsCallbacks = new List<OnExtendTimedBuffsCallback>(); private static List<OnSetTimedBuffDurationCallback> onSetTimedBuffDurationCallbacks = new List<OnSetTimedBuffDurationCallback>(); private static List<OnInflictDamageOverTimeCallback> onInflictDamageOverTimeCallbacks = new List<OnInflictDamageOverTimeCallback>(); private static List<OnInflictDamageOverTimeRefCallback> onInflictDamageOverTimeRefCallbacks = new List<OnInflictDamageOverTimeRefCallback>(); private static List<OnTransferItemCallback> onGiveItemPermanentCallbacks = new List<OnTransferItemCallback>(); private static List<OnTransferItemCallback> onGiveItemPermanentLateCallbacks = new List<OnTransferItemCallback>(); private static List<OnTransferItemFloatCallback> onGiveItemTemporaryCallbacks = new List<OnTransferItemFloatCallback>(); private static List<OnTransferItemFloatCallback> onGiveItemTemporaryLateCallbacks = new List<OnTransferItemFloatCallback>(); private static List<OnTransferItemCallback> onRemoveItemCallbacks = new List<OnTransferItemCallback>(); private static List<OnInventoryCallback> onInventoryChangedCallbacks = new List<OnInventoryCallback>(); private static Dictionary<ItemDef, List<OnInventoryCallback>> onItemAddedCallbacks = new Dictionary<ItemDef, List<OnInventoryCallback>>(); private static List<OnHealCallback> onHealCallbacks = new List<OnHealCallback>(); private static List<CharacterBodyCallback> onCharacterBodyAwakeCallbacks = new List<CharacterBodyCallback>(); private static List<CharacterBodyCallback> onCharacterBodyStartCallbacks = new List<CharacterBodyCallback>(); private static List<CharacterBodyCallback> onRecalculateStatsCallbacks = new List<CharacterBodyCallback>(); private static List<CharacterBodyCallback> onUpdateVisualEffectsCallbacks = new List<CharacterBodyCallback>(); private static List<CharacterBodyCallback> onCharacterBodyFixedUpdateCallbacks = new List<CharacterBodyCallback>(); private static Dictionary<float, CharacterBodyCallback> onCharacterBodyTickCallbacks = new Dictionary<float, CharacterBodyCallback>(); private static List<OnPurchaseInteractionBeginCallback> onPurchaseInteractionBeginCallbacks = new List<OnPurchaseInteractionBeginCallback>(); private static List<OnPurchaseCanBeAffordedCallback> onPurchaseCanBeAffordedCallbacks = new List<OnPurchaseCanBeAffordedCallback>(); private static List<OnProcessJumpCallback> onProcessJumpCallbacks = new List<OnProcessJumpCallback>(); private static List<PlayerToPlayerCallback> playerToPlayerCallbacks = new List<PlayerToPlayerCallback>(); private static List<PlayerItemToPlayer> playerItemToPlayerCallbacks = new List<PlayerItemToPlayer>(); private static List<PlayerBuffToPlayer> playerBuffToPlayerCallbacks = new List<PlayerBuffToPlayer>(); private static List<AllyItemToAlly> allyItemToAllyCallbacks = new List<AllyItemToAlly>(); private static List<AllyBuffToAlly> allyBuffToAllyCallbacks = new List<AllyBuffToAlly>(); private static List<GenericCharacterCallback> genericCharacterFixedUpdateCallbacks = new List<GenericCharacterCallback>(); private static List<SceneDirectorCallback> onPrePopulateSceneCallbacks = new List<SceneDirectorCallback>(); private static List<SceneExitControllerCallback> onPreSceneExitCallbacks = new List<SceneExitControllerCallback>(); private static Dictionary<CharacterBody, int> critOverrideCounts = new Dictionary<CharacterBody, int>(); public static void Init() { CreatePrefabs(); Enable(); DebugLog("Behaviour initialised"); } public static void Enable() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_0046: 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_0051: Expected O, but got Unknown //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_0072: Expected O, but got Unknown //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Expected O, but got Unknown //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Expected O, but got Unknown //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Expected O, but got Unknown //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Expected O, but got Unknown //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Expected O, but got Unknown //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Expected O, but got Unknown //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) //IL_017a: Expected O, but got Unknown //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Expected O, but got Unknown //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Expected O, but got Unknown //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Expected O, but got Unknown //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Expected O, but got Unknown //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Expected O, but got Unknown //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Unknown result type (might be due to invalid IL or missing references) //IL_0240: Expected O, but got Unknown //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_025b: Unknown result type (might be due to invalid IL or missing references) //IL_0261: Expected O, but got Unknown //IL_0277: Unknown result type (might be due to invalid IL or missing references) //IL_027c: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Expected O, but got Unknown //IL_0298: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02a3: Expected O, but got Unknown //IL_02b9: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c4: Expected O, but got Unknown //IL_02da: Unknown result type (might be due to invalid IL or missing references) //IL_02df: Unknown result type (might be due to invalid IL or missing references) //IL_02e5: Expected O, but got Unknown //IL_02fb: Unknown result type (might be due to invalid IL or missing references) //IL_0300: Unknown result type (might be due to invalid IL or missing references) //IL_0306: Expected O, but got Unknown //IL_031c: Unknown result type (might be due to invalid IL or missing references) //IL_0321: Unknown result type (might be due to invalid IL or missing references) //IL_0327: Expected O, but got Unknown //IL_033d: Unknown result type (might be due to invalid IL or missing references) //IL_0342: Unknown result type (might be due to invalid IL or missing references) //IL_0348: Expected O, but got Unknown //IL_035e: Unknown result type (might be due to invalid IL or missing references) //IL_0363: Unknown result type (might be due to invalid IL or missing references) //IL_0369: Expected O, but got Unknown //IL_037f: Unknown result type (might be due to invalid IL or missing references) //IL_0384: Unknown result type (might be due to invalid IL or missing references) //IL_038a: Expected O, but got Unknown //IL_03a0: Unknown result type (might be due to invalid IL or missing references) //IL_03a5: Unknown result type (might be due to invalid IL or missing references) //IL_03ab: Expected O, but got Unknown //IL_03c1: Unknown result type (might be due to invalid IL or missing references) //IL_03c6: Unknown result type (might be due to invalid IL or missing references) //IL_03cc: Expected O, but got Unknown //IL_03e2: Unknown result type (might be due to invalid IL or missing references) //IL_03e7: Unknown result type (might be due to invalid IL or missing references) //IL_03ed: Expected O, but got Unknown if (!enabled) { enabled = true; object obj = <>O.<0>__HookHoldoutZoneControllerUpdate; if (obj == null) { hook_Update val = HookHoldoutZoneControllerUpdate; <>O.<0>__HookHoldoutZoneControllerUpdate = val; obj = (object)val; } HoldoutZoneController.Update += (hook_Update)obj; object obj2 = <>O.<1>__HookHoldoutZoneControllerStart; if (obj2 == null) { hook_Start val2 = HookHoldoutZoneControllerStart; <>O.<1>__HookHoldoutZoneControllerStart = val2; obj2 = (object)val2; } HoldoutZoneController.Start += (hook_Start)obj2; object obj3 = <>O.<2>__HookCharacterBodyAwake; if (obj3 == null) { hook_Awake val3 = HookCharacterBodyAwake; <>O.<2>__HookCharacterBodyAwake = val3; obj3 = (object)val3; } CharacterBody.Awake += (hook_Awake)obj3; object obj4 = <>O.<3>__HookCharacterBodyStart; if (obj4 == null) { hook_Start val4 = HookCharacterBodyStart; <>O.<3>__HookCharacterBodyStart = val4; obj4 = (object)val4; } CharacterBody.Start += (hook_Start)obj4; object obj5 = <>O.<4>__HookAddBuffIndex; if (obj5 == null) { hook_AddBuff_BuffIndex val5 = HookAddBuffIndex; <>O.<4>__HookAddBuffIndex = val5; obj5 = (object)val5; } CharacterBody.AddBuff_BuffIndex += (hook_AddBuff_BuffIndex)obj5; object obj6 = <>O.<5>__HookAddTimedBuffDef; if (obj6 == null) { hook_AddTimedBuff_BuffDef_float val6 = HookAddTimedBuffDef; <>O.<5>__HookAddTimedBuffDef = val6; obj6 = (object)val6; } CharacterBody.AddTimedBuff_BuffDef_float += (hook_AddTimedBuff_BuffDef_float)obj6; object obj7 = <>O.<6>__HookAddTimedBuffDefMaxStacks; if (obj7 == null) { hook_AddTimedBuff_BuffDef_float_int val7 = HookAddTimedBuffDefMaxStacks; <>O.<6>__HookAddTimedBuffDefMaxStacks = val7; obj7 = (object)val7; } CharacterBody.AddTimedBuff_BuffDef_float_int += (hook_AddTimedBuff_BuffDef_float_int)obj7; object obj8 = <>O.<7>__HookExtendTimedBuffs; if (obj8 == null) { hook_ExtendTimedBuffIfPresent_BuffDef_float_float val8 = HookExtendTimedBuffs; <>O.<7>__HookExtendTimedBuffs = val8; obj8 = (object)val8; } CharacterBody.ExtendTimedBuffIfPresent_BuffDef_float_float += (hook_ExtendTimedBuffIfPresent_BuffDef_float_float)obj8; object obj9 = <>O.<8>__HookSetTimedBuffDuration; if (obj9 == null) { hook_SetTimedBuffDurationIfPresent val9 = HookSetTimedBuffDuration; <>O.<8>__HookSetTimedBuffDuration = val9; obj9 = (object)val9; } CharacterBody.SetTimedBuffDurationIfPresent += (hook_SetTimedBuffDurationIfPresent)obj9; object obj10 = <>O.<9>__HookServerGiveItemPermanent; if (obj10 == null) { hook_GiveItemPermanent_ItemIndex_int val10 = HookServerGiveItemPermanent; <>O.<9>__HookServerGiveItemPermanent = val10; obj10 = (object)val10; } Inventory.GiveItemPermanent_ItemIndex_int += (hook_GiveItemPermanent_ItemIndex_int)obj10; object obj11 = <>O.<10>__HookServerGiveItemTemporary; if (obj11 == null) { hook_GiveItemTemp val11 = HookServerGiveItemTemporary; <>O.<10>__HookServerGiveItemTemporary = val11; obj11 = (object)val11; } Inventory.GiveItemTemp += (hook_GiveItemTemp)obj11; object obj12 = <>O.<11>__HookServerRemoveItem; if (obj12 == null) { hook_RemoveItem_ItemIndex_int val12 = HookServerRemoveItem; <>O.<11>__HookServerRemoveItem = val12; obj12 = (object)val12; } Inventory.RemoveItem_ItemIndex_int += (hook_RemoveItem_ItemIndex_int)obj12; object obj13 = <>O.<12>__HookInventoryChanged; if (obj13 == null) { hook_HandleInventoryChanged val13 = HookInventoryChanged; <>O.<12>__HookInventoryChanged = val13; obj13 = (object)val13; } Inventory.HandleInventoryChanged += (hook_HandleInventoryChanged)obj13; object obj14 = <>O.<13>__HookItemAdded; if (obj14 == null) { hook_RpcItemAdded val14 = HookItemAdded; <>O.<13>__HookItemAdded = val14; obj14 = (object)val14; } Inventory.RpcItemAdded += (hook_RpcItemAdded)obj14; object obj15 = <>O.<14>__HookInflictDamageOverTime; if (obj15 == null) { hook_InflictDot_GameObject_GameObject_DotIndex_float_float_Nullable1 val15 = HookInflictDamageOverTime; <>O.<14>__HookInflictDamageOverTime = val15; obj15 = (object)val15; } DotController.InflictDot_GameObject_GameObject_DotIndex_float_float_Nullable1 += (hook_InflictDot_GameObject_GameObject_DotIndex_float_float_Nullable1)obj15; object obj16 = <>O.<15>__HookInflictDamageOverTimeRef; if (obj16 == null) { hook_InflictDot_refInflictDotInfo val16 = HookInflictDamageOverTimeRef; <>O.<15>__HookInflictDamageOverTimeRef = val16; obj16 = (object)val16; } DotController.InflictDot_refInflictDotInfo += (hook_InflictDot_refInflictDotInfo)obj16; object obj17 = <>O.<16>__HookHealthComponentAwake; if (obj17 == null) { hook_Awake val17 = HookHealthComponentAwake; <>O.<16>__HookHealthComponentAwake = val17; obj17 = (object)val17; } HealthComponent.Awake += (hook_Awake)obj17; object obj18 = <>O.<17>__HookHeal; if (obj18 == null) { hook_Heal val18 = HookHeal; <>O.<17>__HookHeal = val18; obj18 = (object)val18; } HealthComponent.Heal += (hook_Heal)obj18; object obj19 = <>O.<18>__HookTakeDamageProcess; if (obj19 == null) { hook_TakeDamageProcess val19 = HookTakeDamageProcess; <>O.<18>__HookTakeDamageProcess = val19; obj19 = (object)val19; } HealthComponent.TakeDamageProcess += (hook_TakeDamageProcess)obj19; object obj20 = <>O.<19>__HookRecalculateStats; if (obj20 == null) { hook_RecalculateStats val20 = HookRecalculateStats; <>O.<19>__HookRecalculateStats = val20; obj20 = (object)val20; } CharacterBody.RecalculateStats += (hook_RecalculateStats)obj20; object obj21 = <>O.<20>__HookUpdateVisualEffects; if (obj21 == null) { hook_UpdateAllTemporaryVisualEffects val21 = HookUpdateVisualEffects; <>O.<20>__HookUpdateVisualEffects = val21; obj21 = (object)val21; } CharacterBody.UpdateAllTemporaryVisualEffects += (hook_UpdateAllTemporaryVisualEffects)obj21; object obj22 = <>O.<21>__HookCharacterBodyFixedUpdate; if (obj22 == null) { hook_FixedUpdate val22 = HookCharacterBodyFixedUpdate; <>O.<21>__HookCharacterBodyFixedUpdate = val22; obj22 = (object)val22; } CharacterBody.FixedUpdate += (hook_FixedUpdate)obj22; object obj23 = <>O.<22>__HookCharacterBodyRollCrit; if (obj23 == null) { hook_RollCrit val23 = HookCharacterBodyRollCrit; <>O.<22>__HookCharacterBodyRollCrit = val23; obj23 = (object)val23; } CharacterBody.RollCrit += (hook_RollCrit)obj23; object obj24 = <>O.<23>__HookPurchaseInteractionBegin; if (obj24 == null) { hook_OnInteractionBegin val24 = HookPurchaseInteractionBegin; <>O.<23>__HookPurchaseInteractionBegin = val24; obj24 = (object)val24; } PurchaseInteraction.OnInteractionBegin += (hook_OnInteractionBegin)obj24; object obj25 = <>O.<24>__HookPurchaseCanBeAfforded; if (obj25 == null) { hook_CanBeAffordedByInteractor val25 = HookPurchaseCanBeAfforded; <>O.<24>__HookPurchaseCanBeAfforded = val25; obj25 = (object)val25; } PurchaseInteraction.CanBeAffordedByInteractor += (hook_CanBeAffordedByInteractor)obj25; object obj26 = <>O.<25>__HookProcessJump; if (obj26 == null) { hook_ProcessJump val26 = HookProcessJump; <>O.<25>__HookProcessJump = val26; obj26 = (object)val26; } GenericCharacterMain.ProcessJump += (hook_ProcessJump)obj26; object obj27 = <>O.<26>__HookGenericCharacterFixedUpdate; if (obj27 == null) { hook_FixedUpdate val27 = HookGenericCharacterFixedUpdate; <>O.<26>__HookGenericCharacterFixedUpdate = val27; obj27 = (object)val27; } GenericCharacterMain.FixedUpdate += (hook_FixedUpdate)obj27; object obj28 = <>O.<27>__HookSceneExitControllerSetState; if (obj28 == null) { hook_SetState val28 = HookSceneExitControllerSetState; <>O.<27>__HookSceneExitControllerSetState = val28; obj28 = (object)val28; } SceneExitController.SetState += (hook_SetState)obj28; object obj29 = <>O.<28>__HookOnHitEnemy; if (obj29 == null) { hook_OnHitEnemy val29 = HookOnHitEnemy; <>O.<28>__HookOnHitEnemy = val29; obj29 = (object)val29; } GlobalEventManager.OnHitEnemy += (hook_OnHitEnemy)obj29; object obj30 = <>O.<29>__HookStatsMod; if (obj30 == null) { StatHookEventHandler val30 = HookStatsMod; <>O.<29>__HookStatsMod = val30; obj30 = (object)val30; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj30; GlobalEventManager.onServerDamageDealt += HookOnDamageDealt; GlobalEventManager.onCharacterDeathGlobal += HookOnCharacterDeath; SceneDirector.onPrePopulateSceneServer += HookPrePopulateScene; } } public static void Disable() { //IL_0028: 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_0033: Expected O, but got Unknown //IL_0049: 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_0054: Expected O, but got Unknown //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Expected O, but got Unknown //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Expected O, but got Unknown //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Expected O, but got Unknown //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_00d8: Expected O, but got Unknown //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Expected O, but got Unknown //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Expected O, but got Unknown //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Expected O, but got Unknown //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Expected O, but got Unknown //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Expected O, but got Unknown //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Expected O, but got Unknown //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Expected O, but got Unknown //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Expected O, but got Unknown //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Expected O, but got Unknown //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Expected O, but got Unknown //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Expected O, but got Unknown //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_025e: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Expected O, but got Unknown //IL_027a: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Expected O, but got Unknown //IL_029b: Unknown result type (might be due to invalid IL or missing references) //IL_02a0: Unknown result type (might be due to invalid IL or missing references) //IL_02a6: Expected O, but got Unknown //IL_02bc: Unknown result type (might be due to invalid IL or missing references) //IL_02c1: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Expected O, but got Unknown //IL_02dd: Unknown result type (might be due to invalid IL or missing references) //IL_02e2: Unknown result type (might be due to invalid IL or missing references) //IL_02e8: Expected O, but got Unknown //IL_02fe: Unknown result type (might be due to invalid IL or missing references) //IL_0303: Unknown result type (might be due to invalid IL or missing references) //IL_0309: Expected O, but got Unknown //IL_031f: Unknown result type (might be due to invalid IL or missing references) //IL_0324: Unknown result type (might be due to invalid IL or missing references) //IL_032a: Expected O, but got Unknown //IL_0340: Unknown result type (might be due to invalid IL or missing references) //IL_0345: Unknown result type (might be due to invalid IL or missing references) //IL_034b: Expected O, but got Unknown //IL_0361: Unknown result type (might be due to invalid IL or missing references) //IL_0366: Unknown result type (might be due to invalid IL or missing references) //IL_036c: Expected O, but got Unknown //IL_0382: Unknown result type (might be due to invalid IL or missing references) //IL_0387: Unknown result type (might be due to invalid IL or missing references) //IL_038d: Expected O, but got Unknown if (enabled) { enabled = false; object obj = <>O.<0>__HookHoldoutZoneControllerUpdate; if (obj == null) { hook_Update val = HookHoldoutZoneControllerUpdate; <>O.<0>__HookHoldoutZoneControllerUpdate = val; obj = (object)val; } HoldoutZoneController.Update -= (hook_Update)obj; object obj2 = <>O.<1>__HookHoldoutZoneControllerStart; if (obj2 == null) { hook_Start val2 = HookHoldoutZoneControllerStart; <>O.<1>__HookHoldoutZoneControllerStart = val2; obj2 = (object)val2; } HoldoutZoneController.Start -= (hook_Start)obj2; object obj3 = <>O.<2>__HookCharacterBodyAwake; if (obj3 == null) { hook_Awake val3 = HookCharacterBodyAwake; <>O.<2>__HookCharacterBodyAwake = val3; obj3 = (object)val3; } CharacterBody.Awake -= (hook_Awake)obj3; object obj4 = <>O.<3>__HookCharacterBodyStart; if (obj4 == null) { hook_Start val4 = HookCharacterBodyStart; <>O.<3>__HookCharacterBodyStart = val4; obj4 = (object)val4; } CharacterBody.Start -= (hook_Start)obj4; object obj5 = <>O.<4>__HookAddBuffIndex; if (obj5 == null) { hook_AddBuff_BuffIndex val5 = HookAddBuffIndex; <>O.<4>__HookAddBuffIndex = val5; obj5 = (object)val5; } CharacterBody.AddBuff_BuffIndex -= (hook_AddBuff_BuffIndex)obj5; object obj6 = <>O.<5>__HookAddTimedBuffDef; if (obj6 == null) { hook_AddTimedBuff_BuffDef_float val6 = HookAddTimedBuffDef; <>O.<5>__HookAddTimedBuffDef = val6; obj6 = (object)val6; } CharacterBody.AddTimedBuff_BuffDef_float -= (hook_AddTimedBuff_BuffDef_float)obj6; object obj7 = <>O.<6>__HookAddTimedBuffDefMaxStacks; if (obj7 == null) { hook_AddTimedBuff_BuffDef_float_int val7 = HookAddTimedBuffDefMaxStacks; <>O.<6>__HookAddTimedBuffDefMaxStacks = val7; obj7 = (object)val7; } CharacterBody.AddTimedBuff_BuffDef_float_int -= (hook_AddTimedBuff_BuffDef_float_int)obj7; object obj8 = <>O.<7>__HookExtendTimedBuffs; if (obj8 == null) { hook_ExtendTimedBuffIfPresent_BuffDef_float_float val8 = HookExtendTimedBuffs; <>O.<7>__HookExtendTimedBuffs = val8; obj8 = (object)val8; } CharacterBody.ExtendTimedBuffIfPresent_BuffDef_float_float -= (hook_ExtendTimedBuffIfPresent_BuffDef_float_float)obj8; object obj9 = <>O.<8>__HookSetTimedBuffDuration; if (obj9 == null) { hook_SetTimedBuffDurationIfPresent val9 = HookSetTimedBuffDuration; <>O.<8>__HookSetTimedBuffDuration = val9; obj9 = (object)val9; } CharacterBody.SetTimedBuffDurationIfPresent -= (hook_SetTimedBuffDurationIfPresent)obj9; object obj10 = <>O.<9>__HookServerGiveItemPermanent; if (obj10 == null) { hook_GiveItemPermanent_ItemIndex_int val10 = HookServerGiveItemPermanent; <>O.<9>__HookServerGiveItemPermanent = val10; obj10 = (object)val10; } Inventory.GiveItemPermanent_ItemIndex_int -= (hook_GiveItemPermanent_ItemIndex_int)obj10; object obj11 = <>O.<11>__HookServerRemoveItem; if (obj11 == null) { hook_RemoveItem_ItemIndex_int val11 = HookServerRemoveItem; <>O.<11>__HookServerRemoveItem = val11; obj11 = (object)val11; } Inventory.RemoveItem_ItemIndex_int -= (hook_RemoveItem_ItemIndex_int)obj11; object obj12 = <>O.<12>__HookInventoryChanged; if (obj12 == null) { hook_HandleInventoryChanged val12 = HookInventoryChanged; <>O.<12>__HookInventoryChanged = val12; obj12 = (object)val12; } Inventory.HandleInventoryChanged -= (hook_HandleInventoryChanged)obj12; object obj13 = <>O.<13>__HookItemAdded; if (obj13 == null) { hook_RpcItemAdded val13 = HookItemAdded; <>O.<13>__HookItemAdded = val13; obj13 = (object)val13; } Inventory.RpcItemAdded -= (hook_RpcItemAdded)obj13; object obj14 = <>O.<14>__HookInflictDamageOverTime; if (obj14 == null) { hook_InflictDot_GameObject_GameObject_DotIndex_float_float_Nullable1 val14 = HookInflictDamageOverTime; <>O.<14>__HookInflictDamageOverTime = val14; obj14 = (object)val14; } DotController.InflictDot_GameObject_GameObject_DotIndex_float_float_Nullable1 -= (hook_InflictDot_GameObject_GameObject_DotIndex_float_float_Nullable1)obj14; object obj15 = <>O.<15>__HookInflictDamageOverTimeRef; if (obj15 == null) { hook_InflictDot_refInflictDotInfo val15 = HookInflictDamageOverTimeRef; <>O.<15>__HookInflictDamageOverTimeRef = val15; obj15 = (object)val15; } DotController.InflictDot_refInflictDotInfo -= (hook_InflictDot_refInflictDotInfo)obj15; object obj16 = <>O.<16>__HookHealthComponentAwake; if (obj16 == null) { hook_Awake val16 = HookHealthComponentAwake; <>O.<16>__HookHealthComponentAwake = val16; obj16 = (object)val16; } HealthComponent.Awake -= (hook_Awake)obj16; object obj17 = <>O.<17>__HookHeal; if (obj17 == null) { hook_Heal val17 = HookHeal; <>O.<17>__HookHeal = val17; obj17 = (object)val17; } HealthComponent.Heal -= (hook_Heal)obj17; object obj18 = <>O.<18>__HookTakeDamageProcess; if (obj18 == null) { hook_TakeDamageProcess val18 = HookTakeDamageProcess; <>O.<18>__HookTakeDamageProcess = val18; obj18 = (object)val18; } HealthComponent.TakeDamageProcess -= (hook_TakeDamageProcess)obj18; object obj19 = <>O.<19>__HookRecalculateStats; if (obj19 == null) { hook_RecalculateStats val19 = HookRecalculateStats; <>O.<19>__HookRecalculateStats = val19; obj19 = (object)val19; } CharacterBody.RecalculateStats -= (hook_RecalculateStats)obj19; object obj20 = <>O.<20>__HookUpdateVisualEffects; if (obj20 == null) { hook_UpdateAllTemporaryVisualEffects val20 = HookUpdateVisualEffects; <>O.<20>__HookUpdateVisualEffects = val20; obj20 = (object)val20; } CharacterBody.UpdateAllTemporaryVisualEffects -= (hook_UpdateAllTemporaryVisualEffects)obj20; object obj21 = <>O.<21>__HookCharacterBodyFixedUpdate; if (obj21 == null) { hook_FixedUpdate val21 = HookCharacterBodyFixedUpdate; <>O.<21>__HookCharacterBodyFixedUpdate = val21; obj21 = (object)val21; } CharacterBody.FixedUpdate -= (hook_FixedUpdate)obj21; object obj22 = <>O.<23>__HookPurchaseInteractionBegin; if (obj22 == null) { hook_OnInteractionBegin val22 = HookPurchaseInteractionBegin; <>O.<23>__HookPurchaseInteractionBegin = val22; obj22 = (object)val22; } PurchaseInteraction.OnInteractionBegin -= (hook_OnInteractionBegin)obj22; object obj23 = <>O.<24>__HookPurchaseCanBeAfforded; if (obj23 == null) { hook_CanBeAffordedByInteractor val23 = HookPurchaseCanBeAfforded; <>O.<24>__HookPurchaseCanBeAfforded = val23; obj23 = (object)val23; } PurchaseInteraction.CanBeAffordedByInteractor -= (hook_CanBeAffordedByInteractor)obj23; object obj24 = <>O.<25>__HookProcessJump; if (obj24 == null) { hook_ProcessJump val24 = HookProcessJump; <>O.<25>__HookProcessJump = val24; obj24 = (object)val24; } GenericCharacterMain.ProcessJump -= (hook_ProcessJump)obj24; object obj25 = <>O.<26>__HookGenericCharacterFixedUpdate; if (obj25 == null) { hook_FixedUpdate val25 = HookGenericCharacterFixedUpdate; <>O.<26>__HookGenericCharacterFixedUpdate = val25; obj25 = (object)val25; } GenericCharacterMain.FixedUpdate -= (hook_FixedUpdate)obj25; object obj26 = <>O.<28>__HookOnHitEnemy; if (obj26 == null) { hook_OnHitEnemy val26 = HookOnHitEnemy; <>O.<28>__HookOnHitEnemy = val26; obj26 = (object)val26; } GlobalEventManager.OnHitEnemy -= (hook_OnHitEnemy)obj26; object obj27 = <>O.<29>__HookStatsMod; if (obj27 == null) { StatHookEventHandler val27 = HookStatsMod; <>O.<29>__HookStatsMod = val27; obj27 = (object)val27; } RecalculateStatsAPI.GetStatCoefficients -= (StatHookEventHandler)obj27; GlobalEventManager.onServerDamageDealt -= HookOnDamageDealt; GlobalEventManager.onCharacterDeathGlobal -= HookOnCharacterDeath; SceneDirector.onPrePopulateSceneServer -= HookPrePopulateScene; } } private static void CreatePrefabs() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown GameObject val = new GameObject("temp GO"); val.AddComponent<NetworkIdentity>(); characterBodyHelperPrefab = PrefabAPI.InstantiateClone(val, "faithfulCharacterBodyHelper"); Object.Destroy((Object)(object)val); characterBodyHelperPrefab.AddComponent<FaithfulCharacterBodyBehaviour>(); characterBodyHelperPrefab.AddComponent<FaithfulTJetpackBehaviour>(); characterBodyHelperPrefab.AddComponent<FaithfulLeadersPennonBehaviour>(); characterBodyHelperPrefab.AddComponent<FaithfulLongshotGeodeBehaviour>(); characterBodyHelperPrefab.AddComponent<FaithfulTargetingMatrixBehaviour>(); characterBodyHelperPrefab.AddComponent<FaithfulHermitsShawlBehaviour>(); } public static void Update() { foreach (Callback updateCallback in updateCallbacks) { updateCallback(); } if (!Utils.debugMode) { return; } foreach (Callback debugUpdateCallback in debugUpdateCallbacks) { debugUpdateCallback(); } } public static void FixedUpdate() { foreach (Callback fixedUpdateCallback in fixedUpdateCallbacks) { fixedUpdateCallback(); } if (Utils.debugMode) { foreach (Callback debugFixedUpdateCallback in debugFixedUpdateCallbacks) { debugFixedUpdateCallback(); } } PlayerOnPlayerFixedUpdate(); AllyOnAllyFixedUpdate(); } public static void OverrideCritCheck(CharacterBody _body, int _count = 1) { if (critOverrideCounts.ContainsKey(_body)) { critOverrideCounts[_body] += _count; } else { critOverrideCounts.Add(_body, _count); } } public static void AddUpdateCallback(Callback _callback, bool _debugOnly = false) { if (_debugOnly) { debugUpdateCallbacks.Add(_callback); } else { updateCallbacks.Add(_callback); } } public static void AddFixedUpdateCallback(Callback _callback, bool _debugOnly = false) { if (_debugOnly) { debugFixedUpdateCallbacks.Add(_callback); } else { fixedUpdateCallbacks.Add(_callback); } } public static void AddStatsMod(Item _item, StatsModCallback _callback) { itemStatsMods.Add(new ItemStatsMod(_item, _callback)); DebugLog("Added stat mods for '" + _item.token + "' item"); } public static void AddStatsMod(Buff _buff, StatsModCallback _callback) { buffStatsMods.Add(new BuffStatsMod(_buff, _callback)); DebugLog("Added stat mods for '" + _buff.token + "' buff"); } public static void AddInHoldoutZoneCallback(InHoldoutZoneCallback _callback) { inHoldoutZoneCallbacks.Add(_callback); DebugLog("Added in Holdout Zone behaviour"); } public static void AddOnHoldoutZoneStartCallback(OnHoldoutZoneStartCallback _callback) { onHoldoutZoneStartCallbacks.Add(_callback); DebugLog("Added on Holdout Zone start behaviour"); } public static void AddOnHoldoutZoneCalcRadiusCallback(OnHoldoutZoneCalcRadiusCallback _callback) { onHoldoutZoneCalcRadiusCallbacks.Add(_callback); DebugLog("Added on Holdout Zone calc radius behaviour"); } public static void AddPlayerToPlayerCallback(PlayerToPlayerCallback _callback) { playerToPlayerCallbacks.Add(_callback); DebugLog("Added Player to Player behaviour"); } public static void AddPlayerToPlayerCallback(Item _requiredItem, PlayerHolderToPlayerCallback _callback) { playerItemToPlayerCallbacks.Add(new PlayerItemToPlayer(_requiredItem, _callback)); DebugLog("Added Player to Player behaviour"); } public static void AddPlayerToPlayerCallback(Buff _requiredBuff, PlayerHolderToPlayerCallback _callback) { playerBuffToPlayerCallbacks.Add(new PlayerBuffToPlayer(_requiredBuff, _callback)); DebugLog("Added Player to Player behaviour"); } public static void AddAllyToAllyCallback(Item _requiredItem, AllyHolderToAllyCallback _callback) { allyItemToAllyCallbacks.Add(new AllyItemToAlly(_requiredItem, _callback)); DebugLog("Added Ally to Ally behaviour"); } public static void AddAllyToAllyCallback(Buff _requiredBuff, AllyHolderToAllyCallback _callback) { allyBuffToAllyCallbacks.Add(new AllyBuffToAlly(_requiredBuff, _callback)); DebugLog("Added Ally to Ally behaviour"); } public static void AddOnIncomingDamageCallback(OnIncomingDamageCallback _callback) { onIncomingDamageCallbacks.Add(_callback); DebugLog("Added On Incoming Damage behaviour"); } public static void AddOnHitEnemyLateCallback(OnHitEnemyCallback _callback) { onHitEnemyLateCallbacks.Add(_callback); DebugLog("Added On Hit Enemy Late behaviour"); } public static void AddOnTakeDamageProcessCallback(OnTakeDamageProcessCallback _callback) { onTakeDamageProcessCallbacks.Add(_callback); DebugLog("Added On Take Damage Process behaviour"); } public static void AddOnDamageDealtCallback(DamageReportCallback _callback) { onDamageDealtCallbacks.Add(_callback); DebugLog("Added On Damage Dealt behaviour"); } public static void AddOnCharacterDeathCallback(DamageReportCallback _callback) { onCharacterDeathCallbacks.Add(_callback); DebugLog("Added On Character Death behaviour"); } public static void AddOnAddBuffCallback(OnAddBuffCallback _callback) { onAddBuffCallbacks.Add(_callback); DebugLog("Added On Add Buff behaviour"); } public static void AddOnAddTimedBuffCallback(OnAddTimedBuffCallback _callback) { onAddTimedBuffCallbacks.Add(_callback); DebugLog("Added On Add Timed Buff behaviour"); } public static void AddOnAddTimedBuffMaxStacksCallback(OnAddTimedBuffMaxStacksCallback _callback) { onAddTimedBuffMaxStacksCallbacks.Add(_callback); DebugLog("Added On Add Timed Buff Max Stacks behaviour"); } public static void AddOnExtendTimedBuffsCallback(OnExtendTimedBuffsCallback _callback) { onExtendTimedBuffsCallbacks.Add(_callback); DebugLog("Added On Extend Timed Buffs behaviour"); } public static void AddOnSetTimedBuffDurationCallback(OnSetTimedBuffDurationCallback _callback) { onSetTimedBuffDurationCallbacks.Add(_callback); DebugLog("Added On Set Timed Buff Duration behaviour"); } public static void AddOnInflictDamageOverTimeCallback(OnInflictDamageOverTimeCallback _callback) { onInflictDamageOverTimeCallbacks.Add(_callback); DebugLog("Added On Inflict Damage Over Time behaviour"); } public static void AddOnInflictDamageOverTimeRefCallback(OnInflictDamageOverTimeRefCallback _callback) { onInflictDamageOverTimeRefCallbacks.Add(_callback); DebugLog("Added On Inflict Damage Over Time Ref behaviour"); } public static void AddServerOnGiveItemPermanentCallback(OnTransferItemCallback _callback) { onGiveItemPermanentCallbacks.Add(_callback); DebugLog("Added On Give Item Permanent behaviour"); } public static void AddServerOnGiveItemPermanentLateCallback(OnTransferItemCallback _callback) { onGiveItemPermanentLateCallbacks.Add(_callback); DebugLog("Added On Give Item Permanent Late behaviour"); } public static void AddServerOnGiveItemTemporaryCallback(OnTransferItemFloatCallback _callback) { onGiveItemTemporaryCallbacks.Add(_callback); DebugLog("Added On Give Item Temporary behaviour"); } public static void AddServerOnGiveItemTemporaryLateCallback(OnTransferItemFloatCallback _callback) { onGiveItemTemporaryLateCallbacks.Add(_callback); DebugLog("Added On Give Item Temporary Late behaviour"); } public static void AddServerOnRemoveItemCallback(OnTransferItemCallback _callback) { onRemoveItemCallbacks.Add(_callback); DebugLog("Added On Remove Item behaviour"); } public static void AddOnInventoryChangedCallback(OnInventoryCallback _callback) { onInventoryChangedCallbacks.Add(_callback); DebugLog("Added On Inventory Changed behaviour"); } public static void RemoveOnInventoryChangedCallback(OnInventoryCallback _callback) { onInventoryChangedCallbacks.Remove(_callback); DebugLog("Removed On Inventory Changed behaviour"); } public static void AddOnItemAddedCallback(ItemDef _itemDef, OnInventoryCallback _callback) { if (onItemAddedCallbacks.ContainsKey(_itemDef)) { onItemAddedCallbacks[_itemDef].Add(_callback); } else { onItemAddedCallbacks[_itemDef] = new List<OnInventoryCallback> { _callback }; } DebugLog("Added On Item Added behaviour"); } public static void RemoveOnItemAddedCallback(ItemDef _itemDef, OnInventoryCallback _callback) { if (onItemAddedCallbacks.ContainsKey(_itemDef)) { onItemAddedCallbacks[_itemDef].Remove(_callback); if (onItemAddedCallbacks[_itemDef].Count == 0) { onItemAddedCallbacks.Remove(_itemDef); } DebugLog("Removed On Item Added behaviour"); } } public static void AddOnHealCallback(OnHealCallback _callback) { onHealCallbacks.Add(_callback); DebugLog("Added On Heal behaviour"); } public static void AddOnCharacterBodyAwakeCallback(CharacterBodyCallback _callback) { onCharacterBodyAwakeCallbacks.Add(_callback); DebugLog("Added On Character Body Awake behaviour"); } public static void AddOnCharacterBodyStartCallback(CharacterBodyCallback _callback) { onCharacterBodyStartCallbacks.Add(_callback); DebugLog("Added On Character Body Start behaviour"); } public static void AddOnRecalculateStatsCallback(CharacterBodyCallback _callback) { onRecalculateStatsCallbacks.Add(_callback); DebugLog("Added On Recalculate Stats behaviour"); } public static void AddOnUpdateVisualEffectsCallback(CharacterBodyCallback _callback) { onUpdateVisualEffectsCallbacks.Add(_callback); DebugLog("Added On Update Visual Effects behaviour"); } public static void AddOnCharacterBodyFixedUpdateCallback(CharacterBodyCallback _callback) { onCharacterBodyFixedUpdateCallbacks.Add(_callback); DebugLog("Added On Character Body Fixed Update behaviour"); } public static void RemoveOnCharacterBodyFixedUpdateCallback(CharacterBodyCallback _callback) { onCharacterBodyFixedUpdateCallbacks.Remove(_callback); DebugLog("Removed On Character Body Fixed Update behaviour"); } public static void AddOnCharacterBodyTickCallback(float _tickRate, CharacterBodyCallback _callback) { onCharacterBodyTickCallbacks.Add(_tickRate, _callback); DebugLog("Added On Character Body Tick behaviour"); } public static void AddOnPurchaseInteractionBeginCallback(OnPurchaseInteractionBeginCallback _callback) { onPurchaseInteractionBeginCallbacks.Add(_callback); DebugLog("Added On Purchase Interaction Begin behaviour"); } public static void AddOnPurchaseCanBeAffordedCallback(OnPurchaseCanBeAffordedCallback _callback) { onPurchaseCanBeAffordedCallbacks.Add(_callback); DebugLog("Added On Purchase Can Be Afforded behaviour"); } public static void AddOnProcessJumpCallback(OnProcessJumpCallback _callback) { onProcessJumpCallbacks.Add(_callback); DebugLog("Added On Process Jump behaviour"); } public static void AddGenericCharacterFixedUpdateCallback(GenericCharacterCallback _callback) { genericCharacterFixedUpdateCallbacks.Add(_callback); DebugLog("Added Generic Character Fixed Update behaviour"); } public static void AddOnPrePopulateSceneCallback(SceneDirectorCallback _callback) { onPrePopulateSceneCallbacks.Add(_callback); DebugLog("Added On Pre-Populate Scene behaviour"); } public static void AddOnPreSceneExitCallback(SceneExitControllerCallback _callback) { onPreSceneExitCallbacks.Add(_callback); DebugLog("Added On Pre-Scene Exit behaviour"); } private static void PlayerOnPlayerFixedUpdate() { List<PlayerCharacterMasterController> players = Utils.GetPlayers(); foreach (PlayerCharacterMasterController item in players) { foreach (PlayerItemToPlayer playerItemToPlayerCallback in playerItemToPlayerCallbacks) { playerItemToPlayerCallback.Process(item, players); } foreach (PlayerBuffToPlayer playerBuffToPlayerCallback in playerBuffToPlayerCallbacks) { playerBuffToPlayerCallback.Process(item, players); } foreach (PlayerCharacterMasterController item2 in players) { if ((Object)(object)item == (Object)(object)item2) { continue; } foreach (PlayerToPlayerCallback playerToPlayerCallback in playerToPlayerCallbacks) { playerToPlayerCallback(item, item2); } } } } private static void AllyOnAllyFixedUpdate() { List<CharacterMaster> charactersForTeam = Utils.GetCharactersForTeam((TeamIndex)1); foreach (CharacterMaster item in charactersForTeam) { foreach (AllyItemToAlly allyItemToAllyCallback in allyItemToAllyCallbacks) { allyItemToAllyCallback.Process(item, charactersForTeam); } foreach (AllyBuffToAlly allyBuffToAllyCallback in allyBuffToAllyCallbacks) { allyBuffToAllyCallback.Process(item, charactersForTeam); } } } private static void HookStatsMod(CharacterBody _body, StatHookEventArgs _stats) { foreach (ItemStatsMod itemStatsMod in itemStatsMods) { itemStatsMod.Process(_body, _stats); } foreach (BuffStatsMod buffStatsMod in buffStatsMods) { buffStatsMod.Process(_body, _stats); } } private static void HookHoldoutZoneControllerUpdate(orig_Update orig, HoldoutZoneController self) { CharacterBody[] characterBodiesInHoldoutZone = Utils.GetCharacterBodiesInHoldoutZone(self); CharacterBody[] array = characterBodiesInHoldoutZone; foreach (CharacterBody contained in array) { foreach (InHoldoutZoneCallback inHoldoutZoneCallback in inHoldoutZoneCallbacks) { inHoldoutZoneCallback(contained, self); } } orig.Invoke(self); } private static void HookHoldoutZoneControllerStart(orig_Start orig, HoldoutZoneController self) { FaithfulHoldoutZoneBehaviour faithfulHoldoutZoneBehaviour = ((Component)self).gameObject.AddComponent<FaithfulHoldoutZoneBehaviour>(); faithfulHoldoutZoneBehaviour.Init(onHoldoutZoneCalcRadiusCallbacks); foreach (OnHoldoutZoneStartCallback onHoldoutZoneStartCallback in onHoldoutZoneStartCallbacks) { onHoldoutZoneStartCallback(self); } orig.Invoke(self); } private static void HookCharacterBodyAwake(orig_Awake orig, CharacterBody self) { orig.Invoke(self); foreach (CharacterBodyCallback onCharacterBodyAwakeCallback in onCharacterBodyAwakeCallbacks) { onCharacterBodyAwakeCallback(self); } } private static void HookCharacterBodyStart(orig_Start orig, CharacterBody self) { //IL_003c: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active && (Object)(object)self.master != (Object)null) { GameObject val = Object.Instantiate<GameObject>(characterBodyHelperPrefab); NetworkServer.Spawn(val); FaithfulCharacterBodyBehaviour component = val.GetComponent<FaithfulCharacterBodyBehaviour>(); component.NetworkcharacterID = ((Component)self).GetComponent<NetworkIdentity>().netId; foreach (KeyValuePair<float, CharacterBodyCallback> onCharacterBodyTickCallback in onCharacterBodyTickCallbacks) { component.AddTickBehaviour(onCharacterBodyTickCallback.Value, onCharacterBodyTickCallback.Key); } } orig.Invoke(self); foreach (CharacterBodyCallback onCharacterBodyStartCallback in onCharacterBodyStartCallbacks) { onCharacterBodyStartCallback(self); } } private static void HookAddBuffIndex(orig_AddBuff_BuffIndex orig, CharacterBody self, BuffIndex buffType) { //IL_0019: 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) foreach (OnAddBuffCallback onAddBuffCallback in onAddBuffCallbacks) { onAddBuffCallback(buffType, self); } orig.Invoke(self, buffType); } private static void HookAddTimedBuffDef(orig_AddTimedBuff_BuffDef_float orig, CharacterBody self, BuffDef buffDef, float duration) { foreach (OnAddTimedBuffCallback onAddTimedBuffCallback in onAddTimedBuffCallbacks) { onAddTimedBuffCallback(buffDef, ref duration, self); } orig.Invoke(self, buffDef, duration); } private static void HookAddTimedBuffDefMaxStacks(orig_AddTimedBuff_BuffDef_float_int orig, CharacterBody self, BuffDef buffDef, float duration, int maxStacks) { foreach (OnAddTimedBuffMaxStacksCallback onAddTimedBuffMaxStacksCallback in onAddTimedBuffMaxStacksCallbacks) { onAddTimedBuffMaxStacksCallback(buffDef, ref duration, ref maxSta
Faithful.Shared.dll
Decompiled 5 days agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] namespace Faithful.Shared; public enum RendererModifier { None = 0, HopooShader = 10, InfusionGlass = 20, AreaIndicatorIntersectionOnly = 30, AreaIndicatorRim = 40, Artifact = 50, ArtifactShellExplosionIndicator = 60, BaubleTimestopSphere = 70, BlueprintScreen = 80, BlueprintsInvalid = 90, BlueprintsOk = 100, BootShockwave = 110, CaptainAirstrikeAltAreaIndicatorInner = 120, CaptainAirstrikeAltAreaIndicatorOuter = 130, CaptainAirstrikeAreaIndicator = 140, CaptainSupplyDropAreaIndicator2 = 150, CaptainSupplyDropAreaIndicatorOuter = 160, ChefAlwaysOnTop = 170, Chest = 175, ChildStarCore = 180, ChildStarGlow = 190, ChipProjectile = 200, ClayBubble = 210, CombinerEnergyFade = 220, CoreCage2 = 230, DefectiveUnitDenialSphereNoise = 240, DefectiveUnitDetonateSphereEnergy = 250, DefectiveUnitDetonateSphereEnergyPers = 260, DefectiveUnitDetonateSphereNoise = 270, DefectiveUnitDetonateSpherePulse = 280, DefectiveUnitNullifySpherePulse = 290, DroneBrokenGeneric = 300, NullifierArmor = 310, NullifierGemPortal = 320, NullifierGemPortal3 = 330, NullifierBlackholeZoneAreaIndicator = 340, NullifierExplosionAreaIndicatorHard = 350, RadarTowerAreaIndicator = 360, ShockDamageAuraGlass = 370, TeamAreaIndicatorFullMonster = 380, TeamAreaIndicatorFullPlayer = 390, TeamAreaIndicatorIntersectionMonster = 400, TeamAreaIndicatorIntersectionPlayer = 410, TimeCrystalAreaIndicator = 420, VoidDeathBombAreaIndicatorBack = 430, VoidDeathBombAreaIndicatorFront = 440, VoidSurvivorBlasterSphereAreaIndicator = 450, VoidSurvivorBlasterSphereAreaIndicatorCorrupted = 460 } [Serializable] public struct ShaderTextureRule { public string name; public Texture texture; } [Serializable] public struct ShaderColourRule { public string name; public Color colour; } [Serializable] public struct ShaderVectorRule { public string name; public Vector4 value; } [Serializable] public struct ShaderKeywordRule { public string keyword; public bool enabled; } [Serializable] public struct ShaderFloatRule { public string name; public float value; } [Serializable] public struct ShaderIntRule { public string name; public int value; } [DisallowMultipleComponent] public sealed class RendererRules : MonoBehaviour { [Header("General")] public RendererModifier modifier; public bool salvageExistingProperties; [Header("Dither Model")] public bool addDitherModelComponent; public float ditherModelFade = 1f; public float ditherModelOldFade = 1f; public Collider ditherModelBounds; public List<Renderer> ditherModelRenderers = new List<Renderer>(); [Header("Shader Attributes")] public List<ShaderTextureRule> textureRules = new List<ShaderTextureRule>(); public List<ShaderColourRule> colourRules = new List<ShaderColourRule>(); public List<ShaderVectorRule> vectorRules = new List<ShaderVectorRule>(); public List<ShaderKeywordRule> keywordRules = new List<ShaderKeywordRule>(); public List<ShaderFloatRule> floatRules = new List<ShaderFloatRule>(); public List<ShaderIntRule> intRules = new List<ShaderIntRule>(); }