using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AutoSprint.Core; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using EmotesAPI; using EntityStates; using EntityStates.AI.Walker; using EntityStates.GaleShockTrooperDroneStates; using EntityStates.GaleShockTrooperStates.Dash; using EntityStates.GaleShockTrooperStates.Weapon; using EntityStates.GaleShockTrooperStates.Weapon.MissilePainter; using ExtraDamageTypes; using GaleShockTrooper; using GaleShockTrooper.Characters.Drones.GaleShockTrooperDrone; using GaleShockTrooper.Characters.Drones.GaleShockTrooperDrone.Components; using GaleShockTrooper.Characters.Survivors.GaleShockTrooper.Achievements; using GaleShockTrooper.Characters.Survivors.GaleShockTrooper.Bossfight; using GaleShockTrooper.Characters.Survivors.GaleShockTrooper.Components; using GaleShockTrooper.Characters.Survivors.GaleShockTrooper.Content; using GaleShockTrooper.Modules; using GaleShockTrooper.Modules.Achievements; using GaleShockTrooper.Modules.Characters; using GaleShockTrooper.Survivors.GaleShockTrooperSurvivor; using GaleShockTrooper.Survivors.GaleShockTrooperSurvivor.Content; using HG; using HG.BlendableTypes; using IL.RoR2; using JetBrains.Annotations; using KinematicCharacterController; using Mono.Cecil.Cil; using MonoMod.Cil; using On.RoR2; using R2API; using R2API.Utils; using RiskOfOptions; using RiskOfOptions.Options; using RoR2; using RoR2.Achievements; using RoR2.Audio; using RoR2.CharacterAI; using RoR2.ContentManagement; using RoR2.Orbs; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using ShaderSwapper; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.Rendering; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("GaleShockTrooper")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+295a5f36ad388883286edc673f1fd3000dab0c13")] [assembly: AssemblyProduct("GaleShockTrooper")] [assembly: AssemblyTitle("GaleShockTrooper")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace EntityStates.GaleShockTrooperStates.Weapon { public class AimSticky : AimThrowableBase { public static GameObject aimEndpointVisualizerPrefab = Addressables.LoadAssetAsync((object)"RoR2/Base/Huntress/HuntressArrowRainIndicator.prefab").WaitForCompletion(); public static GameObject aimArcVisualizerPrefab = Addressables.LoadAssetAsync((object)"RoR2/Base/Common/VFX/BasicThrowableVisualizer.prefab").WaitForCompletion(); public static float smokeEffectFrequency = 10f; private float smokeEffectStopwatch = 0f; private float duration; public override void OnEnter() { base.maxDistance = 60f; base.rayRadius = 2f; base.arcVisualizerPrefab = aimArcVisualizerPrefab; base.projectilePrefab = ThrowSticky.projectilePrefab; base.endpointVisualizerPrefab = aimEndpointVisualizerPrefab; base.endpointVisualizerRadiusScale = ThrowSticky.blastRadius; base.setFuse = false; base.baseMinimumDuration = 0f; base.projectileBaseSpeed = ThrowSticky.projectileSpeed; base.damageCoefficient = ThrowSticky.damageCoefficient; ((AimThrowableBase)this).OnEnter(); duration = ThrowSticky.baseDuration / ((BaseState)this).attackSpeedStat; ((EntityState)this).PlayAnimation("Gesture, Override", "Missile_Start", "Shootgun.playbackRate", duration * 0.5f, 0f); ((BaseState)this).StartAimMode(2f, false); } public override void FixedUpdate() { ((AimThrowableBase)this).FixedUpdate(); ((BaseState)this).StartAimMode(2f, false); smokeEffectStopwatch += ((EntityState)this).GetDeltaTime(); if (smokeEffectStopwatch >= 1f / smokeEffectFrequency) { smokeEffectStopwatch -= 1f / smokeEffectFrequency; EffectManager.SimpleMuzzleFlash(PaintMissiles.smokeEffectPrefab, ((EntityState)this).gameObject, "VentL", false); EffectManager.SimpleMuzzleFlash(PaintMissiles.smokeEffectPrefab, ((EntityState)this).gameObject, "VentR", false); } } public override void FireProjectile() { } public override EntityState PickNextState() { return (EntityState)(object)new ThrowSticky(); } public override void OnExit() { ((EntityState)this).PlayAnimation("Gesture, Override", "Missile_Shoot", "Shootgun.playbackRate", duration, 0f); Util.PlaySound("Play_MULT_m1_grenade_launcher_shoot", ((EntityState)this).gameObject); ((BaseState)this).StartAimMode(2f, false); ((AimThrowableBase)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class DeployDrone : BaseState { public static float baseCooldown = 30f; public static float baseDuration = 1f; private float duration; private bool attemptedSpawn = false; public override void OnEnter() { ((BaseState)this).OnEnter(); ((EntityState)this).characterBody.SetAimTimer(2f); duration = baseDuration / base.attackSpeedStat; Util.PlaySound("Play_drone_repair", ((EntityState)this).gameObject); ((EntityState)this).PlayAnimation("Gesture, Override", "DeployDrone", "Shootgun.playbackRate", duration, 0f); AttemptSpawnDroneSerer(); } private void AttemptSpawnDroneSerer() { //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: 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_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active || attemptedSpawn) { return; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && Object.op_Implicit((Object)(object)((EntityState)this).characterBody.master)) { attemptedSpawn = true; MasterDroneTracker masterDroneTracker = ((Component)((EntityState)this).characterBody.master).GetComponent(); if (!Object.op_Implicit((Object)(object)masterDroneTracker)) { masterDroneTracker = ((Component)((EntityState)this).characterBody.master).gameObject.AddComponent(); masterDroneTracker.master = ((EntityState)this).characterBody.master; } Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 direction = ((Ray)(ref aimRay)).direction; direction.y = 0f; ((Vector3)(ref direction)).Normalize(); Vector3 pos = ((EntityState)this).characterBody.corePosition + Vector3.up * 2.5f + direction * 2.5f; masterDroneTracker.SummonDroneServer(pos, Util.QuaternionSafeLookRotation(direction)); } else { Debug.LogError((object)"CharacterBody has no master, failed to deploy drone!", (Object)(object)GaleShockTrooperPlugin.instance); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { if (!((EntityState)this).outer.destroying) { AttemptSpawnDroneSerer(); } ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class FireRicochetSlug : BaseState { public static float ricochetRange = 45f; public static float damageCoefficient = 30f; public static float baseDuration = 0.6f; public static float force = 2000f; public static float recoil = 3f; public static int ricochetCount = 9; public static float selfKnockbackForce = 9000f; public static float baseCooldown = 20f; public static GameObject hitEffectPrefab = Addressables.LoadAssetAsync((object)"RoR2/Base/Commando/OmniExplosionVFXFMJ.prefab").WaitForCompletion(); public static GameObject tracerEffectPrefab; public static GameObject muzzleflashEffectPrefab = Addressables.LoadAssetAsync((object)"RoR2/Base/Bandit2/MuzzleflashBandit2.prefab").WaitForCompletion(); public static GameObject orbEffectPrefab; public static GameObject ricochetImpactEffect; private float duration; public override void OnEnter() { //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_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0188: 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_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Expected O, but got Unknown //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: 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_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; Util.PlaySound("Play_bandit_M2_shot", ((EntityState)this).gameObject); EffectManager.SimpleMuzzleFlash(muzzleflashEffectPrefab, ((EntityState)this).gameObject, "Muzzle", false); ((EntityState)this).PlayAnimation("Gesture, Override", "ShootSlug", "Shootgun.playbackRate", duration, 0f); if (((EntityState)this).isAuthority) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && (!((EntityState)this).characterMotor.isGrounded || !(((EntityState)this).characterMotor.velocity == Vector3.zero))) { CharacterMotor characterMotor = ((EntityState)this).characterMotor; Ray aimRay = ((BaseState)this).GetAimRay(); characterMotor.ApplyForce(-((Ray)(ref aimRay)).direction * selfKnockbackForce, true, false); } Ray aimRay2 = ((BaseState)this).GetAimRay(); BulletAttack val = new BulletAttack { damage = base.damageStat * damageCoefficient, procChainMask = default(ProcChainMask), procCoefficient = 1f, maxDistance = 2000f, hitEffectPrefab = hitEffectPrefab, tracerEffectPrefab = tracerEffectPrefab, bulletCount = 1u, damageType = DamageTypeCombo.GenericSpecial, falloffModel = (FalloffModel)1, force = force, isCrit = ((BaseState)this).RollCrit(), muzzleName = "Muzzle", aimVector = ((Ray)(ref aimRay2)).direction, origin = ((Ray)(ref aimRay2)).origin, minSpread = 0f, maxSpread = 0f, owner = ((EntityState)this).gameObject, radius = 2f, smartCollision = true }; DamageAPI.AddModdedDamageType(ref val.damageType, CharacterDamageTypes.SpecialSlugProc); DamageAPI.AddModdedDamageType(ref val.damageType, CharacterDamageTypes.SpecialSlugVisual); val.Fire(); } ((BaseState)this).AddRecoil(0f - recoil, recoil, -0.5f * recoil, 0.5f * recoil); ((EntityState)this).characterBody.AddSpreadBloom(0.4f); ((EntityState)this).characterBody.SetAimTimer(2f); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class FireShotgun : BaseState { public static float maxRange = 80f; public static uint pelletCount = 5u; public static float damageCoefficient = 0.4f; public static float procCoefficient = 0.6f; public static float baseDuration = 0.3f; public static float force = 100f; public static float spread = 3f; public static float recoil = 1f; public static GameObject hitEffectPrefab = Addressables.LoadAssetAsync((object)"RoR2/Base/Commando/HitsparkCommandoShotgun.prefab").WaitForCompletion(); public static GameObject tracerEffectPrefab; public static GameObject muzzleflashEffectPrefab = Addressables.LoadAssetAsync((object)"RoR2/Base/Commando/MuzzleflashFMJ.prefab").WaitForCompletion(); private float duration; public override void OnEnter() { //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_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) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: 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_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_0144: 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) ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; Util.PlaySound("Play_captain_m1_shootWide", ((EntityState)this).gameObject); EffectManager.SimpleMuzzleFlash(muzzleflashEffectPrefab, ((EntityState)this).gameObject, "Muzzle", false); ((EntityState)this).PlayAnimation("Gesture, Override", "ShootGun", "Shootgun.playbackRate", duration, 0f); if (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); new BulletAttack { damage = base.damageStat * damageCoefficient, procChainMask = default(ProcChainMask), procCoefficient = procCoefficient, maxDistance = maxRange, hitEffectPrefab = hitEffectPrefab, tracerEffectPrefab = tracerEffectPrefab, bulletCount = pelletCount, damageType = DamageTypeCombo.GenericPrimary, falloffModel = (FalloffModel)1, force = force, isCrit = ((BaseState)this).RollCrit(), muzzleName = "Muzzle", aimVector = ((Ray)(ref aimRay)).direction, origin = ((Ray)(ref aimRay)).origin, minSpread = 0f, maxSpread = spread, owner = ((EntityState)this).gameObject, radius = 0.3f, smartCollision = true }.Fire(); } ((BaseState)this).AddRecoil(0f - recoil, recoil, -0.5f * recoil, 0.5f * recoil); ((EntityState)this).characterBody.AddSpreadBloom(0.4f); ((EntityState)this).characterBody.SetAimTimer(2f); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } public class ThrowSticky : BaseState { public static int baseMaxStocks = 1; public static float baseCooldown = 12f; public static float damageCoefficient = 6f; public static float blastRadius = 12f; public static float baseDuration = 0.6f; public static float detonationDelay = 1.5f; public static float projectileSpeed = 80f; public static GameObject projectilePrefab; public static GameObject muzzleflashEffectPrefab = Addressables.LoadAssetAsync((object)"RoR2/Base/Common/VFX/MuzzleflashSmokeRing.prefab").WaitForCompletion(); private float duration; public override void OnEnter() { //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; ((EntityState)this).characterBody.SetAimTimer(2f); Util.PlaySound("Play_MULT_m1_grenade_launcher_shoot", ((EntityState)this).gameObject); EffectManager.SimpleMuzzleFlash(muzzleflashEffectPrefab, ((EntityState)this).gameObject, "Muzzle", false); ((EntityState)this).PlayAnimation("Gesture, Override", "ShootSticky", "Shootgun.playbackRate", duration, 0f); if (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); FireProjectileInfo val = default(FireProjectileInfo); val.crit = ((BaseState)this).RollCrit(); val.damage = base.damageStat * damageCoefficient; val.force = 400f; val.owner = ((EntityState)this).gameObject; val.position = ((Ray)(ref aimRay)).origin; val.projectilePrefab = projectilePrefab; val.procChainMask = default(ProcChainMask); val.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction); val.damageTypeOverride = DamageTypeCombo.op_Implicit((DamageType)131072) | DamageTypeCombo.op_Implicit((DamageSource)2); ((FireProjectileInfo)(ref val)).speedOverride = projectileSpeed; FireProjectileInfo val2 = val; ProjectileManager.instance.FireProjectile(val2); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)3; } } } namespace EntityStates.GaleShockTrooperStates.Weapon.MissilePainter { public class FireMissiles : BaseState { public static float baseDuration = 0.12f; public static GameObject projectilePrefab; public static float damageCoefficient = 4f; public static float force = 360f; public static GameObject muzzleflashEffectPrefab = Addressables.LoadAssetAsync((object)"RoR2/Base/Commando/MuzzleflashFMJ.prefab").WaitForCompletion(); private float duration; private bool clearTargetList = true; public bool isCrit = false; public int maxAttacks; public int attacksFired; public List targetList; public override void OnEnter() { ((BaseState)this).OnEnter(); if (targetList == null) { targetList = new List(); } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(2f); } duration = baseDuration / base.attackSpeedStat; if (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator) && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.secondary)) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.OnSkillActivated(((EntityState)this).skillLocator.secondary); if (NetworkServer.active) { HandleLuminousShotServer(((EntityState)this).characterBody); } } if (((EntityState)this).isAuthority) { ((EntityState)this).skillLocator.secondary.DeductStock(1); } } FireMissile(); } internal static void HandleLuminousShotServer(CharacterBody body) { if (NetworkServer.active && Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.inventory) && body.inventory.GetItemCount(Items.IncreasePrimaryDamage) > 0) { body.AddIncreasePrimaryDamageStack(); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { if (attacksFired >= maxAttacks) { ((EntityState)this).outer.SetNextStateToMain(); return; } clearTargetList = false; ((EntityState)this).outer.SetNextState((EntityState)(object)new FireMissiles { targetList = targetList, attacksFired = attacksFired, maxAttacks = maxAttacks, isCrit = isCrit }); } } public override void OnExit() { if (clearTargetList) { foreach (PaintMissiles.TargetInfo target in targetList) { ((Indicator)target.indicator).active = false; ((Indicator)target.indicator).DestroyVisualizer(); } } ((EntityState)this).OnExit(); } private void FireMissile() { //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_02fe: Unknown result type (might be due to invalid IL or missing references) //IL_0337: Unknown result type (might be due to invalid IL or missing references) //IL_033c: Unknown result type (might be due to invalid IL or missing references) //IL_0348: Unknown result type (might be due to invalid IL or missing references) //IL_035e: Unknown result type (might be due to invalid IL or missing references) //IL_0363: Unknown result type (might be due to invalid IL or missing references) //IL_0368: Unknown result type (might be due to invalid IL or missing references) //IL_0375: Unknown result type (might be due to invalid IL or missing references) //IL_0377: Unknown result type (might be due to invalid IL or missing references) //IL_037e: 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_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: 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_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_0249: Unknown result type (might be due to invalid IL or missing references) //IL_0255: Unknown result type (might be due to invalid IL or missing references) //IL_026b: Unknown result type (might be due to invalid IL or missing references) //IL_0270: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_02a7: Unknown result type (might be due to invalid IL or missing references) //IL_02b1: Unknown result type (might be due to invalid IL or missing references) //IL_02b5: Unknown result type (might be due to invalid IL or missing references) //IL_02ba: Unknown result type (might be due to invalid IL or missing references) attacksFired++; Util.PlaySound("Play_GaleShockTrooper_MicroMissile", ((EntityState)this).gameObject); ((EntityState)this).PlayAnimation("Gesture, Override", "Missile_Shoot", "Shootgun.playbackRate", duration, 0f); EffectManager.SimpleMuzzleFlash(muzzleflashEffectPrefab, ((EntityState)this).gameObject, "Muzzle", false); EffectManager.SimpleMuzzleFlash(PaintMissiles.smokeEffectPrefab, ((EntityState)this).gameObject, "VentL", false); EffectManager.SimpleMuzzleFlash(PaintMissiles.smokeEffectPrefab, ((EntityState)this).gameObject, "VentR", false); if (!((EntityState)this).isAuthority) { return; } GameObject target = null; PaintMissiles.TargetInfo targetInfo = ((targetList != null) ? targetList.FirstOrDefault() : null); if (targetInfo != null && (Object)(object)targetInfo.hurtBox != (Object)null && (Object)(object)((Component)targetInfo.hurtBox).gameObject != (Object)null) { targetInfo.SetTargetCount(targetInfo.GetTargetCount() - 1); target = ((Component)targetInfo.hurtBox).gameObject; } Ray aimRay = ((BaseState)this).GetAimRay(); int num = 0; if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && Object.op_Implicit((Object)(object)((EntityState)this).characterBody.inventory)) { num = ((EntityState)this).characterBody.inventory.GetItemCount(Items.MoreMissile); } if (num > 0) { Vector3 val = Vector3.Cross(Vector3.up, ((Ray)(ref aimRay)).direction); Vector3 val2 = Vector3.Cross(((Ray)(ref aimRay)).direction, val); float num2 = 0f; float num3 = 0f; float num4 = 0f; num4 = Random.Range(1f + num2, 1f + num2) * 3f; num3 = num4 / 2f; Vector3 val3 = Quaternion.AngleAxis((0f - num4) * 0.5f, val2) * ((Ray)(ref aimRay)).direction; Quaternion val4 = Quaternion.AngleAxis(num3, val2); Ray val5 = default(Ray); ((Ray)(ref val5))..ctor(((Ray)(ref aimRay)).origin, val3); for (int i = 0; i < 3; i++) { FireProjectileInfo val6 = default(FireProjectileInfo); val6.damage = damageCoefficient * base.damageStat; val6.damageTypeOverride = DamageTypeCombo.GenericSecondary; val6.crit = isCrit; val6.force = force; val6.owner = ((EntityState)this).gameObject; val6.position = ((Ray)(ref aimRay)).origin; val6.procChainMask = default(ProcChainMask); val6.projectilePrefab = projectilePrefab; val6.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref val5)).direction); val6.target = target; FireProjectileInfo val7 = val6; val7.damage *= 1f + 0.5f * (float)(num - 1); ProjectileManager.instance.FireProjectile(val7); ((Ray)(ref val5)).direction = val4 * ((Ray)(ref val5)).direction; } } else { FireProjectileInfo val6 = default(FireProjectileInfo); val6.damage = damageCoefficient * base.damageStat; val6.damageTypeOverride = DamageTypeCombo.GenericSecondary; val6.crit = isCrit; val6.force = force; val6.owner = ((EntityState)this).gameObject; val6.position = ((Ray)(ref aimRay)).origin; val6.procChainMask = default(ProcChainMask); val6.projectilePrefab = projectilePrefab; val6.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction); val6.target = target; FireProjectileInfo val8 = val6; ProjectileManager.instance.FireProjectile(val8); } targetList = targetList.Where((PaintMissiles.TargetInfo tInfo) => tInfo.GetTargetCount() > 0).ToList(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class PaintMissiles : BaseState { public enum InputMode { Hold, Toggle, M2Only } public class TargetInfo { public HurtBox hurtBox; public STMissileIndicator indicator; private int targetCount; public TargetInfo(GameObject owner, HurtBox hurtBox) { this.hurtBox = hurtBox; indicator = new STMissileIndicator(owner, missileTrackingIndicator); ((Indicator)indicator).targetTransform = ((Component)hurtBox).transform; ((Indicator)indicator).active = true; SetTargetCount(1); } public int GetTargetCount() { return targetCount; } public void SetTargetCount(int i) { targetCount = i; indicator.missileCount = targetCount; } } public class STMissileIndicator : Indicator { public int missileCount; public override void UpdateVisualizer() { //IL_00fd: Unknown result type (might be due to invalid IL or missing references) ((Indicator)this).UpdateVisualizer(); Transform val = ((Indicator)this).visualizerTransform.Find("DotOrigin"); for (int num = val.childCount - 1; num >= missileCount; num--) { EntityState.Destroy((Object)(object)((Component)val.GetChild(num)).gameObject); } for (int i = val.childCount; i < missileCount; i++) { GameObject val2 = Object.Instantiate(((Component)((Indicator)this).visualizerPrefab.transform.Find("DotOrigin/DotTemplate")).gameObject, val); ((Indicator)this).FindRenderers(val2.transform); } if (val.childCount > 0) { float num2 = 360f / (float)val.childCount; float num3 = (float)(val.childCount - 1) * 90f; for (int j = 0; j < val.childCount; j++) { Transform child = val.GetChild(j); ((Component)child).gameObject.SetActive(true); child.localRotation = Quaternion.Euler(0f, 0f, num3 + (float)j * num2); } } } public STMissileIndicator(GameObject owner, GameObject visualizerPrefab) : base(owner, visualizerPrefab) { } } public static ConfigEntry selectedInput; public static GameObject missileTrackingIndicator = Addressables.LoadAssetAsync((object)"RoR2/Base/Engi/EngiMissileTrackingIndicator.prefab").WaitForCompletion(); public static GameObject crosshairOverridePrefab = Addressables.LoadAssetAsync((object)"RoR2/DLC1/Railgunner/RailgunnerCrosshair.prefab").WaitForCompletion(); public static GameObject smokeEffectPrefab; public static SkillDef primaryOverride = Addressables.LoadAssetAsync((object)"RoR2/Base/Engi/EngiConfirmTargetDummy.asset").WaitForCompletion(); public static string entrySoundString = "Play_railgunner_m2_scope_in"; public static string exitSoundString = "Play_railgunner_m2_scope_out"; public static float baseEntryduration = 0.3f; public static float baseLockonDuration = 0.3f; public static float baseLockonAngle = 60f; public static float baseLockonRange = 200f; public static int baseMaxStocks = 6; public static float baseCooldown = 6f; public static float smokeEffectFrequency = 10f; private float smokeEffectStopwatch = 0f; private Indicator generalIndicator; private float lockonDuration; private float lockonStopwatch; private OverrideRequest crosshairOverrideRequest; private GenericSkill overriddenSkill; public BullseyeSearch search; private HurtBox lockonTarget; public List targetList; private bool startedPainting = false; private bool clearTargetList = true; private bool buttonReleased = false; private bool buttonRepressed = false; private bool appliedOverride = false; public override void OnEnter() { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Expected O, but got Unknown //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown ((BaseState)this).OnEnter(); search = new BullseyeSearch(); generalIndicator = new Indicator(((EntityState)this).gameObject, missileTrackingIndicator); targetList = new List(); lockonStopwatch = 0f; lockonDuration = baseLockonDuration / base.attackSpeedStat; Util.PlaySound(entrySoundString, ((EntityState)this).gameObject); Util.PlaySound("Play_railgunner_m2_scope_loop", ((EntityState)this).gameObject); ((EntityState)this).PlayAnimation("Gesture, Override", "Missile_Start", "Shootgun.playbackRate", baseEntryduration / base.attackSpeedStat, 0f); crosshairOverrideRequest = CrosshairUtils.RequestOverrideForBody(((EntityState)this).characterBody, crosshairOverridePrefab, (OverridePriority)1); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(2f); } if (selectedInput.Value != InputMode.M2Only) { GenericSkill val = (((Object)(object)((EntityState)this).skillLocator != (Object)null) ? ((EntityState)this).skillLocator.primary : null); if (Object.op_Implicit((Object)(object)val)) { appliedOverride = true; TryOverrideSkill(val); val.onSkillChanged += TryOverrideSkill; } } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); smokeEffectStopwatch += ((EntityState)this).GetDeltaTime(); if (smokeEffectStopwatch >= 1f / smokeEffectFrequency) { smokeEffectStopwatch -= 1f / smokeEffectFrequency; EffectManager.SimpleMuzzleFlash(smokeEffectPrefab, ((EntityState)this).gameObject, "VentL", false); EffectManager.SimpleMuzzleFlash(smokeEffectPrefab, ((EntityState)this).gameObject, "VentR", false); } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(2f); } if (!((EntityState)this).isAuthority) { return; } if (GetCurrentTargets() < GetMaxTargets()) { UpdateTrackerAuthority(); if (startedPainting) { UpdatePainterAuthority(); } } else { generalIndicator.targetTransform = null; generalIndicator.active = false; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && !((EntityState)this).characterBody.isPlayerControlled) { if (((EntityState)this).fixedAge >= lockonDuration * (float)GetMaxTargets()) { ((EntityState)this).outer.SetNextState((EntityState)(object)new FireMissiles { attacksFired = 0, targetList = targetList, maxAttacks = GetMaxTargets(), isCrit = ((BaseState)this).RollCrit() }); } return; } bool flag = false; if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank)) { if (!startedPainting && (((EntityState)this).inputBank.skill1.down || selectedInput.Value == InputMode.M2Only)) { startedPainting = true; } else if (startedPainting && ((selectedInput.Value != InputMode.M2Only && !((EntityState)this).inputBank.skill1.down) || (selectedInput.Value == InputMode.M2Only && !((EntityState)this).inputBank.skill2.down))) { if (GetCurrentTargets() > 0) { ((EntityState)this).outer.SetNextState((EntityState)(object)new FireMissiles { attacksFired = 0, targetList = targetList, maxAttacks = GetCurrentTargets(), isCrit = ((BaseState)this).RollCrit() }); return; } lockonStopwatch = 0f; startedPainting = false; } if (selectedInput.Value == InputMode.Toggle) { if (!buttonReleased && !((EntityState)this).inputBank.skill2.down) { buttonReleased = true; } else if (buttonReleased && ((EntityState)this).inputBank.skill2.down) { buttonRepressed = true; } else if (buttonRepressed && buttonRepressed && !((EntityState)this).inputBank.skill2.down) { flag = true; } } else if ((selectedInput.Value == InputMode.Hold || selectedInput.Value == InputMode.M2Only) && !((EntityState)this).inputBank.skill2.down && !startedPainting) { flag = true; } } else { flag = true; } if (flag) { ((EntityState)this).outer.SetNextStateToMain(); } } private int GetMaxTargets() { if (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator) && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.secondary)) { return ((EntityState)this).skillLocator.secondary.stock; } return 3; } private int GetCurrentTargets() { int num = 0; foreach (TargetInfo target in targetList) { num += target.GetTargetCount(); } return num; } private void UpdateTrackerAuthority() { //IL_000a: Unknown result type (might be due to invalid IL or missing references) HurtBox val = lockonTarget; SearchForTarget(((BaseState)this).GetAimRay()); if (Object.op_Implicit((Object)(object)lockonTarget)) { generalIndicator.targetTransform = ((Component)lockonTarget).transform; generalIndicator.active = true; foreach (TargetInfo target in targetList) { if ((Object)(object)target.hurtBox == (Object)(object)lockonTarget) { generalIndicator.active = false; break; } } } else { generalIndicator.targetTransform = null; generalIndicator.active = false; } if ((Object)(object)lockonTarget != (Object)(object)val) { lockonStopwatch = (Object.op_Implicit((Object)(object)lockonTarget) ? (lockonDuration * 0.75f) : 0f); } } private void UpdatePainterAuthority() { if (Object.op_Implicit((Object)(object)lockonTarget)) { lockonStopwatch += ((EntityState)this).GetDeltaTime(); if (lockonStopwatch >= lockonDuration || GetCurrentTargets() <= 0) { lockonStopwatch = 0f; AddLockonTarget(); } } } private void AddLockonTarget() { if (!Object.op_Implicit((Object)(object)lockonTarget)) { return; } Util.PlaySound("Play_engi_seekerMissile_lockOn", ((EntityState)this).gameObject); bool flag = false; foreach (TargetInfo target in targetList) { if ((Object)(object)target.hurtBox == (Object)(object)lockonTarget) { flag = true; target.SetTargetCount(target.GetTargetCount() + 1); break; } } if (!flag) { TargetInfo item = new TargetInfo(((EntityState)this).gameObject, lockonTarget); targetList.Add(item); } } public override void OnExit() { generalIndicator.active = false; generalIndicator.DestroyVisualizer(); if (clearTargetList) { foreach (TargetInfo target in targetList) { ((Indicator)target.indicator).active = false; ((Indicator)target.indicator).DestroyVisualizer(); } } if (appliedOverride) { GenericSkill val = (((Object)(object)((EntityState)this).skillLocator != (Object)null) ? ((EntityState)this).skillLocator.primary : null); if (Object.op_Implicit((Object)(object)val)) { val.onSkillChanged -= TryOverrideSkill; } if (Object.op_Implicit((Object)(object)overriddenSkill)) { overriddenSkill.UnsetSkillOverride((object)this, primaryOverride, (SkillOverridePriority)4); } } if (crosshairOverrideRequest != null) { crosshairOverrideRequest.Dispose(); } Util.PlaySound("Stop_railgunner_m2_scope_loop", ((EntityState)this).gameObject); Util.PlaySound(exitSoundString, ((EntityState)this).gameObject); if (!((EntityState)this).outer.destroying) { ((EntityState)this).PlayAnimation("Gesture, Override", "Missile_Shoot", "Shootgun.playbackRate", 0.5f * baseEntryduration / base.attackSpeedStat, 0f); } ((EntityState)this).OnExit(); } private void SearchForTarget(Ray aimRay) { //IL_0007: 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_001d: 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_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) search.teamMaskFilter = TeamMask.all; ((TeamMask)(ref search.teamMaskFilter)).RemoveTeam(((BaseState)this).GetTeam()); search.filterByLoS = true; search.searchOrigin = ((Ray)(ref aimRay)).origin; search.searchDirection = ((Ray)(ref aimRay)).direction; search.sortMode = (SortMode)2; search.maxDistanceFilter = baseLockonRange; search.maxAngleFilter = baseLockonAngle; search.RefreshCandidates(); search.FilterOutGameObject(((EntityState)this).gameObject); lockonTarget = search.GetResults().FirstOrDefault(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)3; } private void TryOverrideSkill(GenericSkill skill) { if (Object.op_Implicit((Object)(object)skill) && !Object.op_Implicit((Object)(object)overriddenSkill) && !skill.HasSkillOverrideOfPriority((SkillOverridePriority)4)) { overriddenSkill = skill; overriddenSkill.SetSkillOverride((object)this, primaryOverride, (SkillOverridePriority)4); overriddenSkill.stock = ((EntityState)this).skillLocator.secondary.stock; } } } } namespace EntityStates.GaleShockTrooperStates.Dash { public class EnterShockDash : BaseState { public static float baseCooldown = 8f; public static float baseDuration = 0f; private float duration; private HurtBoxGroup hurtboxGroup; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; if (baseDuration > 0f) { Util.PlaySound("Play_merc_shift_start", ((EntityState)this).gameObject); } if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup val = hurtboxGroup; int hurtBoxesDeactivatorCounter = val.hurtBoxesDeactivatorCounter + 1; val.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter; } if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity.y = 0f; } } public override void OnExit() { ((EntityState)this).OnExit(); if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup val = hurtboxGroup; int hurtBoxesDeactivatorCounter = val.hurtBoxesDeactivatorCounter - 1; val.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter; } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity.y = 0f; } if (((EntityState)this).fixedAge >= duration) { ChangeStateAuthority(); } } } public void ChangeStateAuthority() { //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_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_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_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0086: 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_0147: 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_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) if (!((EntityState)this).isAuthority) { return; } Vector3 val = ((EntityState)this).characterDirection.forward; Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 direction = ((Ray)(ref aimRay)).direction; direction.y = 0f; ((Vector3)(ref direction)).Normalize(); string text = "DashF"; if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank) && ((EntityState)this).inputBank.moveVector != Vector3.zero) { val = ((Vector3)(ref ((EntityState)this).inputBank.moveVector)).normalized; float num = Vector3.SignedAngle(direction, val, Vector3.up); if (num >= 45f && num < 135f) { text = "DashR"; } else if (num <= -45f && num > -135f) { text = "DashL"; } else if (num >= 135f || num <= -135f) { text = "DashB"; } } switch (text) { case "DashB": ((EntityState)this).outer.SetNextState((EntityState)(object)new ShockDashB { blinkVector = val }); break; case "DashL": ((EntityState)this).outer.SetNextState((EntityState)(object)new ShockDashL { blinkVector = val }); break; case "DashR": ((EntityState)this).outer.SetNextState((EntityState)(object)new ShockDashR { blinkVector = val }); break; default: ((EntityState)this).outer.SetNextState((EntityState)(object)new ShockDashBase { blinkVector = ((Ray)(ref aimRay)).direction }); break; } } } public class ShockDashBase : BaseState { public static float shockRange = 12f; public static float shockDamageCoefficient = 1f; public static int shockTicksPerSecond = 30; public static float baseSpeed = 8f; public static float baseDuration = 0.3f; public static GameObject blinkPrefab = Addressables.LoadAssetAsync((object)"RoR2/Base/Huntress/HuntressBlinkEffect.prefab").WaitForCompletion(); public static Material material1 = Addressables.LoadAssetAsync((object)"RoR2/Base/Huntress/matHuntressFlashBright.mat").WaitForCompletion(); public static Material material2 = Addressables.LoadAssetAsync((object)"RoR2/Base/Huntress/matHuntressFlashExpanded.mat").WaitForCompletion(); public Vector3 blinkVector; private float shockTickStopwatch; private Transform modelTransform; private CharacterModel characterModel; private HurtBoxGroup hurtboxGroup; private List victimList; private int originalLayer; public override void OnEnter() { //IL_0022: 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_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); Util.PlaySound("Play_huntress_shift_mini_blink", ((EntityState)this).gameObject); PlayDashAnim(); ((BaseState)this).StartAimMode(((BaseState)this).GetAimRay(), baseDuration + 0.3f, false); CreateBlinkEffect(Util.GetCorePosition(((EntityState)this).gameObject)); modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { characterModel = ((Component)modelTransform).GetComponent(); hurtboxGroup = ((Component)modelTransform).GetComponent(); CharacterModel component = ((Component)modelTransform).GetComponent(); if (Object.op_Implicit((Object)(object)component)) { TemporaryOverlayInstance val = TemporaryOverlayManager.AddOverlay(((Component)component).gameObject); val.duration = 0.6f + baseDuration; val.animateShaderAlpha = true; val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val.destroyComponentOnEnd = true; val.originalMaterial = material1; val.AddToCharacterModel(component); val.Start(); TemporaryOverlayInstance val2 = TemporaryOverlayManager.AddOverlay(((Component)component).gameObject); val2.duration = 0.7f + baseDuration; val2.animateShaderAlpha = true; val2.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val2.destroyComponentOnEnd = true; val2.originalMaterial = material2; val2.AddToCharacterModel(component); val2.Start(); } } if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup val3 = hurtboxGroup; int hurtBoxesDeactivatorCounter = val3.hurtBoxesDeactivatorCounter + 1; val3.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter; } if (NetworkServer.active) { victimList = new List(); ShockEnemiesServer(); shockTickStopwatch = 0f; } originalLayer = ((EntityState)this).gameObject.layer; ((EntityState)this).gameObject.layer = LayerIndex.GetAppropriateFakeLayerForTeam(((BaseState)this).GetTeam()).intVal; ((BaseCharacterController)((EntityState)this).characterMotor).Motor.RebuildCollidableLayers(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (NetworkServer.active) { shockTickStopwatch += Time.fixedDeltaTime; if (shockTickStopwatch >= 1f / (float)shockTicksPerSecond) { ShockEnemiesServer(); } } if (((EntityState)this).isAuthority) { DashPhysics(); if (((EntityState)this).fixedAge >= baseDuration) { ((EntityState)this).outer.SetNextStateToMain(); } } } public override void OnExit() { //IL_003e: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).gameObject.layer = originalLayer; ((BaseCharacterController)((EntityState)this).characterMotor).Motor.RebuildCollidableLayers(); if (!((EntityState)this).outer.destroying) { CreateBlinkEffect(Util.GetCorePosition(((EntityState)this).gameObject)); } if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup val = hurtboxGroup; int hurtBoxesDeactivatorCounter = val.hurtBoxesDeactivatorCounter - 1; val.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter; } ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)3; } public virtual void ShockEnemiesServer() { //IL_0042: 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_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: 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_005a: 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_00a4: 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_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: 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) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Expected O, but got Unknown if (!NetworkServer.active) { return; } if (shockTickStopwatch != 0f) { shockTickStopwatch -= 1f / (float)shockTicksPerSecond; } TeamIndex team = ((BaseState)this).GetTeam(); Vector3 corePosition = Util.GetCorePosition(((EntityState)this).gameObject); List list = Utils.FindEnemiesInSphere(shockRange, corePosition, team); foreach (HealthComponent item in list) { if (!victimList.Contains(item)) { victimList.Add(item); LightningOrb val = new LightningOrb { attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, damageValue = base.damageStat * shockDamageCoefficient, procCoefficient = 1f, teamIndex = team, isCrit = ((BaseState)this).RollCrit(), procChainMask = default(ProcChainMask), lightningType = (LightningType)0, damageColorIndex = (DamageColorIndex)0, bouncesRemaining = 0, targetsToFindPerBounce = 1, range = shockRange, origin = corePosition, damageType = new DamageTypeCombo { damageType = (DamageType)16777216, damageSource = (DamageSource)4 }, speed = 120f, target = item.body.mainHurtBox }; OrbManager.instance.AddOrb((Orb)(object)val); } } } public virtual void PlayDashAnim() { ((EntityState)this).PlayAnimation("FullBody, Override", "DashF", "Dash.playbackRate", baseDuration, 0f); } public virtual void CreateBlinkEffect(Vector3 origin) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown EffectData val = new EffectData { rotation = Util.QuaternionSafeLookRotation(blinkVector), origin = origin }; EffectManager.SpawnEffect(blinkPrefab, val, false); } public virtual void DashPhysics() { //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_0038: 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_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += blinkVector * (base.moveSpeedStat * baseSpeed * Time.deltaTime); } } } public class ShockDashR : ShockDashBase { public override void PlayDashAnim() { ((EntityState)this).PlayAnimation("FullBody, Override", "DashR", "Dash.playbackRate", ShockDashBase.baseDuration, 0f); } } public class ShockDashL : ShockDashBase { public override void PlayDashAnim() { ((EntityState)this).PlayAnimation("FullBody, Override", "DashL", "Dash.playbackRate", ShockDashBase.baseDuration, 0f); } } public class ShockDashB : ShockDashBase { public override void PlayDashAnim() { ((EntityState)this).PlayAnimation("FullBody, Override", "DashB", "Dash.playbackRate", ShockDashBase.baseDuration, 0f); } } } namespace EntityStates.GaleShockTrooperDroneStates { public class FireAutoTurret : BaseState { public static float damageCoefficient = 1f; public static float lockonAngle = 60f; public static float baseShotDuration = 0.15f; public static float baseDuration = 0.5f; public static int shotsPerBurst = 2; public static GameObject muzzleflashEffectPrefab; public static GameObject orbEffectPrefab; public static float lockonRange = 90f; private float shotDuration; private float duration; private float stopwatch; private int shotsFired; private bool isCrit; private bool triggeredPrimary = false; private bool rightMuzzle; private Transform muzzleL; private Transform muzzleR; private HurtBox currentTarget; public override void OnEnter() { ((BaseState)this).OnEnter(); ((EntityState)this).characterBody.SetAimTimer(2f); rightMuzzle = true; isCrit = ((BaseState)this).RollCrit(); shotsFired = 0; shotDuration = baseShotDuration / base.attackSpeedStat; duration = baseDuration / base.attackSpeedStat; stopwatch = 0f; ChildLocator modelChildLocator = ((EntityState)this).GetModelChildLocator(); if (Object.op_Implicit((Object)(object)modelChildLocator)) { muzzleR = modelChildLocator.FindChild("MuzzleR"); muzzleL = modelChildLocator.FindChild("MuzzleL"); } DroneTargetingController component = ((EntityState)this).GetComponent(); currentTarget = component.GetCurrentTarget(); FireShot(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); stopwatch += ((EntityState)this).GetDeltaTime(); if (stopwatch >= shotDuration && shotsFired < shotsPerBurst) { stopwatch -= shotDuration; FireShot(); } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration && shotsFired >= shotsPerBurst) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { if (shotsFired < shotsPerBurst) { int num = shotsPerBurst - shotsFired; for (int i = 0; i < num; i++) { FireShot(playEffects: false); } } ((EntityState)this).OnExit(); } private void FireShot(bool playEffects = true) { shotsFired++; string text = (rightMuzzle ? "MuzzleR" : "MuzzleL"); Transform transform = ((EntityState)this).transform; if (rightMuzzle && Object.op_Implicit((Object)(object)muzzleR)) { transform = muzzleR; } else if (!rightMuzzle && Object.op_Implicit((Object)(object)muzzleL)) { transform = muzzleL; } rightMuzzle = !rightMuzzle; if (NetworkServer.active) { FireOrb(transform, playEffects); } } private void FireOrb(Transform muzzleTransform, bool playEffects) { //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_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) Ray aimRay = ((BaseState)this).GetAimRay(); if (Object.op_Implicit((Object)(object)currentTarget)) { ChainGunOrb val = new ChainGunOrb(orbEffectPrefab); ((GenericDamageOrb)val).damageValue = damageCoefficient * base.damageStat; ((GenericDamageOrb)val).isCrit = isCrit; ((GenericDamageOrb)val).teamIndex = ((BaseState)this).GetTeam(); ((GenericDamageOrb)val).attacker = ((EntityState)this).gameObject; ((GenericDamageOrb)val).procCoefficient = 1f; ((GenericDamageOrb)val).procChainMask = default(ProcChainMask); ((Orb)val).origin = muzzleTransform.position; ((GenericDamageOrb)val).speed = 200f; val.bouncesRemaining = 0; val.bounceRange = 60f; val.damageCoefficientPerBounce = 1f; val.targetsToFindPerBounce = 1; val.canBounceOnSameTarget = false; ((GenericDamageOrb)val).damageColorIndex = (DamageColorIndex)0; ((GenericDamageOrb)val).damageType = DamageTypeCombo.GenericSpecial; ((Orb)val).target = currentTarget; OrbManager.instance.AddOrb((Orb)(object)val); if (playEffects) { EffectManager.SimpleMuzzleFlash(muzzleflashEffectPrefab, ((EntityState)this).gameObject, ((Object)(object)muzzleTransform == (Object)(object)muzzleR) ? "MuzzleR" : "MuzzleL", true); } } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } } namespace GaleShockTrooper { [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.TheConstellate.ShockTrooper", "Shock Trooper", "1.2.2")] public class GaleShockTrooperPlugin : BaseUnityPlugin { public const string MODUID = "com.TheConstellate.ShockTrooper"; public const string MODNAME = "Shock Trooper"; public const string MODVERSION = "1.2.2"; public const string DEVELOPER_PREFIX = "GALE"; public static GaleShockTrooperPlugin instance; private void Awake() { instance = this; Log.Init(((BaseUnityPlugin)this).Logger); Language.Init(); new GaleShockTrooperSurvivor().Initialize(); new GaleShockTrooperDroneCharacter().Initialize(); new ContentPacks().Initialize(); ModCompat.Init(); } } internal static class Log { internal static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { _logSource.LogDebug(data); } internal static void Error(object data) { _logSource.LogError(data); } internal static void ErrorAssetBundle(string assetName, string bundleName) { Error("failed to load asset, " + assetName + ", because it does not exist in asset bundle, " + bundleName); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } internal class Utils { internal static List FindEnemiesInSphere(float radius, Vector3 position, TeamIndex team) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) List list = new List(); Collider[] array = Physics.OverlapSphere(position, radius, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask)); for (int i = 0; i < array.Length; i++) { HurtBox component = ((Component)array[i]).GetComponent(); if (Object.op_Implicit((Object)(object)component)) { HealthComponent healthComponent = component.healthComponent; if (Object.op_Implicit((Object)(object)healthComponent) && !list.Contains(healthComponent) && Object.op_Implicit((Object)(object)healthComponent.body) && Object.op_Implicit((Object)(object)healthComponent.body.teamComponent) && healthComponent.body.teamComponent.teamIndex != team) { list.Add(healthComponent); } } } return list; } } } namespace GaleShockTrooper.Modules { internal static class Asset { internal static Dictionary loadedBundles = new Dictionary(); internal static AssetBundle LoadAssetBundle(string bundleName) { if (bundleName == "myassetbundle") { Log.Error("AssetBundle name hasn't been changed. not loading any assets to avoid conflicts.\nMake sure to rename your assetbundle filename and rename the AssetBundleName field in your character setup code "); return null; } if (loadedBundles.ContainsKey(bundleName)) { return loadedBundles[bundleName]; } AssetBundle val = null; try { val = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)GaleShockTrooperPlugin.instance).Info.Location), "AssetBundles", bundleName)); ShaderSwapper.UpgradeStubbedShaders(val); } catch (Exception arg) { Log.Error($"Error loading asset bundle, {bundleName}. Your asset bundle must be in a folder next to your mod dll called 'AssetBundles'. Follow the guide to build and install your mod correctly!\n{arg}"); } loadedBundles[bundleName] = val; return val; } internal static GameObject CloneTracer(string originalTracerName, string newTracerName) { if ((Object)(object)LegacyResourcesAPI.Load("Prefabs/Effects/Tracers/" + originalTracerName) == (Object)null) { return null; } GameObject val = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load("Prefabs/Effects/Tracers/" + originalTracerName), newTracerName, true); if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } val.GetComponent().speed = 250f; val.GetComponent().length = 50f; Content.CreateAndAddEffectDef(val); return val; } internal static void ConvertAllRenderersToHopooShader(GameObject objectToConvert) { if (!Object.op_Implicit((Object)(object)objectToConvert)) { return; } MeshRenderer[] componentsInChildren = objectToConvert.GetComponentsInChildren(); foreach (MeshRenderer val in componentsInChildren) { if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)((Renderer)val).sharedMaterial)) { ((Renderer)val).sharedMaterial.ConvertDefaultShaderToHopoo(); } } SkinnedMeshRenderer[] componentsInChildren2 = objectToConvert.GetComponentsInChildren(); foreach (SkinnedMeshRenderer val2 in componentsInChildren2) { if (Object.op_Implicit((Object)(object)val2) && Object.op_Implicit((Object)(object)((Renderer)val2).sharedMaterial)) { ((Renderer)val2).sharedMaterial.ConvertDefaultShaderToHopoo(); } } } [Obsolete("just load from addressables")] internal static GameObject LoadCrosshair(string crosshairName) { GameObject val = LegacyResourcesAPI.Load("Prefabs/Crosshair/" + crosshairName + "Crosshair"); if ((Object)(object)val == (Object)null) { Log.Error("could not load crosshair with the name " + crosshairName + ". defaulting to Standard"); return LegacyResourcesAPI.Load("Prefabs/Crosshair/StandardCrosshair"); } return val; } internal static GameObject LoadEffect(this AssetBundle assetBundle, string resourceName, bool parentToTransform) { return assetBundle.LoadEffect(resourceName, "", parentToTransform); } internal static GameObject LoadEffect(this AssetBundle assetBundle, string resourceName, string soundName = "", bool parentToTransform = false) { //IL_0046: 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) GameObject val = assetBundle.LoadAsset(resourceName); if (!Object.op_Implicit((Object)(object)val)) { Log.ErrorAssetBundle(resourceName, ((Object)assetBundle).name); return null; } val.AddComponent().duration = 12f; val.AddComponent(); val.AddComponent().vfxPriority = (VFXPriority)2; EffectComponent val2 = val.AddComponent(); val2.applyScale = false; val2.effectIndex = (EffectIndex)(-1); val2.parentToReferencedTransform = parentToTransform; val2.positionAtReferencedTransform = true; val2.soundName = soundName; Content.CreateAndAddEffectDef(val); return val; } internal static GameObject CreateProjectileGhostPrefab(this AssetBundle assetBundle, string ghostName) { GameObject val = assetBundle.LoadAsset(ghostName); if ((Object)(object)val == (Object)null) { Log.Error("Failed to load ghost prefab " + ghostName); } if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } ConvertAllRenderersToHopooShader(val); return val; } internal static GameObject CloneProjectilePrefab(string prefabName, string newPrefabName) { return PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load("Prefabs/Projectiles/" + prefabName), newPrefabName); } internal static GameObject LoadAndAddProjectilePrefab(this AssetBundle assetBundle, string newPrefabName) { GameObject val = assetBundle.LoadAsset(newPrefabName); if ((Object)(object)val == (Object)null) { Log.ErrorAssetBundle(newPrefabName, ((Object)assetBundle).name); return null; } Content.AddProjectilePrefab(val); return val; } } public static class Config { public static ConfigFile MyConfig = ((BaseUnityPlugin)GaleShockTrooperPlugin.instance).Config; public static ConfigEntry CharacterEnableConfig(string section, string characterName, string description = "", bool enabledByDefault = true) { if (string.IsNullOrEmpty(description)) { description = "Set to false to disable this character and as much of its code and content as possible"; } return BindAndOptions(section, "Enable " + characterName, enabledByDefault, description, restartRequired: true); } public static ConfigEntry BindAndOptions(string section, string name, T defaultValue, string description = "", bool restartRequired = false) { return BindAndOptions(section, name, defaultValue, 0f, 20f, description, restartRequired); } public static ConfigEntry BindAndOptions(string section, string name, T defaultValue, float min, float max, string description = "", bool restartRequired = false) { if (string.IsNullOrEmpty(description)) { description = name; } if (restartRequired) { description += " (restart required)"; } ConfigEntry result = MyConfig.Bind(section, name, defaultValue, description); if (Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions")) { } return result; } public static ConfigEntry BindAndOptionsSlider(string section, string name, float defaultValue, string description, float min = 0f, float max = 20f, bool restartRequired = false) { return BindAndOptions(section, name, defaultValue, min, max, description, restartRequired); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private static void TryRegisterOption(ConfigEntry entry, float min, float max, bool restartRequired) { } public static bool GetKeyPressed(KeyboardShortcut entry) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) foreach (KeyCode modifier in ((KeyboardShortcut)(ref entry)).Modifiers) { if (!Input.GetKey(modifier)) { return false; } } return Input.GetKeyDown(((KeyboardShortcut)(ref entry)).MainKey); } } internal class Content { internal static void AddCharacterBodyPrefab(GameObject bprefab) { ContentPacks.bodyPrefabs.Add(bprefab); } internal static void AddMasterPrefab(GameObject prefab) { ContentPacks.masterPrefabs.Add(prefab); } internal static void AddProjectilePrefab(GameObject prefab) { ContentPacks.projectilePrefabs.Add(prefab); } internal static void AddSurvivorDef(SurvivorDef survivorDef) { ContentPacks.survivorDefs.Add(survivorDef); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) CreateSurvivor(bodyPrefab, displayPrefab, charColor, tokenPrefix, null, 100f); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix, float sortPosition) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) CreateSurvivor(bodyPrefab, displayPrefab, charColor, tokenPrefix, null, sortPosition); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix, UnlockableDef unlockableDef) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) CreateSurvivor(bodyPrefab, displayPrefab, charColor, tokenPrefix, unlockableDef, 100f); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix, UnlockableDef unlockableDef, float sortPosition) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) SurvivorDef val = ScriptableObject.CreateInstance(); val.bodyPrefab = bodyPrefab; val.displayPrefab = displayPrefab; val.primaryColor = charColor; val.cachedName = ((Object)bodyPrefab).name.Replace("Body", ""); val.displayNameToken = tokenPrefix + "NAME"; val.descriptionToken = tokenPrefix + "DESCRIPTION"; val.outroFlavorToken = tokenPrefix + "OUTRO_FLAVOR"; val.mainEndingEscapeFailureFlavorToken = tokenPrefix + "OUTRO_FAILURE"; val.desiredSortPosition = sortPosition; val.unlockableDef = unlockableDef; AddSurvivorDef(val); } internal static void AddUnlockableDef(UnlockableDef unlockableDef) { ContentPacks.unlockableDefs.Add(unlockableDef); } internal static UnlockableDef CreateAndAddUnlockbleDef(string identifier, string nameToken, Sprite achievementIcon) { UnlockableDef val = ScriptableObject.CreateInstance(); val.cachedName = identifier; val.nameToken = nameToken; val.achievementIcon = achievementIcon; AddUnlockableDef(val); return val; } internal static void AddSkillDef(SkillDef skillDef) { ContentPacks.skillDefs.Add(skillDef); } internal static void AddSkillFamily(SkillFamily skillFamily) { ContentPacks.skillFamilies.Add(skillFamily); } internal static void AddEntityState(Type entityState) { ContentPacks.entityStates.Add(entityState); } internal static void AddBuffDef(BuffDef buffDef) { ContentPacks.buffDefs.Add(buffDef); } internal static BuffDef CreateAndAddBuff(string buffName, Sprite buffIcon, Color buffColor, bool canStack, bool isDebuff) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) BuffDef val = ScriptableObject.CreateInstance(); ((Object)val).name = buffName; val.buffColor = buffColor; val.canStack = canStack; val.isDebuff = isDebuff; val.eliteDef = null; val.iconSprite = buffIcon; AddBuffDef(val); return val; } internal static void AddEffectDef(EffectDef effectDef) { ContentPacks.effectDefs.Add(effectDef); } internal static EffectDef CreateAndAddEffectDef(GameObject effectPrefab) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown EffectDef val = new EffectDef(effectPrefab); AddEffectDef(val); return val; } internal static void AddNetworkSoundEventDef(NetworkSoundEventDef networkSoundEventDef) { ContentPacks.networkSoundEventDefs.Add(networkSoundEventDef); } internal static NetworkSoundEventDef CreateAndAddNetworkSoundEventDef(string eventName) { NetworkSoundEventDef val = ScriptableObject.CreateInstance(); val.akId = AkSoundEngine.GetIDFromString(eventName); val.eventName = eventName; AddNetworkSoundEventDef(val); return val; } } internal class ContentPacks : IContentPackProvider { [CompilerGenerated] private sealed class d__20 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public FinalizeAsyncArgs args; public ContentPacks <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__20(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__19 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public GetContentPackAsyncArgs args; public ContentPacks <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__19(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; ContentPack.Copy(<>4__this.contentPack, args.output); args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__18 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public LoadStaticContentAsyncArgs args; public ContentPacks <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__18(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; <>4__this.contentPack.identifier = <>4__this.identifier; <>4__this.contentPack.bodyPrefabs.Add(bodyPrefabs.ToArray()); <>4__this.contentPack.masterPrefabs.Add(masterPrefabs.ToArray()); <>4__this.contentPack.projectilePrefabs.Add(projectilePrefabs.ToArray()); <>4__this.contentPack.survivorDefs.Add(survivorDefs.ToArray()); <>4__this.contentPack.unlockableDefs.Add(unlockableDefs.ToArray()); <>4__this.contentPack.skillDefs.Add(skillDefs.ToArray()); <>4__this.contentPack.skillFamilies.Add(skillFamilies.ToArray()); <>4__this.contentPack.entityStateTypes.Add(entityStates.ToArray()); <>4__this.contentPack.buffDefs.Add(buffDefs.ToArray()); <>4__this.contentPack.effectDefs.Add(effectDefs.ToArray()); <>4__this.contentPack.networkSoundEventDefs.Add(networkSoundEventDefs.ToArray()); <>4__this.contentPack.networkedObjectPrefabs.Add(networkedObjectPrefabs.ToArray()); <>4__this.contentPack.itemDefs.Add(itemDefs.ToArray()); args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } internal ContentPack contentPack = new ContentPack(); public static List bodyPrefabs = new List(); public static List masterPrefabs = new List(); public static List projectilePrefabs = new List(); public static List survivorDefs = new List(); public static List unlockableDefs = new List(); public static List skillFamilies = new List(); public static List skillDefs = new List(); public static List entityStates = new List(); public static List itemDefs = new List(); public static List buffDefs = new List(); public static List effectDefs = new List(); public static List networkedObjectPrefabs = new List(); public static List networkSoundEventDefs = new List(); public string identifier => "com.TheConstellate.ShockTrooper"; public void Initialize() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders); } private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider) { addContentPackProvider.Invoke((IContentPackProvider)(object)this); } [IteratorStateMachine(typeof(d__18))] public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__18(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(d__19))] public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__19(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(d__20))] public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__20(0) { <>4__this = this, args = args }; } } internal static class ItemDisplayCheck { public static List allDisplayedItems; public static void PrintUnused(ItemDisplayRuleSet itemDisplayRuleSet, string bodyName = "") { PrintUnused((IEnumerable)itemDisplayRuleSet.keyAssetRuleGroups.ToList(), bodyName); } public static void PrintUnused(IEnumerable ruleSet = null, string bodyName = "") { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) string text = "generating item displays for " + bodyName; if (allDisplayedItems == null) { LazyGatherAllItems(); } List list = new List(allDisplayedItems); string text2 = ""; if (ruleSet != null) { foreach (KeyAssetRuleGroup item in ruleSet) { if (item.displayRuleGroup.rules.Length != 0) { list.Remove(item.keyAsset); if (string.IsNullOrEmpty(text2)) { text2 = item.displayRuleGroup.rules[0].childName; } } } } if (string.IsNullOrEmpty(text2)) { text2 = "Chest"; } foreach (Object item2 in list) { string text3 = ""; if (ItemDisplays.KeyAssetDisplayPrefabs.ContainsKey(item2)) { text3 += SpitOutNewRule(item2, text2, ItemDisplays.KeyAssetDisplayPrefabs[item2]); } else { Log.Error($"COULD NOT FIND DISPLAY PREFABS FOR KEYASSET {item2}"); } text += text3; } Log.Message(text); } private static void LazyGatherAllItems() { allDisplayedItems = new List(ItemDisplays.KeyAssetDisplayPrefabs.Keys); allDisplayedItems.Sort(delegate(Object item1, Object item2) { if (item1 is ItemDef && item2 is ItemDef) { return item1.name.CompareTo(item2.name); } if (item1 is EquipmentDef && item2 is EquipmentDef) { return item1.name.CompareTo(item2.name); } if (item1 is ItemDef && item2 is EquipmentDef) { return -1; } return (item1 is EquipmentDef && item2 is ItemDef) ? 1 : 0; }); } private static string SpitOutNewRule(Object asset, string firstCompatibleChild, ItemDisplayRule[] displayRules) { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) if (displayRules.Length == 0) { return $"\n[NO DISPLAY RULES FOUND FOR THE KEYASSET {asset}"; } string text = "\n itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets[\"" + asset.name + "\"]"; for (int i = 0; i < displayRules.Length; i++) { text = (((int)displayRules[i].limbMask != 0) ? (text + ",\n" + $" ItemDisplays.CreateLimbMaskDisplayRule(LimbFlags.{displayRules[i].limbMask})") : (text + ",\n ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay(\"" + ((Object)displayRules[i].followerPrefab).name + "\"),\n \"" + firstCompatibleChild + "\",\n new Vector3(2, 2, 2),\n new Vector3(0, 0, 0),\n new Vector3(1, 1, 1)\n )")); } return text + "\n ));"; } } internal static class ItemDisplays { private static Dictionary itemDisplayPrefabs = new Dictionary(); public static Dictionary KeyAssetDisplayPrefabs = new Dictionary(); public static Dictionary KeyAssets = new Dictionary(); public static int queuedDisplays; public static bool initialized = false; public static void LazyInit() { if (!initialized) { initialized = true; PopulateDisplays(); } } internal static void DisposeWhenDone() { queuedDisplays--; if (queuedDisplays <= 0 && initialized) { initialized = false; itemDisplayPrefabs = null; KeyAssetDisplayPrefabs = null; KeyAssets = null; } } internal static void PopulateDisplays() { PopulateFromBody("LoaderBody"); } private static void PopulateFromBody(string bodyName) { ItemDisplayRuleSet itemDisplayRuleSet = ((Component)LegacyResourcesAPI.Load("Prefabs/CharacterBodies/" + bodyName).GetComponent().modelTransform).GetComponent().itemDisplayRuleSet; KeyAssetRuleGroup[] keyAssetRuleGroups = itemDisplayRuleSet.keyAssetRuleGroups; for (int i = 0; i < keyAssetRuleGroups.Length; i++) { ItemDisplayRule[] rules = keyAssetRuleGroups[i].displayRuleGroup.rules; KeyAssetDisplayPrefabs[keyAssetRuleGroups[i].keyAsset] = rules; KeyAssets[keyAssetRuleGroups[i].keyAsset.name] = keyAssetRuleGroups[i].keyAsset; for (int j = 0; j < rules.Length; j++) { GameObject followerPrefab = rules[j].followerPrefab; if (Object.op_Implicit((Object)(object)followerPrefab)) { string key = ((Object)followerPrefab).name?.ToLowerInvariant(); if (!itemDisplayPrefabs.ContainsKey(key)) { itemDisplayPrefabs[key] = followerPrefab; } } } } } private static void PopulateCustomLightningArm() { GameObject val = PrefabAPI.InstantiateClone(itemDisplayPrefabs["displaylightningarmright"], "DisplayLightningCustom", false); LimbMatcher component = val.GetComponent(); component.limbPairs[0].targetChildLimb = "LightningArm1"; component.limbPairs[1].targetChildLimb = "LightningArm2"; component.limbPairs[2].targetChildLimb = "LightningArmEnd"; itemDisplayPrefabs["displaylightningarmcustom"] = val; } public static GameObject LoadDisplay(string name) { if (itemDisplayPrefabs.ContainsKey(name.ToLowerInvariant()) && Object.op_Implicit((Object)(object)itemDisplayPrefabs[name.ToLowerInvariant()])) { return itemDisplayPrefabs[name.ToLowerInvariant()]; } Log.Error("item display " + name + " returned null"); return null; } public static KeyAssetRuleGroup CreateDisplayRuleGroupWithRules(string itemName, params ItemDisplayRule[] rules) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return CreateDisplayRuleGroupWithRules(GetKeyAssetFromString(itemName), rules); } public static KeyAssetRuleGroup CreateDisplayRuleGroupWithRules(Object keyAsset_, params ItemDisplayRule[] rules) { //IL_0019: 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) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) if (keyAsset_ == (Object)null) { Log.Error("could not find keyasset"); } KeyAssetRuleGroup result = default(KeyAssetRuleGroup); result.keyAsset = keyAsset_; result.displayRuleGroup = new DisplayRuleGroup { rules = rules }; return result; } public static ItemDisplayRule CreateDisplayRule(string prefabName, string childName, Vector3 position, Vector3 rotation, Vector3 scale) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: 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) return CreateDisplayRule(LoadDisplay(prefabName), childName, position, rotation, scale); } public static ItemDisplayRule CreateDisplayRule(GameObject itemPrefab, string childName, Vector3 position, Vector3 rotation, Vector3 scale) { //IL_0003: 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_0024: 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) //IL_002c: 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_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) ItemDisplayRule result = default(ItemDisplayRule); result.ruleType = (ItemDisplayRuleType)0; result.childName = childName; result.followerPrefab = itemPrefab; result.limbMask = (LimbFlags)0; result.localPos = position; result.localAngles = rotation; result.localScale = scale; return result; } public static ItemDisplayRule CreateLimbMaskDisplayRule(LimbFlags limb) { //IL_0003: 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_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) ItemDisplayRule result = default(ItemDisplayRule); result.ruleType = (ItemDisplayRuleType)1; result.limbMask = limb; result.childName = ""; result.followerPrefab = null; return result; } private static Object GetKeyAssetFromString(string itemName) { Object val = (Object)(object)LegacyResourcesAPI.Load("ItemDefs/" + itemName); if (val == (Object)null) { val = (Object)(object)LegacyResourcesAPI.Load("EquipmentDefs/" + itemName); } if (val == (Object)null) { Log.Error("Could not load keyasset for " + itemName); } return val; } } internal static class Language { public static string TokensOutput = ""; public static bool usingLanguageFolder = false; public static bool printingEnabled = false; public static void Init() { if (usingLanguageFolder) { Language.collectLanguageRootFolders += Language_collectLanguageRootFolders; } } private static void Language_collectLanguageRootFolders(List obj) { string text = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)GaleShockTrooperPlugin.instance).Info.Location), "Language"); if (Directory.Exists(text)) { obj.Add(text); } } public static void Add(string token, string text) { if (!usingLanguageFolder) { LanguageAPI.Add(token, text); } if (printingEnabled) { TokensOutput = TokensOutput + "\n \"" + token + "\" : \"" + text.Replace(Environment.NewLine, "\\n").Replace("\n", "\\n") + "\","; } } public static void PrintOutput(string fileName = "") { if (printingEnabled) { string text = "{\n strings:\n {" + TokensOutput + "\n }\n}"; Log.Message(fileName + ": \n" + text); if (!string.IsNullOrEmpty(fileName)) { string path = Path.Combine(Directory.GetParent(((BaseUnityPlugin)GaleShockTrooperPlugin.instance).Info.Location).FullName, "Language", "en", fileName); File.WriteAllText(path, text); } TokensOutput = ""; } } } internal static class Materials { private static List cachedMaterials = new List(); internal static Shader hotpoo = LegacyResourcesAPI.Load("Shaders/Deferred/HGStandard"); public static Material LoadMaterial(this AssetBundle assetBundle, string materialName) { return assetBundle.CreateHopooMaterialFromBundle(materialName); } public static Material CreateHopooMaterialFromBundle(this AssetBundle assetBundle, string materialName) { //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Expected O, but got Unknown Material val = cachedMaterials.Find(delegate(Material mat) { materialName.Replace(" (Instance)", ""); return ((Object)mat).name.Contains(materialName); }); if (Object.op_Implicit((Object)(object)val)) { Log.Debug(((Object)val).name + " has already been loaded. returning cached"); return val; } val = assetBundle.LoadAsset(materialName); if (!Object.op_Implicit((Object)(object)val)) { Log.ErrorAssetBundle(materialName, ((Object)assetBundle).name); return new Material(hotpoo); } return val.ConvertDefaultShaderToHopoo(); } public static Material SetHopooMaterial(this Material tempMat) { return tempMat.ConvertDefaultShaderToHopoo(); } public static Material ConvertDefaultShaderToHopoo(this Material tempMat) { //IL_00d2: 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) if (cachedMaterials.Contains(tempMat)) { Log.Debug(((Object)tempMat).name + " has already been converted. returning cached"); return tempMat; } string text = ((Object)tempMat.shader).name.ToLowerInvariant(); if (!text.StartsWith("standard") && !text.StartsWith("autodesk")) { Log.Debug(((Object)tempMat).name + " is not unity standard shader. aborting material conversion"); return tempMat; } float? num = null; Color? val = null; if (tempMat.IsKeywordEnabled("_NORMALMAP")) { num = tempMat.GetFloat("_BumpScale"); } if (tempMat.IsKeywordEnabled("_EMISSION")) { val = tempMat.GetColor("_EmissionColor"); } tempMat.shader = hotpoo; tempMat.SetTexture("_EmTex", tempMat.GetTexture("_EmissionMap")); tempMat.EnableKeyword("DITHER"); if (num.HasValue) { tempMat.SetFloat("_NormalStrength", num.Value); tempMat.SetTexture("_NormalTex", tempMat.GetTexture("_BumpMap")); } if (val.HasValue) { tempMat.SetColor("_EmColor", val.Value); tempMat.SetFloat("_EmPower", 1f); } if (tempMat.IsKeywordEnabled("NOCULL")) { tempMat.SetInt("_Cull", 0); } if (tempMat.IsKeywordEnabled("LIMBREMOVAL")) { tempMat.SetInt("_LimbRemovalOn", 1); } cachedMaterials.Add(tempMat); return tempMat; } public static Material MakeUnique(this Material material) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown if (cachedMaterials.Contains(material)) { return new Material(material); } return material; } public static Material SetColor(this Material material, Color color) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) material.SetColor("_Color", color); return material; } public static Material SetNormal(this Material material, float normalStrength = 1f) { material.SetFloat("_NormalStrength", normalStrength); return material; } public static Material SetEmission(this Material material) { return material.SetEmission(1f); } public static Material SetEmission(this Material material, float emission) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return material.SetEmission(emission, Color.white); } public static Material SetEmission(this Material material, float emission, Color emissionColor) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) material.SetFloat("_EmPower", emission); material.SetColor("_EmColor", emissionColor); return material; } public static Material SetCull(this Material material, bool cull = false) { material.SetInt("_Cull", cull ? 1 : 0); return material; } public static Material SetSpecular(this Material material, float strength) { material.SetFloat("_SpecularStrength", strength); return material; } public static Material SetSpecular(this Material material, float strength, float exponent) { material.SetFloat("_SpecularStrength", strength); material.SetFloat("SpecularExponent", exponent); return material; } } internal static class ModCompat { internal static class EmoteAPI { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_Init <>9__2_0; internal void b__2_0(orig_Init orig) { //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Expected O, but got Unknown orig.Invoke(); if (CharacterBase.instance == null) { return; } foreach (SurvivorDef allSurvivorDef in SurvivorCatalog.allSurvivorDefs) { if (((Object)allSurvivorDef.bodyPrefab).name == "GaleShockTrooperBody") { GameObject val = CharacterBase.instance.assetBundle.LoadAsset("mdlGaleShockTrooperEmote.prefab"); CustomEmotesAPI.ImportArmature(allSurvivorDef.bodyPrefab, val, 0, true); val.GetComponentInChildren().scale = 1.5f; CustomEmotesAPI.animChanged += new AnimationChanged(CustomEmotesAPI_animChanged); break; } } } } internal static bool pluginLoaded; internal static void Init() { pluginLoaded = Chainloader.PluginInfos.ContainsKey("com.weliveinasociety.CustomEmotesAPI"); if (pluginLoaded) { SetupEmoteSkeleton(); } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private static void SetupEmoteSkeleton() { //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__2_0; if (obj == null) { hook_Init val = delegate(orig_Init orig) { //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Expected O, but got Unknown orig.Invoke(); if (CharacterBase.instance != null) { foreach (SurvivorDef allSurvivorDef in SurvivorCatalog.allSurvivorDefs) { if (((Object)allSurvivorDef.bodyPrefab).name == "GaleShockTrooperBody") { GameObject val2 = CharacterBase.instance.assetBundle.LoadAsset("mdlGaleShockTrooperEmote.prefab"); CustomEmotesAPI.ImportArmature(allSurvivorDef.bodyPrefab, val2, 0, true); val2.GetComponentInChildren().scale = 1.5f; CustomEmotesAPI.animChanged += new AnimationChanged(CustomEmotesAPI_animChanged); break; } } } }; <>c.<>9__2_0 = val; obj = (object)val; } SurvivorCatalog.Init += (hook_Init)obj; } private static void CustomEmotesAPI_animChanged(string newAnimation, BoneMapper mapper) { if (!(((Object)((Component)mapper).transform).name == "mdlGaleShockTrooperEmote")) { return; } Transform val = ((Component)mapper).transform.parent.Find("trooper_gun"); if (Object.op_Implicit((Object)(object)val)) { if (newAnimation == "none") { ((Component)val).gameObject.SetActive(true); } else { ((Component)val).gameObject.SetActive(false); } } } } internal static void Init() { EmoteAPI.Init(); } } internal static class Prefabs { private static PhysicMaterial ragdollMaterial; public static GameObject CreateDisplayPrefab(AssetBundle assetBundle, string displayPrefabName, GameObject prefab) { GameObject val = assetBundle.LoadAsset(displayPrefabName); if ((Object)(object)val == (Object)null) { Log.Error("could not load display prefab " + displayPrefabName + ". Make sure this prefab exists in assetbundle " + ((Object)assetBundle).name); return null; } CharacterModel val2 = val.GetComponent(); if (!Object.op_Implicit((Object)(object)val2)) { val2 = val.AddComponent(); } val2.baseRendererInfos = prefab.GetComponentInChildren().baseRendererInfos; Asset.ConvertAllRenderersToHopooShader(val); return val; } public static GameObject LoadCharacterModel(AssetBundle assetBundle, string modelName) { GameObject val = assetBundle.LoadAsset(modelName); if ((Object)(object)val == (Object)null) { Log.Error("could not load model prefab " + modelName + ". Make sure this prefab exists in assetbundle " + ((Object)assetBundle).name); return null; } return val; } public static GameObject LoadCharacterBody(AssetBundle assetBundle, string bodyName) { GameObject val = assetBundle.LoadAsset(bodyName); if ((Object)(object)val == (Object)null) { Log.Error("could not load body prefab " + bodyName + ". Make sure this prefab exists in assetbundle " + ((Object)assetBundle).name); return null; } return val; } public static GameObject CloneCharacterBody(BodyInfo bodyInfo) { GameObject val = LegacyResourcesAPI.Load("Prefabs/CharacterBodies/" + bodyInfo.bodyNameToClone + "Body"); if (!Object.op_Implicit((Object)(object)val)) { Log.Error(bodyInfo.bodyNameToClone + " Body to clone is not a valid body, character creation failed"); return null; } GameObject val2 = PrefabAPI.InstantiateClone(val, bodyInfo.bodyName); for (int num = val2.transform.childCount - 1; num >= 0; num--) { Object.DestroyImmediate((Object)(object)((Component)val2.transform.GetChild(num)).gameObject); } return val2; } public static GameObject CreateBodyPrefab(AssetBundle assetBundle, string modelPrefabName, BodyInfo bodyInfo) { return CreateBodyPrefab(LoadCharacterModel(assetBundle, modelPrefabName), bodyInfo); } public static GameObject CreateBodyPrefab(GameObject model, BodyInfo bodyInfo) { return CreateBodyPrefab(CloneCharacterBody(bodyInfo), model, bodyInfo); } public static GameObject CreateBodyPrefab(GameObject newBodyPrefab, AssetBundle assetBundle, string modelName, BodyInfo bodyInfo) { return CreateBodyPrefab(newBodyPrefab, LoadCharacterModel(assetBundle, modelName), bodyInfo); } public static GameObject CreateBodyPrefab(AssetBundle assetBundle, string bodyPrefabName, string modelPrefabName, BodyInfo bodyInfo) { return CreateBodyPrefab(LoadCharacterBody(assetBundle, bodyPrefabName), LoadCharacterModel(assetBundle, modelPrefabName), bodyInfo); } public static GameObject CreateBodyPrefab(GameObject newBodyPrefab, GameObject model, BodyInfo bodyInfo) { if ((Object)(object)model == (Object)null || (Object)(object)newBodyPrefab == (Object)null) { Log.Error($"Character creation failed. Model: {model}, Body: {newBodyPrefab}"); return null; } SetupCharacterBody(newBodyPrefab, bodyInfo); Transform modelBaseTransform = AddCharacterModelToSurvivorBody(newBodyPrefab, model.transform, bodyInfo); SetupModelLocator(newBodyPrefab, modelBaseTransform, model.transform); SetupCharacterDirection(newBodyPrefab, modelBaseTransform, model.transform); SetupCameraTargetParams(newBodyPrefab, bodyInfo); if (bodyInfo.modifyCollider) { SetupCapsuleCollider(newBodyPrefab); } Content.AddCharacterBodyPrefab(newBodyPrefab); return newBodyPrefab; } private static void SetupCharacterBody(GameObject newBodyPrefab, BodyInfo bodyInfo) { //IL_002e: 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_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) CharacterBody component = newBodyPrefab.GetComponent(); component.baseNameToken = bodyInfo.bodyNameToken; component.subtitleNameToken = bodyInfo.subtitleNameToken; component.portraitIcon = bodyInfo.characterPortrait; component.bodyColor = bodyInfo.bodyColor; component._defaultCrosshairPrefab = bodyInfo.crosshair; component.hideCrosshair = false; component.preferredPodPrefab = bodyInfo.podPrefab; component.baseMaxHealth = bodyInfo.maxHealth; component.baseRegen = bodyInfo.healthRegen; component.baseArmor = bodyInfo.armor; component.baseMaxShield = bodyInfo.shield; component.baseDamage = bodyInfo.damage; component.baseAttackSpeed = bodyInfo.attackSpeed; component.baseCrit = bodyInfo.crit; component.baseMoveSpeed = bodyInfo.moveSpeed; component.baseJumpPower = bodyInfo.jumpPower; component.autoCalculateLevelStats = bodyInfo.autoCalculateLevelStats; if (bodyInfo.autoCalculateLevelStats) { component.levelMaxHealth = Mathf.Round(component.baseMaxHealth * 0.3f); component.levelMaxShield = Mathf.Round(component.baseMaxShield * 0.3f); component.levelRegen = component.baseRegen * 0.2f; component.levelMoveSpeed = 0f; component.levelJumpPower = 0f; component.levelDamage = component.baseDamage * 0.2f; component.levelAttackSpeed = 0f; component.levelCrit = 0f; component.levelArmor = 0f; } else { component.levelMaxHealth = bodyInfo.healthGrowth; component.levelMaxShield = bodyInfo.shieldGrowth; component.levelRegen = bodyInfo.regenGrowth; component.levelMoveSpeed = bodyInfo.moveSpeedGrowth; component.levelJumpPower = bodyInfo.jumpPowerGrowth; component.levelDamage = bodyInfo.damageGrowth; component.levelAttackSpeed = bodyInfo.attackSpeedGrowth; component.levelCrit = bodyInfo.critGrowth; component.levelArmor = bodyInfo.armorGrowth; } component.baseAcceleration = bodyInfo.acceleration; component.baseJumpCount = bodyInfo.jumpCount; component.sprintingSpeedMultiplier = 1.45f; component.bodyFlags = (BodyFlags)16; component.rootMotionInMainState = false; component.hullClassification = (HullClassification)0; component.isChampion = false; } private static Transform AddCharacterModelToSurvivorBody(GameObject bodyPrefab, Transform modelTransform, BodyInfo bodyInfo) { //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_003d: 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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) Transform val = bodyPrefab.transform.Find("ModelBase"); if ((Object)(object)val == (Object)null) { val = new GameObject("ModelBase").transform; val.parent = bodyPrefab.transform; val.localPosition = bodyInfo.modelBasePosition; val.localRotation = Quaternion.identity; } modelTransform.parent = ((Component)val).transform; modelTransform.localPosition = Vector3.zero; modelTransform.localRotation = Quaternion.identity; Transform val2 = bodyPrefab.transform.Find("CameraPivot"); if ((Object)(object)val2 == (Object)null) { val2 = new GameObject("CameraPivot").transform; val2.parent = bodyPrefab.transform; val2.localPosition = bodyInfo.cameraPivotPosition; val2.localRotation = Quaternion.identity; } Transform val3 = bodyPrefab.transform.Find("AimOrigin"); if ((Object)(object)val3 == (Object)null) { val3 = new GameObject("AimOrigin").transform; val3.parent = bodyPrefab.transform; val3.localPosition = bodyInfo.aimOriginPosition; val3.localRotation = Quaternion.identity; } bodyPrefab.GetComponent().aimOriginTransform = val3; return ((Component)val).transform; } private static void SetupCharacterDirection(GameObject prefab, Transform modelBaseTransform, Transform modelTransform) { if (Object.op_Implicit((Object)(object)prefab.GetComponent())) { CharacterDirection component = prefab.GetComponent(); component.targetTransform = modelBaseTransform; component.overrideAnimatorForwardTransform = null; component.rootMotionAccumulator = null; component.modelAnimator = ((Component)modelTransform).GetComponent(); component.driveFromRootRotation = false; component.turnSpeed = 720f; } } private static void SetupCameraTargetParams(GameObject prefab, BodyInfo bodyInfo) { CameraTargetParams component = prefab.GetComponent(); component.cameraParams = bodyInfo.cameraParams; component.cameraPivotTransform = prefab.transform.Find("CameraPivot"); } private static void SetupModelLocator(GameObject prefab, Transform modelBaseTransform, Transform modelTransform) { ModelLocator component = prefab.GetComponent(); component.modelTransform = modelTransform; component.modelBaseTransform = modelBaseTransform; } private static void SetupCapsuleCollider(GameObject prefab) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) CapsuleCollider component = prefab.GetComponent(); component.center = new Vector3(0f, 0f, 0f); component.radius = 0.5f; component.height = 1.82f; component.direction = 1; } public static CharacterModel SetupCharacterModel(GameObject bodyPrefab, BodyInfo bodyInfo, CustomRendererInfo[] customInfos = null) { CharacterModel val = ((Component)bodyPrefab.GetComponent().modelTransform).gameObject.GetComponent(); bool flag = (Object)(object)val != (Object)null; if (!flag) { val = ((Component)bodyPrefab.GetComponent().modelTransform).gameObject.AddComponent(); } val.body = bodyPrefab.GetComponent(); val.autoPopulateLightInfos = true; val.invisibilityCount = 0; val.temporaryOverlays = new List(); if (!flag) { SetupCustomRendererInfos(val, customInfos); } else { SetupPreAttachedRendererInfos(val); } SetupHurtboxGroup(bodyPrefab, ((Component)val).gameObject); SetupAimAnimator(bodyPrefab, ((Component)val).gameObject); if (bodyInfo.hasFootstepController) { SetupFootstepController(((Component)val).gameObject); } if (bodyInfo.hasRagdoll) { SetupRagdoll(((Component)val).gameObject); } return val; } public static void SetupPreAttachedRendererInfos(CharacterModel characterModel) { for (int i = 0; i < characterModel.baseRendererInfos.Length; i++) { if ((Object)(object)characterModel.baseRendererInfos[i].defaultMaterial == (Object)null) { characterModel.baseRendererInfos[i].defaultMaterial = characterModel.baseRendererInfos[i].renderer.sharedMaterial; } if ((Object)(object)characterModel.baseRendererInfos[i].defaultMaterial == (Object)null) { Log.Error($"no material for rendererinfo of this renderer: {characterModel.baseRendererInfos[i].renderer}"); } characterModel.baseRendererInfos[i].defaultMaterial.ConvertDefaultShaderToHopoo(); } } public static void SetupCustomRendererInfos(CharacterModel characterModel, CustomRendererInfo[] customInfos) { //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) ChildLocator component = ((Component)characterModel).GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { Log.Error("Failed CharacterModel setup: ChildLocator component does not exist on the model"); return; } List list = new List(); for (int i = 0; i < customInfos.Length; i++) { if (!Object.op_Implicit((Object)(object)component.FindChild(customInfos[i].childName))) { Log.Error("Trying to add a RendererInfo for a renderer that does not exist: " + customInfos[i].childName); continue; } Renderer component2 = ((Component)component.FindChild(customInfos[i].childName)).GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { Material val = customInfos[i].material; if ((Object)(object)val == (Object)null) { val = ((!customInfos[i].dontHotpoo) ? component2.sharedMaterial.ConvertDefaultShaderToHopoo() : component2.sharedMaterial); } list.Add(new RendererInfo { renderer = component2, defaultMaterial = val, ignoreOverlays = customInfos[i].ignoreOverlays, defaultShadowCastingMode = (ShadowCastingMode)1 }); } } characterModel.baseRendererInfos = list.ToArray(); } private static void SetupHurtboxGroup(GameObject bodyPrefab, GameObject model) { SetupMainHurtboxesFromChildLocator(bodyPrefab, model); SetHurtboxesHealthComponents(bodyPrefab); } private static void SetupMainHurtboxesFromChildLocator(GameObject bodyPrefab, GameObject model) { //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)bodyPrefab.GetComponent() != (Object)null) { Log.Debug("Hitboxgroup already exists on model prefab. aborting code setup"); return; } ChildLocator component = model.GetComponent(); if (string.IsNullOrEmpty(component.FindChildNameInsensitive("MainHurtbox"))) { Log.Error("Could not set up main hurtbox: make sure you have a transform pair in your prefab's ChildLocator called 'MainHurtbox'"); return; } HurtBoxGroup val = model.AddComponent(); HurtBox val2 = null; GameObject val3 = component.FindChildGameObjectInsensitive("HeadHurtbox"); if (Object.op_Implicit((Object)(object)val3)) { Log.Debug("HeadHurtboxFound. Setting up"); val2 = val3.AddComponent(); ((Component)val2).gameObject.layer = LayerIndex.entityPrecise.intVal; val2.healthComponent = bodyPrefab.GetComponent(); val2.isBullseye = false; val2.isSniperTarget = true; val2.damageModifier = (DamageModifier)0; val2.hurtBoxGroup = val; val2.indexInGroup = 1; } HurtBox val4 = component.FindChildGameObjectInsensitive("MainHurtbox").AddComponent(); ((Component)val4).gameObject.layer = LayerIndex.entityPrecise.intVal; val4.healthComponent = bodyPrefab.GetComponent(); val4.isBullseye = true; val4.isSniperTarget = (Object)(object)val2 == (Object)null; val4.damageModifier = (DamageModifier)0; val4.hurtBoxGroup = val; val4.indexInGroup = 0; if (Object.op_Implicit((Object)(object)val2)) { val.hurtBoxes = (HurtBox[])(object)new HurtBox[2] { val4, val2 }; } else { val.hurtBoxes = (HurtBox[])(object)new HurtBox[1] { val4 }; } val.mainHurtBox = val4; val.bullseyeCount = 1; } private static string FindChildNameInsensitive(this ChildLocator childLocator, string child) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) return childLocator.transformPairs.Where((NameTransformPair pair) => pair.name.ToLowerInvariant() == child.ToLowerInvariant()).FirstOrDefault().name; } private static Transform FindChildInsensitive(this ChildLocator childLocator, string child) { return childLocator.FindChild(childLocator.FindChildNameInsensitive(child)); } private static GameObject FindChildGameObjectInsensitive(this ChildLocator childLocator, string child) { return childLocator.FindChildGameObject(childLocator.FindChildNameInsensitive(child)); } public static void SetHurtboxesHealthComponents(GameObject bodyPrefab) { HealthComponent component = bodyPrefab.GetComponent(); HurtBoxGroup[] componentsInChildren = bodyPrefab.GetComponentsInChildren(); foreach (HurtBoxGroup val in componentsInChildren) { val.mainHurtBox.healthComponent = component; for (int j = 0; j < val.hurtBoxes.Length; j++) { val.hurtBoxes[j].healthComponent = component; } } } private static void SetupFootstepController(GameObject model) { FootstepHandler val = model.AddComponent(); val.baseFootstepString = "Play_player_footstep"; val.sprintFootstepOverrideString = ""; val.enableFootstepDust = true; val.footstepDustPrefab = LegacyResourcesAPI.Load("Prefabs/GenericFootstepDust"); } private static void SetupRagdoll(GameObject model) { RagdollController component = model.GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { return; } if ((Object)(object)ragdollMaterial == (Object)null) { ragdollMaterial = ((Component)LegacyResourcesAPI.Load("Prefabs/CharacterBodies/CommandoBody").GetComponentInChildren().bones[1]).GetComponent().material; } Transform[] bones = component.bones; foreach (Transform val in bones) { if (Object.op_Implicit((Object)(object)val)) { ((Component)val).gameObject.layer = LayerIndex.ragdoll.intVal; Collider component2 = ((Component)val).GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { component2.sharedMaterial = ragdollMaterial; } else { Log.Error($"Ragdoll bone {((Component)val).gameObject} doesn't have a collider. Ragdoll will break."); } } } } private static void SetupAimAnimator(GameObject prefab, GameObject model) { AimAnimator val = model.AddComponent(); val.directionComponent = prefab.GetComponent(); val.pitchRangeMax = 60f; val.pitchRangeMin = -60f; val.yawRangeMin = -80f; val.yawRangeMax = 80f; val.pitchGiveupRange = 30f; val.yawGiveupRange = 10f; val.giveupDuration = 3f; val.inputBank = prefab.GetComponent(); } public static void CreateGenericDoppelganger(GameObject bodyPrefab, string masterName, string masterToCopy) { CloneDopplegangerMaster(bodyPrefab, masterName, masterToCopy); } public static GameObject CloneDopplegangerMaster(GameObject bodyPrefab, string masterName, string masterToCopy) { GameObject val = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load("Prefabs/CharacterMasters/" + masterToCopy + "MonsterMaster"), masterName, true); val.GetComponent().bodyPrefab = bodyPrefab; Content.AddMasterPrefab(val); return val; } public static GameObject CloneGenericMaster(GameObject bodyPrefab, string masterName, GameObject masterToCopy) { GameObject val = PrefabAPI.InstantiateClone(masterToCopy, masterName, true); val.GetComponent().bodyPrefab = bodyPrefab; Content.AddMasterPrefab(val); return val; } public static GameObject CreateBlankMasterPrefab(GameObject bodyPrefab, string masterName) { GameObject val = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load("Prefabs/CharacterMasters/CommandoMonsterMaster"), masterName, true); ContentPacks.masterPrefabs.Add(val); CharacterMaster component = val.GetComponent(); component.bodyPrefab = bodyPrefab; AISkillDriver[] components = val.GetComponents(); for (int i = 0; i < components.Length; i++) { Object.Destroy((Object)(object)components[i]); } return val; } public static GameObject LoadMaster(this AssetBundle assetBundle, GameObject bodyPrefab, string assetName) { //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) GameObject val = assetBundle.LoadAsset(assetName); BaseAI val2 = val.GetComponent(); if ((Object)(object)val2 == (Object)null) { val2 = val.AddComponent(); val2.aimVectorDampTime = 0.1f; val2.aimVectorMaxSpeed = 360f; } val2.scanState = new SerializableEntityStateType(typeof(Wander)); EntityStateMachine component = val.GetComponent(); if ((Object)(object)component == (Object)null) { AddEntityStateMachine(val, "AI", typeof(Wander), typeof(Wander)); } val2.stateMachine = component; CharacterMaster val3 = val.GetComponent(); if ((Object)(object)val3 == (Object)null) { val3 = val.AddComponent(); } val3.bodyPrefab = bodyPrefab; val3.teamIndex = (TeamIndex)2; Content.AddMasterPrefab(val); return val; } public static void ClearEntityStateMachines(GameObject bodyPrefab) { EntityStateMachine[] components = bodyPrefab.GetComponents(); for (int num = components.Length - 1; num >= 0; num--) { Object.DestroyImmediate((Object)(object)components[num]); } CharacterBody component = bodyPrefab.GetComponent(); component.vehicleIdleStateMachine = Array.Empty(); NetworkStateMachine component2 = bodyPrefab.GetComponent(); component2.stateMachines = Array.Empty(); CharacterDeathBehavior component3 = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component3)) { component3.idleStateMachine = Array.Empty(); } SetStateOnHurt component4 = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component4)) { component4.idleStateMachine = Array.Empty(); } } public static EntityStateMachine AddEntityStateMachine(GameObject prefab, string machineName, Type mainStateType = null, Type initalStateType = null, bool addToHurt = true, bool addToDeath = true, bool vehicleIdle = true) { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_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) EntityStateMachine val = EntityStateMachine.FindByCustomName(prefab, machineName); if ((Object)(object)val == (Object)null) { val = prefab.AddComponent(); } else { Log.Message("An Entity State Machine already exists with the name " + machineName + ". replacing."); } val.customName = machineName; if (mainStateType == null) { mainStateType = typeof(Idle); } val.mainStateType = new SerializableEntityStateType(mainStateType); if (initalStateType == null) { initalStateType = typeof(Idle); } val.initialStateType = new SerializableEntityStateType(initalStateType); NetworkStateMachine component = prefab.GetComponent(); if (Object.op_Implicit((Object)(object)component)) { component.stateMachines = component.stateMachines.Append(val).ToArray(); } CharacterDeathBehavior component2 = prefab.GetComponent(); if (Object.op_Implicit((Object)(object)component2) && addToDeath) { component2.idleStateMachine = component2.idleStateMachine.Append(val).ToArray(); } SetStateOnHurt component3 = prefab.GetComponent(); if (Object.op_Implicit((Object)(object)component3) && addToHurt) { component3.idleStateMachine = component3.idleStateMachine.Append(val).ToArray(); } CharacterBody component4 = prefab.GetComponent(); if (vehicleIdle && Object.op_Implicit((Object)(object)component4)) { if (component4.vehicleIdleStateMachine == null) { component4.vehicleIdleStateMachine = Array.Empty(); } component4.vehicleIdleStateMachine = component4.vehicleIdleStateMachine.Append(val).ToArray(); } return val; } public static EntityStateMachine AddMainEntityStateMachine(GameObject bodyPrefab, string machineName = "Body", Type mainStateType = null, Type initalStateType = null) { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_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) EntityStateMachine val = EntityStateMachine.FindByCustomName(bodyPrefab, machineName); if ((Object)(object)val == (Object)null) { val = bodyPrefab.AddComponent(); } else { Log.Message("An Entity State Machine already exists with the name " + machineName + ". replacing."); } val.customName = machineName; if (mainStateType == null) { mainStateType = typeof(GenericCharacterMain); } val.mainStateType = new SerializableEntityStateType(mainStateType); if (initalStateType == null) { initalStateType = typeof(SpawnTeleporterState); } val.initialStateType = new SerializableEntityStateType(initalStateType); NetworkStateMachine component = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component)) { component.stateMachines = component.stateMachines.Append(val).ToArray(); } CharacterDeathBehavior component2 = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { component2.deathStateMachine = val; } SetStateOnHurt component3 = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component3)) { component3.targetStateMachine = val; } return val; } public static void SetupHitBoxGroup(GameObject modelPrefab, string hitBoxGroupName, params string[] hitBoxChildNames) { ChildLocator component = modelPrefab.GetComponent(); Transform[] array = (Transform[])(object)new Transform[hitBoxChildNames.Length]; for (int i = 0; i < hitBoxChildNames.Length; i++) { array[i] = component.FindChild(hitBoxChildNames[i]); if ((Object)(object)array[i] == (Object)null) { Log.Error("missing hitbox for " + hitBoxChildNames[i]); } } SetupHitBoxGroup(modelPrefab, hitBoxGroupName, array); } public static void SetupHitBoxGroup(GameObject prefab, string hitBoxGroupName, params Transform[] hitBoxTransforms) { List list = new List(); foreach (Transform val in hitBoxTransforms) { if ((Object)(object)val == (Object)null) { Log.Error("Error setting up hitboxGroup for " + hitBoxGroupName + ": hitbox transform was null"); continue; } HitBox item = ((Component)val).gameObject.AddComponent(); ((Component)val).gameObject.layer = LayerIndex.projectile.intVal; list.Add(item); } if (list.Count == 0) { Log.Error("No hitboxes were set up. aborting setting up hitboxGroup for " + hitBoxGroupName); return; } HitBoxGroup val2 = prefab.AddComponent(); val2.hitBoxes = list.ToArray(); val2.groupName = hitBoxGroupName; } } public class CustomRendererInfo { public string childName; public Material material = null; public bool dontHotpoo = false; public bool ignoreOverlays = false; } internal static class Skills { public static bool HasPassiveSkill(CharacterBody body, SkillDef skillDef) { if (Object.op_Implicit((Object)(object)body)) { return HasPassiveSkill(body.skillLocator, skillDef); } return false; } public static bool HasPassiveSkill(SkillLocator skillLocator, SkillDef skillDef) { if (Object.op_Implicit((Object)(object)skillLocator) && skillLocator.allSkills != null) { GenericSkill[] allSkills = skillLocator.allSkills; foreach (GenericSkill val in allSkills) { if ((Object)(object)val.skillDef == (Object)(object)skillDef) { return true; } } } return false; } public static void CreateSkillFamilies(GameObject targetPrefab) { SkillSlot[] array = new SkillSlot[4]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); CreateSkillFamilies(targetPrefab, (SkillSlot[])(object)array); } public static void CreateSkillFamilies(GameObject targetPrefab, params SkillSlot[] slots) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0013: 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_002f: Expected I4, but got Unknown SkillLocator component = targetPrefab.GetComponent(); foreach (SkillSlot val in slots) { SkillSlot val2 = val; switch (val2 - -1) { case 1: component.primary = CreateGenericSkillWithSkillFamily(targetPrefab, "Primary"); break; case 2: component.secondary = CreateGenericSkillWithSkillFamily(targetPrefab, "Secondary"); break; case 3: component.utility = CreateGenericSkillWithSkillFamily(targetPrefab, "Utility"); break; case 4: component.special = CreateGenericSkillWithSkillFamily(targetPrefab, "Special"); break; } } } public static void ClearGenericSkills(GameObject targetPrefab) { GenericSkill[] componentsInChildren = targetPrefab.GetComponentsInChildren(); foreach (GenericSkill val in componentsInChildren) { Object.DestroyImmediate((Object)(object)val); } } public static GenericSkill CreateGenericSkillWithSkillFamily(GameObject targetPrefab, SkillSlot skillSlot, bool hidden = false) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: 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: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected I4, but got Unknown SkillLocator component = targetPrefab.GetComponent(); switch (skillSlot - -1) { case 1: return component.primary = CreateGenericSkillWithSkillFamily(targetPrefab, "Primary", hidden); case 2: return component.secondary = CreateGenericSkillWithSkillFamily(targetPrefab, "Secondary", hidden); case 3: return component.utility = CreateGenericSkillWithSkillFamily(targetPrefab, "Utility", hidden); case 4: return component.special = CreateGenericSkillWithSkillFamily(targetPrefab, "Special", hidden); case 0: Log.Error("Failed to create GenericSkill with skillslot None. If making a GenericSkill outside of the main 4, specify a familyName, and optionally a genericSkillName"); return null; default: return null; } } public static GenericSkill CreateGenericSkillWithSkillFamily(GameObject targetPrefab, string familyName, bool hidden = false) { return CreateGenericSkillWithSkillFamily(targetPrefab, familyName, familyName, hidden); } public static GenericSkill CreateGenericSkillWithSkillFamily(GameObject targetPrefab, string genericSkillName, string familyName, bool hidden = false) { GenericSkill val = targetPrefab.AddComponent(); val.skillName = genericSkillName; val.hideInCharacterSelect = hidden; SkillFamily val2 = ScriptableObject.CreateInstance(); ((Object)val2).name = ((Object)targetPrefab).name + familyName + "Family"; val2.variants = (Variant[])(object)new Variant[0]; val._skillFamily = val2; Content.AddSkillFamily(val2); return val; } public static void AddSkillToFamily(SkillFamily skillFamily, SkillDef skillDef, UnlockableDef unlockableDef = null) { //IL_0029: 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_0053: Expected O, but got Unknown //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val = new Variant { skillDef = skillDef, unlockableDef = unlockableDef }; ((Variant)(ref val)).viewableNode = new Node(skillDef.skillNameToken, false, (Node)null); variants[num] = val; } public static void AddSkillsToFamily(SkillFamily skillFamily, params SkillDef[] skillDefs) { foreach (SkillDef skillDef in skillDefs) { AddSkillToFamily(skillFamily, skillDef); } } public static void AddPrimarySkills(GameObject targetPrefab, params SkillDef[] skillDefs) { AddSkillsToFamily(targetPrefab.GetComponent().primary.skillFamily, skillDefs); } public static void AddSecondarySkills(GameObject targetPrefab, params SkillDef[] skillDefs) { AddSkillsToFamily(targetPrefab.GetComponent().secondary.skillFamily, skillDefs); } public static void AddUtilitySkills(GameObject targetPrefab, params SkillDef[] skillDefs) { AddSkillsToFamily(targetPrefab.GetComponent().utility.skillFamily, skillDefs); } public static void AddSpecialSkills(GameObject targetPrefab, params SkillDef[] skillDefs) { AddSkillsToFamily(targetPrefab.GetComponent().special.skillFamily, skillDefs); } public static void AddUnlockablesToFamily(SkillFamily skillFamily, params UnlockableDef[] unlockableDefs) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < unlockableDefs.Length; i++) { Variant val = skillFamily.variants[i]; val.unlockableDef = unlockableDefs[i]; skillFamily.variants[i] = val; } } public static SkillDef CreateSkillDef(SkillDefInfo skillDefInfo) { return Skills.CreateSkillDef(skillDefInfo); } public static T CreateSkillDef(SkillDefInfo skillDefInfo) where T : SkillDef { //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) T val = ScriptableObject.CreateInstance(); ((SkillDef)val).skillName = skillDefInfo.skillName; ((Object)(object)val).name = skillDefInfo.skillName; ((SkillDef)val).skillNameToken = skillDefInfo.skillNameToken; ((SkillDef)val).skillDescriptionToken = skillDefInfo.skillDescriptionToken; ((SkillDef)val).icon = skillDefInfo.skillIcon; ((SkillDef)val).activationState = skillDefInfo.activationState; ((SkillDef)val).activationStateMachineName = skillDefInfo.activationStateMachineName; ((SkillDef)val).interruptPriority = skillDefInfo.interruptPriority; ((SkillDef)val).baseMaxStock = skillDefInfo.baseMaxStock; ((SkillDef)val).baseRechargeInterval = skillDefInfo.baseRechargeInterval; ((SkillDef)val).rechargeStock = skillDefInfo.rechargeStock; ((SkillDef)val).requiredStock = skillDefInfo.requiredStock; ((SkillDef)val).stockToConsume = skillDefInfo.stockToConsume; ((SkillDef)val).dontAllowPastMaxStocks = skillDefInfo.dontAllowPastMaxStocks; ((SkillDef)val).beginSkillCooldownOnSkillEnd = skillDefInfo.beginSkillCooldownOnSkillEnd; ((SkillDef)val).canceledFromSprinting = skillDefInfo.canceledFromSprinting; ((SkillDef)val).forceSprintDuringState = skillDefInfo.forceSprintDuringState; ((SkillDef)val).fullRestockOnAssign = skillDefInfo.fullRestockOnAssign; ((SkillDef)val).resetCooldownTimerOnUse = skillDefInfo.resetCooldownTimerOnUse; ((SkillDef)val).isCombatSkill = skillDefInfo.isCombatSkill; ((SkillDef)val).mustKeyPress = skillDefInfo.mustKeyPress; ((SkillDef)val).cancelSprintingOnActivation = skillDefInfo.cancelSprintingOnActivation; ((SkillDef)val).keywordTokens = skillDefInfo.keywordTokens; Content.AddSkillDef((SkillDef)(object)val); return val; } } internal class SkillDefInfo { public string skillName; public string skillNameToken; public string skillDescriptionToken; public string[] keywordTokens = Array.Empty(); public Sprite skillIcon; public SerializableEntityStateType activationState; public string activationStateMachineName; public InterruptPriority interruptPriority; public float baseRechargeInterval; public int baseMaxStock = 1; public int rechargeStock = 1; public int requiredStock = 1; public int stockToConsume = 1; public bool resetCooldownTimerOnUse = false; public bool fullRestockOnAssign = true; public bool dontAllowPastMaxStocks = false; public bool beginSkillCooldownOnSkillEnd = false; public bool mustKeyPress = false; public bool isCombatSkill = true; public bool canceledFromSprinting = false; public bool cancelSprintingOnActivation = true; public bool forceSprintDuringState = false; public SkillDefInfo() { } public SkillDefInfo(string skillName, string skillNameToken, string skillDescriptionToken, Sprite skillIcon, SerializableEntityStateType activationState, string activationStateMachineName = "Weapon", bool agile = false) { //IL_008c: 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_00c2: Unknown result type (might be due to invalid IL or missing references) this.skillName = skillName; this.skillNameToken = skillNameToken; this.skillDescriptionToken = skillDescriptionToken; this.skillIcon = skillIcon; this.activationState = activationState; this.activationStateMachineName = activationStateMachineName; cancelSprintingOnActivation = !agile; if (agile) { keywordTokens = new string[1] { "KEYWORD_AGILE" }; } interruptPriority = (InterruptPriority)0; isCombatSkill = true; baseRechargeInterval = 0f; requiredStock = 0; stockToConsume = 0; } } internal static class Skins { internal struct SkinDefInfo { internal SkinDef[] BaseSkins; internal Sprite Icon; internal string NameToken; internal UnlockableDef UnlockableDef; internal GameObject RootObject; internal RendererInfo[] RendererInfos; internal MeshReplacement[] MeshReplacements; internal GameObjectActivation[] GameObjectActivations; internal ProjectileGhostReplacement[] ProjectileGhostReplacements; internal MinionSkinReplacement[] MinionSkinReplacements; internal string Name; } internal static SkinDef CreateSkinDef(string skinName, Sprite skinIcon, RendererInfo[] defaultRendererInfos, GameObject root, UnlockableDef unlockableDef = null) { SkinDefInfo skinDefInfo = default(SkinDefInfo); skinDefInfo.BaseSkins = Array.Empty(); skinDefInfo.GameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[0]; skinDefInfo.Icon = skinIcon; skinDefInfo.MeshReplacements = (MeshReplacement[])(object)new MeshReplacement[0]; skinDefInfo.MinionSkinReplacements = (MinionSkinReplacement[])(object)new MinionSkinReplacement[0]; skinDefInfo.Name = skinName; skinDefInfo.NameToken = skinName; skinDefInfo.ProjectileGhostReplacements = (ProjectileGhostReplacement[])(object)new ProjectileGhostReplacement[0]; skinDefInfo.RendererInfos = (RendererInfo[])(object)new RendererInfo[defaultRendererInfos.Length]; skinDefInfo.RootObject = root; skinDefInfo.UnlockableDef = unlockableDef; SkinDefInfo skinDefInfo2 = skinDefInfo; SkinDef val = ScriptableObject.CreateInstance(); val.baseSkins = skinDefInfo2.BaseSkins; val.icon = skinDefInfo2.Icon; val.unlockableDef = skinDefInfo2.UnlockableDef; val.rootObject = skinDefInfo2.RootObject; defaultRendererInfos.CopyTo(skinDefInfo2.RendererInfos, 0); val.rendererInfos = skinDefInfo2.RendererInfos; val.gameObjectActivations = skinDefInfo2.GameObjectActivations; val.meshReplacements = skinDefInfo2.MeshReplacements; val.projectileGhostReplacements = skinDefInfo2.ProjectileGhostReplacements; val.minionSkinReplacements = skinDefInfo2.MinionSkinReplacements; val.nameToken = skinDefInfo2.NameToken; ((Object)val).name = skinDefInfo2.Name; return val; } private static RendererInfo[] getRendererMaterials(RendererInfo[] defaultRenderers, params Material[] materials) { RendererInfo[] array = (RendererInfo[])(object)new RendererInfo[defaultRenderers.Length]; defaultRenderers.CopyTo(array, 0); for (int i = 0; i < array.Length; i++) { try { array[i].defaultMaterial = materials[i]; } catch { Log.Error("error adding skin rendererinfo material. make sure you're not passing in too many"); } } return array; } internal static MeshReplacement[] getMeshReplacements(AssetBundle assetBundle, RendererInfo[] defaultRendererInfos, params string[] meshes) { //IL_001d: 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) List list = new List(); for (int i = 0; i < defaultRendererInfos.Length; i++) { if (!string.IsNullOrEmpty(meshes[i])) { list.Add(new MeshReplacement { renderer = defaultRendererInfos[i].renderer, mesh = assetBundle.LoadAsset(meshes[i]) }); } } return list.ToArray(); } } internal static class Tokens { public const string agilePrefix = "Agile."; public static string DamageText(string text) { return "" + text + ""; } public static string DamageValueText(float value) { return $"{value * 100f}% damage"; } public static string UtilityText(string text) { return "" + text + ""; } public static string RedText(string text) { return HealthText(text); } public static string HealthText(string text) { return "" + text + ""; } public static string KeywordText(string keyword, string sub) { return "" + keyword + "" + sub + ""; } public static string ScepterDescription(string desc) { return "\nSCEPTER: " + desc + ""; } public static string GetAchievementNameToken(string identifier) { return "ACHIEVEMENT_" + identifier.ToUpperInvariant() + "_NAME"; } public static string GetAchievementDescriptionToken(string identifier) { return "ACHIEVEMENT_" + identifier.ToUpperInvariant() + "_DESCRIPTION"; } } } namespace GaleShockTrooper.Modules.Characters { public abstract class CharacterBase where T : CharacterBase, new() { public abstract string assetBundleName { get; } public abstract string bodyName { get; } public abstract string modelPrefabName { get; } public abstract BodyInfo bodyInfo { get; } public virtual CustomRendererInfo[] customRendererInfos { get; } public virtual ItemDisplaysBase itemDisplays { get; } public static T instance { get; private set; } public abstract AssetBundle assetBundle { get; protected set; } public abstract GameObject bodyPrefab { get; protected set; } public abstract CharacterBody prefabCharacterBody { get; protected set; } public abstract GameObject characterModelObject { get; protected set; } public abstract CharacterModel prefabCharacterModel { get; protected set; } public virtual void Initialize() { instance = this as T; assetBundle = Asset.LoadAssetBundle(assetBundleName); } public abstract void InitializeCharacter(); protected virtual void InitializeCharacterBodyPrefab() { characterModelObject = Prefabs.LoadCharacterModel(assetBundle, modelPrefabName); bodyPrefab = Prefabs.CreateBodyPrefab(characterModelObject, bodyInfo); prefabCharacterBody = bodyPrefab.GetComponent(); prefabCharacterModel = Prefabs.SetupCharacterModel(bodyPrefab, bodyInfo, customRendererInfos); } public virtual void InitializeItemDisplays() { ItemDisplayRuleSet val = ScriptableObject.CreateInstance(); ((Object)val).name = "idrs" + bodyName; prefabCharacterModel.itemDisplayRuleSet = val; if (itemDisplays != null) { ItemDisplays.queuedDisplays++; ContentManager.onContentPacksAssigned += SetItemDisplays; } } public void SetItemDisplays(ReadOnlyArray obj) { itemDisplays.SetItemDisplays(prefabCharacterModel.itemDisplayRuleSet); } public abstract void InitializeEntityStateMachines(); public abstract void InitializeSkills(); public abstract void InitializeSkins(); public abstract void InitializeCharacterMaster(); } public class BodyInfo { public string bodyName = ""; public string bodyNameToken = ""; public string subtitleNameToken = ""; public string bodyNameToClone = "Commando"; public Color bodyColor = Color.white; public Texture characterPortrait = null; public float sortPosition = 100f; public GameObject crosshair = null; public GameObject podPrefab = null; public float maxHealth = 100f; public float healthRegen = 1f; public float armor = 0f; public float shield = 0f; public int jumpCount = 1; public float damage = 12f; public float attackSpeed = 1f; public float crit = 1f; public float moveSpeed = 7f; public float acceleration = 80f; public float jumpPower = 15f; public bool autoCalculateLevelStats = true; public float healthGrowth = 30.000002f; public float regenGrowth = 0.2f; public float armorGrowth = 0f; public float shieldGrowth = 0f; public float damageGrowth = 2.4f; public float attackSpeedGrowth = 0f; public float critGrowth = 0f; public float moveSpeedGrowth = 0f; public float jumpPowerGrowth = 0f; public Vector3 aimOriginPosition = new Vector3(0f, 1.6f, 0f); public Vector3 modelBasePosition = new Vector3(0f, -0.92f, 0f); public Vector3 cameraPivotPosition = new Vector3(0f, 0.8f, 0f); public float cameraParamsVerticalOffset = 1.37f; public float cameraParamsDepth = -8.1f; private CharacterCameraParams _cameraParams; public bool hasRagdoll = true; public bool hasFootstepController = true; public bool modifyCollider = true; public CharacterCameraParams cameraParams { get { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)_cameraParams == (Object)null) { _cameraParams = ScriptableObject.CreateInstance(); _cameraParams.data.minPitch = BlendableFloat.op_Implicit(-70f); _cameraParams.data.maxPitch = BlendableFloat.op_Implicit(70f); _cameraParams.data.wallCushion = BlendableFloat.op_Implicit(0.1f); _cameraParams.data.pivotVerticalOffset = BlendableFloat.op_Implicit(cameraParamsVerticalOffset); _cameraParams.data.idealLocalCameraPos = BlendableVector3.op_Implicit(new Vector3(0f, 0f, cameraParamsDepth)); } return _cameraParams; } set { _cameraParams = value; } } } public abstract class ItemDisplaysBase { public void SetItemDisplays(ItemDisplayRuleSet itemDisplayRuleSet) { List list = new List(); ItemDisplays.LazyInit(); SetItemDisplayRules(list); itemDisplayRuleSet.keyAssetRuleGroups = list.ToArray(); ItemDisplays.DisposeWhenDone(); } protected abstract void SetItemDisplayRules(List itemDisplayRules); } public abstract class SurvivorBase : CharacterBase where T : SurvivorBase, new() { public abstract string masterName { get; } public abstract string displayPrefabName { get; } public abstract string survivorTokenPrefix { get; } public abstract UnlockableDef characterUnlockableDef { get; } public abstract GameObject displayPrefab { get; protected set; } protected virtual void InitializeDisplayPrefab() { displayPrefab = Prefabs.CreateDisplayPrefab(assetBundle, displayPrefabName, bodyPrefab); } protected virtual void InitializeSurvivor() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) Content.CreateSurvivor(bodyPrefab, displayPrefab, bodyInfo.bodyColor, survivorTokenPrefix, characterUnlockableDef, bodyInfo.sortPosition); } protected virtual void AddCssPreviewSkill(int indexFromEditor, SkillFamily skillFamily, SkillDef skillDef) { CharacterSelectSurvivorPreviewDisplayController component = displayPrefab.GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { Log.Error("trying to add skillChangeResponse to null CharacterSelectSurvivorPreviewDisplayController.\nMake sure you created one on your Display prefab in editor"); return; } component.skillChangeResponses[indexFromEditor].triggerSkillFamily = skillFamily; component.skillChangeResponses[indexFromEditor].triggerSkill = skillDef; } protected virtual void AddCssPreviewSkin(int indexFromEditor, SkinDef skinDef) { CharacterSelectSurvivorPreviewDisplayController component = displayPrefab.GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { Log.Error("trying to add skinChangeResponse to null CharacterSelectSurvivorPreviewDisplayController.\nMake sure you created one on your Display prefab in editor"); } else { component.skinChangeResponses[indexFromEditor].triggerSkin = skinDef; } } protected virtual void FinalizeCSSPreviewDisplayController() { //IL_0073: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)displayPrefab)) { return; } CharacterSelectSurvivorPreviewDisplayController component = displayPrefab.GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { return; } component.bodyPrefab = bodyPrefab; List list = new List(); for (int i = 0; i < component.skillChangeResponses.Length; i++) { if ((Object)(object)component.skillChangeResponses[i].triggerSkillFamily != (Object)null) { list.Add(component.skillChangeResponses[i]); } } component.skillChangeResponses = list.ToArray(); } } } namespace GaleShockTrooper.Modules.BaseStates { public abstract class BaseMeleeAttack : BaseSkillState, IStepSetter { public string hitBoxGroupName = "SwordGroup"; public DamageTypeCombo damageType = DamageTypeCombo.op_Implicit((DamageType)0); public float damageCoefficient = 3.5f; public float procCoefficient = 1f; public float pushForce = 300f; public Vector3 bonusForce = Vector3.zero; public float baseDuration = 1f; public float attackStartTimeFraction = 0.2f; public float attackEndTimeFraction = 0.4f; public float earlyExitTimeFraction = 0.4f; public float hitStopDuration = 0.012f; public float attackRecoil = 0.75f; public float hitHopVelocity = 4f; public string swingSoundString = ""; public string muzzleString = "SwingCenter"; public string playbackRateParam; public GameObject swingEffectPrefab; public GameObject hitEffectPrefab; public NetworkSoundEventIndex impactSound = (NetworkSoundEventIndex)(-1); protected OverlapAttack overlapAttack; protected float duration; protected Animator animator; protected float stopwatch; protected bool inHitPause; protected bool hasFired; protected int swingIndex; private float hitPauseTimer; private bool hasHopped; private HitStopCachedState hitStopCachedState; private Vector3 storedVelocity; protected OverlapAttack attack { get { return overlapAttack; } set { overlapAttack = value; } } public float attackStartPercentTime { get { return attackStartTimeFraction; } set { attackStartTimeFraction = value; } } public float attackEndPercentTime { get { return attackEndTimeFraction; } set { attackEndTimeFraction = value; } } public float earlyExitPercentTime { get { return earlyExitTimeFraction; } set { earlyExitTimeFraction = value; } } public override void OnEnter() { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; animator = ((EntityState)this).GetModelAnimator(); ((BaseState)this).StartAimMode(0.5f + duration, false); overlapAttack = new OverlapAttack(); overlapAttack.damageType = damageType; overlapAttack.attacker = ((EntityState)this).gameObject; overlapAttack.inflictor = ((EntityState)this).gameObject; overlapAttack.teamIndex = ((BaseState)this).GetTeam(); overlapAttack.damage = damageCoefficient * ((BaseState)this).damageStat; overlapAttack.procCoefficient = procCoefficient; overlapAttack.hitEffectPrefab = hitEffectPrefab; overlapAttack.forceVector = bonusForce; overlapAttack.pushAwayForce = pushForce; overlapAttack.hitBoxGroup = ((BaseState)this).FindHitBoxGroup(hitBoxGroupName); overlapAttack.isCrit = ((BaseState)this).RollCrit(); overlapAttack.impactSound = impactSound; ModifyOverlapAttack(overlapAttack); } protected virtual void ModifyOverlapAttack(OverlapAttack overlapAttack) { } protected abstract void PlayAttackAnimation(); public override void OnExit() { if (inHitPause) { RemoveHitstop(); } ((EntityState)this).OnExit(); } protected virtual void PlaySwingEffect() { EffectManager.SimpleMuzzleFlash(swingEffectPrefab, ((EntityState)this).gameObject, muzzleString, false); } protected virtual void OnHitEnemyAuthority() { if (!hasHopped) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded && hitHopVelocity > 0f) { ((BaseState)this).SmallHop(((EntityState)this).characterMotor, hitHopVelocity); } hasHopped = true; } ApplyHitstop(); } protected void ApplyHitstop() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) if (!inHitPause && hitStopDuration > 0f) { storedVelocity = ((EntityState)this).characterMotor.velocity; hitStopCachedState = ((BaseState)this).CreateHitStopCachedState(((EntityState)this).characterMotor, animator, playbackRateParam); hitPauseTimer = hitStopDuration / ((BaseState)this).attackSpeedStat; inHitPause = true; } } private void FireAttack() { if (((EntityState)this).isAuthority && overlapAttack.Fire((List)null)) { OnHitEnemyAuthority(); } } private void EnterAttack() { hasFired = true; Util.PlayAttackSpeedSound(swingSoundString, ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat); PlaySwingEffect(); if (((EntityState)this).isAuthority) { ((BaseState)this).AddRecoil(-1f * attackRecoil, -2f * attackRecoil, -0.5f * attackRecoil, 0.5f * attackRecoil); } } public override void FixedUpdate() { //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) ((EntityState)this).FixedUpdate(); hitPauseTimer -= Time.deltaTime; if (hitPauseTimer <= 0f && inHitPause) { RemoveHitstop(); } if (!inHitPause) { stopwatch += Time.deltaTime; } else { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; } if (Object.op_Implicit((Object)(object)animator)) { animator.SetFloat(playbackRateParam, 0f); } } bool flag = stopwatch >= duration * attackStartTimeFraction; bool flag2 = stopwatch >= duration * attackEndTimeFraction; if ((flag && !flag2) || (flag && flag2 && !hasFired)) { if (!hasFired) { EnterAttack(); } FireAttack(); } if (stopwatch >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void RemoveHitstop() { //IL_0003: 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_002d: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator); inHitPause = false; ((EntityState)this).characterMotor.velocity = storedVelocity; } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0023: 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_0026: Unknown result type (might be due to invalid IL or missing references) if (stopwatch >= duration * earlyExitTimeFraction) { return (InterruptPriority)0; } return (InterruptPriority)1; } public void SetStep(int i) { swingIndex = i; } public override void OnSerialize(NetworkWriter writer) { ((BaseSkillState)this).OnSerialize(writer); writer.Write(swingIndex); } public override void OnDeserialize(NetworkReader reader) { ((BaseSkillState)this).OnDeserialize(reader); swingIndex = reader.ReadInt32(); } } public abstract class BaseTimedSkillState : BaseSkillState { protected float duration; protected float castStartTime; protected float castEndTime; protected bool hasFired; protected bool isFiring; protected bool hasExited; public abstract float TimedBaseDuration { get; } public abstract float TimedBaseCastStartPercentTime { get; } public virtual float TimedBaseCastEndPercentTime => 1f; public override void OnEnter() { InitDurationValues(); ((BaseState)this).OnEnter(); } protected virtual void InitDurationValues() { duration = TimedBaseDuration / ((BaseState)this).attackSpeedStat; castStartTime = TimedBaseCastStartPercentTime * duration; castEndTime = TimedBaseCastEndPercentTime * duration; } protected virtual void OnCastEnter() { } protected virtual void OnCastFixedUpdate() { } protected virtual void OnCastUpdate() { } protected virtual void OnCastExit() { } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); bool flag = ((EntityState)this).fixedAge >= castStartTime; bool flag2 = ((EntityState)this).fixedAge >= castEndTime; isFiring = false; if ((flag && !flag2) || (flag && flag2 && !hasFired)) { isFiring = true; OnCastFixedUpdate(); if (!hasFired) { OnCastEnter(); hasFired = true; } } if (flag2 && !hasExited) { hasExited = true; OnCastExit(); } if (((EntityState)this).fixedAge > duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void Update() { ((EntityState)this).Update(); if (isFiring) { OnCastUpdate(); } } } public class ExampleTimedSkillState : BaseTimedSkillState { public override float TimedBaseDuration => 1.5f; public override float TimedBaseCastStartPercentTime => 0.2f; public override float TimedBaseCastEndPercentTime => 0.9f; protected override void OnCastEnter() { } protected override void OnCastFixedUpdate() { } protected override void OnCastExit() { } } public class ExampleDelayedSkillState : BaseTimedSkillState { public override float TimedBaseDuration => 1.5f; public override float TimedBaseCastStartPercentTime => 0.2f; protected override void OnCastEnter() { } } } namespace GaleShockTrooper.Modules.Achievements { public abstract class BaseMasteryAchievement : BaseAchievement { public abstract string RequiredCharacterBody { get; } public abstract float RequiredDifficultyCoefficient { get; } public override BodyIndex LookUpRequiredBodyIndex() { //IL_0007: 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_000f: Unknown result type (might be due to invalid IL or missing references) return BodyCatalog.FindBodyIndex(RequiredCharacterBody); } public override void OnBodyRequirementMet() { ((BaseAchievement)this).OnBodyRequirementMet(); Run.onClientGameOverGlobal += OnClientGameOverGlobal; } public override void OnBodyRequirementBroken() { Run.onClientGameOverGlobal -= OnClientGameOverGlobal; ((BaseAchievement)this).OnBodyRequirementBroken(); } private void OnClientGameOverGlobal(Run run, RunReport runReport) { //IL_002f: 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_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Invalid comparison between Unknown and I4 //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Invalid comparison between Unknown and I4 if (!Object.op_Implicit((Object)(object)runReport.gameEnding) || !runReport.gameEnding.isWin) { return; } DifficultyIndex val = runReport.ruleBook.FindDifficulty(); DifficultyDef difficultyDef = DifficultyCatalog.GetDifficultyDef(val); if (difficultyDef != null) { bool flag = difficultyDef.countsAsHardMode && difficultyDef.scalingValue >= RequiredDifficultyCoefficient; bool flag2 = difficultyDef.nameToken == "INFERNO_NAME"; bool flag3 = (int)val >= 3 && (int)val <= 10; if (flag || flag2 || flag3) { ((BaseAchievement)this).Grant(); } } } } } namespace GaleShockTrooper.Survivors.GaleShockTrooperSurvivor { public class GaleShockTrooperSurvivor : SurvivorBase { public const string CHARACTER_NAME = "GaleShockTrooper"; public const string TOKEN_PREFIX = "GALE_GaleShockTrooper_"; public static BodyIndex bodyIndex; public static float passiveFrontArmorMult = 2f / 3f; public static float baseHealth = 110f; public static float baseArmor = 0f; private static NetworkSoundEventDef blockSound = Addressables.LoadAssetAsync((object)"RoR2/Base/ArmorPlate/nseArmorPlateBlock.asset").WaitForCompletion(); public override string assetBundleName => "galeshocktrooperassetbundle"; public override string bodyName => "GaleShockTrooperBody"; public override string masterName => "GaleShockTrooperMonsterMaster"; public override string modelPrefabName => "mdlGaleShockTrooper"; public override string displayPrefabName => "GaleShockTrooperDisplay"; public override string survivorTokenPrefix => "GALE_GaleShockTrooper_"; public override BodyInfo bodyInfo => new BodyInfo { bodyName = bodyName, bodyNameToken = "GALE_GaleShockTrooper_NAME", subtitleNameToken = "GALE_GaleShockTrooper_SUBTITLE", characterPortrait = assetBundle.LoadAsset("texGaleShockTrooperPortrait"), bodyColor = Color32.op_Implicit(new Color32((byte)64, (byte)149, (byte)128, byte.MaxValue)), sortPosition = 100f, crosshair = Addressables.LoadAssetAsync((object)"RoR2/Base/Toolbot/SMGCrosshair.prefab").WaitForCompletion(), podPrefab = LegacyResourcesAPI.Load("Prefabs/NetworkedObjects/SurvivorPod"), maxHealth = 110f, healthRegen = 1f, armor = 0f, jumpCount = 1 }; public override CustomRendererInfo[] customRendererInfos => new CustomRendererInfo[5] { new CustomRendererInfo { childName = "ArmorRender", material = assetBundle.LoadMaterial("matTrooper01") }, new CustomRendererInfo { childName = "BackRender", material = assetBundle.LoadMaterial("matTrooperBackpack") }, new CustomRendererInfo { childName = "BodyRender", material = assetBundle.LoadMaterial("matTrooperBody") }, new CustomRendererInfo { childName = "DroneRender", material = assetBundle.LoadMaterial("matTrooper01") }, new CustomRendererInfo { childName = "GunRender", material = assetBundle.LoadMaterial("matTrooperWeapon") } }; public override UnlockableDef characterUnlockableDef => CharacterConfig.forceUnlock ? null : CharacterUnlockables.characterUnlockableDef; public override ItemDisplaysBase itemDisplays => new GaleShockTrooper.Survivors.GaleShockTrooperSurvivor.Content.CharacterItemDisplaySetup(); public override AssetBundle assetBundle { get; protected set; } public override GameObject bodyPrefab { get; protected set; } public override CharacterBody prefabCharacterBody { get; protected set; } public override GameObject characterModelObject { get; protected set; } public override CharacterModel prefabCharacterModel { get; protected set; } public override GameObject displayPrefab { get; protected set; } public override void Initialize() { base.Initialize(); InitializeCharacter(); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(OnLoadActions)); } private void OnLoadActions() { //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) bodyIndex = BodyCatalog.FindBodyIndex("GaleShockTrooperBody"); } public override void InitializeCharacter() { CharacterUnlockables.Init(); base.InitializeCharacterBodyPrefab(); base.InitializeItemDisplays(); base.InitializeDisplayPrefab(); base.InitializeSurvivor(); CharacterBuffs.Init(assetBundle); CharacterDots.Init(); CharacterDamageTypes.Init(); CharacterConfig.Init(); CharacterTokens.Init(); CharacterAssets.Init(assetBundle); InitializeEntityStateMachines(); InitializeSkills(); InitializeSkins(); InitializeCharacterMaster(); AdditionalBodySetup(); AddHooks(); if (Chainloader.PluginInfos.ContainsKey("com.score.AutoSprint")) { AutoSprintCompat(); } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private void AutoSprintCompat() { StateManager.SprintDisabledTypeNames.Add(typeof(PaintMissiles).FullName); } private void AdditionalBodySetup() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0086: 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) CharacterBody component = bodyPrefab.GetComponent(); component.baseMaxHealth = baseHealth; component.levelMaxHealth = component.baseMaxHealth * 0.3f; AnimationCurve val = new AnimationCurve(); Keyframe[] array = new Keyframe[2]; Keyframe val2 = default(Keyframe); ((Keyframe)(ref val2)).time = 0f; ((Keyframe)(ref val2)).value = 1.5f; array[0] = val2; val2 = default(Keyframe); ((Keyframe)(ref val2)).time = 1f; ((Keyframe)(ref val2)).value = 3f; array[1] = val2; val.keys = (Keyframe[])(object)array; component.spreadBloomCurve = val; CharacterMotor component2 = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { component2.mass = 300f; } } public override void InitializeEntityStateMachines() { Prefabs.ClearEntityStateMachines(bodyPrefab); Prefabs.AddMainEntityStateMachine(bodyPrefab, "Body", typeof(GenericCharacterMain), typeof(SpawnTeleporterState)); Prefabs.AddEntityStateMachine(bodyPrefab, "Weapon"); } public override void InitializeSkills() { Skills.ClearGenericSkills(bodyPrefab); AddPassiveSkill(); AddPrimarySkills(); AddSecondarySkills(); AddUtiitySkills(); AddSpecialSkills(); } private void AddPassiveSkill() { //IL_004c: 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_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown GenericSkill val = Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, "PassiveSkill"); SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "GaleShockTrooper_PassiveFrontArmor"; skillDefInfo.skillNameToken = "GALE_GaleShockTrooper_PASSIVE_NAME"; skillDefInfo.skillDescriptionToken = "GALE_GaleShockTrooper_PASSIVE_DESCRIPTION"; skillDefInfo.keywordTokens = new string[0]; skillDefInfo.skillIcon = Addressables.LoadAssetAsync((object)"RoR2/Base/Captain/CallSupplyDropShocking.asset").WaitForCompletion().icon; SkillDef val2 = Skills.CreateSkillDef(skillDefInfo); Skills.AddSkillsToFamily(val.skillFamily, val2); SkillDefs.Passive_FrontArmor = val2; HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage); } private void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_005a: 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_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0070: 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_002d: 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_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active && Object.op_Implicit((Object)(object)damageInfo.attacker) && Object.op_Implicit((Object)(object)self.body) && self.body.bodyIndex == bodyIndex && Skills.HasPassiveSkill(self.body, SkillDefs.Passive_FrontArmor)) { Vector3 val = -(damageInfo.attacker.transform.position - damageInfo.position); if (!BackstabManager.IsBackstab(val, self.body)) { bool flag = DamageAPI.HasModdedDamageType(ref damageInfo.damageType, ExtraDamageTypes.Bullet); bool flag2 = (Object)(object)damageInfo.attacker != (Object)(object)damageInfo.inflictor; bool flag3 = ((Enum)damageInfo.damageType.damageType).HasFlag((Enum)(object)(DamageType)131072); if (flag || flag2 || flag3) { EffectManager.SimpleSoundEffect(blockSound.index, damageInfo.position, true); damageInfo.damage *= passiveFrontArmorMult; } } } orig.Invoke(self, damageInfo); } private void AddPrimarySkills() { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: 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_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)0); GaleShockTrooper.Modules.Content.AddEntityState(typeof(FireShotgun)); SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.activationState = new SerializableEntityStateType(typeof(FireShotgun)); skillDefInfo.stockToConsume = 1; skillDefInfo.baseRechargeInterval = 0f; skillDefInfo.rechargeStock = 1; skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.cancelSprintingOnActivation = true; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = true; skillDefInfo.baseMaxStock = 1; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.forceSprintDuringState = false; skillDefInfo.interruptPriority = (InterruptPriority)0; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.requiredStock = 0; skillDefInfo.skillNameToken = "GALE_GaleShockTrooper_PRIMARY_NAME"; skillDefInfo.skillDescriptionToken = "GALE_GaleShockTrooper_PRIMARY_DESCRIPTION"; skillDefInfo.mustKeyPress = false; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.skillName = "GaleShockTrooper_AutoShotgun"; skillDefInfo.skillIcon = Addressables.LoadAssetAsync((object)"RoR2/Base/Commando/CommandoBodyFireShotgunBlast.asset").WaitForCompletion().icon; SkillDef val = Skills.CreateSkillDef(skillDefInfo); Skills.AddPrimarySkills(bodyPrefab, val); SkillDefs.Primary_AutoShotgun = val; } private void AddSecondarySkills() { //IL_0040: 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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)1); GaleShockTrooper.Modules.Content.AddEntityState(typeof(PaintMissiles)); GaleShockTrooper.Modules.Content.AddEntityState(typeof(FireMissiles)); SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.activationState = new SerializableEntityStateType(typeof(PaintMissiles)); skillDefInfo.stockToConsume = 0; skillDefInfo.baseRechargeInterval = PaintMissiles.baseCooldown; skillDefInfo.rechargeStock = 1; skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.cancelSprintingOnActivation = true; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.baseMaxStock = PaintMissiles.baseMaxStocks; skillDefInfo.beginSkillCooldownOnSkillEnd = true; skillDefInfo.forceSprintDuringState = false; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = true; skillDefInfo.requiredStock = 1; skillDefInfo.skillNameToken = "GALE_GaleShockTrooper_SECONDARY_NAME"; skillDefInfo.skillDescriptionToken = "GALE_GaleShockTrooper_SECONDARY_DESCRIPTION"; skillDefInfo.mustKeyPress = true; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.skillName = "GaleShockTrooper_MissilePainter"; skillDefInfo.skillIcon = Addressables.LoadAssetAsync((object)"RoR2/Base/Engi/EngiHarpoons.asset").WaitForCompletion().icon; SkillDef val = Skills.CreateSkillDef(skillDefInfo); val.autoHandleLuminousShot = false; SkillDefs.Secondary_MicroMissile = val; GaleShockTrooper.Modules.Content.AddEntityState(typeof(ThrowSticky)); GaleShockTrooper.Modules.Content.AddEntityState(typeof(AimSticky)); skillDefInfo = new SkillDefInfo(); skillDefInfo.activationState = new SerializableEntityStateType(typeof(AimSticky)); skillDefInfo.stockToConsume = 1; skillDefInfo.baseRechargeInterval = ThrowSticky.baseCooldown; skillDefInfo.rechargeStock = 1; skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.cancelSprintingOnActivation = true; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.baseMaxStock = ThrowSticky.baseMaxStocks; skillDefInfo.beginSkillCooldownOnSkillEnd = true; skillDefInfo.forceSprintDuringState = false; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.requiredStock = 1; skillDefInfo.skillNameToken = "GALE_GaleShockTrooper_SECONDARY_STICKY_NAME"; skillDefInfo.skillDescriptionToken = "GALE_GaleShockTrooper_SECONDARY_STICKY_DESCRIPTION"; skillDefInfo.mustKeyPress = false; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.skillName = "GaleShockTrooper_Sticky"; skillDefInfo.skillIcon = Addressables.LoadAssetAsync((object)"RoR2/Base/Commando/ThrowGrenade.asset").WaitForCompletion().icon; SkillDef val2 = (SkillDefs.Secondary_Stickybomb = Skills.CreateSkillDef(skillDefInfo)); Skills.AddSecondarySkills(bodyPrefab, val, val2); if (!CharacterConfig.forceUnlock) { Skills.AddUnlockablesToFamily(bodyPrefab.GetComponent().secondary.skillFamily, default(UnlockableDef), CharacterUnlockables.stickybombUnlockableDef); } } private void AddUtiitySkills() { //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)2); GaleShockTrooper.Modules.Content.AddEntityState(typeof(EnterShockDash)); GaleShockTrooper.Modules.Content.AddEntityState(typeof(ShockDashBase)); GaleShockTrooper.Modules.Content.AddEntityState(typeof(ShockDashR)); GaleShockTrooper.Modules.Content.AddEntityState(typeof(ShockDashL)); GaleShockTrooper.Modules.Content.AddEntityState(typeof(ShockDashB)); SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.activationState = new SerializableEntityStateType(typeof(EnterShockDash)); skillDefInfo.stockToConsume = 1; skillDefInfo.baseRechargeInterval = EnterShockDash.baseCooldown; skillDefInfo.rechargeStock = 1; skillDefInfo.activationStateMachineName = "Body"; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.baseMaxStock = 1; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.forceSprintDuringState = true; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.isCombatSkill = false; skillDefInfo.canceledFromSprinting = false; skillDefInfo.requiredStock = 1; skillDefInfo.skillNameToken = "GALE_GaleShockTrooper_UTILITY_NAME"; skillDefInfo.skillDescriptionToken = "GALE_GaleShockTrooper_UTILITY_DESCRIPTION"; skillDefInfo.mustKeyPress = false; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.skillName = "GaleShockTrooper_ShockDash"; skillDefInfo.keywordTokens = new string[1] { "KEYWORD_SHOCKING" }; skillDefInfo.skillIcon = Addressables.LoadAssetAsync((object)"RoR2/Base/Huntress/HuntressBodyBlink.asset").WaitForCompletion().icon; SkillDef val = Skills.CreateSkillDef(skillDefInfo); Skills.AddUtilitySkills(bodyPrefab, val); SkillDefs.Utility_ShockDash = val; } private void AddSpecialSkills() { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: 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_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_017c: 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) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)3); GaleShockTrooper.Modules.Content.AddEntityState(typeof(FireRicochetSlug)); SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.activationState = new SerializableEntityStateType(typeof(FireRicochetSlug)); skillDefInfo.stockToConsume = 1; skillDefInfo.baseRechargeInterval = FireRicochetSlug.baseCooldown; skillDefInfo.rechargeStock = 1; skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.cancelSprintingOnActivation = true; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.baseMaxStock = 1; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.forceSprintDuringState = false; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.requiredStock = 1; skillDefInfo.skillNameToken = "GALE_GaleShockTrooper_SPECIAL_NAME"; skillDefInfo.skillDescriptionToken = "GALE_GaleShockTrooper_SPECIAL_DESCRIPTION"; skillDefInfo.mustKeyPress = true; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.skillName = "GaleShockTrooper_RicochetSlug"; skillDefInfo.skillIcon = Addressables.LoadAssetAsync((object)"RoR2/Base/Bandit2/Bandit2Blast.asset").WaitForCompletion().icon; SkillDef val = (SkillDefs.Special_RicochetSlug = Skills.CreateSkillDef(skillDefInfo)); GaleShockTrooper.Modules.Content.AddEntityState(typeof(DeployDrone)); skillDefInfo = new SkillDefInfo(); skillDefInfo.activationState = new SerializableEntityStateType(typeof(DeployDrone)); skillDefInfo.stockToConsume = 1; skillDefInfo.baseRechargeInterval = DeployDrone.baseCooldown; skillDefInfo.rechargeStock = 1; skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.baseMaxStock = MasterDroneTracker.baseMaxDrones; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.forceSprintDuringState = false; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.requiredStock = 1; skillDefInfo.skillNameToken = "GALE_GaleShockTrooper_SPECIAL_DRONE_NAME"; skillDefInfo.skillDescriptionToken = "GALE_GaleShockTrooper_SPECIAL_DRONE_DESCRIPTION"; skillDefInfo.mustKeyPress = true; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.skillName = "GaleShockTrooper_DeployDrone"; skillDefInfo.skillIcon = Addressables.LoadAssetAsync((object)"RoR2/Base/Engi/EngiBodyPlaceWalkerTurret.asset").WaitForCompletion().icon; SkillDef val2 = (SkillDefs.Special_Drone = Skills.CreateSkillDef(skillDefInfo)); Skills.AddSpecialSkills(bodyPrefab, val, val2); if (!CharacterConfig.forceUnlock) { Skills.AddUnlockablesToFamily(bodyPrefab.GetComponent().special.skillFamily, default(UnlockableDef), CharacterUnlockables.droneUnlockableDef); } } public override void InitializeSkins() { ModelSkinController val = ((Component)prefabCharacterModel).gameObject.AddComponent(); ChildLocator component = ((Component)prefabCharacterModel).GetComponent(); RendererInfo[] baseRendererInfos = prefabCharacterModel.baseRendererInfos; List list = new List(); SkinDef item = Skins.CreateSkinDef("DEFAULT_SKIN", assetBundle.LoadAsset("texSkinDefault"), baseRendererInfos, ((Component)prefabCharacterModel).gameObject); list.Add(item); SkinDef val2 = Skins.CreateSkinDef("GALE_GaleShockTrooper_MASTERY_SKIN_NAME", assetBundle.LoadAsset("texSkinMastery"), baseRendererInfos, ((Component)prefabCharacterModel).gameObject, CharacterUnlockables.masterySkinUnlockableDef); val2.rendererInfos[0].defaultMaterial = assetBundle.LoadMaterial("matTrooperMastery01"); val2.rendererInfos[1].defaultMaterial = assetBundle.LoadMaterial("matTrooperMasteryBackpack"); val2.rendererInfos[2].defaultMaterial = assetBundle.LoadMaterial("matTrooperMasteryBody"); val2.rendererInfos[3].defaultMaterial = assetBundle.LoadMaterial("matTrooperMastery01"); val2.rendererInfos[4].defaultMaterial = assetBundle.LoadMaterial("matTrooperMasteryWeapon"); list.Add(val2); val.skins = list.ToArray(); } public override void InitializeCharacterMaster() { //IL_0021: 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_006b: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_008f: 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) GameObject prefab = assetBundle.LoadMaster(bodyPrefab, masterName); CharacterSpawnCard val = ScriptableObject.CreateInstance(); ((SpawnCard)val).hullSize = (HullClassification)0; val.noElites = false; ((SpawnCard)val).directorCreditCost = 800; val.forbiddenAsBoss = false; ((SpawnCard)val).prefab = prefab; val.itemsToGrant = (ItemCountPair[])(object)new ItemCountPair[2] { new ItemCountPair { itemDef = Items.UseAmbientLevel, count = 1 }, new ItemCountPair { itemDef = BossMissionController.bossStatItem, count = 1 } }; BossMissionController.spawnCard = val; } private void AddHooks() { } } } namespace GaleShockTrooper.Survivors.GaleShockTrooperSurvivor.Content { public static class CharacterAI { public static void Init(GameObject bodyPrefab, string masterName) { //IL_003a: 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_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02e4: Unknown result type (might be due to invalid IL or missing references) //IL_02ec: Unknown result type (might be due to invalid IL or missing references) //IL_0308: Unknown result type (might be due to invalid IL or missing references) //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) //IL_0364: Unknown result type (might be due to invalid IL or missing references) //IL_036c: Unknown result type (might be due to invalid IL or missing references) GameObject val = Prefabs.CreateBlankMasterPrefab(bodyPrefab, masterName); BaseAI component = val.GetComponent(); component.aimVectorDampTime = 0.1f; component.aimVectorMaxSpeed = 360f; AISkillDriver val2 = val.AddComponent(); val2.customName = "Use Primary Swing"; val2.skillSlot = (SkillSlot)0; val2.requiredSkill = null; val2.requireSkillReady = false; val2.requireEquipmentReady = false; val2.minUserHealthFraction = float.NegativeInfinity; val2.maxUserHealthFraction = float.PositiveInfinity; val2.minTargetHealthFraction = float.NegativeInfinity; val2.maxTargetHealthFraction = float.PositiveInfinity; val2.minDistance = 0f; val2.maxDistance = 8f; val2.selectionRequiresTargetLoS = false; val2.selectionRequiresOnGround = false; val2.selectionRequiresAimTarget = false; val2.maxTimesSelected = -1; val2.moveTargetType = (TargetType)0; val2.activationRequiresTargetLoS = false; val2.activationRequiresAimTargetLoS = false; val2.activationRequiresAimConfirmation = false; val2.movementType = (MovementType)1; val2.moveInputScale = 1f; val2.aimType = (AimType)1; val2.ignoreNodeGraph = false; val2.shouldSprint = false; val2.shouldFireEquipment = false; val2.buttonPressType = (ButtonPressType)0; val2.driverUpdateTimerOverride = -1f; val2.resetCurrentEnemyOnNextDriverSelection = false; val2.noRepeat = false; val2.nextHighPriorityOverride = null; AISkillDriver val3 = val.AddComponent(); val3.customName = "Use Secondary Shoot"; val3.skillSlot = (SkillSlot)1; val3.requireSkillReady = true; val3.minDistance = 0f; val3.maxDistance = 25f; val3.selectionRequiresTargetLoS = false; val3.selectionRequiresOnGround = false; val3.selectionRequiresAimTarget = false; val3.maxTimesSelected = -1; val3.moveTargetType = (TargetType)0; val3.activationRequiresTargetLoS = false; val3.activationRequiresAimTargetLoS = false; val3.activationRequiresAimConfirmation = true; val3.movementType = (MovementType)1; val3.moveInputScale = 1f; val3.aimType = (AimType)1; val3.buttonPressType = (ButtonPressType)0; AISkillDriver val4 = val.AddComponent(); val4.customName = "Use Utility Roll"; val4.skillSlot = (SkillSlot)2; val4.requireSkillReady = true; val4.minDistance = 8f; val4.maxDistance = 20f; val4.selectionRequiresTargetLoS = true; val4.selectionRequiresOnGround = false; val4.selectionRequiresAimTarget = false; val4.maxTimesSelected = -1; val4.moveTargetType = (TargetType)0; val4.activationRequiresTargetLoS = false; val4.activationRequiresAimTargetLoS = false; val4.activationRequiresAimConfirmation = false; val4.movementType = (MovementType)2; val4.moveInputScale = 1f; val4.aimType = (AimType)1; val4.buttonPressType = (ButtonPressType)0; AISkillDriver val5 = val.AddComponent(); val5.customName = "Use Special bomb"; val5.skillSlot = (SkillSlot)3; val5.requireSkillReady = true; val5.minDistance = 0f; val5.maxDistance = 20f; val5.selectionRequiresTargetLoS = false; val5.selectionRequiresOnGround = false; val5.selectionRequiresAimTarget = false; val5.maxTimesSelected = -1; val5.moveTargetType = (TargetType)0; val5.activationRequiresTargetLoS = false; val5.activationRequiresAimTargetLoS = false; val5.activationRequiresAimConfirmation = false; val5.movementType = (MovementType)1; val5.moveInputScale = 1f; val5.aimType = (AimType)1; val5.buttonPressType = (ButtonPressType)0; AISkillDriver val6 = val.AddComponent(); val6.customName = "Chase"; val6.skillSlot = (SkillSlot)(-1); val6.requireSkillReady = false; val6.minDistance = 0f; val6.maxDistance = float.PositiveInfinity; val6.moveTargetType = (TargetType)0; val6.activationRequiresTargetLoS = false; val6.activationRequiresAimTargetLoS = false; val6.activationRequiresAimConfirmation = false; val6.movementType = (MovementType)1; val6.moveInputScale = 1f; val6.aimType = (AimType)1; val6.buttonPressType = (ButtonPressType)0; } } public static class CharacterAssets { private static AssetBundle _assetBundle; public static void Init(AssetBundle assetBundle) { _assetBundle = assetBundle; LoadSounds(); CreateShatDisplay(); CreatePrimaryShotgunTracer(); CreateSecondaryMissiles(); CreateMiniSmokeRing(); CreateSecondarySticky(); CreateSpecialSlugAssets(); CreateMusicController(); CreateBossMissionController(); } private static void CreateShatDisplay() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) GameObject val = _assetBundle.LoadAsset("DisplayShat"); Material val2 = Addressables.LoadAssetAsync((object)"RoR2/Base/ArmorReductionOnHit/matWarhammer.mat").WaitForCompletion(); Renderer componentInChildren = val.GetComponentInChildren(); componentInChildren.material = val2; ItemDisplay val3 = val.AddComponent(); val3.rendererInfos = (RendererInfo[])(object)new RendererInfo[1] { new RendererInfo { renderer = componentInChildren, defaultMaterial = val2 } }; CharacterItemDisplaySetup.CustomShatDisplay = val; } private static void CreateMusicController() { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown GameObject val = PrefabAPI.InstantiateClone(CharacterBase.instance.assetBundle.LoadAsset("EmptyGameobject"), "GaleShockTrooper_BossMusicController", false); val.AddComponent(); BossMusicController bossMusicController = val.AddComponent(); bossMusicController.soundName = "Play_GaleShockTrooper_Music_Start"; ContentPacks.networkedObjectPrefabs.Add(val); BossMusicController.prefab = val; MusicController.LateUpdate += new Manipulator(BossMusicController.MusicController_LateUpdate); } private static void CreateBossMissionController() { //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Expected O, but got Unknown GameObject val = PrefabAPI.InstantiateClone(CharacterBase.instance.assetBundle.LoadAsset("EmptyGameobject"), "GaleShockTrooper_BossMissionController", false); val.AddComponent(); BossMissionController.prefab = val; if (CharacterConfig.alwaysTriggerBossfight) { Stage.onServerStageBegin += BossMissionController.Stage_onServerStageBegin; } ItemDef val2 = ScriptableObject.CreateInstance(); val2.nameToken = "GaleShockTrooper_BossStatItem"; val2.loreToken = "None."; val2.pickupModelPrefab = Addressables.LoadAssetAsync((object)"RoR2/Base/Mystery/PickupMystery.prefab").WaitForCompletion(); val2.pickupToken = "None."; ((Object)val2).name = val2.nameToken; ((Object)val2).name = val2.nameToken; val2.deprecatedTier = (ItemTier)5; val2.hidden = true; val2.canRemove = false; ItemTag[] array = new ItemTag[4]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); val2.tags = (ItemTag[])(object)array; ContentPacks.itemDefs.Add(val2); BossMissionController.bossStatItem = val2; RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); } private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)sender.inventory) && sender.inventory.GetItemCount(BossMissionController.bossStatItem) > 0) { args.healthMultAdd += 19f; args.shieldMultAdd += 19f; args.moveSpeedMultAdd += 0.5f; args.cooldownMultAdd -= 0.25f; args.baseDamageAdd -= sender.baseDamage * 0.7f; args.levelDamageAdd -= sender.levelDamage * 0.7f; } } private static void LoadSounds() { using Stream stream = new FileStream(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)GaleShockTrooperPlugin.instance).Info.Location), "SoundBanks") + "\\GaleShockTrooperSoundbank.bnk", FileMode.Open); byte[] array = new byte[stream.Length]; stream.Read(array, 0, array.Length); SoundBanks.Add(array); } private static void CreatePrimaryShotgunTracer() { //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_0040: 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_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Commando/TracerCommandoDefault.prefab").WaitForCompletion(), "GaleShockTrooper_ShotgunTracer", false); LineRenderer[] componentsInChildren = val.GetComponentsInChildren(); for (int i = 0; i < componentsInChildren.Length; i++) { componentsInChildren[i].startColor = new Color(0.5f, 0.5f, 1f, componentsInChildren[i].startColor.a); componentsInChildren[i].endColor = new Color(0.5f, 0.5f, 1f, componentsInChildren[i].endColor.a); } GaleShockTrooper.Modules.Content.AddEffectDef(new EffectDef(val)); FireShotgun.tracerEffectPrefab = val; } private static void CreateSecondaryMissiles() { //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_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: 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) GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Common/MissileProjectile.prefab").WaitForCompletion(), "GaleShockTrooper_MicroMissileProjectile", true); ProjectileDamage component = val.GetComponent(); component.damageType = DamageTypeCombo.Generic; ProjectileController component2 = val.GetComponent(); component2.procCoefficient = 1f; component2.procChainMask = default(ProcChainMask); MissileController component3 = val.GetComponent(); component3.maxVelocity = 30f; component3.acceleration = 18f; component3.turbulence = 0f; Object.Destroy((Object)(object)val.GetComponent()); ProjectileImpactExplosion val2 = val.AddComponent(); ((ProjectileExplosion)val2).blastProcCoefficient = 1f; ((ProjectileExplosion)val2).blastAttackerFiltering = (AttackerFiltering)0; ((ProjectileExplosion)val2).blastDamageCoefficient = 1f; ((ProjectileExplosion)val2).blastRadius = 3f; val2.destroyOnEnemy = true; val2.destroyOnWorld = true; val2.lifetime = 20f; ((ProjectileExplosion)val2).explosionEffect = Addressables.LoadAssetAsync((object)"RoR2/Base/Common/VFX/OmniExplosionVFXQuick.prefab").WaitForCompletion(); ((ProjectileExplosion)val2).falloffModel = (FalloffModel)0; ContentPacks.projectilePrefabs.Add(val); FireMissiles.projectilePrefab = val; } private static void CreateSecondarySticky() { //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_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Expected O, but got Unknown GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Commando/CommandoGrenadeProjectile.prefab").WaitForCompletion(), "GaleShockTrooper_StickyProjectile", true); ProjectileSimple component = val.GetComponent(); component.lifetime = 30f; ProjectileController component2 = val.GetComponent(); component2.allowPrediction = false; TeamComponent val2 = val.AddComponent(); val2.hideAllyCardDisplay = true; ProjectileImpactExplosion component3 = val.GetComponent(); component3.lifetimeAfterImpact = ThrowSticky.detonationDelay; component3.timerAfterImpact = true; ((ProjectileExplosion)component3).blastRadius = ThrowSticky.blastRadius; component3.destroyOnDistance = false; component3.destroyOnWorld = false; component3.destroyOnEnemy = false; component3.impactEffect = Addressables.LoadAssetAsync((object)"RoR2/Base/Scav/ScavSackExplosion.prefab").WaitForCompletion(); ((ProjectileExplosion)component3).falloffModel = (FalloffModel)0; SkillLocator val3 = val.AddComponent(); CharacterBody val4 = val.AddComponent(); val4.bodyFlags = (BodyFlags)4; val4.baseMaxHealth = 35f; val4.levelMaxHealth = val4.baseMaxHealth * 0.3f; val4.baseNameToken = "UNIDENTIFIED"; val4.preferredInitialStateType = new SerializableEntityStateType(typeof(Uninitialized)); HealthComponent val5 = val.AddComponent(); val5.dontShowHealthbar = true; val.AddComponent(); val.AddComponent(); ProjectileBeepAfterStick projectileBeepAfterStick = val.AddComponent(); projectileBeepAfterStick.timesToBeep = Mathf.FloorToInt(ThrowSticky.detonationDelay / 0.5f); projectileBeepAfterStick.beepEffectPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Commando/MuzzleflashFMJ.prefab").WaitForCompletion(), "GaleShockTrooper_StickyBeep", false); EffectComponent component4 = projectileBeepAfterStick.beepEffectPrefab.GetComponent(); component4.soundName = "Play_commando_M2_grenade_beep"; ContentPacks.effectDefs.Add(new EffectDef(projectileBeepAfterStick.beepEffectPrefab)); ProjectileStickOnImpact val6 = val.AddComponent(); val6.ignoreCharacters = false; val6.ignoreWorld = false; ContentPacks.bodyPrefabs.Add(val); ContentPacks.projectilePrefabs.Add(val); ThrowSticky.projectilePrefab = val; } private static void CreateMiniSmokeRing() { //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_0051: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Expected O, but got Unknown GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Common/VFX/MuzzleflashSmokeRing.prefab").WaitForCompletion(), "GaleShockTrooper_MiniSmokeRing", false); ParticleSystemRenderer[] componentsInChildren = val.GetComponentsInChildren(); ParticleSystemRenderer[] array = componentsInChildren; foreach (ParticleSystemRenderer val2 in array) { val2.maxParticleSize *= 0.4f; Transform transform = ((Component)val2).transform; transform.localScale *= 0.4f; } ContentPacks.effectDefs.Add(new EffectDef(val)); PaintMissiles.smokeEffectPrefab = val; } private static void CreateSpecialSlugAssets() { //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_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Expected O, but got Unknown //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Expected O, but got Unknown //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: 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) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Expected O, but got Unknown GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Commando/OmniExplosionVFXFMJ.prefab").WaitForCompletion(), "GaleShockTrooper_SlugTracerEffect", false); EffectComponent component = val.GetComponent(); component.soundName = "Play_bandit_M2_shot"; ContentPacks.effectDefs.Add(new EffectDef(val)); FireRicochetSlug.ricochetImpactEffect = val; GameObject val2 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Commando/TracerCommandoShotgun.prefab").WaitForCompletion(), "GaleShockTrooper_SlugTracerEffect", false); Tracer component2 = val2.GetComponent(); component2.speed = 150f; Color val3 = Color32.op_Implicit(new Color32((byte)50, (byte)150, byte.MaxValue, byte.MaxValue)); ContentPacks.effectDefs.Add(new EffectDef(val2)); FireRicochetSlug.tracerEffectPrefab = val2; GameObject val4 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/DLC1/DroneWeapons/ChainGunOrbEffect.prefab").WaitForCompletion(), "GaleShockTrooper_SlugOrbEffect", false); TrailRenderer component3 = ((Component)val4.transform.Find("TrailParent/Trail")).GetComponent(); component3.startColor = val3; component3.endColor = val3; component3.startWidth = 0.3f; component3.endWidth = 0.3f; component3.widthMultiplier = 0.3f; ContentPacks.effectDefs.Add(new EffectDef(val4)); FireRicochetSlug.orbEffectPrefab = val4; } } public static class CharacterBuffs { public static void Init(AssetBundle assetBundle) { } } public static class CharacterConfig { public static bool forceUnlock; public static bool alwaysTriggerBossfight; public static void Init() { string section = "Shock Trooper"; forceUnlock = Config.BindAndOptions(section, "Force Unlock", defaultValue: false, "Unlock the survivor and all skills.").Value; alwaysTriggerBossfight = Config.BindAndOptions(section, "Always Trigger Bossfight", defaultValue: false, "Trigger the bossfight even after unlocking the survivor", restartRequired: true).Value; bool value = Config.BindAndOptions(section, "Stat Config", defaultValue: false, "Enables config editing for skill numbers.", restartRequired: true).Value; PaintMissiles.selectedInput = Config.BindAndOptions("Inputs", "Micro Missiles - Input Mode", PaintMissiles.InputMode.Hold, "Input Mode for Micro Missiles"); if (value) { GaleShockTrooperSurvivor.passiveFrontArmorMult = 1f - Config.BindAndOptions("Skills - Passive Front Armor", "Damage Reduction", 1f / 3f, "How much damage this passive reduces.", restartRequired: true).Value; GaleShockTrooperSurvivor.baseHealth = Config.BindAndOptions("Stats", "Base Health", GaleShockTrooperSurvivor.baseHealth, "Starting health, level health is automatically scaled to this.", restartRequired: true).Value; GaleShockTrooperSurvivor.baseArmor = Config.BindAndOptions("Stats", "Base Armor", GaleShockTrooperSurvivor.baseArmor, "Starting armor.", restartRequired: true).Value; FireShotgun.damageCoefficient = Config.BindAndOptions("Skills - Auto Shotgun", "Damage Coefficient", FireShotgun.damageCoefficient, "How much damage this skill does.", restartRequired: true).Value; FireShotgun.pelletCount = Config.BindAndOptions("Skills - Auto Shotgun", "Pellet Count", FireShotgun.pelletCount, "Pellets per shot.", restartRequired: true).Value; FireShotgun.procCoefficient = Config.BindAndOptions("Skills - Auto Shotgun", "Proc Coefficient", FireShotgun.procCoefficient, "Affects chance and power of procs.", restartRequired: true).Value; FireShotgun.baseDuration = Config.BindAndOptions("Skills - Auto Shotgun", "Base Duration", FireShotgun.baseDuration, "How long it takes to fire this skill.", restartRequired: true).Value; FireMissiles.damageCoefficient = Config.BindAndOptions("Skills - Micro Missiles", "Damage Coefficient", FireMissiles.damageCoefficient, "How much damage this skill does.", restartRequired: true).Value; FireMissiles.baseDuration = Config.BindAndOptions("Skills - Micro Missiles", "Base Duration", FireMissiles.baseDuration, "How long it takes to fire this skill.", restartRequired: true).Value; PaintMissiles.baseLockonAngle = Config.BindAndOptions("Skills - Micro Missiles", "Lockon Angle", PaintMissiles.baseLockonAngle, "View Angle for locking on to targets.", restartRequired: true).Value; PaintMissiles.baseLockonDuration = Config.BindAndOptions("Skills - Micro Missiles", "Lockon Duration", PaintMissiles.baseLockonDuration, "How long it takes to lock on to a target.", restartRequired: true).Value; PaintMissiles.baseLockonRange = Config.BindAndOptions("Skills - Micro Missiles", "Lockon Range", PaintMissiles.baseLockonRange, "Max lockon distance.", restartRequired: true).Value; PaintMissiles.baseMaxStocks = Config.BindAndOptions("Skills - Micro Missiles", "Stocks", PaintMissiles.baseMaxStocks, "How many charges this skill starts with.", restartRequired: true).Value; PaintMissiles.baseCooldown = Config.BindAndOptions("Skills - Micro Missiles", "Cooldown", PaintMissiles.baseCooldown, "How long it takes for each stock to recharge.", restartRequired: true).Value; ThrowSticky.damageCoefficient = Config.BindAndOptions("Skills - Stickybomb", "Damage Coefficient", ThrowSticky.damageCoefficient, "How much damage this skill does.", restartRequired: true).Value; ThrowSticky.baseCooldown = Config.BindAndOptions("Skills - Stickybomb", "Cooldown", ThrowSticky.baseCooldown, "How long it takes for this skill to recharge.", restartRequired: true).Value; ThrowSticky.blastRadius = Config.BindAndOptions("Skills - Stickybomb", "Blast Radius", ThrowSticky.blastRadius, "How big is the explosion.", restartRequired: true).Value; ThrowSticky.baseMaxStocks = Config.BindAndOptions("Skills - Stickybomb", "Stocks", ThrowSticky.baseMaxStocks, "How many charges this skill starts with.", restartRequired: true).Value; ThrowSticky.detonationDelay = Config.BindAndOptions("Skills - Stickybomb", "Detonation Delay", ThrowSticky.detonationDelay, "Delay before explosion.", restartRequired: true).Value; ThrowSticky.projectileSpeed = Config.BindAndOptions("Skills - Stickybomb", "Projectile Speed", ThrowSticky.projectileSpeed, "How fast the projectile travels.", restartRequired: true).Value; EnterShockDash.baseDuration = Config.BindAndOptions("Skills - Dash", "Windup Duration", EnterShockDash.baseDuration, "Delay before entering the main dash.", restartRequired: true).Value; ShockDashBase.baseDuration = Config.BindAndOptions("Skills - Dash", "Base Duration", ShockDashBase.baseDuration, "How long it take to use this skill.", restartRequired: true).Value; ShockDashBase.baseSpeed = Config.BindAndOptions("Skills - Dash", "Speed", ShockDashBase.baseSpeed, "How fast the dash travels.", restartRequired: true).Value; ShockDashBase.shockDamageCoefficient = Config.BindAndOptions("Skills - Dash", "Damage Coefficient", ShockDashBase.shockDamageCoefficient, "How much damage this skill deals.", restartRequired: true).Value; ShockDashBase.shockRange = Config.BindAndOptions("Skills - Dash", "Shock Range", ShockDashBase.shockRange, "Range of shocking lightning.", restartRequired: true).Value; EnterShockDash.baseCooldown = Config.BindAndOptions("Skills - Dash", "Cooldown", EnterShockDash.baseCooldown, "How long it takes for this skill to recharge.", restartRequired: true).Value; FireRicochetSlug.damageCoefficient = Config.BindAndOptions("Skills - Ricochet Slug", "Damage Coefficient", FireRicochetSlug.damageCoefficient, "How much damage this skill deals.", restartRequired: true).Value; FireRicochetSlug.baseCooldown = Config.BindAndOptions("Skills - Ricochet Slug", "Cooldown", FireRicochetSlug.baseCooldown, "How long it takes for this skill to recharge.", restartRequired: true).Value; FireRicochetSlug.ricochetCount = Config.BindAndOptions("Skills - Ricochet Slug", "Ricochet Count", FireRicochetSlug.ricochetCount, "How many extra targets this can ricochet to.", restartRequired: true).Value; FireRicochetSlug.ricochetRange = Config.BindAndOptions("Skills - Ricochet Slug", "Ricochet Range", FireRicochetSlug.ricochetRange, "How far this can ricochet to.", restartRequired: true).Value; FireRicochetSlug.selfKnockbackForce = Config.BindAndOptions("Skills - Ricochet Slug", "Self Knockback Force", FireRicochetSlug.selfKnockbackForce, "Self knockback force when firing this skill.", restartRequired: true).Value; FireAutoTurret.damageCoefficient = Config.BindAndOptions("Skills - Drone Attack", "Damage Coefficient", FireAutoTurret.damageCoefficient, "How much damage this skill deals.", restartRequired: true).Value; FireAutoTurret.baseDuration = Config.BindAndOptions("Skills - Drone Attack", "Base Duration", FireAutoTurret.baseDuration, "How long it take to use this skill.", restartRequired: true).Value; FireAutoTurret.baseShotDuration = Config.BindAndOptions("Skills - Drone Attack", "Base Shot Duration", FireAutoTurret.baseShotDuration, "How long it takes to fire a shot in a burst.", restartRequired: true).Value; FireAutoTurret.shotsPerBurst = Config.BindAndOptions("Skills - Drone Attack", "Shots Per burst", FireAutoTurret.shotsPerBurst, "How long it takes to fire a shot in a burst.", restartRequired: true).Value; MasterDroneTracker.baseMaxDrones = Config.BindAndOptions("Skills - Deploy Drone", "Stocks", MasterDroneTracker.baseMaxDrones, "How many charges this skill starts with. Max drones is based on this.", restartRequired: true).Value; MasterDroneTracker.maxExtraDrones = Config.BindAndOptions("Skills - Deploy Drone", "Max Extra Drones", MasterDroneTracker.maxExtraDrones, "How many extra drones you can get with stock-increasing items.", restartRequired: true).Value; DeployDrone.baseCooldown = Config.BindAndOptions("Skills - Deploy Drone", "Cooldown", DeployDrone.baseCooldown, "How long it takes for this skill to recharge.", restartRequired: true).Value; GaleShockTrooperDroneCharacter.baseHealth = Config.BindAndOptions("Skills - Deploy Drone", "Drone Base Health", GaleShockTrooperDroneCharacter.baseHealth, "Starting health, level health is automatically scaled to this.", restartRequired: true).Value; GaleShockTrooperDroneCharacter.baseArmor = Config.BindAndOptions("Skills - Deploy Drone", "Drone Base Armor", GaleShockTrooperDroneCharacter.baseArmor, "Starting armor.", restartRequired: true).Value; } if (Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions")) { RiskOfOptionsCompat(); } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private static void RiskOfOptionsCompat() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown ModSettingsManager.SetModIcon(CharacterBase.instance.assetBundle.LoadAsset("texGaleShockTrooperPortrait")); ModSettingsManager.AddOption((BaseOption)new ChoiceOption((ConfigEntryBase)(object)PaintMissiles.selectedInput)); } } public class CharacterDamageTypes { public static ModdedDamageType SpecialSlugProc; public static ModdedDamageType SpecialSlugVisual; public static void Init() { SetupSpecialSlug(); } private static void SetupSpecialSlug() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //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_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Expected O, but got Unknown SpecialSlugProc = DamageAPI.ReserveDamageType(); SpecialSlugVisual = DamageAPI.ReserveDamageType(); GlobalEventManager.ProcessHitEnemy += new hook_ProcessHitEnemy(TriggerSlugRicochet); } private static void TriggerSlugRicochet(orig_ProcessHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim) { //IL_0030: 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_0045: 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_006b: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Expected O, but got Unknown //IL_00f0: 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_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0117: 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) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: 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_00b5: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, damageInfo, victim); if (!NetworkServer.active || damageInfo.procCoefficient <= 0f) { return; } if (DamageAPI.HasModdedDamageType(damageInfo, SpecialSlugVisual)) { EffectManager.SimpleEffect(FireRicochetSlug.ricochetImpactEffect, damageInfo.position, Quaternion.identity, true); } if (!DamageAPI.HasModdedDamageType(damageInfo, SpecialSlugProc)) { return; } TeamIndex teamIndex = (TeamIndex)(-1); if (Object.op_Implicit((Object)(object)damageInfo.attacker)) { CharacterBody component = damageInfo.attacker.GetComponent(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.teamComponent)) { teamIndex = component.teamComponent.teamIndex; } } DamageAPI.RemoveModdedDamageType(ref damageInfo.damageType, SpecialSlugProc); ChainGunOrb val = new ChainGunOrb(FireRicochetSlug.orbEffectPrefab); ((GenericDamageOrb)val).damageValue = damageInfo.damage; ((GenericDamageOrb)val).isCrit = damageInfo.crit; ((GenericDamageOrb)val).teamIndex = teamIndex; ((GenericDamageOrb)val).attacker = damageInfo.attacker; ((GenericDamageOrb)val).procCoefficient = 1f; ((GenericDamageOrb)val).procChainMask = damageInfo.procChainMask; ((Orb)val).origin = damageInfo.position; ((GenericDamageOrb)val).speed = 200f; val.bouncesRemaining = FireRicochetSlug.ricochetCount; val.bounceRange = FireRicochetSlug.ricochetRange; val.damageCoefficientPerBounce = 1f; val.targetsToFindPerBounce = 1; val.canBounceOnSameTarget = false; ((GenericDamageOrb)val).damageColorIndex = (DamageColorIndex)3; ((GenericDamageOrb)val).damageType = damageInfo.damageType; if (Object.op_Implicit((Object)(object)victim)) { HealthComponent component2 = victim.GetComponent(); val.bouncedObjects.Add(component2); } ((Orb)val).target = val.PickNextTarget(((Orb)val).origin); OrbManager.instance.AddOrb((Orb)(object)val); } } public class CharacterDots { public static void Init() { } } public class CharacterItemDisplaySetup : ItemDisplaysBase { public static GameObject CustomShatDisplay; protected override void SetItemDisplayRules(List itemDisplayRules) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0143: 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_0161: 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_018e: 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_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_025c: Unknown result type (might be due to invalid IL or missing references) //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_028e: Unknown result type (might be due to invalid IL or missing references) //IL_0293: Unknown result type (might be due to invalid IL or missing references) //IL_02af: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_02d7: Unknown result type (might be due to invalid IL or missing references) //IL_02dc: Unknown result type (might be due to invalid IL or missing references) //IL_02e1: Unknown result type (might be due to invalid IL or missing references) //IL_02e6: Unknown result type (might be due to invalid IL or missing references) //IL_0327: Unknown result type (might be due to invalid IL or missing references) //IL_033b: Unknown result type (might be due to invalid IL or missing references) //IL_034f: Unknown result type (might be due to invalid IL or missing references) //IL_0354: Unknown result type (might be due to invalid IL or missing references) //IL_0359: Unknown result type (might be due to invalid IL or missing references) //IL_035e: Unknown result type (might be due to invalid IL or missing references) //IL_039f: Unknown result type (might be due to invalid IL or missing references) //IL_03b3: Unknown result type (might be due to invalid IL or missing references) //IL_03c7: Unknown result type (might be due to invalid IL or missing references) //IL_03cc: Unknown result type (might be due to invalid IL or missing references) //IL_03d1: Unknown result type (might be due to invalid IL or missing references) //IL_03d6: Unknown result type (might be due to invalid IL or missing references) //IL_0417: Unknown result type (might be due to invalid IL or missing references) //IL_042b: Unknown result type (might be due to invalid IL or missing references) //IL_043f: Unknown result type (might be due to invalid IL or missing references) //IL_0444: Unknown result type (might be due to invalid IL or missing references) //IL_0449: Unknown result type (might be due to invalid IL or missing references) //IL_044e: Unknown result type (might be due to invalid IL or missing references) //IL_048f: Unknown result type (might be due to invalid IL or missing references) //IL_04a3: Unknown result type (might be due to invalid IL or missing references) //IL_04b7: Unknown result type (might be due to invalid IL or missing references) //IL_04bc: Unknown result type (might be due to invalid IL or missing references) //IL_04c1: Unknown result type (might be due to invalid IL or missing references) //IL_04c6: Unknown result type (might be due to invalid IL or missing references) //IL_0507: Unknown result type (might be due to invalid IL or missing references) //IL_051b: Unknown result type (might be due to invalid IL or missing references) //IL_052f: Unknown result type (might be due to invalid IL or missing references) //IL_0534: Unknown result type (might be due to invalid IL or missing references) //IL_0539: Unknown result type (might be due to invalid IL or missing references) //IL_053e: Unknown result type (might be due to invalid IL or missing references) //IL_057f: Unknown result type (might be due to invalid IL or missing references) //IL_0593: Unknown result type (might be due to invalid IL or missing references) //IL_05a7: Unknown result type (might be due to invalid IL or missing references) //IL_05ac: Unknown result type (might be due to invalid IL or missing references) //IL_05b1: Unknown result type (might be due to invalid IL or missing references) //IL_05b6: Unknown result type (might be due to invalid IL or missing references) //IL_05f7: Unknown result type (might be due to invalid IL or missing references) //IL_060b: Unknown result type (might be due to invalid IL or missing references) //IL_061f: Unknown result type (might be due to invalid IL or missing references) //IL_0624: Unknown result type (might be due to invalid IL or missing references) //IL_0629: Unknown result type (might be due to invalid IL or missing references) //IL_064e: Unknown result type (might be due to invalid IL or missing references) //IL_0662: Unknown result type (might be due to invalid IL or missing references) //IL_0676: Unknown result type (might be due to invalid IL or missing references) //IL_067b: Unknown result type (might be due to invalid IL or missing references) //IL_0680: Unknown result type (might be due to invalid IL or missing references) //IL_0685: Unknown result type (might be due to invalid IL or missing references) //IL_06c6: Unknown result type (might be due to invalid IL or missing references) //IL_06da: Unknown result type (might be due to invalid IL or missing references) //IL_06ee: Unknown result type (might be due to invalid IL or missing references) //IL_06f3: Unknown result type (might be due to invalid IL or missing references) //IL_06f8: Unknown result type (might be due to invalid IL or missing references) //IL_06fd: Unknown result type (might be due to invalid IL or missing references) //IL_073e: Unknown result type (might be due to invalid IL or missing references) //IL_0752: Unknown result type (might be due to invalid IL or missing references) //IL_0766: Unknown result type (might be due to invalid IL or missing references) //IL_076b: Unknown result type (might be due to invalid IL or missing references) //IL_0770: Unknown result type (might be due to invalid IL or missing references) //IL_0775: Unknown result type (might be due to invalid IL or missing references) //IL_07b6: Unknown result type (might be due to invalid IL or missing references) //IL_07ca: Unknown result type (might be due to invalid IL or missing references) //IL_07de: Unknown result type (might be due to invalid IL or missing references) //IL_07e3: Unknown result type (might be due to invalid IL or missing references) //IL_07e8: Unknown result type (might be due to invalid IL or missing references) //IL_07ed: Unknown result type (might be due to invalid IL or missing references) //IL_082e: Unknown result type (might be due to invalid IL or missing references) //IL_0842: Unknown result type (might be due to invalid IL or missing references) //IL_0856: Unknown result type (might be due to invalid IL or missing references) //IL_085b: Unknown result type (might be due to invalid IL or missing references) //IL_0860: Unknown result type (might be due to invalid IL or missing references) //IL_0865: Unknown result type (might be due to invalid IL or missing references) //IL_08a6: Unknown result type (might be due to invalid IL or missing references) //IL_08ba: Unknown result type (might be due to invalid IL or missing references) //IL_08ce: Unknown result type (might be due to invalid IL or missing references) //IL_08d3: Unknown result type (might be due to invalid IL or missing references) //IL_08d8: Unknown result type (might be due to invalid IL or missing references) //IL_08fd: Unknown result type (might be due to invalid IL or missing references) //IL_0911: Unknown result type (might be due to invalid IL or missing references) //IL_0925: Unknown result type (might be due to invalid IL or missing references) //IL_092a: Unknown result type (might be due to invalid IL or missing references) //IL_092f: Unknown result type (might be due to invalid IL or missing references) //IL_0934: Unknown result type (might be due to invalid IL or missing references) //IL_0975: Unknown result type (might be due to invalid IL or missing references) //IL_0989: Unknown result type (might be due to invalid IL or missing references) //IL_099d: Unknown result type (might be due to invalid IL or missing references) //IL_09a2: Unknown result type (might be due to invalid IL or missing references) //IL_09a7: Unknown result type (might be due to invalid IL or missing references) //IL_09ac: Unknown result type (might be due to invalid IL or missing references) //IL_09ed: Unknown result type (might be due to invalid IL or missing references) //IL_0a01: Unknown result type (might be due to invalid IL or missing references) //IL_0a15: Unknown result type (might be due to invalid IL or missing references) //IL_0a1a: Unknown result type (might be due to invalid IL or missing references) //IL_0a1f: Unknown result type (might be due to invalid IL or missing references) //IL_0a24: Unknown result type (might be due to invalid IL or missing references) //IL_0a65: Unknown result type (might be due to invalid IL or missing references) //IL_0a79: Unknown result type (might be due to invalid IL or missing references) //IL_0a8d: Unknown result type (might be due to invalid IL or missing references) //IL_0a92: Unknown result type (might be due to invalid IL or missing references) //IL_0a97: Unknown result type (might be due to invalid IL or missing references) //IL_0a9c: Unknown result type (might be due to invalid IL or missing references) //IL_0add: Unknown result type (might be due to invalid IL or missing references) //IL_0af1: Unknown result type (might be due to invalid IL or missing references) //IL_0b05: Unknown result type (might be due to invalid IL or missing references) //IL_0b0a: Unknown result type (might be due to invalid IL or missing references) //IL_0b0f: Unknown result type (might be due to invalid IL or missing references) //IL_0b14: Unknown result type (might be due to invalid IL or missing references) //IL_0b55: Unknown result type (might be due to invalid IL or missing references) //IL_0b69: Unknown result type (might be due to invalid IL or missing references) //IL_0b7d: Unknown result type (might be due to invalid IL or missing references) //IL_0b82: Unknown result type (might be due to invalid IL or missing references) //IL_0b87: Unknown result type (might be due to invalid IL or missing references) //IL_0b8c: Unknown result type (might be due to invalid IL or missing references) //IL_0bcd: Unknown result type (might be due to invalid IL or missing references) //IL_0be1: Unknown result type (might be due to invalid IL or missing references) //IL_0bf5: Unknown result type (might be due to invalid IL or missing references) //IL_0bfa: Unknown result type (might be due to invalid IL or missing references) //IL_0bff: Unknown result type (might be due to invalid IL or missing references) //IL_0c04: Unknown result type (might be due to invalid IL or missing references) //IL_0c45: Unknown result type (might be due to invalid IL or missing references) //IL_0c59: Unknown result type (might be due to invalid IL or missing references) //IL_0c6d: Unknown result type (might be due to invalid IL or missing references) //IL_0c72: Unknown result type (might be due to invalid IL or missing references) //IL_0c77: Unknown result type (might be due to invalid IL or missing references) //IL_0c7c: Unknown result type (might be due to invalid IL or missing references) //IL_0cbd: Unknown result type (might be due to invalid IL or missing references) //IL_0cd1: Unknown result type (might be due to invalid IL or missing references) //IL_0ce5: Unknown result type (might be due to invalid IL or missing references) //IL_0cea: Unknown result type (might be due to invalid IL or missing references) //IL_0cef: Unknown result type (might be due to invalid IL or missing references) //IL_0d14: Unknown result type (might be due to invalid IL or missing references) //IL_0d28: Unknown result type (might be due to invalid IL or missing references) //IL_0d3c: Unknown result type (might be due to invalid IL or missing references) //IL_0d41: Unknown result type (might be due to invalid IL or missing references) //IL_0d46: Unknown result type (might be due to invalid IL or missing references) //IL_0d4b: Unknown result type (might be due to invalid IL or missing references) //IL_0d8c: Unknown result type (might be due to invalid IL or missing references) //IL_0da0: Unknown result type (might be due to invalid IL or missing references) //IL_0db4: Unknown result type (might be due to invalid IL or missing references) //IL_0db9: Unknown result type (might be due to invalid IL or missing references) //IL_0dbe: Unknown result type (might be due to invalid IL or missing references) //IL_0de3: Unknown result type (might be due to invalid IL or missing references) //IL_0df7: Unknown result type (might be due to invalid IL or missing references) //IL_0e0b: Unknown result type (might be due to invalid IL or missing references) //IL_0e10: Unknown result type (might be due to invalid IL or missing references) //IL_0e15: Unknown result type (might be due to invalid IL or missing references) //IL_0e3a: Unknown result type (might be due to invalid IL or missing references) //IL_0e4e: Unknown result type (might be due to invalid IL or missing references) //IL_0e62: Unknown result type (might be due to invalid IL or missing references) //IL_0e67: Unknown result type (might be due to invalid IL or missing references) //IL_0e6c: Unknown result type (might be due to invalid IL or missing references) //IL_0e91: Unknown result type (might be due to invalid IL or missing references) //IL_0ea5: Unknown result type (might be due to invalid IL or missing references) //IL_0eb9: Unknown result type (might be due to invalid IL or missing references) //IL_0ebe: Unknown result type (might be due to invalid IL or missing references) //IL_0ec3: Unknown result type (might be due to invalid IL or missing references) //IL_0ee8: Unknown result type (might be due to invalid IL or missing references) //IL_0efc: Unknown result type (might be due to invalid IL or missing references) //IL_0f10: Unknown result type (might be due to invalid IL or missing references) //IL_0f15: Unknown result type (might be due to invalid IL or missing references) //IL_0f1a: Unknown result type (might be due to invalid IL or missing references) //IL_0f3f: Unknown result type (might be due to invalid IL or missing references) //IL_0f53: Unknown result type (might be due to invalid IL or missing references) //IL_0f67: Unknown result type (might be due to invalid IL or missing references) //IL_0f6c: Unknown result type (might be due to invalid IL or missing references) //IL_0f71: Unknown result type (might be due to invalid IL or missing references) //IL_0f76: Unknown result type (might be due to invalid IL or missing references) //IL_0fb7: Unknown result type (might be due to invalid IL or missing references) //IL_0fcb: Unknown result type (might be due to invalid IL or missing references) //IL_0fdf: Unknown result type (might be due to invalid IL or missing references) //IL_0fe4: Unknown result type (might be due to invalid IL or missing references) //IL_0fe9: Unknown result type (might be due to invalid IL or missing references) //IL_0fee: Unknown result type (might be due to invalid IL or missing references) //IL_102f: Unknown result type (might be due to invalid IL or missing references) //IL_1043: Unknown result type (might be due to invalid IL or missing references) //IL_1057: Unknown result type (might be due to invalid IL or missing references) //IL_105c: Unknown result type (might be due to invalid IL or missing references) //IL_1061: Unknown result type (might be due to invalid IL or missing references) //IL_1066: Unknown result type (might be due to invalid IL or missing references) //IL_10a7: Unknown result type (might be due to invalid IL or missing references) //IL_10bb: Unknown result type (might be due to invalid IL or missing references) //IL_10cf: Unknown result type (might be due to invalid IL or missing references) //IL_10d4: Unknown result type (might be due to invalid IL or missing references) //IL_10d9: Unknown result type (might be due to invalid IL or missing references) //IL_10de: Unknown result type (might be due to invalid IL or missing references) //IL_111f: Unknown result type (might be due to invalid IL or missing references) //IL_1133: Unknown result type (might be due to invalid IL or missing references) //IL_1147: Unknown result type (might be due to invalid IL or missing references) //IL_114c: Unknown result type (might be due to invalid IL or missing references) //IL_1151: Unknown result type (might be due to invalid IL or missing references) //IL_1156: Unknown result type (might be due to invalid IL or missing references) //IL_1197: Unknown result type (might be due to invalid IL or missing references) //IL_11ab: Unknown result type (might be due to invalid IL or missing references) //IL_11bf: Unknown result type (might be due to invalid IL or missing references) //IL_11c4: Unknown result type (might be due to invalid IL or missing references) //IL_11c9: Unknown result type (might be due to invalid IL or missing references) //IL_11d1: Unknown result type (might be due to invalid IL or missing references) //IL_11d6: Unknown result type (might be due to invalid IL or missing references) //IL_11fb: Unknown result type (might be due to invalid IL or missing references) //IL_120f: Unknown result type (might be due to invalid IL or missing references) //IL_1223: Unknown result type (might be due to invalid IL or missing references) //IL_1228: Unknown result type (might be due to invalid IL or missing references) //IL_122d: Unknown result type (might be due to invalid IL or missing references) //IL_1235: Unknown result type (might be due to invalid IL or missing references) //IL_123a: Unknown result type (might be due to invalid IL or missing references) //IL_123f: Unknown result type (might be due to invalid IL or missing references) //IL_1280: Unknown result type (might be due to invalid IL or missing references) //IL_1294: Unknown result type (might be due to invalid IL or missing references) //IL_12a8: Unknown result type (might be due to invalid IL or missing references) //IL_12ad: Unknown result type (might be due to invalid IL or missing references) //IL_12b2: Unknown result type (might be due to invalid IL or missing references) //IL_12b7: Unknown result type (might be due to invalid IL or missing references) //IL_12f8: Unknown result type (might be due to invalid IL or missing references) //IL_130c: Unknown result type (might be due to invalid IL or missing references) //IL_1320: Unknown result type (might be due to invalid IL or missing references) //IL_1325: Unknown result type (might be due to invalid IL or missing references) //IL_132a: Unknown result type (might be due to invalid IL or missing references) //IL_132f: Unknown result type (might be due to invalid IL or missing references) //IL_1370: Unknown result type (might be due to invalid IL or missing references) //IL_1384: Unknown result type (might be due to invalid IL or missing references) //IL_1398: Unknown result type (might be due to invalid IL or missing references) //IL_139d: Unknown result type (might be due to invalid IL or missing references) //IL_13a2: Unknown result type (might be due to invalid IL or missing references) //IL_13a7: Unknown result type (might be due to invalid IL or missing references) //IL_13e8: Unknown result type (might be due to invalid IL or missing references) //IL_13fc: Unknown result type (might be due to invalid IL or missing references) //IL_1410: Unknown result type (might be due to invalid IL or missing references) //IL_1415: Unknown result type (might be due to invalid IL or missing references) //IL_141a: Unknown result type (might be due to invalid IL or missing references) //IL_141f: Unknown result type (might be due to invalid IL or missing references) //IL_1460: Unknown result type (might be due to invalid IL or missing references) //IL_1474: Unknown result type (might be due to invalid IL or missing references) //IL_1488: Unknown result type (might be due to invalid IL or missing references) //IL_148d: Unknown result type (might be due to invalid IL or missing references) //IL_1492: Unknown result type (might be due to invalid IL or missing references) //IL_1497: Unknown result type (might be due to invalid IL or missing references) //IL_14d8: Unknown result type (might be due to invalid IL or missing references) //IL_14ec: Unknown result type (might be due to invalid IL or missing references) //IL_1500: Unknown result type (might be due to invalid IL or missing references) //IL_1505: Unknown result type (might be due to invalid IL or missing references) //IL_150a: Unknown result type (might be due to invalid IL or missing references) //IL_150f: Unknown result type (might be due to invalid IL or missing references) //IL_1550: Unknown result type (might be due to invalid IL or missing references) //IL_1564: Unknown result type (might be due to invalid IL or missing references) //IL_1578: Unknown result type (might be due to invalid IL or missing references) //IL_157d: Unknown result type (might be due to invalid IL or missing references) //IL_1582: Unknown result type (might be due to invalid IL or missing references) //IL_1587: Unknown result type (might be due to invalid IL or missing references) //IL_15c8: Unknown result type (might be due to invalid IL or missing references) //IL_15dc: Unknown result type (might be due to invalid IL or missing references) //IL_15f0: Unknown result type (might be due to invalid IL or missing references) //IL_15f5: Unknown result type (might be due to invalid IL or missing references) //IL_15fa: Unknown result type (might be due to invalid IL or missing references) //IL_15ff: Unknown result type (might be due to invalid IL or missing references) //IL_1640: Unknown result type (might be due to invalid IL or missing references) //IL_1654: Unknown result type (might be due to invalid IL or missing references) //IL_1668: Unknown result type (might be due to invalid IL or missing references) //IL_166d: Unknown result type (might be due to invalid IL or missing references) //IL_1672: Unknown result type (might be due to invalid IL or missing references) //IL_1697: Unknown result type (might be due to invalid IL or missing references) //IL_16ab: Unknown result type (might be due to invalid IL or missing references) //IL_16bf: Unknown result type (might be due to invalid IL or missing references) //IL_16c4: Unknown result type (might be due to invalid IL or missing references) //IL_16c9: Unknown result type (might be due to invalid IL or missing references) //IL_16ce: Unknown result type (might be due to invalid IL or missing references) //IL_170f: Unknown result type (might be due to invalid IL or missing references) //IL_1723: Unknown result type (might be due to invalid IL or missing references) //IL_1737: Unknown result type (might be due to invalid IL or missing references) //IL_173c: Unknown result type (might be due to invalid IL or missing references) //IL_1741: Unknown result type (might be due to invalid IL or missing references) //IL_1746: Unknown result type (might be due to invalid IL or missing references) //IL_1787: Unknown result type (might be due to invalid IL or missing references) //IL_179b: Unknown result type (might be due to invalid IL or missing references) //IL_17af: Unknown result type (might be due to invalid IL or missing references) //IL_17b4: Unknown result type (might be due to invalid IL or missing references) //IL_17b9: Unknown result type (might be due to invalid IL or missing references) //IL_17be: Unknown result type (might be due to invalid IL or missing references) //IL_17ff: Unknown result type (might be due to invalid IL or missing references) //IL_1813: Unknown result type (might be due to invalid IL or missing references) //IL_1827: Unknown result type (might be due to invalid IL or missing references) //IL_182c: Unknown result type (might be due to invalid IL or missing references) //IL_1831: Unknown result type (might be due to invalid IL or missing references) //IL_1836: Unknown result type (might be due to invalid IL or missing references) //IL_1877: Unknown result type (might be due to invalid IL or missing references) //IL_188b: Unknown result type (might be due to invalid IL or missing references) //IL_189f: Unknown result type (might be due to invalid IL or missing references) //IL_18a4: Unknown result type (might be due to invalid IL or missing references) //IL_18a9: Unknown result type (might be due to invalid IL or missing references) //IL_18ae: Unknown result type (might be due to invalid IL or missing references) //IL_18ef: Unknown result type (might be due to invalid IL or missing references) //IL_1903: Unknown result type (might be due to invalid IL or missing references) //IL_1917: Unknown result type (might be due to invalid IL or missing references) //IL_191c: Unknown result type (might be due to invalid IL or missing references) //IL_1921: Unknown result type (might be due to invalid IL or missing references) //IL_1926: Unknown result type (might be due to invalid IL or missing references) //IL_1967: Unknown result type (might be due to invalid IL or missing references) //IL_197b: Unknown result type (might be due to invalid IL or missing references) //IL_198f: Unknown result type (might be due to invalid IL or missing references) //IL_1994: Unknown result type (might be due to invalid IL or missing references) //IL_1999: Unknown result type (might be due to invalid IL or missing references) //IL_199e: Unknown result type (might be due to invalid IL or missing references) //IL_19df: Unknown result type (might be due to invalid IL or missing references) //IL_19f3: Unknown result type (might be due to invalid IL or missing references) //IL_1a07: Unknown result type (might be due to invalid IL or missing references) //IL_1a0c: Unknown result type (might be due to invalid IL or missing references) //IL_1a11: Unknown result type (might be due to invalid IL or missing references) //IL_1a16: Unknown result type (might be due to invalid IL or missing references) //IL_1a57: Unknown result type (might be due to invalid IL or missing references) //IL_1a6b: Unknown result type (might be due to invalid IL or missing references) //IL_1a7f: Unknown result type (might be due to invalid IL or missing references) //IL_1a84: Unknown result type (might be due to invalid IL or missing references) //IL_1a89: Unknown result type (might be due to invalid IL or missing references) //IL_1a8e: Unknown result type (might be due to invalid IL or missing references) //IL_1acf: Unknown result type (might be due to invalid IL or missing references) //IL_1ae3: Unknown result type (might be due to invalid IL or missing references) //IL_1af7: Unknown result type (might be due to invalid IL or missing references) //IL_1afc: Unknown result type (might be due to invalid IL or missing references) //IL_1b01: Unknown result type (might be due to invalid IL or missing references) //IL_1b06: Unknown result type (might be due to invalid IL or missing references) //IL_1b47: Unknown result type (might be due to invalid IL or missing references) //IL_1b5b: Unknown result type (might be due to invalid IL or missing references) //IL_1b6f: Unknown result type (might be due to invalid IL or missing references) //IL_1b74: Unknown result type (might be due to invalid IL or missing references) //IL_1b79: Unknown result type (might be due to invalid IL or missing references) //IL_1b7e: Unknown result type (might be due to invalid IL or missing references) //IL_1bbf: Unknown result type (might be due to invalid IL or missing references) //IL_1bd3: Unknown result type (might be due to invalid IL or missing references) //IL_1be7: Unknown result type (might be due to invalid IL or missing references) //IL_1bec: Unknown result type (might be due to invalid IL or missing references) //IL_1bf1: Unknown result type (might be due to invalid IL or missing references) //IL_1bf6: Unknown result type (might be due to invalid IL or missing references) //IL_1c37: Unknown result type (might be due to invalid IL or missing references) //IL_1c4b: Unknown result type (might be due to invalid IL or missing references) //IL_1c5f: Unknown result type (might be due to invalid IL or missing references) //IL_1c64: Unknown result type (might be due to invalid IL or missing references) //IL_1c69: Unknown result type (might be due to invalid IL or missing references) //IL_1c6e: Unknown result type (might be due to invalid IL or missing references) //IL_1caf: Unknown result type (might be due to invalid IL or missing references) //IL_1cc3: Unknown result type (might be due to invalid IL or missing references) //IL_1cd7: Unknown result type (might be due to invalid IL or missing references) //IL_1cdc: Unknown result type (might be due to invalid IL or missing references) //IL_1ce1: Unknown result type (might be due to invalid IL or missing references) //IL_1ce6: Unknown result type (might be due to invalid IL or missing references) //IL_1d27: Unknown result type (might be due to invalid IL or missing references) //IL_1d3b: Unknown result type (might be due to invalid IL or missing references) //IL_1d4f: Unknown result type (might be due to invalid IL or missing references) //IL_1d54: Unknown result type (might be due to invalid IL or missing references) //IL_1d59: Unknown result type (might be due to invalid IL or missing references) //IL_1d5e: Unknown result type (might be due to invalid IL or missing references) //IL_1d9f: Unknown result type (might be due to invalid IL or missing references) //IL_1db3: Unknown result type (might be due to invalid IL or missing references) //IL_1dc7: Unknown result type (might be due to invalid IL or missing references) //IL_1dcc: Unknown result type (might be due to invalid IL or missing references) //IL_1dd1: Unknown result type (might be due to invalid IL or missing references) //IL_1dd6: Unknown result type (might be due to invalid IL or missing references) //IL_1e17: Unknown result type (might be due to invalid IL or missing references) //IL_1e2b: Unknown result type (might be due to invalid IL or missing references) //IL_1e3f: Unknown result type (might be due to invalid IL or missing references) //IL_1e44: Unknown result type (might be due to invalid IL or missing references) //IL_1e49: Unknown result type (might be due to invalid IL or missing references) //IL_1e4e: Unknown result type (might be due to invalid IL or missing references) //IL_1e8f: Unknown result type (might be due to invalid IL or missing references) //IL_1ea3: Unknown result type (might be due to invalid IL or missing references) //IL_1eb7: Unknown result type (might be due to invalid IL or missing references) //IL_1ebc: Unknown result type (might be due to invalid IL or missing references) //IL_1ec1: Unknown result type (might be due to invalid IL or missing references) //IL_1ec6: Unknown result type (might be due to invalid IL or missing references) //IL_1f07: Unknown result type (might be due to invalid IL or missing references) //IL_1f1b: Unknown result type (might be due to invalid IL or missing references) //IL_1f2f: Unknown result type (might be due to invalid IL or missing references) //IL_1f34: Unknown result type (might be due to invalid IL or missing references) //IL_1f39: Unknown result type (might be due to invalid IL or missing references) //IL_1f3e: Unknown result type (might be due to invalid IL or missing references) //IL_1f7f: Unknown result type (might be due to invalid IL or missing references) //IL_1f93: Unknown result type (might be due to invalid IL or missing references) //IL_1fa7: Unknown result type (might be due to invalid IL or missing references) //IL_1fac: Unknown result type (might be due to invalid IL or missing references) //IL_1fb1: Unknown result type (might be due to invalid IL or missing references) //IL_1fb6: Unknown result type (might be due to invalid IL or missing references) //IL_1ff7: Unknown result type (might be due to invalid IL or missing references) //IL_200b: Unknown result type (might be due to invalid IL or missing references) //IL_201f: Unknown result type (might be due to invalid IL or missing references) //IL_2024: Unknown result type (might be due to invalid IL or missing references) //IL_2029: Unknown result type (might be due to invalid IL or missing references) //IL_202e: Unknown result type (might be due to invalid IL or missing references) //IL_206f: Unknown result type (might be due to invalid IL or missing references) //IL_2083: Unknown result type (might be due to invalid IL or missing references) //IL_2097: Unknown result type (might be due to invalid IL or missing references) //IL_209c: Unknown result type (might be due to invalid IL or missing references) //IL_20a1: Unknown result type (might be due to invalid IL or missing references) //IL_20a6: Unknown result type (might be due to invalid IL or missing references) //IL_20e7: Unknown result type (might be due to invalid IL or missing references) //IL_20fb: Unknown result type (might be due to invalid IL or missing references) //IL_210f: Unknown result type (might be due to invalid IL or missing references) //IL_2114: Unknown result type (might be due to invalid IL or missing references) //IL_2119: Unknown result type (might be due to invalid IL or missing references) //IL_211e: Unknown result type (might be due to invalid IL or missing references) //IL_215f: Unknown result type (might be due to invalid IL or missing references) //IL_2173: Unknown result type (might be due to invalid IL or missing references) //IL_2187: Unknown result type (might be due to invalid IL or missing references) //IL_218c: Unknown result type (might be due to invalid IL or missing references) //IL_2191: Unknown result type (might be due to invalid IL or missing references) //IL_2196: Unknown result type (might be due to invalid IL or missing references) //IL_21d7: Unknown result type (might be due to invalid IL or missing references) //IL_21eb: Unknown result type (might be due to invalid IL or missing references) //IL_21ff: Unknown result type (might be due to invalid IL or missing references) //IL_2204: Unknown result type (might be due to invalid IL or missing references) //IL_2209: Unknown result type (might be due to invalid IL or missing references) //IL_220e: Unknown result type (might be due to invalid IL or missing references) //IL_224f: Unknown result type (might be due to invalid IL or missing references) //IL_2263: Unknown result type (might be due to invalid IL or missing references) //IL_2277: Unknown result type (might be due to invalid IL or missing references) //IL_227c: Unknown result type (might be due to invalid IL or missing references) //IL_2281: Unknown result type (might be due to invalid IL or missing references) //IL_2286: Unknown result type (might be due to invalid IL or missing references) //IL_22c7: Unknown result type (might be due to invalid IL or missing references) //IL_22db: Unknown result type (might be due to invalid IL or missing references) //IL_22ef: Unknown result type (might be due to invalid IL or missing references) //IL_22f4: Unknown result type (might be due to invalid IL or missing references) //IL_22f9: Unknown result type (might be due to invalid IL or missing references) //IL_22fe: Unknown result type (might be due to invalid IL or missing references) //IL_233f: Unknown result type (might be due to invalid IL or missing references) //IL_2353: Unknown result type (might be due to invalid IL or missing references) //IL_2367: Unknown result type (might be due to invalid IL or missing references) //IL_236c: Unknown result type (might be due to invalid IL or missing references) //IL_2371: Unknown result type (might be due to invalid IL or missing references) //IL_2376: Unknown result type (might be due to invalid IL or missing references) //IL_23b7: Unknown result type (might be due to invalid IL or missing references) //IL_23cb: Unknown result type (might be due to invalid IL or missing references) //IL_23df: Unknown result type (might be due to invalid IL or missing references) //IL_23e4: Unknown result type (might be due to invalid IL or missing references) //IL_23e9: Unknown result type (might be due to invalid IL or missing references) //IL_23ee: Unknown result type (might be due to invalid IL or missing references) //IL_242f: Unknown result type (might be due to invalid IL or missing references) //IL_2443: Unknown result type (might be due to invalid IL or missing references) //IL_2457: Unknown result type (might be due to invalid IL or missing references) //IL_245c: Unknown result type (might be due to invalid IL or missing references) //IL_2461: Unknown result type (might be due to invalid IL or missing references) //IL_2466: Unknown result type (might be due to invalid IL or missing references) //IL_24a7: Unknown result type (might be due to invalid IL or missing references) //IL_24bb: Unknown result type (might be due to invalid IL or missing references) //IL_24cf: Unknown result type (might be due to invalid IL or missing references) //IL_24d4: Unknown result type (might be due to invalid IL or missing references) //IL_24d9: Unknown result type (might be due to invalid IL or missing references) //IL_24de: Unknown result type (might be due to invalid IL or missing references) //IL_251f: Unknown result type (might be due to invalid IL or missing references) //IL_2533: Unknown result type (might be due to invalid IL or missing references) //IL_2547: Unknown result type (might be due to invalid IL or missing references) //IL_254c: Unknown result type (might be due to invalid IL or missing references) //IL_2551: Unknown result type (might be due to invalid IL or missing references) //IL_2556: Unknown result type (might be due to invalid IL or missing references) //IL_2597: Unknown result type (might be due to invalid IL or missing references) //IL_25ab: Unknown result type (might be due to invalid IL or missing references) //IL_25bf: Unknown result type (might be due to invalid IL or missing references) //IL_25c4: Unknown result type (might be due to invalid IL or missing references) //IL_25c9: Unknown result type (might be due to invalid IL or missing references) //IL_25ce: Unknown result type (might be due to invalid IL or missing references) //IL_260f: Unknown result type (might be due to invalid IL or missing references) //IL_2623: Unknown result type (might be due to invalid IL or missing references) //IL_2637: Unknown result type (might be due to invalid IL or missing references) //IL_263c: Unknown result type (might be due to invalid IL or missing references) //IL_2641: Unknown result type (might be due to invalid IL or missing references) //IL_2646: Unknown result type (might be due to invalid IL or missing references) //IL_2687: Unknown result type (might be due to invalid IL or missing references) //IL_269b: Unknown result type (might be due to invalid IL or missing references) //IL_26af: Unknown result type (might be due to invalid IL or missing references) //IL_26b4: Unknown result type (might be due to invalid IL or missing references) //IL_26b9: Unknown result type (might be due to invalid IL or missing references) //IL_26be: Unknown result type (might be due to invalid IL or missing references) //IL_26ff: Unknown result type (might be due to invalid IL or missing references) //IL_2713: Unknown result type (might be due to invalid IL or missing references) //IL_2727: Unknown result type (might be due to invalid IL or missing references) //IL_272c: Unknown result type (might be due to invalid IL or missing references) //IL_2731: Unknown result type (might be due to invalid IL or missing references) //IL_2736: Unknown result type (might be due to invalid IL or missing references) //IL_2777: Unknown result type (might be due to invalid IL or missing references) //IL_278b: Unknown result type (might be due to invalid IL or missing references) //IL_279f: Unknown result type (might be due to invalid IL or missing references) //IL_27a4: Unknown result type (might be due to invalid IL or missing references) //IL_27a9: Unknown result type (might be due to invalid IL or missing references) //IL_27ae: Unknown result type (might be due to invalid IL or missing references) //IL_27ef: Unknown result type (might be due to invalid IL or missing references) //IL_2803: Unknown result type (might be due to invalid IL or missing references) //IL_2817: Unknown result type (might be due to invalid IL or missing references) //IL_281c: Unknown result type (might be due to invalid IL or missing references) //IL_2821: Unknown result type (might be due to invalid IL or missing references) //IL_2826: Unknown result type (might be due to invalid IL or missing references) //IL_284a: Unknown result type (might be due to invalid IL or missing references) //IL_284f: Unknown result type (might be due to invalid IL or missing references) //IL_2874: Unknown result type (might be due to invalid IL or missing references) //IL_2888: Unknown result type (might be due to invalid IL or missing references) //IL_289c: Unknown result type (might be due to invalid IL or missing references) //IL_28a1: Unknown result type (might be due to invalid IL or missing references) //IL_28a6: Unknown result type (might be due to invalid IL or missing references) //IL_28cb: Unknown result type (might be due to invalid IL or missing references) //IL_28df: Unknown result type (might be due to invalid IL or missing references) //IL_28f3: Unknown result type (might be due to invalid IL or missing references) //IL_28f8: Unknown result type (might be due to invalid IL or missing references) //IL_28fd: Unknown result type (might be due to invalid IL or missing references) //IL_2902: Unknown result type (might be due to invalid IL or missing references) //IL_2943: Unknown result type (might be due to invalid IL or missing references) //IL_2957: Unknown result type (might be due to invalid IL or missing references) //IL_296b: Unknown result type (might be due to invalid IL or missing references) //IL_2970: Unknown result type (might be due to invalid IL or missing references) //IL_2975: Unknown result type (might be due to invalid IL or missing references) //IL_297a: Unknown result type (might be due to invalid IL or missing references) //IL_29bb: Unknown result type (might be due to invalid IL or missing references) //IL_29cf: Unknown result type (might be due to invalid IL or missing references) //IL_29e3: Unknown result type (might be due to invalid IL or missing references) //IL_29e8: Unknown result type (might be due to invalid IL or missing references) //IL_29ed: Unknown result type (might be due to invalid IL or missing references) //IL_29f2: Unknown result type (might be due to invalid IL or missing references) //IL_2a33: Unknown result type (might be due to invalid IL or missing references) //IL_2a47: Unknown result type (might be due to invalid IL or missing references) //IL_2a5b: Unknown result type (might be due to invalid IL or missing references) //IL_2a60: Unknown result type (might be due to invalid IL or missing references) //IL_2a65: Unknown result type (might be due to invalid IL or missing references) //IL_2a6a: Unknown result type (might be due to invalid IL or missing references) //IL_2aab: Unknown result type (might be due to invalid IL or missing references) //IL_2abf: Unknown result type (might be due to invalid IL or missing references) //IL_2ad3: Unknown result type (might be due to invalid IL or missing references) //IL_2ad8: Unknown result type (might be due to invalid IL or missing references) //IL_2add: Unknown result type (might be due to invalid IL or missing references) //IL_2ae2: Unknown result type (might be due to invalid IL or missing references) //IL_2b23: Unknown result type (might be due to invalid IL or missing references) //IL_2b37: Unknown result type (might be due to invalid IL or missing references) //IL_2b4b: Unknown result type (might be due to invalid IL or missing references) //IL_2b50: Unknown result type (might be due to invalid IL or missing references) //IL_2b55: Unknown result type (might be due to invalid IL or missing references) //IL_2b5a: Unknown result type (might be due to invalid IL or missing references) //IL_2b9b: Unknown result type (might be due to invalid IL or missing references) //IL_2baf: Unknown result type (might be due to invalid IL or missing references) //IL_2bc3: Unknown result type (might be due to invalid IL or missing references) //IL_2bc8: Unknown result type (might be due to invalid IL or missing references) //IL_2bcd: Unknown result type (might be due to invalid IL or missing references) //IL_2bd2: Unknown result type (might be due to invalid IL or missing references) //IL_2c13: Unknown result type (might be due to invalid IL or missing references) //IL_2c27: Unknown result type (might be due to invalid IL or missing references) //IL_2c3b: Unknown result type (might be due to invalid IL or missing references) //IL_2c40: Unknown result type (might be due to invalid IL or missing references) //IL_2c45: Unknown result type (might be due to invalid IL or missing references) //IL_2c4a: Unknown result type (might be due to invalid IL or missing references) //IL_2c8b: Unknown result type (might be due to invalid IL or missing references) //IL_2c9f: Unknown result type (might be due to invalid IL or missing references) //IL_2cb3: Unknown result type (might be due to invalid IL or missing references) //IL_2cb8: Unknown result type (might be due to invalid IL or missing references) //IL_2cbd: Unknown result type (might be due to invalid IL or missing references) //IL_2cc2: Unknown result type (might be due to invalid IL or missing references) //IL_2d03: Unknown result type (might be due to invalid IL or missing references) //IL_2d17: Unknown result type (might be due to invalid IL or missing references) //IL_2d2b: Unknown result type (might be due to invalid IL or missing references) //IL_2d30: Unknown result type (might be due to invalid IL or missing references) //IL_2d35: Unknown result type (might be due to invalid IL or missing references) //IL_2d5a: Unknown result type (might be due to invalid IL or missing references) //IL_2d6e: Unknown result type (might be due to invalid IL or missing references) //IL_2d82: Unknown result type (might be due to invalid IL or missing references) //IL_2d87: Unknown result type (might be due to invalid IL or missing references) //IL_2d8c: Unknown result type (might be due to invalid IL or missing references) //IL_2d91: Unknown result type (might be due to invalid IL or missing references) //IL_2dd2: Unknown result type (might be due to invalid IL or missing references) //IL_2de6: Unknown result type (might be due to invalid IL or missing references) //IL_2dfa: Unknown result type (might be due to invalid IL or missing references) //IL_2dff: Unknown result type (might be due to invalid IL or missing references) //IL_2e04: Unknown result type (might be due to invalid IL or missing references) //IL_2e09: Unknown result type (might be due to invalid IL or missing references) //IL_2e4a: Unknown result type (might be due to invalid IL or missing references) //IL_2e5e: Unknown result type (might be due to invalid IL or missing references) //IL_2e72: Unknown result type (might be due to invalid IL or missing references) //IL_2e77: Unknown result type (might be due to invalid IL or missing references) //IL_2e7c: Unknown result type (might be due to invalid IL or missing references) //IL_2e81: Unknown result type (might be due to invalid IL or missing references) //IL_2ec2: Unknown result type (might be due to invalid IL or missing references) //IL_2ed6: Unknown result type (might be due to invalid IL or missing references) //IL_2eea: Unknown result type (might be due to invalid IL or missing references) //IL_2eef: Unknown result type (might be due to invalid IL or missing references) //IL_2ef4: Unknown result type (might be due to invalid IL or missing references) //IL_2ef9: Unknown result type (might be due to invalid IL or missing references) //IL_2f3a: Unknown result type (might be due to invalid IL or missing references) //IL_2f4e: Unknown result type (might be due to invalid IL or missing references) //IL_2f62: Unknown result type (might be due to invalid IL or missing references) //IL_2f67: Unknown result type (might be due to invalid IL or missing references) //IL_2f6c: Unknown result type (might be due to invalid IL or missing references) //IL_2f71: Unknown result type (might be due to invalid IL or missing references) //IL_2fb2: Unknown result type (might be due to invalid IL or missing references) //IL_2fc6: Unknown result type (might be due to invalid IL or missing references) //IL_2fda: Unknown result type (might be due to invalid IL or missing references) //IL_2fdf: Unknown result type (might be due to invalid IL or missing references) //IL_2fe4: Unknown result type (might be due to invalid IL or missing references) //IL_2fe9: Unknown result type (might be due to invalid IL or missing references) //IL_302a: Unknown result type (might be due to invalid IL or missing references) //IL_303e: Unknown result type (might be due to invalid IL or missing references) //IL_3052: Unknown result type (might be due to invalid IL or missing references) //IL_3057: Unknown result type (might be due to invalid IL or missing references) //IL_305c: Unknown result type (might be due to invalid IL or missing references) //IL_3061: Unknown result type (might be due to invalid IL or missing references) //IL_30a2: Unknown result type (might be due to invalid IL or missing references) //IL_30b6: Unknown result type (might be due to invalid IL or missing references) //IL_30ca: Unknown result type (might be due to invalid IL or missing references) //IL_30cf: Unknown result type (might be due to invalid IL or missing references) //IL_30d4: Unknown result type (might be due to invalid IL or missing references) //IL_30d9: Unknown result type (might be due to invalid IL or missing references) //IL_311a: Unknown result type (might be due to invalid IL or missing references) //IL_312e: Unknown result type (might be due to invalid IL or missing references) //IL_3142: Unknown result type (might be due to invalid IL or missing references) //IL_3147: Unknown result type (might be due to invalid IL or missing references) //IL_314c: Unknown result type (might be due to invalid IL or missing references) //IL_3151: Unknown result type (might be due to invalid IL or missing references) //IL_3192: Unknown result type (might be due to invalid IL or missing references) //IL_31a6: Unknown result type (might be due to invalid IL or missing references) //IL_31ba: Unknown result type (might be due to invalid IL or missing references) //IL_31bf: Unknown result type (might be due to invalid IL or missing references) //IL_31c4: Unknown result type (might be due to invalid IL or missing references) //IL_31c9: Unknown result type (might be due to invalid IL or missing references) //IL_320a: Unknown result type (might be due to invalid IL or missing references) //IL_321e: Unknown result type (might be due to invalid IL or missing references) //IL_3232: Unknown result type (might be due to invalid IL or missing references) //IL_3237: Unknown result type (might be due to invalid IL or missing references) //IL_323c: Unknown result type (might be due to invalid IL or missing references) //IL_3241: Unknown result type (might be due to invalid IL or missing references) //IL_3282: Unknown result type (might be due to invalid IL or missing references) //IL_3296: Unknown result type (might be due to invalid IL or missing references) //IL_32aa: Unknown result type (might be due to invalid IL or missing references) //IL_32af: Unknown result type (might be due to invalid IL or missing references) //IL_32b4: Unknown result type (might be due to invalid IL or missing references) //IL_32b9: Unknown result type (might be due to invalid IL or missing references) //IL_32fa: Unknown result type (might be due to invalid IL or missing references) //IL_330e: Unknown result type (might be due to invalid IL or missing references) //IL_3322: Unknown result type (might be due to invalid IL or missing references) //IL_3327: Unknown result type (might be due to invalid IL or missing references) //IL_332c: Unknown result type (might be due to invalid IL or missing references) //IL_3331: Unknown result type (might be due to invalid IL or missing references) //IL_3372: Unknown result type (might be due to invalid IL or missing references) //IL_3386: Unknown result type (might be due to invalid IL or missing references) //IL_339a: Unknown result type (might be due to invalid IL or missing references) //IL_339f: Unknown result type (might be due to invalid IL or missing references) //IL_33a4: Unknown result type (might be due to invalid IL or missing references) //IL_33a9: Unknown result type (might be due to invalid IL or missing references) //IL_33ea: Unknown result type (might be due to invalid IL or missing references) //IL_33fe: Unknown result type (might be due to invalid IL or missing references) //IL_3412: Unknown result type (might be due to invalid IL or missing references) //IL_3417: Unknown result type (might be due to invalid IL or missing references) //IL_341c: Unknown result type (might be due to invalid IL or missing references) //IL_3421: Unknown result type (might be due to invalid IL or missing references) //IL_3462: Unknown result type (might be due to invalid IL or missing references) //IL_3476: Unknown result type (might be due to invalid IL or missing references) //IL_348a: Unknown result type (might be due to invalid IL or missing references) //IL_348f: Unknown result type (might be due to invalid IL or missing references) //IL_3494: Unknown result type (might be due to invalid IL or missing references) //IL_3499: Unknown result type (might be due to invalid IL or missing references) //IL_34da: Unknown result type (might be due to invalid IL or missing references) //IL_34ee: Unknown result type (might be due to invalid IL or missing references) //IL_3502: Unknown result type (might be due to invalid IL or missing references) //IL_3507: Unknown result type (might be due to invalid IL or missing references) //IL_350c: Unknown result type (might be due to invalid IL or missing references) //IL_3531: Unknown result type (might be due to invalid IL or missing references) //IL_3545: Unknown result type (might be due to invalid IL or missing references) //IL_3559: Unknown result type (might be due to invalid IL or missing references) //IL_355e: Unknown result type (might be due to invalid IL or missing references) //IL_3563: Unknown result type (might be due to invalid IL or missing references) //IL_3568: Unknown result type (might be due to invalid IL or missing references) //IL_35a9: Unknown result type (might be due to invalid IL or missing references) //IL_35bd: Unknown result type (might be due to invalid IL or missing references) //IL_35d1: Unknown result type (might be due to invalid IL or missing references) //IL_35d6: Unknown result type (might be due to invalid IL or missing references) //IL_35db: Unknown result type (might be due to invalid IL or missing references) //IL_35e0: Unknown result type (might be due to invalid IL or missing references) //IL_3621: Unknown result type (might be due to invalid IL or missing references) //IL_3635: Unknown result type (might be due to invalid IL or missing references) //IL_3649: Unknown result type (might be due to invalid IL or missing references) //IL_364e: Unknown result type (might be due to invalid IL or missing references) //IL_3653: Unknown result type (might be due to invalid IL or missing references) //IL_3658: Unknown result type (might be due to invalid IL or missing references) //IL_3699: Unknown result type (might be due to invalid IL or missing references) //IL_36ad: Unknown result type (might be due to invalid IL or missing references) //IL_36c1: Unknown result type (might be due to invalid IL or missing references) //IL_36c6: Unknown result type (might be due to invalid IL or missing references) //IL_36cb: Unknown result type (might be due to invalid IL or missing references) //IL_36d0: Unknown result type (might be due to invalid IL or missing references) //IL_3711: Unknown result type (might be due to invalid IL or missing references) //IL_3725: Unknown result type (might be due to invalid IL or missing references) //IL_3739: Unknown result type (might be due to invalid IL or missing references) //IL_373e: Unknown result type (might be due to invalid IL or missing references) //IL_3743: Unknown result type (might be due to invalid IL or missing references) //IL_3768: Unknown result type (might be due to invalid IL or missing references) //IL_377c: Unknown result type (might be due to invalid IL or missing references) //IL_3790: Unknown result type (might be due to invalid IL or missing references) //IL_3795: Unknown result type (might be due to invalid IL or missing references) //IL_379a: Unknown result type (might be due to invalid IL or missing references) //IL_379f: Unknown result type (might be due to invalid IL or missing references) //IL_37e0: Unknown result type (might be due to invalid IL or missing references) //IL_37f4: Unknown result type (might be due to invalid IL or missing references) //IL_3808: Unknown result type (might be due to invalid IL or missing references) //IL_380d: Unknown result type (might be due to invalid IL or missing references) //IL_3812: Unknown result type (might be due to invalid IL or missing references) //IL_3817: Unknown result type (might be due to invalid IL or missing references) //IL_3858: Unknown result type (might be due to invalid IL or missing references) //IL_386c: Unknown result type (might be due to invalid IL or missing references) //IL_3880: Unknown result type (might be due to invalid IL or missing references) //IL_3885: Unknown result type (might be due to invalid IL or missing references) //IL_388a: Unknown result type (might be due to invalid IL or missing references) //IL_388f: Unknown result type (might be due to invalid IL or missing references) //IL_38d0: Unknown result type (might be due to invalid IL or missing references) //IL_38e4: Unknown result type (might be due to invalid IL or missing references) //IL_38f8: Unknown result type (might be due to invalid IL or missing references) //IL_38fd: Unknown result type (might be due to invalid IL or missing references) //IL_3902: Unknown result type (might be due to invalid IL or missing references) //IL_3907: Unknown result type (might be due to invalid IL or missing references) //IL_3948: Unknown result type (might be due to invalid IL or missing references) //IL_395c: Unknown result type (might be due to invalid IL or missing references) //IL_3970: Unknown result type (might be due to invalid IL or missing references) //IL_3975: Unknown result type (might be due to invalid IL or missing references) //IL_397a: Unknown result type (might be due to invalid IL or missing references) //IL_397f: Unknown result type (might be due to invalid IL or missing references) //IL_39c0: Unknown result type (might be due to invalid IL or missing references) //IL_39d4: Unknown result type (might be due to invalid IL or missing references) //IL_39e8: Unknown result type (might be due to invalid IL or missing references) //IL_39ed: Unknown result type (might be due to invalid IL or missing references) //IL_39f2: Unknown result type (might be due to invalid IL or missing references) //IL_39f7: Unknown result type (might be due to invalid IL or missing references) //IL_3a38: Unknown result type (might be due to invalid IL or missing references) //IL_3a4c: Unknown result type (might be due to invalid IL or missing references) //IL_3a60: Unknown result type (might be due to invalid IL or missing references) //IL_3a65: Unknown result type (might be due to invalid IL or missing references) //IL_3a6a: Unknown result type (might be due to invalid IL or missing references) //IL_3a6f: Unknown result type (might be due to invalid IL or missing references) //IL_3ab0: Unknown result type (might be due to invalid IL or missing references) //IL_3ac4: Unknown result type (might be due to invalid IL or missing references) //IL_3ad8: Unknown result type (might be due to invalid IL or missing references) //IL_3add: Unknown result type (might be due to invalid IL or missing references) //IL_3ae2: Unknown result type (might be due to invalid IL or missing references) //IL_3ae7: Unknown result type (might be due to invalid IL or missing references) //IL_3b28: Unknown result type (might be due to invalid IL or missing references) //IL_3b3c: Unknown result type (might be due to invalid IL or missing references) //IL_3b50: Unknown result type (might be due to invalid IL or missing references) //IL_3b55: Unknown result type (might be due to invalid IL or missing references) //IL_3b5a: Unknown result type (might be due to invalid IL or missing references) //IL_3b5f: Unknown result type (might be due to invalid IL or missing references) //IL_3ba0: Unknown result type (might be due to invalid IL or missing references) //IL_3bb4: Unknown result type (might be due to invalid IL or missing references) //IL_3bc8: Unknown result type (might be due to invalid IL or missing references) //IL_3bcd: Unknown result type (might be due to invalid IL or missing references) //IL_3bd2: Unknown result type (might be due to invalid IL or missing references) //IL_3bd7: Unknown result type (might be due to invalid IL or missing references) //IL_3c18: Unknown result type (might be due to invalid IL or missing references) //IL_3c2c: Unknown result type (might be due to invalid IL or missing references) //IL_3c40: Unknown result type (might be due to invalid IL or missing references) //IL_3c45: Unknown result type (might be due to invalid IL or missing references) //IL_3c4a: Unknown result type (might be due to invalid IL or missing references) //IL_3c4f: Unknown result type (might be due to invalid IL or missing references) //IL_3c90: Unknown result type (might be due to invalid IL or missing references) //IL_3ca4: Unknown result type (might be due to invalid IL or missing references) //IL_3cb8: Unknown result type (might be due to invalid IL or missing references) //IL_3cbd: Unknown result type (might be due to invalid IL or missing references) //IL_3cc2: Unknown result type (might be due to invalid IL or missing references) //IL_3cc7: Unknown result type (might be due to invalid IL or missing references) //IL_3d08: Unknown result type (might be due to invalid IL or missing references) //IL_3d1c: Unknown result type (might be due to invalid IL or missing references) //IL_3d30: Unknown result type (might be due to invalid IL or missing references) //IL_3d35: Unknown result type (might be due to invalid IL or missing references) //IL_3d3a: Unknown result type (might be due to invalid IL or missing references) //IL_3d3f: Unknown result type (might be due to invalid IL or missing references) //IL_3d80: Unknown result type (might be due to invalid IL or missing references) //IL_3d94: Unknown result type (might be due to invalid IL or missing references) //IL_3da8: Unknown result type (might be due to invalid IL or missing references) //IL_3dad: Unknown result type (might be due to invalid IL or missing references) //IL_3db2: Unknown result type (might be due to invalid IL or missing references) //IL_3db7: Unknown result type (might be due to invalid IL or missing references) //IL_3df8: Unknown result type (might be due to invalid IL or missing references) //IL_3e0c: Unknown result type (might be due to invalid IL or missing references) //IL_3e20: Unknown result type (might be due to invalid IL or missing references) //IL_3e25: Unknown result type (might be due to invalid IL or missing references) //IL_3e2a: Unknown result type (might be due to invalid IL or missing references) //IL_3e2f: Unknown result type (might be due to invalid IL or missing references) //IL_3e70: Unknown result type (might be due to invalid IL or missing references) //IL_3e84: Unknown result type (might be due to invalid IL or missing references) //IL_3e98: Unknown result type (might be due to invalid IL or missing references) //IL_3e9d: Unknown result type (might be due to invalid IL or missing references) //IL_3ea2: Unknown result type (might be due to invalid IL or missing references) //IL_3ea7: Unknown result type (might be due to invalid IL or missing references) //IL_3ee8: Unknown result type (might be due to invalid IL or missing references) //IL_3efc: Unknown result type (might be due to invalid IL or missing references) //IL_3f10: Unknown result type (might be due to invalid IL or missing references) //IL_3f15: Unknown result type (might be due to invalid IL or missing references) //IL_3f1a: Unknown result type (might be due to invalid IL or missing references) //IL_3f1f: Unknown result type (might be due to invalid IL or missing references) //IL_3f60: Unknown result type (might be due to invalid IL or missing references) //IL_3f74: Unknown result type (might be due to invalid IL or missing references) //IL_3f88: Unknown result type (might be due to invalid IL or missing references) //IL_3f8d: Unknown result type (might be due to invalid IL or missing references) //IL_3f92: Unknown result type (might be due to invalid IL or missing references) //IL_3f97: Unknown result type (might be due to invalid IL or missing references) //IL_3fd8: Unknown result type (might be due to invalid IL or missing references) //IL_3fec: Unknown result type (might be due to invalid IL or missing references) //IL_4000: Unknown result type (might be due to invalid IL or missing references) //IL_4005: Unknown result type (might be due to invalid IL or missing references) //IL_400a: Unknown result type (might be due to invalid IL or missing references) //IL_400f: Unknown result type (might be due to invalid IL or missing references) //IL_4050: Unknown result type (might be due to invalid IL or missing references) //IL_4064: Unknown result type (might be due to invalid IL or missing references) //IL_4078: Unknown result type (might be due to invalid IL or missing references) //IL_407d: Unknown result type (might be due to invalid IL or missing references) //IL_4082: Unknown result type (might be due to invalid IL or missing references) //IL_4087: Unknown result type (might be due to invalid IL or missing references) //IL_40c8: Unknown result type (might be due to invalid IL or missing references) //IL_40dc: Unknown result type (might be due to invalid IL or missing references) //IL_40f0: Unknown result type (might be due to invalid IL or missing references) //IL_40f5: Unknown result type (might be due to invalid IL or missing references) //IL_40fa: Unknown result type (might be due to invalid IL or missing references) //IL_40ff: Unknown result type (might be due to invalid IL or missing references) //IL_4140: Unknown result type (might be due to invalid IL or missing references) //IL_4154: Unknown result type (might be due to invalid IL or missing references) //IL_4168: Unknown result type (might be due to invalid IL or missing references) //IL_416d: Unknown result type (might be due to invalid IL or missing references) //IL_4172: Unknown result type (might be due to invalid IL or missing references) //IL_4197: Unknown result type (might be due to invalid IL or missing references) //IL_41ab: Unknown result type (might be due to invalid IL or missing references) //IL_41bf: Unknown result type (might be due to invalid IL or missing references) //IL_41c4: Unknown result type (might be due to invalid IL or missing references) //IL_41c9: Unknown result type (might be due to invalid IL or missing references) //IL_41ce: Unknown result type (might be due to invalid IL or missing references) //IL_420f: Unknown result type (might be due to invalid IL or missing references) //IL_4223: Unknown result type (might be due to invalid IL or missing references) //IL_4237: Unknown result type (might be due to invalid IL or missing references) //IL_423c: Unknown result type (might be due to invalid IL or missing references) //IL_4241: Unknown result type (might be due to invalid IL or missing references) //IL_4246: Unknown result type (might be due to invalid IL or missing references) //IL_4287: Unknown result type (might be due to invalid IL or missing references) //IL_429b: Unknown result type (might be due to invalid IL or missing references) //IL_42af: Unknown result type (might be due to invalid IL or missing references) //IL_42b4: Unknown result type (might be due to invalid IL or missing references) //IL_42b9: Unknown result type (might be due to invalid IL or missing references) //IL_42be: Unknown result type (might be due to invalid IL or missing references) //IL_42ff: Unknown result type (might be due to invalid IL or missing references) //IL_4313: Unknown result type (might be due to invalid IL or missing references) //IL_4327: Unknown result type (might be due to invalid IL or missing references) //IL_432c: Unknown result type (might be due to invalid IL or missing references) //IL_4331: Unknown result type (might be due to invalid IL or missing references) //IL_4336: Unknown result type (might be due to invalid IL or missing references) //IL_4377: Unknown result type (might be due to invalid IL or missing references) //IL_438b: Unknown result type (might be due to invalid IL or missing references) //IL_439f: Unknown result type (might be due to invalid IL or missing references) //IL_43a4: Unknown result type (might be due to invalid IL or missing references) //IL_43a9: Unknown result type (might be due to invalid IL or missing references) //IL_43ae: Unknown result type (might be due to invalid IL or missing references) //IL_43ef: Unknown result type (might be due to invalid IL or missing references) //IL_4403: Unknown result type (might be due to invalid IL or missing references) //IL_4417: Unknown result type (might be due to invalid IL or missing references) //IL_441c: Unknown result type (might be due to invalid IL or missing references) //IL_4421: Unknown result type (might be due to invalid IL or missing references) //IL_4426: Unknown result type (might be due to invalid IL or missing references) //IL_4467: Unknown result type (might be due to invalid IL or missing references) //IL_447b: Unknown result type (might be due to invalid IL or missing references) //IL_448f: Unknown result type (might be due to invalid IL or missing references) //IL_4494: Unknown result type (might be due to invalid IL or missing references) //IL_4499: Unknown result type (might be due to invalid IL or missing references) //IL_449e: Unknown result type (might be due to invalid IL or missing references) //IL_44df: Unknown result type (might be due to invalid IL or missing references) //IL_44f3: Unknown result type (might be due to invalid IL or missing references) //IL_4507: Unknown result type (might be due to invalid IL or missing references) //IL_450c: Unknown result type (might be due to invalid IL or missing references) //IL_4511: Unknown result type (might be due to invalid IL or missing references) //IL_4516: Unknown result type (might be due to invalid IL or missing references) //IL_4557: Unknown result type (might be due to invalid IL or missing references) //IL_456b: Unknown result type (might be due to invalid IL or missing references) //IL_457f: Unknown result type (might be due to invalid IL or missing references) //IL_4584: Unknown result type (might be due to invalid IL or missing references) //IL_4589: Unknown result type (might be due to invalid IL or missing references) //IL_458e: Unknown result type (might be due to invalid IL or missing references) //IL_45cf: Unknown result type (might be due to invalid IL or missing references) //IL_45e3: Unknown result type (might be due to invalid IL or missing references) //IL_45f7: Unknown result type (might be due to invalid IL or missing references) //IL_45fc: Unknown result type (might be due to invalid IL or missing references) //IL_4601: Unknown result type (might be due to invalid IL or missing references) //IL_4606: Unknown result type (might be due to invalid IL or missing references) //IL_4647: Unknown result type (might be due to invalid IL or missing references) //IL_465b: Unknown result type (might be due to invalid IL or missing references) //IL_466f: Unknown result type (might be due to invalid IL or missing references) //IL_4674: Unknown result type (might be due to invalid IL or missing references) //IL_4679: Unknown result type (might be due to invalid IL or missing references) //IL_467e: Unknown result type (might be due to invalid IL or missing references) //IL_46bf: Unknown result type (might be due to invalid IL or missing references) //IL_46d3: Unknown result type (might be due to invalid IL or missing references) //IL_46e7: Unknown result type (might be due to invalid IL or missing references) //IL_46ec: Unknown result type (might be due to invalid IL or missing references) //IL_46f1: Unknown result type (might be due to invalid IL or missing references) //IL_46f6: Unknown result type (might be due to invalid IL or missing references) //IL_4737: Unknown result type (might be due to invalid IL or missing references) //IL_474b: Unknown result type (might be due to invalid IL or missing references) //IL_475f: Unknown result type (might be due to invalid IL or missing references) //IL_4764: Unknown result type (might be due to invalid IL or missing references) //IL_4769: Unknown result type (might be due to invalid IL or missing references) //IL_476e: Unknown result type (might be due to invalid IL or missing references) //IL_47af: Unknown result type (might be due to invalid IL or missing references) //IL_47c3: Unknown result type (might be due to invalid IL or missing references) //IL_47d7: Unknown result type (might be due to invalid IL or missing references) //IL_47dc: Unknown result type (might be due to invalid IL or missing references) //IL_47e1: Unknown result type (might be due to invalid IL or missing references) //IL_47e6: Unknown result type (might be due to invalid IL or missing references) //IL_4827: Unknown result type (might be due to invalid IL or missing references) //IL_483b: Unknown result type (might be due to invalid IL or missing references) //IL_484f: Unknown result type (might be due to invalid IL or missing references) //IL_4854: Unknown result type (might be due to invalid IL or missing references) //IL_4859: Unknown result type (might be due to invalid IL or missing references) //IL_485e: Unknown result type (might be due to invalid IL or missing references) //IL_489f: Unknown result type (might be due to invalid IL or missing references) //IL_48b3: Unknown result type (might be due to invalid IL or missing references) //IL_48c7: Unknown result type (might be due to invalid IL or missing references) //IL_48cc: Unknown result type (might be due to invalid IL or missing references) //IL_48d1: Unknown result type (might be due to invalid IL or missing references) //IL_48f6: Unknown result type (might be due to invalid IL or missing references) //IL_490a: Unknown result type (might be due to invalid IL or missing references) //IL_491e: Unknown result type (might be due to invalid IL or missing references) //IL_4923: Unknown result type (might be due to invalid IL or missing references) //IL_4928: Unknown result type (might be due to invalid IL or missing references) //IL_492d: Unknown result type (might be due to invalid IL or missing references) //IL_496e: Unknown result type (might be due to invalid IL or missing references) //IL_4982: Unknown result type (might be due to invalid IL or missing references) //IL_4996: Unknown result type (might be due to invalid IL or missing references) //IL_499b: Unknown result type (might be due to invalid IL or missing references) //IL_49a0: Unknown result type (might be due to invalid IL or missing references) //IL_49a5: Unknown result type (might be due to invalid IL or missing references) //IL_49e6: Unknown result type (might be due to invalid IL or missing references) //IL_49fa: Unknown result type (might be due to invalid IL or missing references) //IL_4a0e: Unknown result type (might be due to invalid IL or missing references) //IL_4a13: Unknown result type (might be due to invalid IL or missing references) //IL_4a18: Unknown result type (might be due to invalid IL or missing references) //IL_4a1d: Unknown result type (might be due to invalid IL or missing references) //IL_4a5e: Unknown result type (might be due to invalid IL or missing references) //IL_4a72: Unknown result type (might be due to invalid IL or missing references) //IL_4a86: Unknown result type (might be due to invalid IL or missing references) //IL_4a8b: Unknown result type (might be due to invalid IL or missing references) //IL_4a90: Unknown result type (might be due to invalid IL or missing references) //IL_4a95: Unknown result type (might be due to invalid IL or missing references) //IL_4ad6: Unknown result type (might be due to invalid IL or missing references) //IL_4aea: Unknown result type (might be due to invalid IL or missing references) //IL_4afe: Unknown result type (might be due to invalid IL or missing references) //IL_4b03: Unknown result type (might be due to invalid IL or missing references) //IL_4b08: Unknown result type (might be due to invalid IL or missing references) //IL_4b0d: Unknown result type (might be due to invalid IL or missing references) //IL_4b4e: Unknown result type (might be due to invalid IL or missing references) //IL_4b62: Unknown result type (might be due to invalid IL or missing references) //IL_4b76: Unknown result type (might be due to invalid IL or missing references) //IL_4b7b: Unknown result type (might be due to invalid IL or missing references) //IL_4b80: Unknown result type (might be due to invalid IL or missing references) //IL_4b85: Unknown result type (might be due to invalid IL or missing references) //IL_4bc6: Unknown result type (might be due to invalid IL or missing references) //IL_4bda: Unknown result type (might be due to invalid IL or missing references) //IL_4bee: Unknown result type (might be due to invalid IL or missing references) //IL_4bf3: Unknown result type (might be due to invalid IL or missing references) //IL_4bf8: Unknown result type (might be due to invalid IL or missing references) //IL_4bfd: Unknown result type (might be due to invalid IL or missing references) //IL_4c3e: Unknown result type (might be due to invalid IL or missing references) //IL_4c52: Unknown result type (might be due to invalid IL or missing references) //IL_4c66: Unknown result type (might be due to invalid IL or missing references) //IL_4c6b: Unknown result type (might be due to invalid IL or missing references) //IL_4c70: Unknown result type (might be due to invalid IL or missing references) //IL_4c75: Unknown result type (might be due to invalid IL or missing references) //IL_4cb6: Unknown result type (might be due to invalid IL or missing references) //IL_4cca: Unknown result type (might be due to invalid IL or missing references) //IL_4cde: Unknown result type (might be due to invalid IL or missing references) //IL_4ce3: Unknown result type (might be due to invalid IL or missing references) //IL_4ce8: Unknown result type (might be due to invalid IL or missing references) //IL_4ced: Unknown result type (might be due to invalid IL or missing references) //IL_4d2e: Unknown result type (might be due to invalid IL or missing references) //IL_4d42: Unknown result type (might be due to invalid IL or missing references) //IL_4d56: Unknown result type (might be due to invalid IL or missing references) //IL_4d5b: Unknown result type (might be due to invalid IL or missing references) //IL_4d60: Unknown result type (might be due to invalid IL or missing references) //IL_4d65: Unknown result type (might be due to invalid IL or missing references) //IL_4da6: Unknown result type (might be due to invalid IL or missing references) //IL_4dba: Unknown result type (might be due to invalid IL or missing references) //IL_4dce: Unknown result type (might be due to invalid IL or missing references) //IL_4dd3: Unknown result type (might be due to invalid IL or missing references) //IL_4dd8: Unknown result type (might be due to invalid IL or missing references) //IL_4ddd: Unknown result type (might be due to invalid IL or missing references) //IL_4e1e: Unknown result type (might be due to invalid IL or missing references) //IL_4e32: Unknown result type (might be due to invalid IL or missing references) //IL_4e46: Unknown result type (might be due to invalid IL or missing references) //IL_4e4b: Unknown result type (might be due to invalid IL or missing references) //IL_4e50: Unknown result type (might be due to invalid IL or missing references) //IL_4e55: Unknown result type (might be due to invalid IL or missing references) //IL_4e96: Unknown result type (might be due to invalid IL or missing references) //IL_4eaa: Unknown result type (might be due to invalid IL or missing references) //IL_4ebe: Unknown result type (might be due to invalid IL or missing references) //IL_4ec3: Unknown result type (might be due to invalid IL or missing references) //IL_4ec8: Unknown result type (might be due to invalid IL or missing references) //IL_4ecd: Unknown result type (might be due to invalid IL or missing references) //IL_4f0e: Unknown result type (might be due to invalid IL or missing references) //IL_4f22: Unknown result type (might be due to invalid IL or missing references) //IL_4f36: Unknown result type (might be due to invalid IL or missing references) //IL_4f3b: Unknown result type (might be due to invalid IL or missing references) //IL_4f40: Unknown result type (might be due to invalid IL or missing references) //IL_4f45: Unknown result type (might be due to invalid IL or missing references) //IL_4f86: Unknown result type (might be due to invalid IL or missing references) //IL_4f9a: Unknown result type (might be due to invalid IL or missing references) //IL_4fae: Unknown result type (might be due to invalid IL or missing references) //IL_4fb3: Unknown result type (might be due to invalid IL or missing references) //IL_4fb8: Unknown result type (might be due to invalid IL or missing references) //IL_4fbd: Unknown result type (might be due to invalid IL or missing references) //IL_4ffe: Unknown result type (might be due to invalid IL or missing references) //IL_5012: Unknown result type (might be due to invalid IL or missing references) //IL_5026: Unknown result type (might be due to invalid IL or missing references) //IL_502b: Unknown result type (might be due to invalid IL or missing references) //IL_5030: Unknown result type (might be due to invalid IL or missing references) //IL_5035: Unknown result type (might be due to invalid IL or missing references) //IL_5076: Unknown result type (might be due to invalid IL or missing references) //IL_508a: Unknown result type (might be due to invalid IL or missing references) //IL_509e: Unknown result type (might be due to invalid IL or missing references) //IL_50a3: Unknown result type (might be due to invalid IL or missing references) //IL_50a8: Unknown result type (might be due to invalid IL or missing references) //IL_50ad: Unknown result type (might be due to invalid IL or missing references) //IL_50ee: Unknown result type (might be due to invalid IL or missing references) //IL_5102: Unknown result type (might be due to invalid IL or missing references) //IL_5116: Unknown result type (might be due to invalid IL or missing references) //IL_511b: Unknown result type (might be due to invalid IL or missing references) //IL_5120: Unknown result type (might be due to invalid IL or missing references) //IL_5125: Unknown result type (might be due to invalid IL or missing references) //IL_5166: Unknown result type (might be due to invalid IL or missing references) //IL_517a: Unknown result type (might be due to invalid IL or missing references) //IL_518e: Unknown result type (might be due to invalid IL or missing references) //IL_5193: Unknown result type (might be due to invalid IL or missing references) //IL_5198: Unknown result type (might be due to invalid IL or missing references) //IL_519d: Unknown result type (might be due to invalid IL or missing references) //IL_51de: Unknown result type (might be due to invalid IL or missing references) //IL_51f2: Unknown result type (might be due to invalid IL or missing references) //IL_5206: Unknown result type (might be due to invalid IL or missing references) //IL_520b: Unknown result type (might be due to invalid IL or missing references) //IL_5210: Unknown result type (might be due to invalid IL or missing references) //IL_5215: Unknown result type (might be due to invalid IL or missing references) //IL_5256: Unknown result type (might be due to invalid IL or missing references) //IL_526a: Unknown result type (might be due to invalid IL or missing references) //IL_527e: Unknown result type (might be due to invalid IL or missing references) //IL_5283: Unknown result type (might be due to invalid IL or missing references) //IL_5288: Unknown result type (might be due to invalid IL or missing references) //IL_52ad: Unknown result type (might be due to invalid IL or missing references) //IL_52c1: Unknown result type (might be due to invalid IL or missing references) //IL_52d5: Unknown result type (might be due to invalid IL or missing references) //IL_52da: Unknown result type (might be due to invalid IL or missing references) //IL_52df: Unknown result type (might be due to invalid IL or missing references) //IL_5304: Unknown result type (might be due to invalid IL or missing references) //IL_5318: Unknown result type (might be due to invalid IL or missing references) //IL_532c: Unknown result type (might be due to invalid IL or missing references) //IL_5331: Unknown result type (might be due to invalid IL or missing references) //IL_5336: Unknown result type (might be due to invalid IL or missing references) //IL_533b: Unknown result type (might be due to invalid IL or missing references) //IL_537c: Unknown result type (might be due to invalid IL or missing references) //IL_5390: Unknown result type (might be due to invalid IL or missing references) //IL_53a4: Unknown result type (might be due to invalid IL or missing references) //IL_53a9: Unknown result type (might be due to invalid IL or missing references) //IL_53ae: Unknown result type (might be due to invalid IL or missing references) //IL_53b3: Unknown result type (might be due to invalid IL or missing references) //IL_53f4: Unknown result type (might be due to invalid IL or missing references) //IL_5408: Unknown result type (might be due to invalid IL or missing references) //IL_541c: Unknown result type (might be due to invalid IL or missing references) //IL_5421: Unknown result type (might be due to invalid IL or missing references) //IL_5426: Unknown result type (might be due to invalid IL or missing references) //IL_542b: Unknown result type (might be due to invalid IL or missing references) //IL_546c: Unknown result type (might be due to invalid IL or missing references) //IL_5480: Unknown result type (might be due to invalid IL or missing references) //IL_5494: Unknown result type (might be due to invalid IL or missing references) //IL_5499: Unknown result type (might be due to invalid IL or missing references) //IL_549e: Unknown result type (might be due to invalid IL or missing references) //IL_54a3: Unknown result type (might be due to invalid IL or missing references) //IL_54e4: Unknown result type (might be due to invalid IL or missing references) //IL_54f8: Unknown result type (might be due to invalid IL or missing references) //IL_550c: Unknown result type (might be due to invalid IL or missing references) //IL_5511: Unknown result type (might be due to invalid IL or missing references) //IL_5516: Unknown result type (might be due to invalid IL or missing references) //IL_551b: Unknown result type (might be due to invalid IL or missing references) //IL_555c: Unknown result type (might be due to invalid IL or missing references) //IL_5570: Unknown result type (might be due to invalid IL or missing references) //IL_5584: Unknown result type (might be due to invalid IL or missing references) //IL_5589: Unknown result type (might be due to invalid IL or missing references) //IL_558e: Unknown result type (might be due to invalid IL or missing references) //IL_5593: Unknown result type (might be due to invalid IL or missing references) //IL_55d4: Unknown result type (might be due to invalid IL or missing references) //IL_55e8: Unknown result type (might be due to invalid IL or missing references) //IL_55fc: Unknown result type (might be due to invalid IL or missing references) //IL_5601: Unknown result type (might be due to invalid IL or missing references) //IL_5606: Unknown result type (might be due to invalid IL or missing references) //IL_560b: Unknown result type (might be due to invalid IL or missing references) //IL_564c: Unknown result type (might be due to invalid IL or missing references) //IL_5660: Unknown result type (might be due to invalid IL or missing references) //IL_5674: Unknown result type (might be due to invalid IL or missing references) //IL_5679: Unknown result type (might be due to invalid IL or missing references) //IL_567e: Unknown result type (might be due to invalid IL or missing references) //IL_5683: Unknown result type (might be due to invalid IL or missing references) //IL_56c4: Unknown result type (might be due to invalid IL or missing references) //IL_56d8: Unknown result type (might be due to invalid IL or missing references) //IL_56ec: Unknown result type (might be due to invalid IL or missing references) //IL_56f1: Unknown result type (might be due to invalid IL or missing references) //IL_56f6: Unknown result type (might be due to invalid IL or missing references) //IL_56fb: Unknown result type (might be due to invalid IL or missing references) //IL_573c: Unknown result type (might be due to invalid IL or missing references) //IL_5750: Unknown result type (might be due to invalid IL or missing references) //IL_5764: Unknown result type (might be due to invalid IL or missing references) //IL_5769: Unknown result type (might be due to invalid IL or missing references) //IL_576e: Unknown result type (might be due to invalid IL or missing references) //IL_5773: Unknown result type (might be due to invalid IL or missing references) //IL_57b4: Unknown result type (might be due to invalid IL or missing references) //IL_57c8: Unknown result type (might be due to invalid IL or missing references) //IL_57dc: Unknown result type (might be due to invalid IL or missing references) //IL_57e1: Unknown result type (might be due to invalid IL or missing references) //IL_57e6: Unknown result type (might be due to invalid IL or missing references) //IL_57eb: Unknown result type (might be due to invalid IL or missing references) //IL_582c: Unknown result type (might be due to invalid IL or missing references) //IL_5840: Unknown result type (might be due to invalid IL or missing references) //IL_5854: Unknown result type (might be due to invalid IL or missing references) //IL_5859: Unknown result type (might be due to invalid IL or missing references) //IL_585e: Unknown result type (might be due to invalid IL or missing references) //IL_5863: Unknown result type (might be due to invalid IL or missing references) //IL_58a4: Unknown result type (might be due to invalid IL or missing references) //IL_58b8: Unknown result type (might be due to invalid IL or missing references) //IL_58cc: Unknown result type (might be due to invalid IL or missing references) //IL_58d1: Unknown result type (might be due to invalid IL or missing references) //IL_58d6: Unknown result type (might be due to invalid IL or missing references) //IL_58db: Unknown result type (might be due to invalid IL or missing references) //IL_591c: Unknown result type (might be due to invalid IL or missing references) //IL_5930: Unknown result type (might be due to invalid IL or missing references) //IL_5944: Unknown result type (might be due to invalid IL or missing references) //IL_5949: Unknown result type (might be due to invalid IL or missing references) //IL_594e: Unknown result type (might be due to invalid IL or missing references) //IL_5953: Unknown result type (might be due to invalid IL or missing references) //IL_5994: Unknown result type (might be due to invalid IL or missing references) //IL_59a8: Unknown result type (might be due to invalid IL or missing references) //IL_59bc: Unknown result type (might be due to invalid IL or missing references) //IL_59c1: Unknown result type (might be due to invalid IL or missing references) //IL_59c6: Unknown result type (might be due to invalid IL or missing references) //IL_59cb: Unknown result type (might be due to invalid IL or missing references) //IL_5a0c: Unknown result type (might be due to invalid IL or missing references) //IL_5a20: Unknown result type (might be due to invalid IL or missing references) //IL_5a34: Unknown result type (might be due to invalid IL or missing references) //IL_5a39: Unknown result type (might be due to invalid IL or missing references) //IL_5a3e: Unknown result type (might be due to invalid IL or missing references) //IL_5a43: Unknown result type (might be due to invalid IL or missing references) //IL_5a84: Unknown result type (might be due to invalid IL or missing references) //IL_5a98: Unknown result type (might be due to invalid IL or missing references) //IL_5aac: Unknown result type (might be due to invalid IL or missing references) //IL_5ab1: Unknown result type (might be due to invalid IL or missing references) //IL_5ab6: Unknown result type (might be due to invalid IL or missing references) //IL_5abb: Unknown result type (might be due to invalid IL or missing references) //IL_5afc: Unknown result type (might be due to invalid IL or missing references) //IL_5b10: Unknown result type (might be due to invalid IL or missing references) //IL_5b24: Unknown result type (might be due to invalid IL or missing references) //IL_5b29: Unknown result type (might be due to invalid IL or missing references) //IL_5b2e: Unknown result type (might be due to invalid IL or missing references) //IL_5b53: Unknown result type (might be due to invalid IL or missing references) //IL_5b67: Unknown result type (might be due to invalid IL or missing references) //IL_5b7b: Unknown result type (might be due to invalid IL or missing references) //IL_5b80: Unknown result type (might be due to invalid IL or missing references) //IL_5b85: Unknown result type (might be due to invalid IL or missing references) //IL_5b8a: Unknown result type (might be due to invalid IL or missing references) //IL_5bcb: Unknown result type (might be due to invalid IL or missing references) //IL_5bdf: Unknown result type (might be due to invalid IL or missing references) //IL_5bf3: Unknown result type (might be due to invalid IL or missing references) //IL_5bf8: Unknown result type (might be due to invalid IL or missing references) //IL_5bfd: Unknown result type (might be due to invalid IL or missing references) //IL_5c02: Unknown result type (might be due to invalid IL or missing references) //IL_5c43: Unknown result type (might be due to invalid IL or missing references) //IL_5c57: Unknown result type (might be due to invalid IL or missing references) //IL_5c6b: Unknown result type (might be due to invalid IL or missing references) //IL_5c70: Unknown result type (might be due to invalid IL or missing references) //IL_5c75: Unknown result type (might be due to invalid IL or missing references) //IL_5c7a: Unknown result type (might be due to invalid IL or missing references) //IL_5cbb: Unknown result type (might be due to invalid IL or missing references) //IL_5ccf: Unknown result type (might be due to invalid IL or missing references) //IL_5ce3: Unknown result type (might be due to invalid IL or missing references) //IL_5ce8: Unknown result type (might be due to invalid IL or missing references) //IL_5ced: Unknown result type (might be due to invalid IL or missing references) //IL_5cf2: Unknown result type (might be due to invalid IL or missing references) //IL_5d33: Unknown result type (might be due to invalid IL or missing references) //IL_5d47: Unknown result type (might be due to invalid IL or missing references) //IL_5d5b: Unknown result type (might be due to invalid IL or missing references) //IL_5d60: Unknown result type (might be due to invalid IL or missing references) //IL_5d65: Unknown result type (might be due to invalid IL or missing references) //IL_5d6a: Unknown result type (might be due to invalid IL or missing references) //IL_5dab: Unknown result type (might be due to invalid IL or missing references) //IL_5dbf: Unknown result type (might be due to invalid IL or missing references) //IL_5dd3: Unknown result type (might be due to invalid IL or missing references) //IL_5dd8: Unknown result type (might be due to invalid IL or missing references) //IL_5ddd: Unknown result type (might be due to invalid IL or missing references) //IL_5e02: Unknown result type (might be due to invalid IL or missing references) //IL_5e16: Unknown result type (might be due to invalid IL or missing references) //IL_5e2a: Unknown result type (might be due to invalid IL or missing references) //IL_5e2f: Unknown result type (might be due to invalid IL or missing references) //IL_5e34: Unknown result type (might be due to invalid IL or missing references) //IL_5e39: Unknown result type (might be due to invalid IL or missing references) //IL_5e7a: Unknown result type (might be due to invalid IL or missing references) //IL_5e8e: Unknown result type (might be due to invalid IL or missing references) //IL_5ea2: Unknown result type (might be due to invalid IL or missing references) //IL_5ea7: Unknown result type (might be due to invalid IL or missing references) //IL_5eac: Unknown result type (might be due to invalid IL or missing references) //IL_5eb1: Unknown result type (might be due to invalid IL or missing references) //IL_5ef2: Unknown result type (might be due to invalid IL or missing references) //IL_5f06: Unknown result type (might be due to invalid IL or missing references) //IL_5f1a: Unknown result type (might be due to invalid IL or missing references) //IL_5f1f: Unknown result type (might be due to invalid IL or missing references) //IL_5f24: Unknown result type (might be due to invalid IL or missing references) //IL_5f29: Unknown result type (might be due to invalid IL or missing references) //IL_5f6a: Unknown result type (might be due to invalid IL or missing references) //IL_5f7e: Unknown result type (might be due to invalid IL or missing references) //IL_5f92: Unknown result type (might be due to invalid IL or missing references) //IL_5f97: Unknown result type (might be due to invalid IL or missing references) //IL_5f9c: Unknown result type (might be due to invalid IL or missing references) //IL_5fa1: Unknown result type (might be due to invalid IL or missing references) //IL_5fe2: Unknown result type (might be due to invalid IL or missing references) //IL_5ff6: Unknown result type (might be due to invalid IL or missing references) //IL_600a: Unknown result type (might be due to invalid IL or missing references) //IL_600f: Unknown result type (might be due to invalid IL or missing references) //IL_6014: Unknown result type (might be due to invalid IL or missing references) //IL_6019: Unknown result type (might be due to invalid IL or missing references) //IL_605a: Unknown result type (might be due to invalid IL or missing references) //IL_606e: Unknown result type (might be due to invalid IL or missing references) //IL_6082: Unknown result type (might be due to invalid IL or missing references) //IL_6087: Unknown result type (might be due to invalid IL or missing references) //IL_608c: Unknown result type (might be due to invalid IL or missing references) //IL_6091: Unknown result type (might be due to invalid IL or missing references) //IL_60d2: Unknown result type (might be due to invalid IL or missing references) //IL_60e6: Unknown result type (might be due to invalid IL or missing references) //IL_60fa: Unknown result type (might be due to invalid IL or missing references) //IL_60ff: Unknown result type (might be due to invalid IL or missing references) //IL_6104: Unknown result type (might be due to invalid IL or missing references) //IL_6109: Unknown result type (might be due to invalid IL or missing references) //IL_614a: Unknown result type (might be due to invalid IL or missing references) //IL_615e: Unknown result type (might be due to invalid IL or missing references) //IL_6172: Unknown result type (might be due to invalid IL or missing references) //IL_6177: Unknown result type (might be due to invalid IL or missing references) //IL_617c: Unknown result type (might be due to invalid IL or missing references) //IL_6181: Unknown result type (might be due to invalid IL or missing references) //IL_61c2: Unknown result type (might be due to invalid IL or missing references) //IL_61d6: Unknown result type (might be due to invalid IL or missing references) //IL_61ea: Unknown result type (might be due to invalid IL or missing references) //IL_61ef: Unknown result type (might be due to invalid IL or missing references) //IL_61f4: Unknown result type (might be due to invalid IL or missing references) //IL_61f9: Unknown result type (might be due to invalid IL or missing references) //IL_623a: Unknown result type (might be due to invalid IL or missing references) //IL_624e: Unknown result type (might be due to invalid IL or missing references) //IL_6262: Unknown result type (might be due to invalid IL or missing references) //IL_6267: Unknown result type (might be due to invalid IL or missing references) //IL_626c: Unknown result type (might be due to invalid IL or missing references) //IL_6271: Unknown result type (might be due to invalid IL or missing references) //IL_62b2: Unknown result type (might be due to invalid IL or missing references) //IL_62c6: Unknown result type (might be due to invalid IL or missing references) //IL_62da: Unknown result type (might be due to invalid IL or missing references) //IL_62df: Unknown result type (might be due to invalid IL or missing references) //IL_62e4: Unknown result type (might be due to invalid IL or missing references) //IL_62e9: Unknown result type (might be due to invalid IL or missing references) //IL_632a: Unknown result type (might be due to invalid IL or missing references) //IL_633e: Unknown result type (might be due to invalid IL or missing references) //IL_6352: Unknown result type (might be due to invalid IL or missing references) //IL_6357: Unknown result type (might be due to invalid IL or missing references) //IL_635c: Unknown result type (might be due to invalid IL or missing references) //IL_6361: Unknown result type (might be due to invalid IL or missing references) //IL_63a2: Unknown result type (might be due to invalid IL or missing references) //IL_63b6: Unknown result type (might be due to invalid IL or missing references) //IL_63ca: Unknown result type (might be due to invalid IL or missing references) //IL_63cf: Unknown result type (might be due to invalid IL or missing references) //IL_63d4: Unknown result type (might be due to invalid IL or missing references) //IL_63d9: Unknown result type (might be due to invalid IL or missing references) //IL_641a: Unknown result type (might be due to invalid IL or missing references) //IL_642e: Unknown result type (might be due to invalid IL or missing references) //IL_6442: Unknown result type (might be due to invalid IL or missing references) //IL_6447: Unknown result type (might be due to invalid IL or missing references) //IL_644c: Unknown result type (might be due to invalid IL or missing references) //IL_6451: Unknown result type (might be due to invalid IL or missing references) //IL_6492: Unknown result type (might be due to invalid IL or missing references) //IL_64a6: Unknown result type (might be due to invalid IL or missing references) //IL_64ba: Unknown result type (might be due to invalid IL or missing references) //IL_64bf: Unknown result type (might be due to invalid IL or missing references) //IL_64c4: Unknown result type (might be due to invalid IL or missing references) //IL_64c9: Unknown result type (might be due to invalid IL or missing references) //IL_650a: Unknown result type (might be due to invalid IL or missing references) //IL_651e: Unknown result type (might be due to invalid IL or missing references) //IL_6532: Unknown result type (might be due to invalid IL or missing references) //IL_6537: Unknown result type (might be due to invalid IL or missing references) //IL_653c: Unknown result type (might be due to invalid IL or missing references) //IL_6541: Unknown result type (might be due to invalid IL or missing references) //IL_6582: Unknown result type (might be due to invalid IL or missing references) //IL_6596: Unknown result type (might be due to invalid IL or missing references) //IL_65aa: Unknown result type (might be due to invalid IL or missing references) //IL_65af: Unknown result type (might be due to invalid IL or missing references) //IL_65b4: Unknown result type (might be due to invalid IL or missing references) //IL_65b9: Unknown result type (might be due to invalid IL or missing references) //IL_65fa: Unknown result type (might be due to invalid IL or missing references) //IL_660e: Unknown result type (might be due to invalid IL or missing references) //IL_6622: Unknown result type (might be due to invalid IL or missing references) //IL_6627: Unknown result type (might be due to invalid IL or missing references) //IL_662c: Unknown result type (might be due to invalid IL or missing references) //IL_6631: Unknown result type (might be due to invalid IL or missing references) //IL_6672: Unknown result type (might be due to invalid IL or missing references) //IL_6686: Unknown result type (might be due to invalid IL or missing references) //IL_669a: Unknown result type (might be due to invalid IL or missing references) //IL_669f: Unknown result type (might be due to invalid IL or missing references) //IL_66a4: Unknown result type (might be due to invalid IL or missing references) //IL_66a9: Unknown result type (might be due to invalid IL or missing references) //IL_66e5: Unknown result type (might be due to invalid IL or missing references) //IL_66f9: Unknown result type (might be due to invalid IL or missing references) //IL_670d: Unknown result type (might be due to invalid IL or missing references) //IL_6712: Unknown result type (might be due to invalid IL or missing references) //IL_6717: Unknown result type (might be due to invalid IL or missing references) //IL_671c: Unknown result type (might be due to invalid IL or missing references) //IL_675d: Unknown result type (might be due to invalid IL or missing references) //IL_6771: Unknown result type (might be due to invalid IL or missing references) //IL_6785: Unknown result type (might be due to invalid IL or missing references) //IL_678a: Unknown result type (might be due to invalid IL or missing references) //IL_678f: Unknown result type (might be due to invalid IL or missing references) //IL_67b4: Unknown result type (might be due to invalid IL or missing references) //IL_67c8: Unknown result type (might be due to invalid IL or missing references) //IL_67dc: Unknown result type (might be due to invalid IL or missing references) //IL_67e1: Unknown result type (might be due to invalid IL or missing references) //IL_67e6: Unknown result type (might be due to invalid IL or missing references) //IL_67eb: Unknown result type (might be due to invalid IL or missing references) itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["DronesDropDynamite"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DronesDropDynamiteDisplay"), "Backpack", new Vector3(-0.00337f, -0.12093f, 0.02046f), new Vector3(32.5382f, 353.06f, 176.9222f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Parry"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("ParryDisplay"), "Backpack", new Vector3(-0.00474f, -0.16635f, -0.09402f), new Vector3(0f, 180f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MasterBattery"], ItemDisplays.CreateDisplayRule(Addressables.LoadAssetAsync((object)"RoR2/DLC3/Items/MasterBattery/DisplayPowerOrbSphereFollower.prefab").WaitForCompletion(), "Base", new Vector3(-0.41902f, 0.01955f, 0.55403f), new Vector3(0f, 0f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["PowerCube"], ItemDisplays.CreateDisplayRule(Addressables.LoadAssetAsync((object)"RoR2/DLC3/Items/PowerCube/DisplayPowerCubeFollower.prefab").WaitForCompletion(), "Base", new Vector3(-0.75877f, 0.02561f, 0.47629f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["PowerPyramid"], ItemDisplays.CreateDisplayRule(Addressables.LoadAssetAsync((object)"RoR2/DLC3/Items/PowerPyramid/DisplayPowerPyramidFollower.prefab").WaitForCompletion(), "Base", new Vector3(-1.28883f, 0.03926f, 0.58036f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CookedSteak"], ItemDisplays.CreateDisplayRule(Addressables.LoadAssetAsync((object)"RoR2/DLC3/Items/CookedSteak/DisplayCookedSteakCurved.prefab").WaitForCompletion(), "Head", new Vector3(-0.10975f, 0.20281f, -0.12022f), new Vector3(297.1067f, 162.2858f, 109.9649f), new Vector3(-0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExtraEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayExtraEquipment"), "ThighL", new Vector3(-0.07819f, 0.07083f, 0.09924f), new Vector3(350.7468f, 312.019f, 171.3385f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BonusHealthBoost"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayQuickFix"), "ShoulderL", new Vector3(-0.0119f, 0.25304f, 0.04544f), new Vector3(0.62284f, 29.23043f, 35.40512f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Stew"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("StewDisplay"), "ShoulderR", new Vector3(0.00387f, 0.25927f, 0.00653f), new Vector3(37.49449f, 99.81663f, 14.64683f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["UltimateMeal"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("UltimateMealDisplay"), "Head", new Vector3(0f, 0.3f, 0f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["WyrmOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWyrmOnHit"), "Backpack", new Vector3(0.06495f, 0.0237f, 0.00476f), new Vector3(359.3283f, 276.7793f, 11.97136f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ShockDamageAura"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("ShockDamageAuraDisplay"), "Head", new Vector3(0f, 0.21809f, -0.00173f), new Vector3(0f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ShieldBooster"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShieldBooster"), "GunplateL", new Vector3(-0.1f, 0f, 0f), new Vector3(90f, 330f, 0f), new Vector3(0.1f, 0.1f, 0.1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShieldBooster"), "GunplateR", new Vector3(0.1f, 0f, 0f), new Vector3(90f, 30f, 0f), new Vector3(-0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SpeedOnPickup"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("SpeedOnPickupDisplay"), "Backpack", new Vector3(0f, -0.10403f, -0.06643f), new Vector3(0f, 180f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["PhysicsProjectile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("PhysicsProjectileDisplay"), "Backpack", new Vector3(-0.01552f, 0.07434f, -0.12045f), new Vector3(0f, 180f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Duplicator"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDuplicator"), "Tail1", new Vector3(-0.05611f, 0.02966f, 0.16155f), new Vector3(0f, 180f, 90f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SharedSuffering"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("SharedSufferingDisplay"), "Backpack", new Vector3(0f, -0.05341f, -0.06371f), new Vector3(270f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["JumpDamageStrike"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayJumpDamageStrike"), "FootR", new Vector3(-0.05381f, -0.03769f, 0.05384f), new Vector3(315.8147f, 334.9754f, 165.2825f), new Vector3(0.4f, 0.4f, 0.4f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayJumpDamageStrike"), "FootL", new Vector3(0.04455f, -0.04463f, 0.05855f), new Vector3(315.2382f, 31.96171f, 179.5f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BarrierOnCooldown"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBarrierOnCooldown"), "ThighL", new Vector3(-0.13641f, 0.23834f, 0.04211f), new Vector3(-1E-05f, 180f, 180f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritAtLowerElevation"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("CritAtLowerElevationDisplay"), "Tail3", new Vector3(0.02014f, 0.09681f, -0.00757f), new Vector3(284.6751f, 90.55054f, 36.18997f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Thorns"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRazorwireLeft"), "Tail2", new Vector3(-0.00236f, -0.0297f, -0.01209f), new Vector3(278.8168f, 314.9167f, 48.38494f), new Vector3(0.5f, 0.5f, 0.35f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BleedOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTriTip"), "Gun", new Vector3(0f, -0.03f, 0.3f), new Vector3(0f, 0f, 0f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Pearl"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayPearl"), "Gun", new Vector3(0f, 0f, 0.2f), new Vector3(0f, 0f, 0f), new Vector3(0.08f, 0.08f, 0.08f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ShinyPearl"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShinyPearl"), "Gun", new Vector3(0f, 0f, 0.1f), new Vector3(0f, 180f, 0f), new Vector3(0.08f, 0.08f, 0.08f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Clover"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayClover"), "Backpack", new Vector3(0.01152f, 0.15839f, -0.09838f), new Vector3(304.5544f, 256.8649f, 99.09082f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["UtilitySkillMagazine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAfterburnerShoulderRing"), "Backpack", new Vector3(-0.0815f, -0.01835f, 0.02435f), new Vector3(5.56315f, 355.6273f, 336.9797f), new Vector3(0.4f, 0.4f, 0.4f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAfterburnerShoulderRing"), "Backpack", new Vector3(0.0815f, -0.01835f, 0.02435f), new Vector3(5.56315f, 355.6273f, 23.0203f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MoreMissile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayICBM"), "GunplateL", new Vector3(0.03f, -0.01539116f, 0.05f), new Vector3(90f, 0f, 0f), new Vector3(0.028f, 0.028f, 0.028f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayICBM"), "GunplateR", new Vector3(-0.03f, -0.01539116f, 0.05f), new Vector3(90f, 0f, 0f), new Vector3(0.028f, 0.028f, 0.028f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayICBM"), "GunplateL", new Vector3(0.03f, 0.03329227f, 0.05f), new Vector3(90f, 0f, 0f), new Vector3(0.028f, 0.028f, 0.028f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayICBM"), "GunplateR", new Vector3(-0.03f, 0.03329227f, 0.05f), new Vector3(90f, 0f, 0f), new Vector3(0.028f, 0.028f, 0.028f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayICBM"), "GunplateL", new Vector3(0.03f, -0.06f, 0.05f), new Vector3(90f, 0f, 0f), new Vector3(0.028f, 0.028f, 0.028f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayICBM"), "GunplateR", new Vector3(-0.03f, -0.06f, 0.05f), new Vector3(90f, 0f, 0f), new Vector3(0.028f, 0.028f, 0.028f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RegeneratingScrap"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRegeneratingScrap"), "Backpack", new Vector3(0.12694f, 0.17655f, -0.01814f), new Vector3(34.96067f, 300.9774f, 35.1359f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["StunChanceOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayStunGrenade"), "Pelvis", new Vector3(-0.19498f, -0.03776f, 0.01055f), new Vector3(68.0901f, 91.3905f, 1.4843f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SecondarySkillMagazine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDoubleMag"), "Pelvis", new Vector3(-0.17498f, -0.04273f, -0.0868f), new Vector3(24.23658f, 125.6099f, 333.7793f), new Vector3(0.04f, 0.04f, 0.04f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EquipmentMagazine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBattery"), "Pelvis", new Vector3(0.20315f, -0.02821f, 0.01147f), new Vector3(64.35213f, 260.4114f, 168.8678f), new Vector3(0.08f, 0.08f, 0.08f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Hoof"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHoof"), "ShinR", new Vector3(0.05773f, 0.09391f, -0.0936f), new Vector3(58.82795f, 349.0701f, 42.69231f), new Vector3(0.07f, 0.07f, 0.07f)), ItemDisplays.CreateLimbMaskDisplayRule((LimbFlags)8), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHoof"), "ShinL", new Vector3(-0.10191f, 0.0957f, -0.07128f), new Vector3(64.52972f, 29.94946f, 336.29f), new Vector3(0.07f, 0.07f, 0.07f)), ItemDisplays.CreateLimbMaskDisplayRule((LimbFlags)8))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FireRing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFireRing"), "Tail3", new Vector3(0.02329f, 0.03094f, -0.01047f), new Vector3(90f, 0f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IceRing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayIceRing"), "Tail3", new Vector3(0.02675f, 0.14566f, -0.00201f), new Vector3(90f, 0f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritGlasses"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGlasses"), "Head", new Vector3(0f, 0.155f, 0.121f), new Vector3(315f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LightningStrikeOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayChargedPerforator"), "Head", new Vector3(0f, 0.2f, 0.01f), new Vector3(0f, 0f, 180f), new Vector3(0.7f, 0.7f, 0.7f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FireballsOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFireballsOnHit"), "Head", new Vector3(0f, 0.21098f, 0.16896f), new Vector3(300f, 0f, 180f), new Vector3(0.04f, 0.04f, 0.04f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExtraStatsOnLevelUp"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayPrayerBeads"), "Chest", new Vector3(0.03239f, 0.22821f, 0.02458f), new Vector3(340.2114f, 299.9401f, 339.7234f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IncreaseDamageOnMultiKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayIncreaseDamageOnMultiKill"), "Tail0", new Vector3(0.00383f, 0.20779f, -0.00417f), new Vector3(44.89295f, 4.37085f, 185.917f), new Vector3(0.15f, 0.15f, 0.15f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IncreasePrimaryDamage"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayIncreasePrimaryDamage"), "Pelvis", new Vector3(0.10958f, -0.04417f, 0.13705f), new Vector3(20.27158f, 345.3782f, 330.0971f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SpeedBoostPickup"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayElusiveAntlersLeft"), "Head", new Vector3(-0.07199f, 0.11884f, -0.01768f), new Vector3(0f, 0f, 0f), new Vector3(0.45f, 0.45f, 0.45f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayElusiveAntlersRight"), "Head", new Vector3(0.06589f, 0.11341f, -0.00862f), new Vector3(0f, 0f, 0f), new Vector3(0.45f, 0.45f, 0.45f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AlienHead"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAlienHead"), "Chest", new Vector3(0.12706f, 0.03448f, 0.06134f), new Vector3(9.50851f, 2.61665f, 153.445f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AttackSpeedPerNearbyAllyOrEnemy"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRageCrystal"), "Tail4", new Vector3(0f, 0f, 0f), new Vector3(67.88409f, 267.2958f, 311.0219f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TeleportOnLowHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTeleportOnLowHealth"), "GunplateL", new Vector3(-0.0179f, -0.05322f, 0.00311f), new Vector3(0f, 270f, 0f), new Vector3(0.6f, 0.6f, 0.6f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["DelayedDamage"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDelayedDamage"), "ShinL", new Vector3(-0.00186f, 0.02287f, 0.0892f), new Vector3(354.158f, 8.06312f, 56.36167f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["KnockBackHitEnemies"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayKnockbackFin"), "Tail0", new Vector3(-0.01649f, 0.10845f, 0.09542f), new Vector3(47.10278f, 177.8373f, 180.9326f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExtraShrineItem"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayChanceDoll"), "Backpack", new Vector3(0.05785f, 0.1272f, -0.08404f), new Vector3(357.5297f, 181.0144f, 100.3895f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TriggerEnemyDebuffs"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayNoxiousThorn"), "Head", new Vector3(0.00903f, 0.1291f, 0.05541f), new Vector3(2.53308f, 94.8412f, 345.8926f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LowerPricedChests"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLowerPricedChests"), "Base", new Vector3(-0.72933f, -0.64158f, 0.5645f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["StunAndPierce"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayElectricBoomerang"), "Tail0", new Vector3(-0.00235f, 0.03442f, 0.13f), new Vector3(0f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BoostAllStats"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGrowthNectar"), "Head", new Vector3(-0.00305f, 0.06742f, 0.03835f), new Vector3(82.49606f, 128.1022f, 145.4886f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MeteorAttackOnHighDamage"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMeteorAttackOnHighDamage"), "Head", new Vector3(-0.01431f, 0.16259f, 0.13687f), new Vector3(0f, 0f, 0f), new Vector3(0.35f, 0.35f, 0.35f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ArmorPlate"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRepulsionArmorPlate"), "Pelvis", new Vector3(-0.00035f, 0.09872f, -0.08725f), new Vector3(77.34415f, 189.7604f, 189.3929f), new Vector3(0.15f, 0.15f, 0.15f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AttackSpeedAndMoveSpeed"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayCoffee"), "ThighL", new Vector3(-0.10864f, 0.11365f, -0.07078f), new Vector3(1.26355f, 236.5369f, 207.309f), new Vector3(0.15f, 0.15f, 0.15f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AttackSpeedOnCrit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWolfPelt"), "Head", new Vector3(-0.00535f, 0.12612f, -0.03284f), new Vector3(342.3606f, 359.1009f, 358.9628f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AutoCastEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFossil"), "ThighL", new Vector3(-0.03732f, 0.03897f, 0.11801f), new Vector3(346.4093f, 52.5954f, 359.8542f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Bandolier"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBandolier"), "Chest", new Vector3(-0.05929f, -0.01077f, 0.01516f), new Vector3(311.9094f, 251.8104f, 261.5825f), new Vector3(0.5f, 0.6f, 0.6f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BarrierOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBrooch"), "Chest", new Vector3(-0.15225f, 0.03519f, 0.01904f), new Vector3(72.33425f, 182.1625f, 242.4731f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BarrierOnOverHeal"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAegis"), "ForearmL", new Vector3(0.07507f, 0.07327f, -0.01933f), new Vector3(72.60795f, 36.08724f, 125.3977f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Bear"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBear"), "Stomach", new Vector3(-0.03077f, -0.03934f, 0.14533f), new Vector3(0f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BearVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBearVoid"), "Stomach", new Vector3(-0.03077f, -0.03934f, 0.14533f), new Vector3(0f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BeetleGland"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBeetleGland"), "ThighR1", new Vector3(-0.18792f, 0.11263f, 0.03898f), new Vector3(24.44444f, 264.7158f, 89.32608f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Behemoth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBehemoth"), "ThighR", new Vector3(0.00428f, 0.07545f, 0.13836f), new Vector3(17.71981f, 98.18526f, 176.4893f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BleedOnHitAndExplode"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBleedOnHitAndExplode"), "Pelvis", new Vector3(-0.10703f, -0.06018f, -0.11876f), new Vector3(40.45087f, 249.1818f, 158.3023f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BleedOnHitVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTriTipVoid"), "Gun", new Vector3(0f, -0.03f, 0.3f), new Vector3(0f, 0f, 0f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BonusGoldPackOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTome"), "ThighR", new Vector3(0.11364f, 0.09144f, 0.06294f), new Vector3(1.01091f, 56.63474f, 355.9843f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BossDamageBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAPRound"), "GunplateR", new Vector3(0.01088f, -0.00082f, -0.0115f), new Vector3(90f, 90f, 0f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BounceNearby"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHook"), "ShoulderR", new Vector3(-0.08133f, 0.17466f, 0.06842f), new Vector3(353.5309f, 352.1945f, 335.7864f), new Vector3(0.35f, 0.35f, 0.35f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ChainLightning"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayUkulele"), "Backpack", new Vector3(0.00199f, -0.04756f, -0.10077f), new Vector3(1.566f, 164.3452f, 54.49899f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ChainLightningVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayUkuleleVoid"), "Backpack", new Vector3(0.00199f, -0.04756f, -0.10077f), new Vector3(1.566f, 164.3452f, 54.49899f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CloverVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayCloverVoid"), "Backpack", new Vector3(0.01152f, 0.15839f, -0.09838f), new Vector3(304.5544f, 256.8649f, 99.09082f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CooldownOnCrit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySkull"), "HandL", new Vector3(-0.14655f, 0.16971f, 0.00332f), new Vector3(13.39876f, 286.6394f, 222.3838f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritDamage"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLaserSight"), "Head", new Vector3(0.06957f, 0.0579f, 0.08963f), new Vector3(81.76341f, 49.66093f, 332.8359f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritGlassesVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGlassesVoid"), "Head", new Vector3(0f, 0.155f, 0.121f), new Vector3(315f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Crowbar"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayCrowbar"), "Backpack", new Vector3(-0.15425f, 0.05144f, 0.03124f), new Vector3(3.73689f, 341.4923f, 354.9942f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Dagger"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDagger"), "ShoulderR", new Vector3(0f, 0f, 0f), new Vector3(26.09869f, 24.30682f, 146.2289f), new Vector3(0.75f, 0.75f, 0.75f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["DeathMark"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDeathMark"), "Tail0", new Vector3(-0.11412f, 0.08469f, 0.04677f), new Vector3(359.3568f, 357.1338f, 234.5591f), new Vector3(0.025f, 0.025f, 0.025f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ElementalRingVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayVoidRing"), "Tail3", new Vector3(0.00928f, 0.10906f, -0.0023f), new Vector3(88.07655f, 353.4808f, 78.72786f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EmpowerAlways"], ItemDisplays.CreateLimbMaskDisplayRule((LimbFlags)1), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySunHeadNeck"), "Head", new Vector3(0.00032f, -0.06201f, 0.0138f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySunHead"), "Head", new Vector3(-0.00166f, 0.10606f, 0.00093f), new Vector3(0f, 0f, 0f), new Vector3(0.75f, 0.75f, 0.75f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EnergizedOnEquipmentUse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWarHorn"), "Head", new Vector3(-0.06755f, 0.01318f, 0.25228f), new Vector3(18.31362f, 259.6912f, 11.94619f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EquipmentMagazineVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFuelCellVoid"), "Pelvis", new Vector3(0.20315f, -0.02821f, 0.01147f), new Vector3(64.35213f, 260.4114f, 168.8678f), new Vector3(0.08f, 0.08f, 0.08f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExecuteLowHealthElite"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGuillotine"), "ForearmR", new Vector3(-0.11195f, 0.22944f, 0.02109f), new Vector3(5.90683f, 352.5358f, 282.1368f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExplodeOnDeath"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWilloWisp"), "ThighR", new Vector3(0.16231f, 0.05996f, -0.06133f), new Vector3(353.7531f, 289.5826f, 200.8483f), new Vector3(0.04f, 0.04f, 0.04f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExplodeOnDeathVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWillowWispVoid"), "ThighR", new Vector3(0.16231f, 0.05996f, -0.06133f), new Vector3(353.7531f, 289.5826f, 200.8483f), new Vector3(0.04f, 0.04f, 0.04f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExtraLife"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHippo"), "ShinR", new Vector3(0.09416f, -0.00197f, 0.05577f), new Vector3(339.9112f, 94.61781f, 138.758f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExtraLifeVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHippoVoid"), "ShinR", new Vector3(0.09416f, -0.00197f, 0.05577f), new Vector3(339.9112f, 94.61781f, 138.758f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FocusConvergence"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFocusedConvergence"), "Base", new Vector3(-0.78881f, 0.16863f, 0.73955f), new Vector3(0f, 0f, 0f), new Vector3(0.11f, 0.11f, 0.11f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FallBoots"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGravBoots"), "ShinL", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0.25f, 0.25f, 0.25f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGravBoots"), "ShinR", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FragileDamageBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDelicateWatch"), "ShinL", new Vector3(0.01345f, 0.08105f, -0.0094f), new Vector3(282.4221f, 98.83555f, 329.0534f), new Vector3(0.7f, 1f, 0.7f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GhostOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMask"), "Head", new Vector3(0.00088f, 0.05039f, 0.12008f), new Vector3(0f, 0f, 0f), new Vector3(0.47863f, 0.44695f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GhostOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMask"), "Head", new Vector3(0.00088f, 0.05039f, 0.12008f), new Vector3(0f, 0f, 0f), new Vector3(0.47863f, 0.44695f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GoldOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBoneCrown"), "Head", new Vector3(-0.00117f, 0.05804f, 0.02664f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GoldOnHurt"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRollOfPennies"), "ThighL1", new Vector3(0.19605f, -0.09771f, 0.07283f), new Vector3(74.37505f, 23.61701f, 300.5408f), new Vector3(0.7f, 0.7f, 0.7f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HalfAttackSpeedHalfCooldowns"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLunarShoulderNature"), "ShoulderR", new Vector3(-0.01271f, 0.27127f, 0.00468f), new Vector3(342.1932f, 320.592f, 304.5729f), new Vector3(0.6f, 0.6f, 0.6f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HalfSpeedDoubleHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLunarShoulderStone"), "ShoulderL", new Vector3(-0.02646f, 0.27698f, 0.05546f), new Vector3(20.30007f, 240.1114f, 271.8848f), new Vector3(0.6f, 0.6f, 0.6f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HeadHunter"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySkullcrown"), "Stomach", new Vector3(5E-05f, 0.04429f, 0.00725f), new Vector3(0f, 0f, 0f), new Vector3(0.45f, 0.12f, 0.12f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["WarCryOnMultiKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayPauldron"), "ShoulderR", new Vector3(0.02279f, 0.26913f, 0.03572f), new Vector3(3.55631f, 30.37143f, 343.4723f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HealOnCrit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayScythe"), "Backpack", new Vector3(-0.01327f, 0.04504f, -0.09264f), new Vector3(301.0731f, 257.3573f, 109.6931f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Icicle"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFrostRelic"), "Base", new Vector3(0.78954f, -0.24892f, 0.62346f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HealingPotion"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHealingPotion"), "Pelvis", new Vector3(0.18141f, -0.05561f, 0.05472f), new Vector3(338.4952f, 184.8903f, 207.9614f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HealWhileSafe"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySnail"), "Backpack", new Vector3(-0.10822f, 0.16983f, 0.00847f), new Vector3(11.94675f, 337.4264f, 49.71028f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IgniteOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGasoline"), "ThighL", new Vector3(-0.03813f, 0.20756f, 0.15193f), new Vector3(84.31649f, 195.6799f, 152.0393f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ImmuneToDebuff"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRainCoatBelt"), "Pelvis", new Vector3(-0.00018f, 0.00014f, -0.06183f), new Vector3(2.28f, 0f, 180f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IncreaseHealing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAntler"), "Head", new Vector3(0.06104f, 0.1151f, 0.04013f), new Vector3(0f, 90f, 0f), new Vector3(0.3f, 0.3f, 0.3f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAntler"), "Head", new Vector3(-0.06104f, 0.1151f, 0.04013f), new Vector3(0f, 270f, 0f), new Vector3(-0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Infusion"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayInfusion"), "Backpack", new Vector3(0.16487f, -0.01588f, 0.00038f), new Vector3(0f, 90f, 0f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Meteor"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMeteor"), "Base", new Vector3(1.02137f, 0.49722f, 0.74879f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Blackhole"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGravCube"), "Base", new Vector3(0.79248f, -0.83562f, 0.46792f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BossHunter"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTricornGhost"), "Head", new Vector3(0f, 0.18162f, 0f), new Vector3(16f, 0f, 0f), new Vector3(0.7f, 0.7f, 0.7f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBlunderbuss"), "Base", new Vector3(0.80132f, -0.24434f, 0.67245f), new Vector3(0f, 180f, 180f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BossHunterConsumed"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTricornUsed"), "Head", new Vector3(0f, 0.18162f, 0f), new Vector3(16f, 0f, 0f), new Vector3(0.7f, 0.7f, 0.7f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["JumpBoost"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWaxBird"), "Head", new Vector3(0.00904f, -0.15044f, -0.064f), new Vector3(0f, 0f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["KillEliteFrenzy"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBrainstalk"), "Head", new Vector3(-0.00077f, 0.08343f, 0.03225f), new Vector3(0f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Knurl"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayKnurl"), "ThighR", new Vector3(0.12945f, 0.11616f, 0.0622f), new Vector3(61.87022f, 105.1874f, 91.73286f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LaserTurbine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLaserTurbine"), "UpperarmR", new Vector3(0.03627f, 0.14396f, -0.053f), new Vector3(0f, 0f, 90f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarDagger"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLunarDagger"), "Backpack", new Vector3(0.03507f, 0.02842f, -0.09407f), new Vector3(90f, 0f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarPrimaryReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdEye"), "Head", new Vector3(0.00446f, 0.05152f, 0.12269f), new Vector3(278.5197f, 166.9909f, 187.7403f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarTrinket"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBeads"), "Gun", new Vector3(0.01215f, 0.0969f, -0.2234f), new Vector3(86.41624f, 251.3178f, 194.7648f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarSpecialReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdHeart"), "Base", new Vector3(0.91155f, -0.48007f, 1.04426f), new Vector3(0f, 90f, 0f), new Vector3(0.34f, 0.34f, 0.34f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarSecondaryReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdClaw"), "Chest", new Vector3(-0.09376f, 0.16942f, -0.03693f), new Vector3(2.58124f, 335.2195f, 344.0981f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarUtilityReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdFoot"), "Head", new Vector3(0.00516f, 0.15316f, -0.16246f), new Vector3(0f, 270f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Medkit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMedkit"), "ThighR", new Vector3(0.09496f, 0.15103f, 0.08727f), new Vector3(82.9267f, 120.5083f, 254.2673f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MinorConstructOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDefenseNucleus"), "Base", new Vector3(1.25146f, -0.09873f, 0.62833f), new Vector3(90f, 180f, 0f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Missile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMissileLauncher"), "Chest", new Vector3(0.27813f, 0.46478f, -0.03653f), new Vector3(0f, 0f, 330f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MissileVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMissileLauncherVoid"), "Chest", new Vector3(0.27813f, 0.46478f, -0.03653f), new Vector3(0f, 0f, 330f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MonstersOnShrineUse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMonstersOnShrineUse"), "UpperArmL", new Vector3(-0.06516f, 0.14685f, -0.04184f), new Vector3(11.48984f, 294.3984f, 354.2286f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MoveSpeedOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGrappleHook"), "Pelvis", new Vector3(-0.11461f, 0.02113f, 0.10497f), new Vector3(355.5677f, 182.1791f, 181.4899f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Mushroom"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMushroom"), "Backpack", new Vector3(0.07586f, 0.18254f, -0.03578f), new Vector3(330.7975f, 297.729f, 4.61037f), new Vector3(0.03f, 0.03f, 0.03f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MushroomVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMushroomVoid"), "Backpack", new Vector3(0.07586f, 0.18254f, -0.03578f), new Vector3(330.7975f, 297.729f, 4.61037f), new Vector3(0.03f, 0.03f, 0.03f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["NearbyDamageBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDiamond"), "Chest", new Vector3(-0.07145f, -0.00574f, 0.10456f), new Vector3(14.96445f, 286.0561f, 333.0149f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["NovaOnHeal"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDevilHorns"), "Head", new Vector3(0.03955f, 0.0301f, 0.06149f), new Vector3(0f, 0f, 0f), new Vector3(0.4f, 0.4f, 0.4f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDevilHorns"), "Head", new Vector3(-0.03955f, 0.0301f, 0.06149f), new Vector3(0f, 0f, 0f), new Vector3(-0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["NovaOnLowHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayJellyGuts"), "Head", new Vector3(-0.07719f, 0.20959f, -0.00093f), new Vector3(53.9618f, 171.8431f, 174.183f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["PermanentDebuffOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayScorpion"), "Tail0", new Vector3(0.00257f, 0.20258f, 0.03327f), new Vector3(90f, 0f, 0f), new Vector3(0.75f, 0.75f, 0.6075f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Plant"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayInterstellarDeskPlant"), "ThighL", new Vector3(-0.15288f, 0.2235f, -0.01718f), new Vector3(69.98083f, 265.5492f, 267.2938f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["PersonalShield"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShieldGenerator"), "Pelvis", new Vector3(0.01404f, -0.06519f, -0.10136f), new Vector3(87.08893f, 320.2425f, 319.9176f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["OutOfCombatArmor"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayOddlyShapedOpal"), "Chest", new Vector3(-0.1281f, 0.01391f, 0.05286f), new Vector3(24.14572f, 312.0463f, 4.72856f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Phasing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayStealthkit"), "ShinR", new Vector3(0.00946f, 0.07403f, -0.07466f), new Vector3(78.96772f, 319.7506f, 343.3442f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ShockNearby"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTeslaCoil"), "Backpack", new Vector3(0.00209f, 0.1739f, -0.06446f), new Vector3(315f, 0f, 0f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ParentEgg"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayParentEgg"), "Stomach", new Vector3(-0.03553f, 0.06649f, 0.2087f), new Vector3(0f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["PrimarySkillShuriken"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShuriken"), "ShoulderL", new Vector3(-0.04035f, 0.31098f, 0.0356f), new Vector3(335.644f, 36.25471f, 334.9283f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RandomDamageZone"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRandomDamageZone"), "HandL", new Vector3(0.03357f, 0.13583f, 0.00996f), new Vector3(34.18036f, 281.6178f, 261.1802f), new Vector3(0.03f, 0.03f, 0.03f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RandomEquipmentTrigger"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBottledChaos"), "ThighL", new Vector3(-0.11193f, 0.26046f, 0.07866f), new Vector3(0.82431f, 113.1291f, 193.2905f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RandomlyLunar"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDomino"), "Base", new Vector3(-0.72436f, 0.07925f, 1.10277f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Seed"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySeed"), "ThighR", new Vector3(0.11894f, 0.28257f, 0.05254f), new Vector3(323.6363f, 359.3173f, 32.12323f), new Vector3(0.03f, 0.03f, 0.03f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RepeatHeal"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayCorpseflower"), "Gun", new Vector3(-0.00325f, 0.13829f, 0.22515f), new Vector3(0f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ShieldOnly"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShieldBug"), "Head", new Vector3(0.09274f, 0.14397f, -0.03176f), new Vector3(0f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShieldBug"), "Head", new Vector3(-0.09274f, 0.14397f, -0.03176f), new Vector3(0f, 0f, 0f), new Vector3(-0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintArmor"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBuckler"), "ForearmR", new Vector3(-0.04127f, -0.01818f, -0.00979f), new Vector3(30.18107f, 267.8398f, 185.1548f), new Vector3(0.15f, 0.15f, 0.15f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["StickyBomb"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayStickyBomb"), "Chest", new Vector3(-0.12163f, 0.0342f, 0.09221f), new Vector3(25.72779f, 18.70861f, 24.38773f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Syringe"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySyringeCluster"), "UpperArmL", new Vector3(-0.0318f, -0.06045f, -0.00425f), new Vector3(48.47333f, 253.2913f, 116.6436f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SiphonOnLowHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySiphonOnLowHealth"), "ThighR", new Vector3(0.0652f, 0.13239f, -0.05987f), new Vector3(7.61332f, 325.1557f, 7.00517f), new Vector3(0.07f, 0.07f, 0.07f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SlowOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBauble"), "ThighL", new Vector3(-0.13375f, 0.67717f, -0.12754f), new Vector3(353.8639f, 325.514f, 156.9096f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SlowOnHitVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBaubleVoid"), "ThighL", new Vector3(-0.13375f, 0.67717f, -0.12754f), new Vector3(353.8639f, 325.514f, 156.9096f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySoda"), "Backpack", new Vector3(-0.14686f, 0.12111f, -0.02623f), new Vector3(270f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TPHealingNova"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGlowFlower"), "ShoulderL", new Vector3(-0.00932f, 0.23104f, 0.09131f), new Vector3(290.3646f, 318.6625f, 356.6708f), new Vector3(0.35f, 0.35f, 0.35f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["StrengthenBurn"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGasTank"), "Backpack", new Vector3(-0.16723f, 0.10048f, -0.00014f), new Vector3(0f, 0f, 0f), new Vector3(0.15f, 0.15f, 0.15f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintOutOfCombat"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWhip"), "ThighR", new Vector3(0.11072f, 0.13678f, 0.08052f), new Vector3(25.96364f, 321.262f, 13.95342f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintWisp"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBrokenMask"), "ShoulderL", new Vector3(-0.00059f, 0.23863f, 0.04765f), new Vector3(329.9178f, 307.3566f, 37.13911f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Talisman"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTalisman"), "Base", new Vector3(0.91065f, -0.59127f, 0.64566f), new Vector3(90f, 0f, 0f), new Vector3(0.75f, 0.75f, 0.75f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TitanGoldDuringTP"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGoldHeart"), "Chest", new Vector3(-0.00238f, -0.02948f, 0.12886f), new Vector3(350.1398f, 325.495f, 4.29539f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TreasureCache"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayKey"), "ThighR", new Vector3(0.0045f, 0.09265f, 0.12203f), new Vector3(355.0135f, 290.1322f, 265.0303f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TreasureCacheVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayKeyVoid"), "ThighR", new Vector3(0.0045f, 0.09265f, 0.12203f), new Vector3(355.0135f, 290.1322f, 265.0303f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Squid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySquidTurret"), "ThighL", new Vector3(-0.01673f, 0.16279f, 0.131f), new Vector3(40.37907f, 212.9704f, 250.9433f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["VoidMegaCrabItem"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMegaCrabItem"), "Pelvis", new Vector3(-0.00086f, 0.09409f, -0.11031f), new Vector3(346.1268f, 179.772f, 180.2999f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["WardOnLevel"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWarbanner"), "Backpack", new Vector3(0.01696f, -0.13253f, 0.01578f), new Vector3(89.56389f, 115.9927f, 210.5583f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BFG"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBFG"), "Backpack", new Vector3(0f, 0.16f, -0.07057f), new Vector3(315f, 0f, 0f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Tooth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayToothMeshLarge"), "Chest", new Vector3(0f, 0.15799f, 0.21731f), new Vector3(0f, 0f, 0f), new Vector3(1.5f, 1.5f, 1.5f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayToothMeshSmall1"), "Chest", new Vector3(0.04f, 0.158f, 0.21f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayToothMeshSmall1"), "Chest", new Vector3(-0.04f, 0.158f, 0.21f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Cleanse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWaterPack"), "Backpack", new Vector3(0f, 0f, -0.08f), new Vector3(0f, 180f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CommandMissile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMissileRack"), "Backpack", new Vector3(0f, 0.18f, -0.07f), new Vector3(90f, 180f, 0f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritOnUse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayNeuralImplant"), "Head", new Vector3(0f, 0.04f, 0.2f), new Vector3(0f, 0f, 0f), new Vector3(0.15f, 0.15f, 0.15f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BurnNearby"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayPotion"), "Backpack", new Vector3(0.02737f, 0.03826f, -0.1533f), new Vector3(0f, 0f, 0f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CrippleWard"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEffigy"), "Backpack", new Vector3(0f, -0.05525f, -0.11094f), new Vector3(0f, 0f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FreeChest"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShippingRequestForm"), "Backpack", new Vector3(-0.0526f, -0.06739f, -0.06877f), new Vector3(90f, 180f, 0f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BarrageOnBoss"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTreasuryDividends"), "Backpack", new Vector3(0.15599f, 0.03939f, 0.02332f), new Vector3(0f, 90f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ItemDropChanceOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySonorousEcho"), "UpperarmR", new Vector3(0.03434f, 0.17242f, -0.08821f), new Vector3(16.22399f, 304.0447f, 314.0632f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AlienHead"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAlienHead"), "Gun", new Vector3(0f, -0.08386f, 0.25426f), new Vector3(270f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Feather"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFeather"), "ShoulderL", new Vector3(-0.02135f, 0.23701f, 0.06098f), new Vector3(64.11668f, 315.4507f, 319.5201f), new Vector3(0.02f, 0.02f, 0.02f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FlatHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySteakCurved"), "Head", new Vector3(0.08135f, 0.18742f, -0.11756f), new Vector3(294.2767f, 249.8174f, 227.0657f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Firework"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFirework"), "ShinL", new Vector3(-0.06894f, 0.02273f, 0.127f), new Vector3(69.66143f, 331.6913f, 335.1557f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["DeathProjectile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDeathProjectile"), "Backpack", new Vector3(0f, 0f, -0.19f), new Vector3(0f, 180f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["DroneBackup"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRadio"), "Backpack", new Vector3(0.13771f, 0.16919f, 0.0037f), new Vector3(0f, 90f, 0f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FireBallDash"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEgg"), "Backpack", new Vector3(0f, 0f, -0.16f), new Vector3(270f, 0f, 0f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteEarthEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteMendingAntlers"), "Head", new Vector3(0f, 0.14f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0.7f, 0.7f, 0.7f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteFireEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteHorn"), "Head", new Vector3(0.05749f, 0.12871f, 0.01334f), new Vector3(0f, 330f, 0f), new Vector3(0.1f, 0.1f, 0.1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteHorn"), "Head", new Vector3(-0.05749f, 0.12871f, 0.01334f), new Vector3(0f, 30f, 0f), new Vector3(-0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteHauntedEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteStealthCrown"), "Head", new Vector3(0f, 0.2f, 0.02f), new Vector3(270f, 0f, 0f), new Vector3(0.04f, 0.04f, 0.04f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteIceEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteIceCrown"), "Head", new Vector3(0f, 0.21295f, 0.0483f), new Vector3(270f, 0f, 0f), new Vector3(0.02f, 0.02f, 0.02f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteLunarEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteLunar,Eye"), "Head", new Vector3(0f, 0.22165f, 0.02728f), new Vector3(270f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ElitePoisonEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteUrchinCrown"), "Head", new Vector3(0f, 0.125f, 0.025f), new Vector3(270f, 0f, 0f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteLightningEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteRhinoHorn"), "Head", new Vector3(0f, 0.1202f, 0.05f), new Vector3(300f, 0f, 0f), new Vector3(0.15f, 0.15f, 0.15f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteRhinoHorn"), "Head", new Vector3(-0.01559f, 0.11404f, 0.11539f), new Vector3(330f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteVoidEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAffixVoid"), "Head", new Vector3(0f, 0.03f, 0.1f), new Vector3(90f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Fruit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFruit"), "Backpack", new Vector3(-0.01047f, -0.10851f, -0.09094f), new Vector3(0f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GainArmor"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayElephantFigure"), "Head", new Vector3(0f, 0.22f, 0.05f), new Vector3(0f, 0f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Gateway"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayVase"), "Backpack", new Vector3(0f, 0.06f, -0.15f), new Vector3(270f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GoldGat"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGoldGat"), "Backpack", new Vector3(-0.19594f, 0.14766f, -0.23208f), new Vector3(293.566f, 134.2467f, 253.752f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LifestealOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLifestealOnHit"), "Head", new Vector3(-0.02227f, 0.28026f, 0.10237f), new Vector3(90f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Jetpack"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBugWings"), "Backpack", new Vector3(0f, 0.07f, -0.08f), new Vector3(0f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Lightning"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLightningArmRight"), "ShoulderR", new Vector3(0.03218f, 0.1949f, 0.26412f), new Vector3(0f, 0f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GummyClone"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGummyClone"), "Backpack", new Vector3(-0.02121f, 0.10038f, -0.08999f), new Vector3(356.4817f, 347.4506f, 5.45843f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["QuestVolatileBattery"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBatteryArray"), "Backpack", new Vector3(0f, 0.05f, -0.16f), new Vector3(0f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Recycle"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRecycler"), "Backpack", new Vector3(0f, 0.05f, -0.12f), new Vector3(0f, 90f, 0f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Saw"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySawmerangFollower"), "Base", new Vector3(0.98834f, 0.43524f, 0.84853f), new Vector3(0f, 0f, 0f), new Vector3(0.15f, 0.15f, 0.15f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Molotov"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMolotov"), "Backpack", new Vector3(0.17667f, -0.01687f, 0.00046f), new Vector3(0f, 300f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MultiShopCard"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayExecutiveCard"), "Backpack", new Vector3(0f, 0.2f, 0f), new Vector3(270f, 0f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TeamWarCry"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTeamWarCry"), "Backpack", new Vector3(0f, 0.05f, -0.15f), new Vector3(0f, 180f, 0f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Scanner"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayScanner"), "Backpack", new Vector3(0.03212f, 0.1301f, -0.02931f), new Vector3(300f, 180f, 180f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Tonic"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTonic"), "Backpack", new Vector3(0f, 0.05f, -0.12f), new Vector3(0f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["VendingMachine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayVendingMachine"), "Backpack", new Vector3(0.15611f, 0.16769f, -0.0344f), new Vector3(0f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ArmorReductionOnHit"], ItemDisplays.CreateDisplayRule(CustomShatDisplay, "Tail4", new Vector3(0f, 0.05f, -0.04f), new Vector3(0f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarSun"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySunHead"), "Head", new Vector3(0f, 0.05f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0.7f, 0.7f, 0.7f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySunHeadNeck"), "Chest", new Vector3(0f, 0.14777f, 0f), new Vector3(13.08644f, 358.052f, 5.57808f), new Vector3(1f, 1f, 1f)))); } } public static class CharacterTokens { public static void Init() { AddHenryTokens(); } public static void AddHenryTokens() { string text = "GALE_GaleShockTrooper_"; string text2 = "Six and a half feet of saurian apex predator, your typical skorg Shock Trooper is a well-rounded and versatile soldier. From tungsten-palladium steel armor to a small scale micro missile foundry in their arsenal, the Shock Trooper is prepared to face any conflict.\r\n\r\n< ! > Thanks to the ingenious concept of mounting a solid steel plate in front of your face, Blast Shield protects you from explosions and high velocity shrapnel far more effectively than standard-issue armor.\r\n\r\n< ! > The PRD-12 Auto Shotgun is a versatile weapon, capable of handling enemies at medium to close range. Each individual pellet can proc effects independently.\r\n\r\n< ! > Use your Micro Missiles to handle enemies at longer ranges. They pack just enough punch to proc bands.\r\n\r\n< ! > Overdrive is incredibly useful in both evasive and aggressive maneuvers. Overdrive can be used to dodge attacks with the right timing, or to even stun enemies that are readying a dangerous attack.\r\n\r\n< ! > Let your enemies know true fear with Easy Prey. Fire a six-bore tungsten smart slug at an enemy and watch it bounce to several more monsters. Especially effective when you’ve got a swarm of Blind Pests on your tail."; string text3 = "..and so he left, drawing lines between pink stars."; string text4 = "..and so he vanished, a star dimming in the night sky."; Language.Add(text + "NAME", "Shock Trooper"); Language.Add(text + "DESCRIPTION", text2); Language.Add(text + "SUBTITLE", "Interstellar Bounty Hunter"); Language.Add(text + "LORE", "A lone skorg sits against a rock, gazing up at the night sky. The grass ripples like water from a gentle breeze. A human approaches and sits next to him.\n\n“Never thought of your species as the meditative kind,” spoke the human.\n\n“Earth is much more temperate than Sabbides,” the skorg responded.\n\nThe human nods, aware of the muggy, volcanic jungles the skorg originates from. A few minutes pass as the two continue to stargaze. The human then speaks again.\n\n“You’re thinking of going, aren’t you?”\n\nThe skorg nods. The human speaks again.\n\n“You really shouldn’t. I’ve read the same reports you have. It’s a shitshow down there.“\n\nThe skorg takes a deep breath. Then he sighs.\n\n“A bounty this big could save the resistance. We could finally turn the tide on this stupid war my people are fighting.”\n\nThe human shakes his head in disappointment, but understands from experience. He stands, changing the subject to a lighter tone.\n\n“Regardless, you should hurry to the mess hall with me. I know you’re not a fan of lab grown meat, but you’ve gotta try the printed bighorn steaks.”\n\nThe human receives no response. He turns and leaves without any further words. A moment passes, then the skorg stands, his yellow-eyed gaze fixed on stars only he can see. He closes his eyes, envisioning the stars awash with pink. A tailwind blows across his spiracles, carrying a damp, earthy scent from the symbiotic moss on his scales. With a sigh, he opens his eyes again and speaks a single word.\n\n“P e t r i c h o r .”"); Language.Add(text + "OUTRO_FLAVOR", text3); Language.Add(text + "OUTRO_FAILURE", text4); Language.Add(text + "MAIN_ENDING_ESCAPE_FAILURE_FLAVOR", text4); Language.Add(text + "MASTERY_SKIN_NAME", "Aeron"); Language.Add(text + "PASSIVE_NAME", "Blast Shield"); Language.Add(text + "PASSIVE_DESCRIPTION", "The Shock Trooper takes " + Mathf.FloorToInt((1f - GaleShockTrooperSurvivor.passiveFrontArmorMult) * 100f) + "% reduced damage against projectiles, blasts, and bullets from the front."); Language.Add(text + "PRIMARY_NAME", "PRD-12 Auto Shotgun"); Language.Add(text + "PRIMARY_DESCRIPTION", "Fire a shotgun blast for " + FireShotgun.pelletCount + "x" + Mathf.RoundToInt(FireShotgun.damageCoefficient * 100f) + "% damage."); Language.Add(text + "SECONDARY_NAME", "Micro Missiles"); Language.Add(text + "SECONDARY_DESCRIPTION", "Enter target painting mode to launch heat-seeking missiles that deal " + Mathf.RoundToInt(FireMissiles.damageCoefficient * 100f) + "% damage each. Can store up to " + PaintMissiles.baseMaxStocks + "."); Language.Add(text + "SECONDARY_STICKY_NAME", "Thqwib Bomb"); string text5 = "Throw a Thqwib-mounted bomb that explodes for " + Mathf.RoundToInt(ThrowSticky.damageCoefficient * 100f) + "% damage and triggers on-kill effects."; if (ThrowSticky.baseMaxStocks > 1) { text5 = text5 + " Hold up to " + ThrowSticky.baseMaxStocks + "."; } Language.Add(text + "SECONDARY_STICKY_DESCRIPTION", text5); Language.Add(text + "UTILITY_NAME", "Overdrive"); Language.Add(text + "UTILITY_DESCRIPTION", "Shocking. Dash a short distance while electrocuting nearby enemies for " + Mathf.RoundToInt(ShockDashBase.shockDamageCoefficient * 100f) + "% damage."); Language.Add(text + "SPECIAL_NAME", "Easy Prey"); Language.Add(text + "SPECIAL_DESCRIPTION", "Fire a slug for " + Mathf.RoundToInt(FireRicochetSlug.damageCoefficient * 100f) + "% damage. Upon hitting an enemy, ricochets to up to " + FireRicochetSlug.ricochetCount + " additional targets."); string text6 = "Deploy a drone that inherits all your items. Attacks enemies for " + FireAutoTurret.shotsPerBurst + "x" + Mathf.RoundToInt(FireAutoTurret.damageCoefficient * 100f) + "% damage."; if (MasterDroneTracker.baseMaxDrones > 1) { text6 = text6 + " Can place up to " + MasterDroneTracker.baseMaxDrones + "."; } Language.Add(text + "SPECIAL_DRONE_NAME", "SC4R-4B Hunter Killer Drone"); Language.Add(text + "SPECIAL_DRONE_DESCRIPTION", text6); Language.Add("GALE_GaleShockTrooperDrone_NAME", "Hunter Drone"); Language.Add(Tokens.GetAchievementNameToken("GALE_GaleShockTrooper_unlockAchievement"), "Competitive Contracts"); Language.Add(Tokens.GetAchievementDescriptionToken("GALE_GaleShockTrooper_unlockAchievement"), "Beat a competitor to his bounty on the Moon."); Language.Add(Tokens.GetAchievementNameToken("GALE_GaleShockTrooper_masteryAchievement"), "Shock Trooper: Mastery"); Language.Add(Tokens.GetAchievementDescriptionToken("GALE_GaleShockTrooper_masteryAchievement"), "As the Shock Trooper, beat the game or obliterate on Monsoon."); Language.Add(Tokens.GetAchievementNameToken("GALE_GaleShockTrooper_stickyAchievement"), "Shock Trooper: Demolitions Expert"); Language.Add(Tokens.GetAchievementDescriptionToken("GALE_GaleShockTrooper_stickyAchievement"), "As the Shock Trooper, kill " + StickyAchievement.killsToUnlock + " enemies with explosives in a single run."); Language.Add(Tokens.GetAchievementNameToken("GALE_GaleShockTrooper_droneAchievement"), "Shock Trooper: Reverse Engineering"); Language.Add(Tokens.GetAchievementDescriptionToken("GALE_GaleShockTrooper_droneAchievement"), "As the Shock Trooper, escape the Moon while carrying the Fuel Array."); } } public static class CharacterUnlockables { public static UnlockableDef characterUnlockableDef; public static UnlockableDef masterySkinUnlockableDef; public static UnlockableDef stickybombUnlockableDef; public static UnlockableDef droneUnlockableDef; public static void Init() { characterUnlockableDef = GaleShockTrooper.Modules.Content.CreateAndAddUnlockbleDef("Characters.GaleShockTrooper", Tokens.GetAchievementNameToken("GALE_GaleShockTrooper_unlockAchievement"), CharacterBase.instance.assetBundle.LoadAsset("texGaleShockTrooperPortrait")); masterySkinUnlockableDef = GaleShockTrooper.Modules.Content.CreateAndAddUnlockbleDef("GALE_GaleShockTrooper_masteryUnlockable", Tokens.GetAchievementNameToken("GALE_GaleShockTrooper_masteryAchievement"), CharacterBase.instance.assetBundle.LoadAsset("texMasteryAchievement")); stickybombUnlockableDef = GaleShockTrooper.Modules.Content.CreateAndAddUnlockbleDef("GALE_GaleShockTrooper_stickyUnlockable", Tokens.GetAchievementNameToken("GALE_GaleShockTrooper_stickyAchievement"), CharacterBase.instance.assetBundle.LoadAsset("texMasteryAchievement")); droneUnlockableDef = GaleShockTrooper.Modules.Content.CreateAndAddUnlockbleDef("GALE_GaleShockTrooper_droneUnlockable", Tokens.GetAchievementNameToken("GALE_GaleShockTrooper_droneAchievement"), CharacterBase.instance.assetBundle.LoadAsset("texMasteryAchievement")); } } } namespace GaleShockTrooper.Survivors.GaleShockTrooperSurvivor.Achievements { [RegisterAchievement("GALE_GaleShockTrooper_masteryAchievement", "GALE_GaleShockTrooper_masteryUnlockable", null, 10u, null)] public class MasteryAchievement : BaseMasteryAchievement { public const string identifier = "GALE_GaleShockTrooper_masteryAchievement"; public const string unlockableIdentifier = "GALE_GaleShockTrooper_masteryUnlockable"; public override string RequiredCharacterBody => CharacterBase.instance.bodyName; public override float RequiredDifficultyCoefficient => 3f; } } namespace GaleShockTrooper.Characters.Survivors.GaleShockTrooper.Content { public static class SkillDefs { public static SkillDef Primary_AutoShotgun; public static SkillDef Secondary_MicroMissile; public static SkillDef Secondary_Stickybomb; public static SkillDef Utility_ShockDash; public static SkillDef Special_RicochetSlug; public static SkillDef Special_Drone; public static SkillDef Passive_FrontArmor; } } namespace GaleShockTrooper.Characters.Survivors.GaleShockTrooper.Components { public class MasterDroneTracker : MonoBehaviour { public static int baseMaxDrones = 1; public static int maxExtraDrones = 1; private Queue summonedDrones = new Queue(); public CharacterMaster master; public static GameObject droneMasterPrefab; public static GameObject droneSpawnEffect = Addressables.LoadAssetAsync((object)"RoR2/Base/Loader/OmniImpactVFXLoader.prefab").WaitForCompletion(); public void Awake() { if (!Object.op_Implicit((Object)(object)master)) { master = ((Component)this).GetComponent(); } } public void SummonDroneServer(Vector3 pos, Quaternion rot) { //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Expected O, but got Unknown //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active) { return; } GameObject bodyObject = master.GetBodyObject(); if (!Object.op_Implicit((Object)(object)bodyObject)) { Debug.LogError((object)"SummonDroneServer failed due to null bodyObject.", (Object)(object)this); return; } summonedDrones = new Queue(summonedDrones.Where((CharacterMaster mst) => (Object)(object)mst != (Object)null && !mst.IsDeadAndOutOfLivesServer())); int maxDrones = GetMaxDrones(); int count = summonedDrones.Count; if (count >= maxDrones) { int num = 1 + (count - maxDrones); for (int i = 0; i < num; i++) { if (summonedDrones.TryDequeue(out var result)) { result.TrueKill(); } } } MasterSummon val = new MasterSummon { masterPrefab = droneMasterPrefab, position = pos, rotation = rot, summonerBodyObject = bodyObject, ignoreTeamMemberLimit = true, inventoryToCopy = master.inventory }; CharacterMaster val2 = val.Perform(); if (Object.op_Implicit((Object)(object)val2)) { summonedDrones.Enqueue(val2); CharacterBody body = val2.GetBody(); if (Object.op_Implicit((Object)(object)body)) { EffectManager.SimpleEffect(droneSpawnEffect, body.corePosition, Quaternion.identity, true); } } else { Debug.LogError((object)"SummonDroneServer failed due to summon master.", (Object)(object)this); } } public int GetMaxDrones() { if (Object.op_Implicit((Object)(object)master)) { CharacterBody body = master.GetBody(); if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.skillLocator) && Object.op_Implicit((Object)(object)body.skillLocator.special)) { return Mathf.Min(body.skillLocator.special.maxStock, baseMaxDrones + maxExtraDrones); } } return baseMaxDrones; } } public class ProjectileBeepAfterStick : MonoBehaviour { public int timesToBeep; private int timesBeeped; private float beepDuration; private float beepStopwatch; private ProjectileImpactExplosion pie; public GameObject beepEffectPrefab; private void Start() { //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Expected O, but got Unknown //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Expected O, but got Unknown pie = ((Component)this).GetComponent(); if (!Object.op_Implicit((Object)(object)pie) || !pie.timerAfterImpact) { Object.Destroy((Object)(object)this); return; } beepStopwatch = 0f; beepDuration = pie.lifetimeAfterImpact / (float)timesToBeep; ProjectileStickOnImpact component = ((Component)this).GetComponent(); component.stickEvent = new UnityEvent(); component.stickEvent.AddListener(new UnityAction(ChangeLayer)); } private void ChangeLayer() { ((Component)this).gameObject.layer = LayerIndex.projectileWorldOnly.intVal; } private void FixedUpdate() { //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active && pie.hasImpact && timesBeeped < timesToBeep) { beepStopwatch -= Time.fixedDeltaTime; if (beepStopwatch <= 0f) { beepStopwatch = beepDuration; EffectManager.SimpleEffect(beepEffectPrefab, ((Component)this).transform.position, ((Component)this).transform.rotation, true); timesBeeped++; } } } } } namespace GaleShockTrooper.Characters.Survivors.GaleShockTrooper.Bossfight { public class BossMissionController : MonoBehaviour { public static GameObject prefab; public static BossMissionController instance; public static ItemDef bossStatItem; public static CharacterSpawnCard spawnCard; public static Vector3 spawnpoint = new Vector3(307f, -140f, 395f); public static float spawnDistance = 160f; private static float spawnDistanceSqr = spawnDistance * spawnDistance; public static GameObject spawnEffectPrefab = Addressables.LoadAssetAsync((object)"RoR2/Base/SurvivorPod/PodGroundImpact.prefab").WaitForCompletion(); private static GameObject combatGroupPrefab = Addressables.LoadAssetAsync((object)"RoR2/Base/ShadowClone/ShadowCloneEncounter.prefab").WaitForCompletion(); private GameObject combatGroupInstance; private float stopwatch; private bool spawnedBoss = false; public static event Action onBossDefeatedGlobal; private void Awake() { //IL_0012: Unknown result type (might be due to invalid IL or missing references) stopwatch = 0f; ((Component)this).transform.position = spawnpoint; SpawnBossMusicControllerServer(); } private void SpawnBossMusicControllerServer() { if (NetworkServer.active && !Object.op_Implicit((Object)(object)BossMusicController.instance)) { GameObject val = Object.Instantiate(BossMusicController.prefab); NetworkServer.Spawn(val); BossMusicController component = val.GetComponent(); if (Object.op_Implicit((Object)(object)component)) { BossMusicController.instance = component; } } } private void FixedUpdate() { if (NetworkServer.active && !spawnedBoss) { stopwatch += Time.fixedDeltaTime; if (stopwatch >= 0.1f) { stopwatch -= 0.1f; CheckForPlayers(); } } } private void CheckForPlayers() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_004e: 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_005e: 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 (spawnedBoss) { return; } foreach (CharacterMaster instances in CharacterMaster.instancesList) { if ((int)instances.teamIndex == 1 && !instances.IsDeadAndOutOfLivesServer()) { GameObject bodyObject = instances.GetBodyObject(); Vector3 val = ((Component)this).transform.position - bodyObject.transform.position; if (((Vector3)(ref val)).sqrMagnitude <= spawnDistanceSqr) { SpawnBossServer(); break; } } } } public void SpawnBossServer() { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Expected O, but got Unknown //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Expected O, but got Unknown if (!NetworkServer.active || !Object.op_Implicit((Object)(object)spawnCard)) { return; } spawnedBoss = true; EffectManager.SimpleEffect(spawnEffectPrefab, spawnpoint, Quaternion.identity, true); DirectorSpawnRequest val = new DirectorSpawnRequest((SpawnCard)(object)spawnCard, new DirectorPlacementRule { placementMode = (PlacementMode)0, minDistance = 3f, maxDistance = 20f, spawnOnTarget = ((Component)this).transform }, RoR2Application.rng); val.ignoreTeamMemberLimit = true; val.teamIndexOverride = (TeamIndex)2; val.onSpawnedServer = (Action)Delegate.Combine(val.onSpawnedServer, (Action)delegate(SpawnResult spawnResult) { //IL_0001: 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) if (Object.op_Implicit((Object)(object)spawnResult.spawnedInstance)) { Inventory component3 = spawnResult.spawnedInstance.GetComponent(); if (!Object.op_Implicit((Object)(object)component3)) { } } }); combatGroupInstance = Object.Instantiate(combatGroupPrefab); CombatSquad component = combatGroupInstance.GetComponent(); GameObject val2 = DirectorCore.instance.TrySpawnObject(val); if (Object.op_Implicit((Object)(object)val2)) { CharacterMaster component2 = val2.GetComponent(); if (Object.op_Implicit((Object)(object)component2) && Object.op_Implicit((Object)(object)component)) { component.AddMember(val2.GetComponent()); } } if (component.memberCount > 0) { component.onDefeatedServer += OnBossDefeated; NetworkServer.Spawn(combatGroupInstance); SpawnBossMusicControllerServer(); if (Object.op_Implicit((Object)(object)BossMusicController.instance)) { BossMusicController.instance.StartMusicServer(); } } else { Object.Destroy((Object)(object)combatGroupInstance); combatGroupInstance = null; } } private void OnBossDefeated() { if (Object.op_Implicit((Object)(object)BossMusicController.instance)) { Object.Destroy((Object)(object)BossMusicController.instance); } BossMissionController.onBossDefeatedGlobal?.Invoke(this); if (Object.op_Implicit((Object)(object)instance)) { Object.Destroy((Object)(object)instance); } } private void OnDestroy() { if (Object.op_Implicit((Object)(object)instance) && (Object)(object)instance == (Object)(object)this) { instance = null; } } internal static void Stage_onServerStageBegin(Stage stage) { SceneDef sceneDefForCurrentScene = SceneCatalog.GetSceneDefForCurrentScene(); if (Object.op_Implicit((Object)(object)sceneDefForCurrentScene) && sceneDefForCurrentScene.baseSceneName == "moon2" && (Object)(object)instance == (Object)null) { GameObject val = Object.Instantiate(prefab); BossMissionController component = prefab.GetComponent(); if (Object.op_Implicit((Object)(object)component)) { instance = component; } else { Object.Destroy((Object)(object)val); } } } } public class BossMusicController : NetworkBehaviour { public static GameObject prefab; public static BossMusicController instance; public string soundName; private uint soundID = 0u; internal static int musicSources; public void StartMusicServer() { if (NetworkServer.active) { RpcStartMusicServer(); } } [ClientRpc] private void RpcStartMusicServer() { if (soundID == 0) { musicSources++; soundID = Util.PlaySound(soundName, ((Component)this).gameObject); } } private void OnDestroy() { if ((Object)(object)instance == (Object)(object)this) { instance = null; } if (soundID != 0) { musicSources--; AkSoundEngine.StopPlayingID(soundID); } } public static void MusicController_LateUpdate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); int num = default(int); val.GotoNext(new Func[1] { (Instruction i) => ILPatternMatchingExt.MatchStloc(i, ref num) }); val.EmitDelegate>((Func)((bool b) => b || musicSources > 0)); } } } namespace GaleShockTrooper.Characters.Survivors.GaleShockTrooper.Achievements { [RegisterAchievement("GALE_GaleShockTrooper_droneAchievement", "GALE_GaleShockTrooper_droneUnlockable", null, 3u, null)] public class DroneAchievement : BaseEndingAchievement { public const string identifier = "GALE_GaleShockTrooper_droneAchievement"; public const string unlockableIdentifier = "GALE_GaleShockTrooper_droneUnlockable"; public override bool ShouldGrant(RunReport runReport) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) PlayerInfo val = runReport.FindPlayerInfo(LocalUserManager.GetFirstLocalUser()); if (val != null && val.bodyIndex == GaleShockTrooperSurvivor.bodyIndex && runReport.gameEnding.isWin && val.equipment.Contains(Equipment.QuestVolatileBattery.equipmentIndex)) { return true; } return false; } } [RegisterAchievement("GALE_GaleShockTrooper_stickyAchievement", "GALE_GaleShockTrooper_stickyUnlockable", null, 3u, typeof(StickyServerAchievement))] public class StickyAchievement : BaseAchievement { private class StickyServerAchievement : BaseServerAchievement { public int killedServer = 0; public override void OnInstall() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown ((BaseServerAchievement)this).OnInstall(); killedServer = 0; GlobalEventManager.OnCharacterDeath += new hook_OnCharacterDeath(GlobalEventManager_OnCharacterDeath); } private void Run_onRunStartGlobal(Run obj) { killedServer = 0; } private void GlobalEventManager_OnCharacterDeath(orig_OnCharacterDeath orig, GlobalEventManager self, DamageReport damageReport) { //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_003b: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, damageReport); if (!NetworkServer.active || !Object.op_Implicit((Object)(object)damageReport.attackerBody) || damageReport.attackerBody.bodyIndex != GaleShockTrooperSurvivor.bodyIndex || !((Enum)damageReport.damageInfo.damageType.damageType).HasFlag((Enum)(object)(DamageType)131072)) { return; } killedServer++; if (killedServer >= killsToUnlock) { CharacterBody currentBody = ((BaseServerAchievement)this).GetCurrentBody(); if (Object.op_Implicit((Object)(object)currentBody) && currentBody.bodyIndex == GaleShockTrooperSurvivor.bodyIndex) { ((BaseServerAchievement)this).Grant(); } } } public override void OnUninstall() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown GlobalEventManager.OnCharacterDeath -= new hook_OnCharacterDeath(GlobalEventManager_OnCharacterDeath); ((BaseServerAchievement)this).OnUninstall(); } } public static int killsToUnlock = 200; public const string identifier = "GALE_GaleShockTrooper_stickyAchievement"; public const string unlockableIdentifier = "GALE_GaleShockTrooper_stickyUnlockable"; public override void OnInstall() { ((BaseAchievement)this).OnInstall(); ((BaseAchievement)this).SetServerTracked(true); } public override void OnUninstall() { ((BaseAchievement)this).OnUninstall(); } } [RegisterAchievement("GALE_GaleShockTrooper_unlockAchievement", "Characters.GaleShockTrooper", null, 3u, typeof(UnlockServerAchievement))] public class UnlockAchievement : BaseAchievement { private class UnlockServerAchievement : BaseServerAchievement { public override void OnInstall() { ((BaseServerAchievement)this).OnInstall(); BossMissionController.onBossDefeatedGlobal += BossMissionController_onBossDefeatedGlobal; if (!CharacterConfig.alwaysTriggerBossfight) { Stage.onServerStageBegin += BossMissionController.Stage_onServerStageBegin; } } private void BossMissionController_onBossDefeatedGlobal(BossMissionController obj) { ((BaseServerAchievement)this).Grant(); } public override void OnUninstall() { BossMissionController.onBossDefeatedGlobal -= BossMissionController_onBossDefeatedGlobal; if (!CharacterConfig.alwaysTriggerBossfight) { Stage.onServerStageBegin -= BossMissionController.Stage_onServerStageBegin; } ((BaseServerAchievement)this).OnUninstall(); } } public const string identifier = "GALE_GaleShockTrooper_unlockAchievement"; public const string unlockableIdentifier = "Characters.GaleShockTrooper"; public override void OnInstall() { ((BaseAchievement)this).OnInstall(); ((BaseAchievement)this).SetServerTracked(true); } public override void OnUninstall() { ((BaseAchievement)this).OnUninstall(); } } } namespace GaleShockTrooper.Characters.Drones.GaleShockTrooperDrone { public class CharacterItemDisplaySetup : ItemDisplaysBase { protected override void SetItemDisplayRules(List itemDisplayRules) { //IL_0007: 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_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: 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_0085: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules((Object)(object)Addressables.LoadAssetAsync((object)"RoR2/DLC1/DroneWeapons/DroneWeaponsBoost.asset").WaitForCompletion(), ItemDisplays.CreateDisplayRule(Addressables.LoadAssetAsync((object)"RoR2/DLC1/DroneWeapons/DisplayDroneWeaponLauncher.prefab").WaitForCompletion(), "Body", new Vector3(0f, 0.04f, -0.32f), new Vector3(0f, 180f, 0f), new Vector3(0.2f, 0.2f, 0.2f)), ItemDisplays.CreateDisplayRule(Addressables.LoadAssetAsync((object)"RoR2/DLC1/DroneWeapons/DisplayDroneWeaponMinigun.prefab").WaitForCompletion(), "Body", new Vector3(0f, -0.07f, 0f), new Vector3(0f, 270f, 0f), new Vector3(0.4f, 0.4f, 0.4f)), ItemDisplays.CreateDisplayRule(Addressables.LoadAssetAsync((object)"RoR2/DLC1/DroneWeapons/DisplayDroneWeaponRobotArm.prefab").WaitForCompletion(), "Body", new Vector3(-0.37497f, 0.08954f, 0.00708f), new Vector3(0f, 0f, 0f), new Vector3(0.4f, 0.4f, 0.4f)))); } } public class DroneTargetingControllerSkillDef : SkillDef { protected class InstanceData : BaseSkillInstanceData { public DroneTargetingController dtc; } public override BaseSkillInstanceData OnAssigned([NotNull] GenericSkill skillSlot) { return (BaseSkillInstanceData)(object)new InstanceData { dtc = ((Component)skillSlot).GetComponent() }; } public override bool CanExecute([NotNull] GenericSkill skillSlot) { return ((SkillDef)this).CanExecute(skillSlot) && HasTarget(skillSlot); } public override bool IsReady([NotNull] GenericSkill skillSlot) { return ((SkillDef)this).IsReady(skillSlot) && HasTarget(skillSlot); } public bool HasTarget([NotNull] GenericSkill skillSlot) { DroneTargetingController dtc = ((InstanceData)(object)skillSlot.skillInstanceData).dtc; return (Object)(object)dtc != (Object)null && (Object)(object)dtc.GetCurrentTarget() != (Object)null; } } public class GaleShockTrooperDroneCharacter : CharacterBase { public const string CHARACTER_NAME = "GaleShockTrooperDrone"; public const string TOKEN_PREFIX = "GALE_GaleShockTrooperDrone_"; public static float baseHealth = 110f; public static float baseArmor = 0f; public override string assetBundleName => "galeshocktrooperassetbundle"; public override string bodyName => "GaleShockTrooperDroneBody"; public override string modelPrefabName => "mdlGaleShockTrooperDrone"; public override BodyInfo bodyInfo => new BodyInfo { bodyName = bodyName, bodyNameToken = "GALE_GaleShockTrooperDrone_NAME", subtitleNameToken = "", characterPortrait = assetBundle.LoadAsset("texGaleShockTrooperDronePortrait"), bodyColor = Color32.op_Implicit(new Color32((byte)64, (byte)149, (byte)128, byte.MaxValue)), sortPosition = 100f, crosshair = Addressables.LoadAssetAsync((object)"RoR2/DLC1/Railgunner/RailgunnerCrosshair.prefab").WaitForCompletion(), maxHealth = 110f, healthRegen = 1f, armor = 0f, jumpCount = 1, bodyNameToClone = "Drone1", moveSpeed = 15f, acceleration = 30f, hasRagdoll = false, hasFootstepController = false, modifyCollider = false }; public override CustomRendererInfo[] customRendererInfos => new CustomRendererInfo[1] { new CustomRendererInfo { childName = "Body", material = assetBundle.LoadMaterial("matTrooperWeapon") } }; public override AssetBundle assetBundle { get; protected set; } public override ItemDisplaysBase itemDisplays => new CharacterItemDisplaySetup(); public override GameObject bodyPrefab { get; protected set; } public override CharacterBody prefabCharacterBody { get; protected set; } public override GameObject characterModelObject { get; protected set; } public override CharacterModel prefabCharacterModel { get; protected set; } public override void Initialize() { base.Initialize(); InitializeCharacter(); } public override void InitializeCharacter() { //IL_0039: Unknown result type (might be due to invalid IL or missing references) base.InitializeCharacterBodyPrefab(); base.InitializeItemDisplays(); InitializeEntityStateMachines(); InitializeSkills(); InitializeSkins(); InitializeCharacterMaster(); CharacterBody component = bodyPrefab.GetComponent(); component.bodyFlags = (BodyFlags)2; component.baseMaxHealth = baseHealth; component.levelMaxHealth = component.baseMaxHealth * 0.3f; ((Component)component).gameObject.AddComponent(); TeamComponent component2 = bodyPrefab.GetComponent(); component2.hideAllyCardDisplay = false; } public override void InitializeCharacterMaster() { (MasterDroneTracker.droneMasterPrefab = assetBundle.LoadMaster(bodyPrefab, "GaleShockTrooperDroneMaster")).AddComponent(); } public override void InitializeEntityStateMachines() { Prefabs.ClearEntityStateMachines(bodyPrefab); Prefabs.AddMainEntityStateMachine(bodyPrefab, "Body", typeof(FlyState), typeof(FlyState)); Prefabs.AddEntityStateMachine(bodyPrefab, "Weapon"); } public override void InitializeSkills() { Skills.ClearGenericSkills(bodyPrefab); AddPrimarySkills(); } private void AddPrimarySkills() { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: 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_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Expected O, but got Unknown //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_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Expected O, but got Unknown Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)0); Content.AddEntityState(typeof(FireAutoTurret)); DroneTargetingControllerSkillDef droneTargetingControllerSkillDef = ScriptableObject.CreateInstance(); ((SkillDef)droneTargetingControllerSkillDef).activationState = new SerializableEntityStateType(typeof(FireAutoTurret)); ((SkillDef)droneTargetingControllerSkillDef).stockToConsume = 1; ((SkillDef)droneTargetingControllerSkillDef).baseRechargeInterval = 0f; ((SkillDef)droneTargetingControllerSkillDef).rechargeStock = 1; ((SkillDef)droneTargetingControllerSkillDef).activationStateMachineName = "Weapon"; ((SkillDef)droneTargetingControllerSkillDef).cancelSprintingOnActivation = true; ((SkillDef)droneTargetingControllerSkillDef).fullRestockOnAssign = true; ((SkillDef)droneTargetingControllerSkillDef).dontAllowPastMaxStocks = true; ((SkillDef)droneTargetingControllerSkillDef).baseMaxStock = 1; ((SkillDef)droneTargetingControllerSkillDef).beginSkillCooldownOnSkillEnd = false; ((SkillDef)droneTargetingControllerSkillDef).forceSprintDuringState = false; ((SkillDef)droneTargetingControllerSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)droneTargetingControllerSkillDef).isCombatSkill = true; ((SkillDef)droneTargetingControllerSkillDef).canceledFromSprinting = false; ((SkillDef)droneTargetingControllerSkillDef).requiredStock = 0; ((SkillDef)droneTargetingControllerSkillDef).skillNameToken = "GALE_GaleShockTrooperDrone_SPECIAL_DRONE_NAME"; ((SkillDef)droneTargetingControllerSkillDef).skillDescriptionToken = "GaleShockTrooperDrone_SPECIAL_DRONE_DESCRIPTION"; ((SkillDef)droneTargetingControllerSkillDef).mustKeyPress = false; ((SkillDef)droneTargetingControllerSkillDef).resetCooldownTimerOnUse = false; ((SkillDef)droneTargetingControllerSkillDef).skillName = "GaleShockTrooperDrone_AutoTurret"; ((SkillDef)droneTargetingControllerSkillDef).icon = Addressables.LoadAssetAsync((object)"RoR2/Base/Commando/CommandoBodyFirePistol.asset").WaitForCompletion().icon; Skills.AddPrimarySkills(bodyPrefab, droneTargetingControllerSkillDef); Color val = Color32.op_Implicit(new Color32((byte)50, (byte)150, byte.MaxValue, byte.MaxValue)); GameObject val2 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/DLC1/DroneWeapons/ChainGunOrbEffect.prefab").WaitForCompletion(), "GaleShockTrooperDrone_BulletOrbEffect", false); TrailRenderer component = ((Component)val2.transform.Find("TrailParent/Trail")).GetComponent(); component.startColor = val; component.endColor = val; ContentPacks.effectDefs.Add(new EffectDef(val2)); FireAutoTurret.orbEffectPrefab = val2; GameObject val3 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Commando/MuzzleflashFMJ.prefab").WaitForCompletion(), "GaleShockTrooperDrone_MuzzleflashEffect", false); EffectComponent component2 = val3.GetComponent(); component2.soundName = "Play_engi_R_turret_shot"; ContentPacks.effectDefs.Add(new EffectDef(val3)); FireAutoTurret.muzzleflashEffectPrefab = val3; } public override void InitializeSkins() { ModelSkinController val = ((Component)prefabCharacterModel).gameObject.AddComponent(); ChildLocator component = ((Component)prefabCharacterModel).GetComponent(); RendererInfo[] baseRendererInfos = prefabCharacterModel.baseRendererInfos; List list = new List(); SkinDef item = Skins.CreateSkinDef("DEFAULT_SKIN", assetBundle.LoadAsset("texSkinDefault"), baseRendererInfos, ((Component)prefabCharacterModel).gameObject); list.Add(item); SkinDef val2 = Skins.CreateSkinDef("GALE_GaleShockTrooperDrone_MASTERY_SKIN_NAME", assetBundle.LoadAsset("texSkinMastery"), baseRendererInfos, ((Component)prefabCharacterModel).gameObject); val2.rendererInfos[0].defaultMaterial = assetBundle.LoadMaterial("matTrooperMasteryWeapon"); list.Add(val2); val.skins = list.ToArray(); } } } namespace GaleShockTrooper.Characters.Drones.GaleShockTrooperDrone.Components { public class DroneMasterFixSkin : MonoBehaviour { public void Start() { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) CharacterMaster component = ((Component)this).GetComponent(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.minionOwnership) && Object.op_Implicit((Object)(object)component.minionOwnership.ownerMaster)) { component.loadout.bodyLoadoutManager.SetSkinIndex(BodyCatalog.FindBodyIndex("GaleShockTrooperDroneBody"), component.minionOwnership.ownerMaster.loadout.bodyLoadoutManager.GetSkinIndex(BodyCatalog.FindBodyIndex("GaleShockTrooperBody"))); if (NetworkServer.active) { component.SetLoadoutServer(component.loadout); } } } } public class DroneTargetingController : MonoBehaviour { private BullseyeSearch search; private TeamComponent teamComponent; private HurtBox currentTarget; private CharacterBody characterBody; public static int searchFrequency = 20; private float searchStopwatch; private void Awake() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown search = new BullseyeSearch(); teamComponent = ((Component)this).GetComponent(); characterBody = ((Component)this).GetComponent(); searchStopwatch = 0f; } private void FixedUpdate() { searchStopwatch += Time.fixedDeltaTime; float num = 1f / (float)searchFrequency; if (searchStopwatch >= num) { searchStopwatch -= num; DoSearch(); } } public void DoSearch() { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_004e: 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_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) Ray val; if (Object.op_Implicit((Object)(object)characterBody.inputBank)) { val = characterBody.inputBank.GetAimRay(); } else { Ray val2 = default(Ray); ((Ray)(ref val2)).origin = ((Component)this).transform.position; ((Ray)(ref val2)).direction = ((Component)this).transform.forward; val = val2; } search.teamMaskFilter = TeamMask.all; ((TeamMask)(ref search.teamMaskFilter)).RemoveTeam(teamComponent.teamIndex); ((TeamMask)(ref search.teamMaskFilter)).RemoveTeam((TeamIndex)0); search.filterByLoS = true; search.searchOrigin = ((Ray)(ref val)).origin; search.searchDirection = ((Ray)(ref val)).direction; search.sortMode = (SortMode)2; search.maxDistanceFilter = FireAutoTurret.lockonRange; search.maxAngleFilter = FireAutoTurret.lockonAngle; search.RefreshCandidates(); search.FilterOutGameObject(((Component)this).gameObject); currentTarget = search.GetResults().FirstOrDefault(); } public HurtBox GetCurrentTarget() { return currentTarget; } } }