Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Faithful v1.4.2
Faithful.dll
Decompiled 3 weeks 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 3 weeks 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>(); }