Decompiled source of ZetSizeController v1.1.0
plugins/ZetSizeController/ZetSizeController.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.CodeDom.Compiler; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.Linq; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using HG.BlendableTypes; using IL.EntityStates; using IL.RoR2; using IL.RoR2.CameraModes; using Mono.Cecil; using Mono.Cecil.Cil; using MonoMod.Cil; using On.RoR2; using On.RoR2.CharacterAI; using RoR2; using RoR2.CharacterAI; using RoR2.ContentManagement; using TPDespair.ZetSizeController.Properties; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("ZetSizeController")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("ZetSizeController")] [assembly: AssemblyTitle("ZetSizeController")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace TPDespair.ZetSizeController { public static class Configuration { public static ConfigEntry<float> SizeChangeRate { get; set; } public static ConfigEntry<bool> IgnoreSizeLimit { get; set; } public static ConfigEntry<bool> IgnoreSizeExponent { get; set; } public static ConfigEntry<float> AbsoluteSizeLimit { get; set; } public static ConfigEntry<bool> ValidateMonsterSize { get; set; } public static ConfigEntry<bool> AllowStatHook { get; set; } public static ConfigEntry<bool> ModifyCamera { get; set; } public static ConfigEntry<bool> ModifyInteraction { get; set; } public static ConfigEntry<bool> ModifyOverlap { get; set; } public static ConfigEntry<bool> ModifyAnimation { get; set; } public static ConfigEntry<int> ShrinkifactEnable { get; set; } public static ConfigEntry<float> ShrinkifactMult { get; set; } public static ConfigEntry<bool> ShrinkifactExtend { get; set; } public static ConfigEntry<bool> ShrinkifactPlayer { get; set; } public static ConfigEntry<bool> ShrinkifactMonster { get; set; } public static ConfigEntry<float> ShrinkifactHealth { get; set; } public static ConfigEntry<float> ShrinkifactDamage { get; set; } public static ConfigEntry<float> ShrinkifactMovement { get; set; } public static ConfigEntry<int> TitanifactEnable { get; set; } public static ConfigEntry<float> TitanifactMult { get; set; } public static ConfigEntry<bool> TitanifactExtend { get; set; } public static ConfigEntry<bool> TitanifactPlayer { get; set; } public static ConfigEntry<bool> TitanifactMonster { get; set; } public static ConfigEntry<float> TitanifactHealth { get; set; } public static ConfigEntry<float> TitanifactDamage { get; set; } public static ConfigEntry<float> TitanifactMovement { get; set; } public static ConfigEntry<int> SplitifactEnable { get; set; } public static ConfigEntry<float> SplitifactChance { get; set; } public static ConfigEntry<float> SplitifactMult { get; set; } public static ConfigEntry<int> SplitifactMaxSmallFly { get; set; } public static ConfigEntry<int> SplitifactMaxLesser { get; set; } public static ConfigEntry<int> SplitifactMaxGreater { get; set; } public static ConfigEntry<int> SplitifactMaxChampion { get; set; } public static ConfigEntry<float> PlayerSizeIncrease { get; set; } public static ConfigEntry<float> PlayerSizeMult { get; set; } public static ConfigEntry<float> PlayerSizeExponent { get; set; } public static ConfigEntry<float> PlayerSizeLimit { get; set; } public static ConfigEntry<bool> PlayerSizeLimitExtendable { get; set; } public static ConfigEntry<float> LesserSizeIncrease { get; set; } public static ConfigEntry<float> LesserSizeMult { get; set; } public static ConfigEntry<float> LesserSizeExponent { get; set; } public static ConfigEntry<float> LesserSizeLimit { get; set; } public static ConfigEntry<float> GreaterSizeIncrease { get; set; } public static ConfigEntry<float> GreaterSizeMult { get; set; } public static ConfigEntry<float> GreaterSizeExponent { get; set; } public static ConfigEntry<float> GreaterSizeLimit { get; set; } public static ConfigEntry<float> ChampionSizeIncrease { get; set; } public static ConfigEntry<float> ChampionSizeMult { get; set; } public static ConfigEntry<float> ChampionSizeExponent { get; set; } public static ConfigEntry<float> ChampionSizeLimit { get; set; } public static ConfigEntry<float> ModifierMult { get; set; } public static ConfigEntry<float> CoreItemModifierLimit { get; set; } public static ConfigEntry<float> KnurlSizeIncrease { get; set; } public static ConfigEntry<float> PearlSizeIncrease { get; set; } public static ConfigEntry<float> StoneFluxSizeIncrease { get; set; } public static ConfigEntry<float> BossSizeIncrease { get; set; } public static ConfigEntry<float> EliteSizeIncrease { get; set; } public static ConfigEntry<float> EliteCountSizeIncrease { get; set; } public static ConfigEntry<float> EliteCountExponent { get; set; } public static ConfigEntry<float> HeadhunterSizeIncrease { get; set; } public static ConfigEntry<float> HeadhunterExponent { get; set; } public static ConfigEntry<float> GlassModifierLimit { get; set; } public static ConfigEntry<float> GlassSizeMult { get; set; } public static ConfigEntry<float> TonicSizeMult { get; set; } public static ConfigEntry<float> PlayerLevelSizeIncrease { get; set; } public static ConfigEntry<float> PlayerLevelSizeExponent { get; set; } public static ConfigEntry<float> PlayerLevelSizeLimit { get; set; } public static ConfigEntry<float> MonsterLevelSizeIncrease { get; set; } public static ConfigEntry<float> MonsterLevelSizeExponent { get; set; } public static ConfigEntry<float> MonsterLevelSizeLimit { get; set; } public static ConfigEntry<float> ItemScoreSizeIncrease { get; set; } public static ConfigEntry<float> ItemScoreSizeExponent { get; set; } public static ConfigEntry<float> ItemScoreSizeLimit { get; set; } public static ConfigEntry<float> ItemScoreT1Effect { get; set; } public static ConfigEntry<float> ItemScoreT2Effect { get; set; } public static ConfigEntry<float> ItemScoreT3Effect { get; set; } public static ConfigEntry<float> ItemScoreBossEffect { get; set; } public static ConfigEntry<float> ItemScoreLunarEffect { get; set; } internal static void Init(ConfigFile Config) { SizeChangeRate = Config.Bind<float>("1a-General", "sizeChangeRate", 0.25f, "Rate of size change per second. Higher values = faster. 0 is instant."); IgnoreSizeLimit = Config.Bind<bool>("1a-General", "ignoreSizeLimit", false, "Set all sizeclass limits to extreme values."); IgnoreSizeExponent = Config.Bind<bool>("1a-General", "ignoreSizeExponent", false, "Set all sizeclass exponents to 1."); AbsoluteSizeLimit = Config.Bind<float>("1a-General", "absoluteSizeLimit", 4f, "Prevent anything from scaling past value. Overwritten by ignoreSizeLimit."); ValidateMonsterSize = Config.Bind<bool>("1a-General", "validateMonsterSize", true, "Wait a bit until size changes are made for monsters after spawning."); AllowStatHook = Config.Bind<bool>("1c-Effects", "allowStatHook", true, "Allows changing stat values. Used for artifact effects."); ModifyCamera = Config.Bind<bool>("1c-Effects", "modifyCamera", true, "Modify camera to scale with size."); ModifyInteraction = Config.Bind<bool>("1c-Effects", "modifyInteraction", true, "Modify interaction range to scale with size."); ModifyOverlap = Config.Bind<bool>("1c-Effects", "modifyOverlap", true, "Modify overlap attacks for some monsters to scale better with size."); ModifyAnimation = Config.Bind<bool>("1c-Effects", "modifyAnimation", true, "Modify movement animation speed to scale with size."); ShrinkifactEnable = Config.Bind<int>("2a-Artifacts - Shrink", "shrinkifactEnable", 1, "Artifact of Miniaturization. 0 = Disabled, 1 = Artifact Available, 2 = Always Active"); ShrinkifactMult = Config.Bind<float>("2a-Artifacts - Shrink", "shrinkifactMult", 0.65f, "Size multiplier of Artifact of Miniaturization. Unaffected by sizeclass exponent."); ShrinkifactExtend = Config.Bind<bool>("2a-Artifacts - Shrink", "shrinkifactExtend", true, "Artifact of Miniaturization modifies minimum size limits."); ShrinkifactPlayer = Config.Bind<bool>("2a-Artifacts - Shrink", "shrinkifactPlayer", true, "Artifact of Miniaturization applies to players."); ShrinkifactMonster = Config.Bind<bool>("2a-Artifacts - Shrink", "shrinkifactMonster", true, "Artifact of Miniaturization applies to monsters."); ShrinkifactHealth = Config.Bind<float>("2a-Artifacts - Shrink", "shrinkifactHealth", 1f, "Artifact of Miniaturization health multiplier."); ShrinkifactDamage = Config.Bind<float>("2a-Artifacts - Shrink", "shrinkifactDamage", 1f, "Artifact of Miniaturization damage multiplier."); ShrinkifactMovement = Config.Bind<float>("2a-Artifacts - Shrink", "shrinkifactMovement", 1f, "Artifact of Miniaturization movement speed multiplier."); TitanifactEnable = Config.Bind<int>("2b-Artifacts - Grow", "titanifactEnable", 1, "Artifact of the Giants. 0 = Disabled, 1 = Artifact Available, 2 = Always Active"); TitanifactMult = Config.Bind<float>("2b-Artifacts - Grow", "titanifactMult", 1.5f, "Size multiplier of Artifact of the Giants. Unaffected by sizeclass exponent."); TitanifactExtend = Config.Bind<bool>("2b-Artifacts - Grow", "titanifactExtend", true, "Artifact of the Giants modifies maximum size limits."); TitanifactPlayer = Config.Bind<bool>("2b-Artifacts - Grow", "titanifactPlayer", false, "Artifact of the Giants applies to players."); TitanifactMonster = Config.Bind<bool>("2b-Artifacts - Grow", "titanifactMonster", true, "Artifact of the Giants applies to monsters."); TitanifactHealth = Config.Bind<float>("2b-Artifacts - Grow", "titanifactHealth", 1.5f, "Artifact of the Giants health multiplier."); TitanifactDamage = Config.Bind<float>("2b-Artifacts - Grow", "titanifactDamage", 1.5f, "Artifact of the Giants damage multiplier."); TitanifactMovement = Config.Bind<float>("2b-Artifacts - Grow", "titanifactMovement", 1f, "Artifact of the Giants movement speed multiplier."); SplitifactEnable = Config.Bind<int>("2c-Artifacts - Split", "splitifactEnable", 1, "Artifact of Fragmentation. 0 = Disabled, 1 = Artifact Available, 2 = Always Active"); SplitifactChance = Config.Bind<float>("2c-Artifacts - Split", "splitifactChance", 0.5f, "Chance that any monster will be selected for splitting. 0.5 = 50% chance that a monster will be made larger and split on death."); SplitifactMult = Config.Bind<float>("2c-Artifacts - Split", "splitifactMult", 1.5f, "Size multiplier per remaining split for Artifact of Fragmentation. Unaffected by sizeclass exponent."); SplitifactMaxSmallFly = Config.Bind<int>("2c-Artifacts - Split", "splitifactMaxSmallFly", 1, "Maximum amount of splits for small flying monsters. Lowest between this value and sizeclass value is chosen."); SplitifactMaxLesser = Config.Bind<int>("2c-Artifacts - Split", "splitifactMaxLesser", 2, "Maximum amount of splits for lesser monsters."); SplitifactMaxGreater = Config.Bind<int>("2c-Artifacts - Split", "splitifactMaxGreater", 1, "Maximum amount of splits for greater monsters."); SplitifactMaxChampion = Config.Bind<int>("2c-Artifacts - Split", "splitifactMaxChampion", 0, "Maximum amount of splits for champion monsters."); PlayerSizeIncrease = Config.Bind<float>("3a-Size - Player", "playerSizeIncrease", 0f, "Size increase of players."); PlayerSizeMult = Config.Bind<float>("3a-Size - Player", "playerSizeMult", 1f, "Size multiplier on players."); PlayerSizeExponent = Config.Bind<float>("3a-Size - Player", "playerSizeExponent", 0.65f, "Apply exponent to final player size."); PlayerSizeLimit = Config.Bind<float>("3a-Size - Player", "playerSizeLimit", 2f, "Maximum size of players. Higher values can make skill usage on some characters awkward."); PlayerSizeLimitExtendable = Config.Bind<bool>("3a-Size - Player", "playerSizeLimitExtendable", false, "Whether player size limit can be extended by other effects."); LesserSizeIncrease = Config.Bind<float>("3b-Size - Lesser", "lesserSizeIncrease", 0f, "Size increase of lesser monsters."); LesserSizeMult = Config.Bind<float>("3b-Size - Lesser", "lesserSizeMult", 1f, "Size multiplier on lesser monsters."); LesserSizeExponent = Config.Bind<float>("3b-Size - Lesser", "lesserSizeExponent", 0.65f, "Apply exponent to final lesser monster size."); LesserSizeLimit = Config.Bind<float>("3b-Size - Lesser", "lesserSizeLimit", 3f, "Maximum size of lesser monsters."); GreaterSizeIncrease = Config.Bind<float>("3c-Size - Greater", "greaterSizeIncrease", 0f, "Size increase of greater monsters."); GreaterSizeMult = Config.Bind<float>("3c-Size - Greater", "greaterSizeMult", 1f, "Size multiplier on greater monsters."); GreaterSizeExponent = Config.Bind<float>("3c-Size - Greater", "greaterSizeExponent", 0.5f, "Apply exponent to final greater monster size."); GreaterSizeLimit = Config.Bind<float>("3c-Size - Greater", "greaterSizeLimit", 2f, "Maximum size of greater monsters."); ChampionSizeIncrease = Config.Bind<float>("3d-Size - Champion", "championSizeIncrease", 0f, "Size increase of champion monsters."); ChampionSizeMult = Config.Bind<float>("3d-Size - Champion", "championSizeMult", 1f, "Size multiplier on champion monsters."); ChampionSizeExponent = Config.Bind<float>("3d-Size - Champion", "championSizeExponent", 0.5f, "Apply exponent to final champion monster size."); ChampionSizeLimit = Config.Bind<float>("3d-Size - Champion", "championSizeLimit", 2f, "Maximum size of champion monsters."); ModifierMult = Config.Bind<float>("4a-Modifiers - General", "modifierMult", 1f, "Multiply increase modifier effects in modifiers sections. Multiplies item effects after limits."); CoreItemModifierLimit = Config.Bind<float>("4b-Modifiers - Core", "coreItemEffectLimit", 5f, "Maximum modifier effect multiplier for : Knurl, Pearls, StoneFlux. 5 = SQRT(25), item effect caps out at 25 items for each core item."); KnurlSizeIncrease = Config.Bind<float>("4b-Modifiers - Core", "knurlSizeIncrease", 0.1f, "Size increase from Titanic Knurl. Value multiplied by SQRT of item count."); PearlSizeIncrease = Config.Bind<float>("4b-Modifiers - Core", "pearlSizeIncrease", 0.1f, "Size increase from Pearl(x1) and Irradiant Pearl(x2.5). Value multiplied by SQRT of item count."); StoneFluxSizeIncrease = Config.Bind<float>("4b-Modifiers - Core", "stoneFluxSizeIncrease", 0.2f, "Size increase from Stone Flux Pauldron. Value multiplied by SQRT of item count."); BossSizeIncrease = Config.Bind<float>("4b-Modifiers - Core", "bossSizeIncrease", 0.2f, "Size increase from being in a boss group."); EliteSizeIncrease = Config.Bind<float>("4b-Modifiers - Core", "eliteSizeIncrease", 0.1f, "Size increase from having any elite buff."); EliteCountSizeIncrease = Config.Bind<float>("4b-Modifiers - Core", "eliteCountSizeIncrease", 0.1f, "Size increase per elite buff. Value multiplied by EliteCountExponent of buff count."); EliteCountExponent = Config.Bind<float>("4b-Modifiers - Core", "eliteCountExponent", 0.5f, "Exponent applied to buff count for EliteCountSizeIncrease."); HeadhunterSizeIncrease = Config.Bind<float>("4b-Modifiers - Core", "headhunterSizeIncrease", 0.1f, "Size increase per elite buff. Value multiplied by HeadhunterExponent of buff count."); HeadhunterExponent = Config.Bind<float>("4b-Modifiers - Core", "headhunterExponent", 0.5f, "Exponent applied to buff count for HeadhunterSizeIncrease."); GlassModifierLimit = Config.Bind<float>("4b-Modifiers - Core", "glassEffectLimit", 0.25f, "Minimum modifier effect for : ShapedGlass."); GlassSizeMult = Config.Bind<float>("4b-Modifiers - Core", "glassSizeMult", 0.9f, "Size multiplier per Shaped Glass. Unaffected by modifierMult. Ignores sizeclass exponent."); TonicSizeMult = Config.Bind<float>("4b-Modifiers - Core", "tonicSizeMult", 1.25f, "Size multiplier from Spinel Tonic. Unaffected by modifierMult. Ignores sizeclass exponent."); PlayerLevelSizeIncrease = Config.Bind<float>("4c-Modifiers - LevelScaling", "playerLevelSizeIncrease", 0f, "Size increase from levels for players. 0 to disable. 0.01 would be the default if enabled."); PlayerLevelSizeExponent = Config.Bind<float>("4c-Modifiers - LevelScaling", "playerLevelSizeExponent", 1f, "Exponent applied to player level for size increase."); PlayerLevelSizeLimit = Config.Bind<float>("4c-Modifiers - LevelScaling", "playerLevelSizeLimit", 0.5f, "Limit for size increase from player level."); MonsterLevelSizeIncrease = Config.Bind<float>("4c-Modifiers - LevelScaling", "monsterLevelSizeIncrease", 0f, "Size increase from levels for monsters. 0 to disable. 0.02 would be the default if enabled."); MonsterLevelSizeExponent = Config.Bind<float>("4c-Modifiers - LevelScaling", "monsterLevelSizeExponent", 0.65f, "Exponent applied to monster level for size increase."); MonsterLevelSizeLimit = Config.Bind<float>("4c-Modifiers - LevelScaling", "monsterLevelSizeLimit", 0.5f, "Limit for size increase from monster level."); ItemScoreSizeIncrease = Config.Bind<float>("4d-Modifiers - ItemScoreScaling", "itemScoreSizeIncrease", 0f, "Size increase from itemscore. 0 to disable. 0.01 would be the default if enabled."); ItemScoreSizeExponent = Config.Bind<float>("4d-Modifiers - ItemScoreScaling", "itemScoreSizeExponent", 0.65f, "Exponent applied to itemscore for size increase."); ItemScoreSizeLimit = Config.Bind<float>("4d-Modifiers - ItemScoreScaling", "itemScoreSizeLimit", 0.5f, "Limit for size increase from itemscore."); ItemScoreT1Effect = Config.Bind<float>("4d-Modifiers - ItemScoreScaling", "itemScoreT1Effect", 1f, "Amount of added itemscore per T1 item."); ItemScoreT2Effect = Config.Bind<float>("4d-Modifiers - ItemScoreScaling", "itemScoreT2Effect", 2f, "Amount of added itemscore per T2 item."); ItemScoreT3Effect = Config.Bind<float>("4d-Modifiers - ItemScoreScaling", "itemScoreT3Effect", 6f, "Amount of added itemscore per T3 item."); ItemScoreBossEffect = Config.Bind<float>("4d-Modifiers - ItemScoreScaling", "itemScoreBossEffect", 4f, "Amount of added itemscore per Boss item."); ItemScoreLunarEffect = Config.Bind<float>("4d-Modifiers - ItemScoreScaling", "itemScoreLunarEffect", 4f, "Amount of added itemscore per Lunar item."); } } public enum SizeClass { None, Player, Lesser, Greater, Champion } public enum ExternalEffect { None, TksatShrinkRay } public class SizeData : MonoBehaviour { public NetworkInstanceId netId; public SizeClass sizeClass = SizeClass.None; public float heightVerticalOffset = 0f; public float interactionRange = 1f; public float playbackSpeed = 1f; public Vector3 size; public float height = 0f; public int validation = 0; public bool newData = true; public float scale = 1f; public float target = 1f; public float forceUpdate = 0f; public ExternalEffect externalEffect = ExternalEffect.None; public bool ready = false; } public static class SizeManager { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_RecalculateStats <>9__20_0; public static hook_FixedUpdate <>9__29_0; public static hook_OnDestroy <>9__33_0; public static Func<Instruction, bool> <>9__36_1; public static Func<PrintController, float, float> <>9__36_2; public static Manipulator <>9__36_0; public static Func<Instruction, bool> <>9__37_1; public static Func<Vector3, CameraRigController, Vector3> <>9__37_2; public static Manipulator <>9__37_0; public static Func<Instruction, bool> <>9__38_1; public static Func<Instruction, bool> <>9__38_2; public static Func<float, CameraRigController, float> <>9__38_3; public static Manipulator <>9__38_0; public static Func<Instruction, bool> <>9__39_1; public static Func<Instruction, bool> <>9__39_2; public static Func<Instruction, bool> <>9__39_3; public static Func<InteractionDriver, float, float> <>9__39_5; public static Manipulator <>9__39_0; public static Func<Instruction, bool> <>9__40_1; public static Func<Instruction, bool> <>9__40_2; public static Func<Instruction, bool> <>9__40_3; public static Func<Instruction, bool> <>9__40_4; public static Func<Instruction, bool> <>9__40_5; public static Func<float, CharacterBody, float> <>9__40_6; public static Manipulator <>9__40_0; public static Func<Instruction, bool> <>9__41_1; public static Func<Vector3, OverlapAttack, Vector3> <>9__41_2; public static Manipulator <>9__41_0; public static Func<Instruction, bool> <>9__42_1; public static Func<Vector3, OverlapAttack, Vector3> <>9__42_2; public static Manipulator <>9__42_0; public static Func<EntityState, float> <>9__43_1; public static Func<Instruction, bool> <>9__43_2; public static Func<Instruction, bool> <>9__43_3; public static Func<Instruction, bool> <>9__43_4; public static Func<Instruction, bool> <>9__43_5; public static Func<Instruction, bool> <>9__43_6; public static Func<Instruction, bool> <>9__43_7; public static Manipulator <>9__43_0; internal void <RecalculateStatsHook>b__20_0(orig_RecalculateStats orig, CharacterBody self) { GetSizeData(self); orig.Invoke(self); RecalcSizeData(self); } internal void <FixedUpdateHook>b__29_0(orig_FixedUpdate orig, CharacterBody self) { orig.Invoke(self); UpdateSize(self, instant: false); } internal void <OnDestroyHook>b__33_0(orig_OnDestroy orig, CharacterBody self) { DestroySizeData(self); orig.Invoke(self); } internal void <FixPrintController>b__36_0(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdfld<PrintController>(x, "maxPrintHeight") })) { val.Index += 1; val.Emit(OpCodes.Ldarg, 0); val.Emit(OpCodes.Ldarg, 1); val.EmitDelegate<Func<PrintController, float, float>>((Func<PrintController, float, float>)delegate(PrintController printController, float sample) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) CharacterModel characterModel = printController.characterModel; if (Object.op_Implicit((Object)(object)characterModel)) { CharacterBody body = characterModel.body; if (Object.op_Implicit((Object)(object)body)) { if (body.bodyIndex == ClayableTemplarBodyIndex) { return 1f; } if (sample >= 1f) { return 100f; } SizeData component = ((Component)body).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { return Mathf.Max(1f, component.scale); } } } return 1f; }); val.Emit(OpCodes.Mul); } else { ZetSizeControllerPlugin.LogWarn("FixPrintController Failed"); } } internal bool <FixPrintController>b__36_1(Instruction x) { return ILPatternMatchingExt.MatchLdfld<PrintController>(x, "maxPrintHeight"); } internal float <FixPrintController>b__36_2(PrintController printController, float sample) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) CharacterModel characterModel = printController.characterModel; if (Object.op_Implicit((Object)(object)characterModel)) { CharacterBody body = characterModel.body; if (Object.op_Implicit((Object)(object)body)) { if (body.bodyIndex == ClayableTemplarBodyIndex) { return 1f; } if (sample >= 1f) { return 100f; } SizeData component = ((Component)body).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { return Mathf.Max(1f, component.scale); } } } return 1f; } internal void <CameraDistanceHook>b__37_0(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, 13) })) { val.Index += 1; val.Emit(OpCodes.Ldloc, 13); val.Emit(OpCodes.Ldloc, 1); val.EmitDelegate<Func<Vector3, CameraRigController, Vector3>>((Func<Vector3, CameraRigController, Vector3>)delegate(Vector3 direction, CameraRigController camRig) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) CharacterBody targetBody = camRig.targetBody; if (Object.op_Implicit((Object)(object)targetBody)) { SizeData component = ((Component)targetBody).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { return direction * component.scale; } } return direction; }); val.Emit(OpCodes.Stloc, 13); } else { ZetSizeControllerPlugin.LogWarn("CameraDistanceHook Failed"); } } internal bool <CameraDistanceHook>b__37_1(Instruction x) { return ILPatternMatchingExt.MatchStloc(x, 13); } internal Vector3 <CameraDistanceHook>b__37_2(Vector3 direction, CameraRigController camRig) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) CharacterBody targetBody = camRig.targetBody; if (Object.op_Implicit((Object)(object)targetBody)) { SizeData component = ((Component)targetBody).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { return direction * component.scale; } } return direction; } internal void <CameraVerticalOffsetHook>b__38_0(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_006f: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[2] { (Instruction x) => ILPatternMatchingExt.MatchLdflda<CharacterCameraParamsData>(x, "pivotVerticalOffset"), (Instruction x) => ILPatternMatchingExt.MatchLdfld<BlendableFloat>(x, "value") })) { val.Index += 2; val.Emit(OpCodes.Ldloc, 0); val.EmitDelegate<Func<float, CameraRigController, float>>((Func<float, CameraRigController, float>)delegate(float vertical, CameraRigController camRig) { CharacterBody targetBody = camRig.targetBody; if (Object.op_Implicit((Object)(object)targetBody)) { SizeData component = ((Component)targetBody).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { return vertical * component.scale + component.heightVerticalOffset; } } return vertical; }); } else { ZetSizeControllerPlugin.LogWarn("CameraVerticalOffsetHook Failed"); } } internal bool <CameraVerticalOffsetHook>b__38_1(Instruction x) { return ILPatternMatchingExt.MatchLdflda<CharacterCameraParamsData>(x, "pivotVerticalOffset"); } internal bool <CameraVerticalOffsetHook>b__38_2(Instruction x) { return ILPatternMatchingExt.MatchLdfld<BlendableFloat>(x, "value"); } internal float <CameraVerticalOffsetHook>b__38_3(float vertical, CameraRigController camRig) { CharacterBody targetBody = camRig.targetBody; if (Object.op_Implicit((Object)(object)targetBody)) { SizeData component = ((Component)targetBody).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { return vertical * component.scale + component.heightVerticalOffset; } } return vertical; } internal void <InteractionDriverHook>b__39_0(ILContext il) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) <>c__DisplayClass39_0 CS$<>8__locals0 = new <>c__DisplayClass39_0(); ILCursor val = new ILCursor(il); CS$<>8__locals0.rangeIndex = -1; if (val.TryGotoNext(new Func<Instruction, bool>[4] { (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<InteractionDriver>(x, "get_interactor"), (Instruction x) => ILPatternMatchingExt.MatchLdfld<Interactor>(x, "maxInteractionDistance"), (Instruction x) => ILPatternMatchingExt.MatchStloc(x, ref CS$<>8__locals0.rangeIndex) })) { val.Index += 4; val.Emit(OpCodes.Ldarg, 0); val.Emit(OpCodes.Ldloc, CS$<>8__locals0.rangeIndex); val.EmitDelegate<Func<InteractionDriver, float, float>>((Func<InteractionDriver, float, float>)delegate(InteractionDriver driver, float range) { CharacterBody characterBody = driver.characterBody; if (Object.op_Implicit((Object)(object)characterBody)) { SizeData component = ((Component)characterBody).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { range *= component.interactionRange; } } return range; }); val.Emit(OpCodes.Stloc, CS$<>8__locals0.rangeIndex); } else { ZetSizeControllerPlugin.LogWarn("InteractionHook Failed"); } } internal bool <InteractionDriverHook>b__39_1(Instruction x) { return ILPatternMatchingExt.MatchLdarg(x, 0); } internal bool <InteractionDriverHook>b__39_2(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt<InteractionDriver>(x, "get_interactor"); } internal bool <InteractionDriverHook>b__39_3(Instruction x) { return ILPatternMatchingExt.MatchLdfld<Interactor>(x, "maxInteractionDistance"); } internal float <InteractionDriverHook>b__39_5(InteractionDriver driver, float range) { CharacterBody characterBody = driver.characterBody; if (Object.op_Implicit((Object)(object)characterBody)) { SizeData component = ((Component)characterBody).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { range *= component.interactionRange; } } return range; } internal void <PickupPickerHook>b__40_0(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_00d5: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[5] { (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<PickupPickerController>(x, "cutoffDistance"), (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<PickupPickerController>(x, "cutoffDistance"), (Instruction x) => ILPatternMatchingExt.MatchMul(x) })) { val.Index += 5; val.Emit(OpCodes.Ldloc, 1); val.EmitDelegate<Func<float, CharacterBody, float>>((Func<float, CharacterBody, float>)delegate(float cutoff, CharacterBody body) { SizeData component = ((Component)body).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { float interactionRange = component.interactionRange; cutoff *= interactionRange * interactionRange; } return cutoff; }); } else { ZetSizeControllerPlugin.LogWarn("PickupPickerHook Failed"); } } internal bool <PickupPickerHook>b__40_1(Instruction x) { return ILPatternMatchingExt.MatchLdarg(x, 0); } internal bool <PickupPickerHook>b__40_2(Instruction x) { return ILPatternMatchingExt.MatchLdfld<PickupPickerController>(x, "cutoffDistance"); } internal bool <PickupPickerHook>b__40_3(Instruction x) { return ILPatternMatchingExt.MatchLdarg(x, 0); } internal bool <PickupPickerHook>b__40_4(Instruction x) { return ILPatternMatchingExt.MatchLdfld<PickupPickerController>(x, "cutoffDistance"); } internal bool <PickupPickerHook>b__40_5(Instruction x) { return ILPatternMatchingExt.MatchMul(x); } internal float <PickupPickerHook>b__40_6(float cutoff, CharacterBody body) { SizeData component = ((Component)body).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { float interactionRange = component.interactionRange; cutoff *= interactionRange * interactionRange; } return cutoff; } internal void <OverlapAttackPositionHook>b__41_0(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_003e: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, 3) })) { val.Emit(OpCodes.Ldarg, 0); val.EmitDelegate<Func<Vector3, OverlapAttack, Vector3>>((Func<Vector3, OverlapAttack, Vector3>)delegate(Vector3 position, OverlapAttack attack) { //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_008c: 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_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) GameObject attacker = attack.attacker; if (Object.op_Implicit((Object)(object)attacker)) { CharacterBody component = attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { Vector3 val2 = position - component.corePosition; if (component.bodyIndex == BeetleBodyIndex || component.bodyIndex == BeetleCrystalBodyIndex) { ((Vector3)(ref val2))..ctor(val2.x, val2.y * 0.5f, val2.z); } position = component.corePosition + val2; } } return position; }); } else { ZetSizeControllerPlugin.LogWarn("OverlapAttackPositionHook Failed"); } } internal bool <OverlapAttackPositionHook>b__41_1(Instruction x) { return ILPatternMatchingExt.MatchStloc(x, 3); } internal Vector3 <OverlapAttackPositionHook>b__41_2(Vector3 position, OverlapAttack attack) { //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_008c: 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_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) GameObject attacker = attack.attacker; if (Object.op_Implicit((Object)(object)attacker)) { CharacterBody component = attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { Vector3 val = position - component.corePosition; if (component.bodyIndex == BeetleBodyIndex || component.bodyIndex == BeetleCrystalBodyIndex) { ((Vector3)(ref val))..ctor(val.x, val.y * 0.5f, val.z); } position = component.corePosition + val; } } return position; } internal void <OverlapAttackScaleHook>b__42_0(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_003e: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, 4) })) { val.Emit(OpCodes.Ldarg, 0); val.EmitDelegate<Func<Vector3, OverlapAttack, Vector3>>((Func<Vector3, OverlapAttack, Vector3>)delegate(Vector3 scale, OverlapAttack attack) { //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) GameObject attacker = attack.attacker; if (Object.op_Implicit((Object)(object)attacker)) { CharacterBody component = attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { if (component.bodyIndex == BeetleBodyIndex || component.bodyIndex == BeetleCrystalBodyIndex) { ((Vector3)(ref scale))..ctor(scale.x * 1.25f, scale.y * 2.5f, scale.z * 1.25f); } if (component.bodyIndex == ImpBodyIndex || component.bodyIndex == LemurianBodyIndex) { scale *= 1.75f; } } } return scale; }); } else { ZetSizeControllerPlugin.LogWarn("OverlapAttackScaleHook Failed"); } } internal bool <OverlapAttackScaleHook>b__42_1(Instruction x) { return ILPatternMatchingExt.MatchStloc(x, 4); } internal Vector3 <OverlapAttackScaleHook>b__42_2(Vector3 scale, OverlapAttack attack) { //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) GameObject attacker = attack.attacker; if (Object.op_Implicit((Object)(object)attacker)) { CharacterBody component = attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { if (component.bodyIndex == BeetleBodyIndex || component.bodyIndex == BeetleCrystalBodyIndex) { ((Vector3)(ref scale))..ctor(scale.x * 1.25f, scale.y * 2.5f, scale.z * 1.25f); } if (component.bodyIndex == ImpBodyIndex || component.bodyIndex == LemurianBodyIndex) { scale *= 1.75f; } } } return scale; } internal void <AnimationHook>b__43_0(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected O, but got Unknown //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); VariableDefinition val2 = new VariableDefinition(((MemberReference)il.Body.Method).Module.TypeSystem.Single); il.Body.Variables.Add(val2); val.Index = 0; val.Emit(OpCodes.Ldarg, 0); val.EmitDelegate<Func<EntityState, float>>((Func<EntityState, float>)delegate(EntityState entityState) { CharacterBody characterBody = entityState.characterBody; if (Object.op_Implicit((Object)(object)characterBody)) { SizeData component = ((Component)characterBody).GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { return component.playbackSpeed; } } return 1f; }); val.Emit(OpCodes.Stloc, val2); int num = default(int); if (val.TryGotoNext(new Func<Instruction, bool>[2] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(AnimationParameters).GetField("mainRootPlaybackRate")), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref num) })) { val.Index += 2; val.Emit(OpCodes.Ldloc, val2); val.Emit(OpCodes.Mul); } else { ZetSizeControllerPlugin.LogWarn("AnimationHook:rootMotion Failed"); } if (val.TryGotoNext(new Func<Instruction, bool>[4] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(AnimationParameters).GetField("walkSpeed")), (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchCall<EntityState>(x, "get_characterBody"), (Instruction x) => ILPatternMatchingExt.MatchCallvirt<CharacterBody>(x, "get_moveSpeed") })) { val.Index += 4; val.Emit(OpCodes.Ldloc, val2); val.Emit(OpCodes.Mul); } else { ZetSizeControllerPlugin.LogWarn("AnimationHook:walkSpeed Failed"); } } internal float <AnimationHook>b__43_1(EntityState entityState) { CharacterBody characterBody = entityState.characterBody; if (Object.op_Implicit((Object)(object)characterBody)) { SizeData component = ((Component)characterBody).GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { return component.playbackSpeed; } } return 1f; } internal bool <AnimationHook>b__43_2(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, typeof(AnimationParameters).GetField("mainRootPlaybackRate")); } internal bool <AnimationHook>b__43_3(Instruction x) { int num = default(int); return ILPatternMatchingExt.MatchLdloc(x, ref num); } internal bool <AnimationHook>b__43_4(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, typeof(AnimationParameters).GetField("walkSpeed")); } internal bool <AnimationHook>b__43_5(Instruction x) { return ILPatternMatchingExt.MatchLdarg(x, 0); } internal bool <AnimationHook>b__43_6(Instruction x) { return ILPatternMatchingExt.MatchCall<EntityState>(x, "get_characterBody"); } internal bool <AnimationHook>b__43_7(Instruction x) { return ILPatternMatchingExt.MatchCallvirt<CharacterBody>(x, "get_moveSpeed"); } } [CompilerGenerated] private sealed class <>c__DisplayClass39_0 { public int rangeIndex; internal bool <InteractionDriverHook>b__4(Instruction x) { return ILPatternMatchingExt.MatchStloc(x, ref rangeIndex); } } private static readonly List<string> LesserBodyNames = new List<string> { "BackupDroneBody", "BeetleBody", "BeetleCrystalBody", "ClayBody", "Drone1Body", "Drone2Body", "EmergencyDroneBody", "EquipmentDroneBody", "FlameDroneBody", "FlyingVerminBody", "GipBody", "HermitCrabBody", "ImpBody", "JellyfishBody", "LemurianBody", "LunarExploderBody", "MiniMushroomBody", "MinorConstructAttachableBody", "MinorConstructBody", "MinorConstructOnKillBody", "MissileDroneBody", "MoffeinClayManBody", "SquidTurretBody", "Turret1Body", "UrchinTurretBody", "VerminBody", "VoidBarnacleBody", "VoidInfestorBody", "VultureBody", "WispBody", "WispSoulBody" }; private static readonly List<BodyIndex> LesserBodyIndexes = new List<BodyIndex>(); private static readonly List<string> GreaterBodyNames = new List<string> { "ArchWispBody", "BeetleGuardAllyBody", "BeetleGuardBody", "BeetleGuardCrystalBody", "BellBody", "BisonBody", "BomberBody", "ClayBruiserBody", "ClayGrenadierBody", "DroneCommanderBody", "EngiBeamTurretBody", "EngiTurretBody", "EngiWalkerTurretBody", "GeepBody", "GolemBody", "GreaterWispBody", "GupBody", "LemurianBruiserBody", "LunarGolemBody", "LunarKnightBody", "LunarWispBody", "MajorConstructBody", "MegaDroneBody", "NullifierBody", "ParentBody", "RoboBallGreenBuddyBody", "RoboBallMiniBody", "RoboBallRedBuddyBody", "ScavBody", "ShopkeeperBody", "VoidJailerBody" }; private static readonly List<BodyIndex> GreaterBodyIndexes = new List<BodyIndex>(); private static readonly List<string> ChampionBodyNames = new List<string> { "AncientWispBody", "BeetleQueen2Body", "BrotherBody", "BrotherGlassBody", "BrotherHurtBody", "ClayBossBody", "DireseekerBody", "ElectricWormBody", "GrandParentBody", "GravekeeperBody", "ImpBossBody", "MagmaWormBody", "MegaConstructBody", "MoffeinAncientWispBody", "RoboBallBossBody", "ScavLunar1Body", "ScavLunar2Body", "ScavLunar3Body", "ScavLunar4Body", "SuperRoboBallBossBody", "TitanBody", "TitanGoldBody", "VagrantBody", "VoidMegaCrabBody" }; private static readonly List<BodyIndex> ChampionBodyIndexes = new List<BodyIndex>(); private static BodyIndex BeetleBodyIndex = (BodyIndex)(-1); private static BodyIndex BeetleCrystalBodyIndex = (BodyIndex)(-1); private static BodyIndex ImpBodyIndex = (BodyIndex)(-1); private static BodyIndex LemurianBodyIndex = (BodyIndex)(-1); private static BodyIndex RexBodyIndex = (BodyIndex)(-1); private static BodyIndex ClayableTemplarBodyIndex = (BodyIndex)(-1); private static BuffIndex ShrinkRayBuff = (BuffIndex)(-1); private static BuffIndex HeadhunterBuff = (BuffIndex)(-1); private static ItemTier LunarVoidTier = (ItemTier)10; private static ItemIndex RelicMassIndex = (ItemIndex)(-1); public static Action<CharacterBody, SizeData> onSizeDataCreated; internal static void Init() { ((ResourceAvailability)(ref BodyCatalog.availability)).CallWhenAvailable((Action)PopulateBodyIndexes); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(PopulateIndexes)); RecalculateStatsHook(); FixedUpdateHook(); OnDestroyHook(); CharacterBody.onBodyStartGlobal += RecalcSizeData; VehicleSeat.onPassengerExitGlobal += ResizeOnVehicleExit; FixPrintController(); if (Configuration.ModifyCamera.Value) { CameraDistanceHook(); CameraVerticalOffsetHook(); } if (Configuration.ModifyInteraction.Value) { InteractionDriverHook(); PickupPickerHook(); } if (Configuration.ModifyOverlap.Value) { OverlapAttackPositionHook(); OverlapAttackScaleHook(); } if (Configuration.ModifyAnimation.Value) { AnimationHook(); } } private static void PopulateBodyIndexes() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Invalid comparison between Unknown and I4 //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Invalid comparison between Unknown and I4 //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Invalid comparison between Unknown and I4 //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //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_011f: Unknown result type (might be due to invalid IL or missing references) foreach (string lesserBodyName in LesserBodyNames) { BodyIndex val = BodyCatalog.FindBodyIndex(lesserBodyName); if ((int)val != -1 && !LesserBodyIndexes.Contains(val)) { LesserBodyIndexes.Add(val); } } foreach (string greaterBodyName in GreaterBodyNames) { BodyIndex val = BodyCatalog.FindBodyIndex(greaterBodyName); if ((int)val != -1 && !GreaterBodyIndexes.Contains(val)) { GreaterBodyIndexes.Add(val); } } foreach (string championBodyName in ChampionBodyNames) { BodyIndex val = BodyCatalog.FindBodyIndex(championBodyName); if ((int)val != -1 && !ChampionBodyIndexes.Contains(val)) { ChampionBodyIndexes.Add(val); } } BeetleBodyIndex = BodyCatalog.FindBodyIndex("BeetleBody"); BeetleCrystalBodyIndex = BodyCatalog.FindBodyIndex("BeetleCrystalBody"); ImpBodyIndex = BodyCatalog.FindBodyIndex("ImpBody"); LemurianBodyIndex = BodyCatalog.FindBodyIndex("LemurianBody"); RexBodyIndex = BodyCatalog.FindBodyIndex("TreebotBody"); ClayableTemplarBodyIndex = BodyCatalog.FindBodyIndex("Templar_Survivor"); ZetSizeControllerPlugin.LogWarn("PopulateBodyIndexes : Lesser[" + LesserBodyIndexes.Count + "] Greater[" + GreaterBodyIndexes.Count + "] Champion[" + ChampionBodyIndexes.Count + "]"); } private static void PopulateIndexes() { //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_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Invalid comparison between Unknown and I4 //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: 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_002c: Invalid comparison between Unknown and I4 //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Invalid comparison between Unknown and I4 //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) BuffIndex val = BuffCatalog.FindBuffIndex("TKSATShrink"); if ((int)val != -1) { ShrinkRayBuff = val; } val = BuffCatalog.FindBuffIndex("ZetHeadHunter"); if ((int)val != -1) { HeadhunterBuff = val; } ItemIndex val2 = ItemCatalog.FindItemIndex("RelicOfMass"); if ((int)val2 != -1) { RelicMassIndex = val2; } ItemTierDef val3 = ItemTierCatalog.FindTierDef("VoidLunarTierDef"); if (Object.op_Implicit((Object)(object)val3)) { LunarVoidTier = val3.tier; } } private static void RecalculateStatsHook() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__20_0; if (obj == null) { hook_RecalculateStats val = delegate(orig_RecalculateStats orig, CharacterBody self) { GetSizeData(self); orig.Invoke(self); RecalcSizeData(self); }; <>c.<>9__20_0 = val; obj = (object)val; } CharacterBody.RecalculateStats += (hook_RecalculateStats)obj; } private static void RecalcSizeData(CharacterBody self) { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) SizeData sizeData = GetSizeData(self); if (!Object.op_Implicit((Object)(object)sizeData)) { return; } float characterScale = GetCharacterScale(self, sizeData); if (sizeData.target != characterScale) { if (sizeData.sizeClass == SizeClass.Player) { string[] obj = new string[6] { "Player Size : ", null, null, null, null, null }; NetworkInstanceId netId = sizeData.netId; obj[1] = ((object)(NetworkInstanceId)(ref netId)).ToString(); obj[2] = " - "; obj[3] = $"{sizeData.target:0.###}"; obj[4] = " => "; obj[5] = $"{characterScale:0.###}"; ZetSizeControllerPlugin.LogWarn(string.Concat(obj)); } sizeData.target = characterScale; } if (sizeData.newData) { sizeData.newData = false; UpdateSize(self, instant: true); } } private static SizeData GetSizeData(CharacterBody body) { //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.masterObject)) { SizeData sizeData = ((Component)body).gameObject.GetComponent<SizeData>(); if (!Object.op_Implicit((Object)(object)sizeData)) { if (!HasTransform(body)) { return null; } if (!ValidateScale(body)) { return null; } SizeClass sizeClass = GetSizeClass(body); if (sizeClass == SizeClass.None) { return null; } sizeData = ((Component)body).gameObject.AddComponent<SizeData>(); sizeData.netId = ((NetworkBehaviour)body).netId; sizeData.size = body.modelLocator.modelTransform.localScale; sizeData.height = Mathf.Abs(body.corePosition.y - body.footPosition.y) * 2f; sizeData.sizeClass = sizeClass; if (sizeClass != SizeClass.Player && Configuration.ValidateMonsterSize.Value) { sizeData.validation = 3; } sizeData.newData = true; onSizeDataCreated?.Invoke(body, sizeData); sizeData.ready = true; if (sizeClass == SizeClass.Player) { body.SetBuffCount(ZetSizeControllerContent.Buffs.ZetPlayerSizeClass.buffIndex, 1); NetworkInstanceId netId = sizeData.netId; ZetSizeControllerPlugin.LogWarn("Created Player SizeData : " + ((object)(NetworkInstanceId)(ref netId)).ToString()); ZetSizeControllerPlugin.LogWarn("-- Height : " + sizeData.height); } else { body.SetBuffCount(ZetSizeControllerContent.Buffs.ZetMonsterSizeClass.buffIndex, 1); } } if (!sizeData.ready) { return null; } return sizeData; } return null; } private static bool HasTransform(CharacterBody self) { return Object.op_Implicit((Object)(object)self.modelLocator) && Object.op_Implicit((Object)(object)self.modelLocator.modelTransform); } private static bool ValidateScale(CharacterBody self) { //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) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) if (self.bodyIndex == RexBodyIndex && Mathf.Abs(self.modelLocator.modelTransform.localScale.x - 0.75f) >= 0.01f) { return false; } if (self.bodyIndex == ClayableTemplarBodyIndex && Mathf.Abs(self.modelLocator.modelTransform.localScale.x - 0.9f) >= 0.01f) { return false; } return true; } private static SizeClass GetSizeClass(CharacterBody self) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Invalid comparison between Unknown and I4 //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Invalid comparison between Unknown and I4 //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Invalid comparison between Unknown and I4 if (self.isPlayerControlled) { return SizeClass.Player; } if (LesserBodyIndexes.Contains(self.bodyIndex)) { return SizeClass.Lesser; } if (GreaterBodyIndexes.Contains(self.bodyIndex)) { return SizeClass.Greater; } if (ChampionBodyIndexes.Contains(self.bodyIndex)) { return SizeClass.Champion; } if ((int)self.hullClassification == 2) { return SizeClass.Champion; } if ((int)self.hullClassification == 1) { return SizeClass.Greater; } if ((int)self.hullClassification == 0) { return SizeClass.Lesser; } return SizeClass.None; } private static float GetCharacterScale(CharacterBody self, SizeData sizeData) { //IL_03a5: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Invalid comparison between Unknown and I4 //IL_0404: Unknown result type (might be due to invalid IL or missing references) //IL_0281: Unknown result type (might be due to invalid IL or missing references) float value; float num2; float value2; float num; float num3; switch (sizeData.sizeClass) { case SizeClass.Player: num = Configuration.PlayerSizeIncrease.Value; value = Configuration.PlayerSizeMult.Value; num2 = Configuration.PlayerSizeExponent.Value; value2 = Configuration.PlayerSizeLimit.Value; num3 = 0.5f; break; case SizeClass.Lesser: num = Configuration.LesserSizeIncrease.Value; value = Configuration.LesserSizeMult.Value; num2 = Configuration.LesserSizeExponent.Value; value2 = Configuration.LesserSizeLimit.Value; num3 = 0.5f; break; case SizeClass.Greater: num = Configuration.GreaterSizeIncrease.Value; value = Configuration.GreaterSizeMult.Value; num2 = Configuration.GreaterSizeExponent.Value; value2 = Configuration.GreaterSizeLimit.Value; num3 = 0.35f; break; case SizeClass.Champion: num = Configuration.ChampionSizeIncrease.Value; value = Configuration.ChampionSizeMult.Value; num2 = Configuration.ChampionSizeExponent.Value; value2 = Configuration.ChampionSizeLimit.Value; num3 = 0.25f; break; default: return 1f; } value2 = Mathf.Min(Configuration.AbsoluteSizeLimit.Value, value2); if (Configuration.IgnoreSizeLimit.Value) { value2 = 999f; num3 = 0.1f; } if (Configuration.IgnoreSizeExponent.Value) { num2 = 1f; } float num4 = 1f; float value3 = Configuration.ModifierMult.Value; Inventory inventory = self.inventory; int itemCount; if (Object.op_Implicit((Object)(object)inventory)) { float value4 = Configuration.CoreItemModifierLimit.Value; itemCount = inventory.GetItemCount(Items.Knurl); if (itemCount > 0) { num += value3 * Configuration.KnurlSizeIncrease.Value * Mathf.Min(value4, Mathf.Sqrt((float)itemCount)); } itemCount = 10 * self.inventory.GetItemCount(Items.Pearl); itemCount += 25 * self.inventory.GetItemCount(Items.ShinyPearl); if (itemCount > 0) { num += value3 * Configuration.PearlSizeIncrease.Value * Mathf.Min(value4, Mathf.Sqrt((float)itemCount / 10f)); } itemCount = inventory.GetItemCount(Items.HalfSpeedDoubleHealth); if (itemCount > 0) { num += value3 * Configuration.StoneFluxSizeIncrease.Value * Mathf.Min(value4, Mathf.Sqrt((float)itemCount)); } if ((int)RelicMassIndex != -1) { itemCount = inventory.GetItemCount(RelicMassIndex); if (itemCount > 0) { num += value3 * Configuration.StoneFluxSizeIncrease.Value * Mathf.Min(value4, Mathf.Sqrt((float)itemCount)); } } itemCount = inventory.GetItemCount(ZetSizeControllerContent.Items.ZetSplitTracker); if (itemCount > 1) { num4 *= Mathf.Pow(Configuration.SplitifactMult.Value, (float)(itemCount - 1)); } itemCount = inventory.GetItemCount(Items.LunarDagger); if (itemCount > 0) { num4 *= Mathf.Max(Configuration.GlassModifierLimit.Value, Mathf.Pow(Configuration.GlassSizeMult.Value, (float)itemCount)); } num += value3 * GetItemScoreScaling(inventory); } if (self.isBoss) { num += value3 * Configuration.BossSizeIncrease.Value; } itemCount = self.eliteBuffCount; if (itemCount > 0) { num += value3 * Configuration.EliteSizeIncrease.Value; num += value3 * Configuration.EliteCountSizeIncrease.Value * Mathf.Pow((float)itemCount, Configuration.EliteCountExponent.Value); } itemCount = self.GetBuffCount(HeadhunterBuff); if (itemCount > 0) { num += value3 * Configuration.HeadhunterSizeIncrease.Value * Mathf.Pow((float)itemCount, Configuration.HeadhunterExponent.Value); } if (self.HasBuff(Buffs.TonicBuff)) { num4 *= Configuration.TonicSizeMult.Value; } if (self.HasBuff(ShrinkRayBuff)) { num4 *= 0.65f; } num += value3 * GetLevelScaling(sizeData.sizeClass == SizeClass.Player, self.level); if (num < 0f) { num = -0.01f * Util.ConvertAmplificationPercentageIntoReductionPercentage(Mathf.Abs(num) * 100f); } float num5 = Mathf.Max(0.1f, value * (1f + num)); if (num5 > 1f) { num5 = Mathf.Pow(num5, num2); } if (ZetShrinkifact.Enabled) { if (sizeData.sizeClass == SizeClass.Player) { if (Configuration.ShrinkifactPlayer.Value) { num4 *= Configuration.ShrinkifactMult.Value; if (Configuration.ShrinkifactExtend.Value) { num3 *= Configuration.ShrinkifactMult.Value; } } } else if (Configuration.ShrinkifactMonster.Value) { num4 *= Configuration.ShrinkifactMult.Value; if (Configuration.ShrinkifactExtend.Value) { num3 *= Configuration.ShrinkifactMult.Value; } } } if (ZetTitanifact.Enabled) { if (sizeData.sizeClass == SizeClass.Player) { if (Configuration.TitanifactPlayer.Value) { num4 *= Configuration.TitanifactMult.Value; if (Configuration.TitanifactExtend.Value && Configuration.PlayerSizeLimitExtendable.Value) { value2 *= Configuration.TitanifactMult.Value; } } } else if (Configuration.TitanifactMonster.Value) { num4 *= Configuration.TitanifactMult.Value; if (Configuration.TitanifactExtend.Value) { value2 *= Configuration.TitanifactMult.Value; } } } num3 = Mathf.Max(num3, 0.1f); num5 *= num4; return Mathf.Clamp(num5, num3, Mathf.Max(num3, value2)); } private static float GetItemScoreScaling(Inventory inventory) { //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Invalid comparison between Unknown and I4 //IL_00f1: Unknown result type (might be due to invalid IL or missing references) float value = Configuration.ItemScoreSizeIncrease.Value; if (value > 0f) { float num = 0f; float value2 = Configuration.ItemScoreT1Effect.Value; float value3 = Configuration.ItemScoreT2Effect.Value; float value4 = Configuration.ItemScoreT3Effect.Value; float value5 = Configuration.ItemScoreBossEffect.Value; float value6 = Configuration.ItemScoreLunarEffect.Value; num += value2 * (float)inventory.GetTotalItemCountOfTier((ItemTier)0); num += value2 * (float)inventory.GetTotalItemCountOfTier((ItemTier)6); num += value3 * (float)inventory.GetTotalItemCountOfTier((ItemTier)1); num += value3 * (float)inventory.GetTotalItemCountOfTier((ItemTier)7); num += value4 * (float)inventory.GetTotalItemCountOfTier((ItemTier)2); num += value4 * (float)inventory.GetTotalItemCountOfTier((ItemTier)8); num += value5 * (float)inventory.GetTotalItemCountOfTier((ItemTier)4); num += value5 * (float)inventory.GetTotalItemCountOfTier((ItemTier)9); num += value6 * (float)inventory.GetTotalItemCountOfTier((ItemTier)3); if ((int)LunarVoidTier != 10) { num += value6 * (float)inventory.GetTotalItemCountOfTier(LunarVoidTier); } if (num > 0f) { value *= Mathf.Pow(num, Configuration.ItemScoreSizeExponent.Value); return Mathf.Min(value, Configuration.ItemScoreSizeLimit.Value); } } return 0f; } private static float GetLevelScaling(bool isPlayer, float level) { if (level > 1.99f) { float value; float value2; float num; if (isPlayer) { num = Mathf.Abs(Configuration.PlayerLevelSizeIncrease.Value); if (num == 0f) { return 0f; } value = Configuration.PlayerLevelSizeExponent.Value; value2 = Configuration.PlayerLevelSizeLimit.Value; } else { num = Mathf.Abs(Configuration.MonsterLevelSizeIncrease.Value); if (num == 0f) { return 0f; } value = Configuration.MonsterLevelSizeExponent.Value; value2 = Configuration.MonsterLevelSizeLimit.Value; } num *= Mathf.Pow(level - 1f, value); return Mathf.Min(num, value2); } return 0f; } private static void FixedUpdateHook() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__29_0; if (obj == null) { hook_FixedUpdate val = delegate(orig_FixedUpdate orig, CharacterBody self) { orig.Invoke(self); UpdateSize(self, instant: false); }; <>c.<>9__29_0 = val; obj = (object)val; } CharacterBody.FixedUpdate += (hook_FixedUpdate)obj; } private static void UpdateSize(CharacterBody self, bool instant) { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)self)) { return; } SizeData component = ((Component)self).gameObject.GetComponent<SizeData>(); if (!Object.op_Implicit((Object)(object)component)) { return; } float fixedDeltaTime = Time.fixedDeltaTime; bool value = Configuration.ValidateMonsterSize.Value; bool flag = component.sizeClass == SizeClass.Player; if (!value || flag || component.validation <= 1) { if (value && !flag && component.validation == 1) { component.size = self.modelLocator.modelTransform.localScale; instant = true; } TrackExternalEffects(self, component); bool flag2 = false; bool flag3 = component.forceUpdate > 0f; if (flag3 || component.scale != component.target) { flag2 = true; float value2 = Configuration.SizeChangeRate.Value; if (instant || flag3 || value2 <= 0f) { component.scale = component.target; } else { float num = fixedDeltaTime * component.scale * value2; if (component.scale < component.target) { component.scale = Mathf.Min(component.scale + num, component.target); } else { component.scale = Mathf.Max(component.scale - num, component.target); } } } if (flag2 && HasTransform(self)) { SetSize(self, component); } if (component.forceUpdate > 0f) { component.forceUpdate = Mathf.Max(0f, component.forceUpdate - fixedDeltaTime); } } if (component.validation > 0) { component.validation--; } } private static void TrackExternalEffects(CharacterBody self, SizeData sizeData) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) ExternalEffect externalEffect = ExternalEffect.None; if (self.HasBuff(ShrinkRayBuff)) { externalEffect |= ExternalEffect.TksatShrinkRay; } if (sizeData.externalEffect != externalEffect) { sizeData.externalEffect = externalEffect; sizeData.forceUpdate = 0.1f; } } private static void SetSize(CharacterBody body, SizeData sizeData) { //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) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) bool flag = body.bodyIndex == RexBodyIndex; Vector3 size = sizeData.size; float scale = sizeData.scale; body.modelLocator.modelTransform.localScale = new Vector3(size.x * scale, size.y * scale, size.z * scale); float num = sizeData.height / 2f * (scale - 1f); if (flag) { num *= 1.75f; } sizeData.heightVerticalOffset = num; sizeData.playbackSpeed = Mathf.Clamp(1f / scale, 0.125f, 4f); float num2 = (flag ? 0.4f : 2f); sizeData.interactionRange = 1f + Mathf.Max(0f, scale - 1f) / num2; } private static void OnDestroyHook() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__33_0; if (obj == null) { hook_OnDestroy val = delegate(orig_OnDestroy orig, CharacterBody self) { DestroySizeData(self); orig.Invoke(self); }; <>c.<>9__33_0 = val; obj = (object)val; } CharacterBody.OnDestroy += (hook_OnDestroy)obj; } private static void DestroySizeData(CharacterBody self) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)self)) { return; } SizeData component = ((Component)self).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { if (component.sizeClass == SizeClass.Player) { NetworkInstanceId netId = component.netId; ZetSizeControllerPlugin.LogWarn("Destroying Player SizeData : " + ((object)(NetworkInstanceId)(ref netId)).ToString()); } Object.Destroy((Object)(object)component); } } private static void ResizeOnVehicleExit(VehicleSeat seat, GameObject gameObject) { CharacterBody component = gameObject.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { SizeData component2 = gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component2)) { component2.scale = component2.target - 0.01f; UpdateSize(component, instant: true); } } } private static void FixPrintController() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__36_0; if (obj == null) { Manipulator val = delegate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) ILCursor val2 = new ILCursor(il); if (val2.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdfld<PrintController>(x, "maxPrintHeight") })) { val2.Index += 1; val2.Emit(OpCodes.Ldarg, 0); val2.Emit(OpCodes.Ldarg, 1); val2.EmitDelegate<Func<PrintController, float, float>>((Func<PrintController, float, float>)delegate(PrintController printController, float sample) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) CharacterModel characterModel = printController.characterModel; if (Object.op_Implicit((Object)(object)characterModel)) { CharacterBody body = characterModel.body; if (Object.op_Implicit((Object)(object)body)) { if (body.bodyIndex == ClayableTemplarBodyIndex) { return 1f; } if (sample >= 1f) { return 100f; } SizeData component = ((Component)body).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { return Mathf.Max(1f, component.scale); } } } return 1f; }); val2.Emit(OpCodes.Mul); } else { ZetSizeControllerPlugin.LogWarn("FixPrintController Failed"); } }; <>c.<>9__36_0 = val; obj = (object)val; } PrintController.SetPrintThreshold += (Manipulator)obj; } private static void CameraDistanceHook() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__37_0; if (obj == null) { Manipulator val = delegate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) ILCursor val2 = new ILCursor(il); if (val2.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, 13) })) { val2.Index += 1; val2.Emit(OpCodes.Ldloc, 13); val2.Emit(OpCodes.Ldloc, 1); val2.EmitDelegate<Func<Vector3, CameraRigController, Vector3>>((Func<Vector3, CameraRigController, Vector3>)delegate(Vector3 direction, CameraRigController camRig) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) CharacterBody targetBody = camRig.targetBody; if (Object.op_Implicit((Object)(object)targetBody)) { SizeData component = ((Component)targetBody).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { return direction * component.scale; } } return direction; }); val2.Emit(OpCodes.Stloc, 13); } else { ZetSizeControllerPlugin.LogWarn("CameraDistanceHook Failed"); } }; <>c.<>9__37_0 = val; obj = (object)val; } CameraModePlayerBasic.UpdateInternal += (Manipulator)obj; } private static void CameraVerticalOffsetHook() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__38_0; if (obj == null) { Manipulator val = delegate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_006f: Unknown result type (might be due to invalid IL or missing references) ILCursor val2 = new ILCursor(il); if (val2.TryGotoNext(new Func<Instruction, bool>[2] { (Instruction x) => ILPatternMatchingExt.MatchLdflda<CharacterCameraParamsData>(x, "pivotVerticalOffset"), (Instruction x) => ILPatternMatchingExt.MatchLdfld<BlendableFloat>(x, "value") })) { val2.Index += 2; val2.Emit(OpCodes.Ldloc, 0); val2.EmitDelegate<Func<float, CameraRigController, float>>((Func<float, CameraRigController, float>)delegate(float vertical, CameraRigController camRig) { CharacterBody targetBody = camRig.targetBody; if (Object.op_Implicit((Object)(object)targetBody)) { SizeData component = ((Component)targetBody).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { return vertical * component.scale + component.heightVerticalOffset; } } return vertical; }); } else { ZetSizeControllerPlugin.LogWarn("CameraVerticalOffsetHook Failed"); } }; <>c.<>9__38_0 = val; obj = (object)val; } CameraModePlayerBasic.CalculateTargetPivotPosition += (Manipulator)obj; } private static void InteractionDriverHook() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__39_0; if (obj == null) { Manipulator val = delegate(ILContext il) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) ILCursor val2 = new ILCursor(il); int rangeIndex = -1; if (val2.TryGotoNext(new Func<Instruction, bool>[4] { (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<InteractionDriver>(x, "get_interactor"), (Instruction x) => ILPatternMatchingExt.MatchLdfld<Interactor>(x, "maxInteractionDistance"), (Instruction x) => ILPatternMatchingExt.MatchStloc(x, ref rangeIndex) })) { val2.Index += 4; val2.Emit(OpCodes.Ldarg, 0); val2.Emit(OpCodes.Ldloc, rangeIndex); val2.EmitDelegate<Func<InteractionDriver, float, float>>((Func<InteractionDriver, float, float>)delegate(InteractionDriver driver, float range) { CharacterBody characterBody = driver.characterBody; if (Object.op_Implicit((Object)(object)characterBody)) { SizeData component = ((Component)characterBody).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { range *= component.interactionRange; } } return range; }); val2.Emit(OpCodes.Stloc, rangeIndex); } else { ZetSizeControllerPlugin.LogWarn("InteractionHook Failed"); } }; <>c.<>9__39_0 = val; obj = (object)val; } InteractionDriver.FindBestInteractableObject += (Manipulator)obj; } private static void PickupPickerHook() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__40_0; if (obj == null) { Manipulator val = delegate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_00d5: Unknown result type (might be due to invalid IL or missing references) ILCursor val2 = new ILCursor(il); if (val2.TryGotoNext(new Func<Instruction, bool>[5] { (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<PickupPickerController>(x, "cutoffDistance"), (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<PickupPickerController>(x, "cutoffDistance"), (Instruction x) => ILPatternMatchingExt.MatchMul(x) })) { val2.Index += 5; val2.Emit(OpCodes.Ldloc, 1); val2.EmitDelegate<Func<float, CharacterBody, float>>((Func<float, CharacterBody, float>)delegate(float cutoff, CharacterBody body) { SizeData component = ((Component)body).gameObject.GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { float interactionRange = component.interactionRange; cutoff *= interactionRange * interactionRange; } return cutoff; }); } else { ZetSizeControllerPlugin.LogWarn("PickupPickerHook Failed"); } }; <>c.<>9__40_0 = val; obj = (object)val; } PickupPickerController.FixedUpdateServer += (Manipulator)obj; } private static void OverlapAttackPositionHook() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__41_0; if (obj == null) { Manipulator val = delegate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_003e: Unknown result type (might be due to invalid IL or missing references) ILCursor val2 = new ILCursor(il); if (val2.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, 3) })) { val2.Emit(OpCodes.Ldarg, 0); val2.EmitDelegate<Func<Vector3, OverlapAttack, Vector3>>((Func<Vector3, OverlapAttack, Vector3>)delegate(Vector3 position, OverlapAttack attack) { //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_008c: 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_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) GameObject attacker = attack.attacker; if (Object.op_Implicit((Object)(object)attacker)) { CharacterBody component = attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { Vector3 val3 = position - component.corePosition; if (component.bodyIndex == BeetleBodyIndex || component.bodyIndex == BeetleCrystalBodyIndex) { ((Vector3)(ref val3))..ctor(val3.x, val3.y * 0.5f, val3.z); } position = component.corePosition + val3; } } return position; }); } else { ZetSizeControllerPlugin.LogWarn("OverlapAttackPositionHook Failed"); } }; <>c.<>9__41_0 = val; obj = (object)val; } OverlapAttack.Fire += (Manipulator)obj; } private static void OverlapAttackScaleHook() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__42_0; if (obj == null) { Manipulator val = delegate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_003e: Unknown result type (might be due to invalid IL or missing references) ILCursor val2 = new ILCursor(il); if (val2.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, 4) })) { val2.Emit(OpCodes.Ldarg, 0); val2.EmitDelegate<Func<Vector3, OverlapAttack, Vector3>>((Func<Vector3, OverlapAttack, Vector3>)delegate(Vector3 scale, OverlapAttack attack) { //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) GameObject attacker = attack.attacker; if (Object.op_Implicit((Object)(object)attacker)) { CharacterBody component = attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { if (component.bodyIndex == BeetleBodyIndex || component.bodyIndex == BeetleCrystalBodyIndex) { ((Vector3)(ref scale))..ctor(scale.x * 1.25f, scale.y * 2.5f, scale.z * 1.25f); } if (component.bodyIndex == ImpBodyIndex || component.bodyIndex == LemurianBodyIndex) { scale *= 1.75f; } } } return scale; }); } else { ZetSizeControllerPlugin.LogWarn("OverlapAttackScaleHook Failed"); } }; <>c.<>9__42_0 = val; obj = (object)val; } OverlapAttack.Fire += (Manipulator)obj; } private static void AnimationHook() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__43_0; if (obj == null) { Manipulator val = delegate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected O, but got Unknown //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) ILCursor val2 = new ILCursor(il); VariableDefinition val3 = new VariableDefinition(((MemberReference)il.Body.Method).Module.TypeSystem.Single); il.Body.Variables.Add(val3); val2.Index = 0; val2.Emit(OpCodes.Ldarg, 0); val2.EmitDelegate<Func<EntityState, float>>((Func<EntityState, float>)delegate(EntityState entityState) { CharacterBody characterBody = entityState.characterBody; if (Object.op_Implicit((Object)(object)characterBody)) { SizeData component = ((Component)characterBody).GetComponent<SizeData>(); if (Object.op_Implicit((Object)(object)component)) { return component.playbackSpeed; } } return 1f; }); val2.Emit(OpCodes.Stloc, val3); int num = default(int); if (val2.TryGotoNext(new Func<Instruction, bool>[2] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(AnimationParameters).GetField("mainRootPlaybackRate")), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref num) })) { val2.Index += 2; val2.Emit(OpCodes.Ldloc, val3); val2.Emit(OpCodes.Mul); } else { ZetSizeControllerPlugin.LogWarn("AnimationHook:rootMotion Failed"); } if (val2.TryGotoNext(new Func<Instruction, bool>[4] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(AnimationParameters).GetField("walkSpeed")), (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchCall<EntityState>(x, "get_characterBody"), (Instruction x) => ILPatternMatchingExt.MatchCallvirt<CharacterBody>(x, "get_moveSpeed") })) { val2.Index += 4; val2.Emit(OpCodes.Ldloc, val3); val2.Emit(OpCodes.Mul); } else { ZetSizeControllerPlugin.LogWarn("AnimationHook:walkSpeed Failed"); } }; <>c.<>9__43_0 = val; obj = (object)val; } BaseCharacterMain.UpdateAnimationParameters += (Manipulator)obj; } } internal static class StatHooks { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<Instruction, bool> <>9__1_1; public static Func<Instruction, bool> <>9__1_2; public static Func<CharacterBody, float, float> <>9__1_3; public static Manipulator <>9__1_0; public static Func<Instruction, bool> <>9__2_1; public static Func<Instruction, bool> <>9__2_2; public static Func<Instruction, bool> <>9__2_3; public static Func<Instruction, bool> <>9__2_4; public static Func<CharacterBody, float, float> <>9__2_5; public static Manipulator <>9__2_0; public static Func<Instruction, bool> <>9__3_1; public static Func<Instruction, bool> <>9__3_2; public static Func<Instruction, bool> <>9__3_3; public static Func<Instruction, bool> <>9__3_4; public static Func<CharacterBody,