Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of EnemiesPlus v1.0.5
EnemiesPlus.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using EntityStates; using EntityStates.BeetleGuardMonster; using EntityStates.Bell.BellWeapon; using EntityStates.ImpMonster; using EntityStates.LemurianMonster; using EntityStates.LunarWisp; using EntityStates.MagmaWorm; using EntityStates.Wisp1Monster; using HG; using KinematicCharacterController; using Microsoft.CodeAnalysis; using On.EntityStates.LemurianMonster; using On.EntityStates.LunarWisp; using On.EntityStates.Wisp1Monster; using On.RoR2; using R2API; using RoR2; using RoR2.CharacterAI; using RoR2.Projectile; using RoR2.Skills; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyCompany("EnemiesPlus")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+a6ca0a77f3c426debb87d97738f624a9da9fef75")] [assembly: AssemblyProduct("EnemiesPlus")] [assembly: AssemblyTitle("EnemiesPlus")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace EnemiesPlus { [BepInPlugin("com.Nuxlar.EnemiesPlus", "EnemiesPlus", "1.0.5")] public class EnemiesPlus : BaseUnityPlugin { private GameObject beetleMaster = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Beetle/BeetleMaster.prefab").WaitForCompletion(); private GameObject beetleBody = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Beetle/BeetleBody.prefab").WaitForCompletion(); private GameObject lemMaster = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Lemurian/LemurianMaster.prefab").WaitForCompletion(); private GameObject lemBody = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Lemurian/LemurianBody.prefab").WaitForCompletion(); private GameObject impMaster = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Imp/ImpMaster.prefab").WaitForCompletion(); private GameObject impBody = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Imp/ImpBody.prefab").WaitForCompletion(); private GameObject beetleQueenSpit = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Beetle/BeetleQueenSpit.prefab").WaitForCompletion(); private GameObject beetleQueenAcid = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Beetle/BeetleQueenAcid.prefab").WaitForCompletion(); public static GameObject beetleSpit = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Beetle/BeetleQueenSpit.prefab").WaitForCompletion(), "BeetleSpitProjectileNux"); public static GameObject beetleSpitGhost = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Beetle/BeetleQueenSpitGhost.prefab").WaitForCompletion(), "BeetleSpitProjectileGhostNux"); public static GameObject beetleSpitExplosion = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Beetle/BeetleSpitExplosion.prefab").WaitForCompletion(), "BeetleSpitExplosionNux"); public static GameObject voidSpike = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ImpBoss/ImpVoidspikeProjectile.prefab").WaitForCompletion(), "VoidSpikeNux"); private SpawnCard greaterWispCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/GreaterWisp/cscGreaterWisp.asset").WaitForCompletion(); private SpawnCard bellCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/Bell/cscBell.asset").WaitForCompletion(); private BuffDef beetleJuice = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/Base/Beetle/bdBeetleJuice.asset").WaitForCompletion(); private GameObject beetleGuard = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Beetle/BeetleGuardBody.prefab").WaitForCompletion(); private GameObject beetleGuardMaster = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Beetle/BeetleGuardMaster.prefab").WaitForCompletion(); private BuffDef teamWarcryBuff = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/Base/TeamWarCry/bdTeamWarCry.asset").WaitForCompletion(); private GameObject frenzyAura = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/TeamWarCry/TeamWarCryAura.prefab").WaitForCompletion(), "BGFrenzyAura"); private static Material frenzyMat = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/WardOnLevel/matWarbannerBuffBillboard.mat").WaitForCompletion(); private GameObject bellMaster = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bell/BellMaster.prefab").WaitForCompletion(); private GameObject bell = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bell/BellBody.prefab").WaitForCompletion(); private Sprite fireBuffSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/texBuffOnFireIcon.tif").WaitForCompletion(); private GameObject lunarGolemMaster = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarGolem/LunarGolemMaster.prefab").WaitForCompletion(); private GameObject lunarGolem = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarGolem/LunarGolemBody.prefab").WaitForCompletion(); private GameObject lunarWisp = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarWisp/LunarWispBody.prefab").WaitForCompletion(); private GameObject lunarWispMaster = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarWisp/LunarWispMaster.prefab").WaitForCompletion(); private GameObject lunarWispTrackingBomb = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarWisp/LunarWispTrackingBomb.prefab").WaitForCompletion(), "LunarWispOrbNux"); private GameObject magmaWorm = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/MagmaWorm/MagmaWormBody.prefab").WaitForCompletion(); private GameObject electricWorm = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElectricWorm/ElectricWormBody.prefab").WaitForCompletion(); private GameObject magmaWormMaster = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/MagmaWorm/MagmaWormMaster.prefab").WaitForCompletion(); private GameObject electricWormMaster = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElectricWorm/ElectricWormMaster.prefab").WaitForCompletion(); public static GameObject helfireIgniteEffect = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/BurnNearby/HelfireIgniteEffect.prefab").WaitForCompletion(); public static BuffDef frenzyBuff; public static BuffDef helfireBuff; private ModdedDamageType beetleJuiceDT; private ModdedDamageType helfireDT; private DotIndex helfireDotIdx; public static ConfigEntry<bool> enableBeetleChanges; public static ConfigEntry<bool> enableBeetleFamilyChanges; public static ConfigEntry<bool> enableBeetleGuardChanges; public static ConfigEntry<bool> enableBeetleQueenChanges; public static ConfigEntry<bool> enableLemurianChanges; public static ConfigEntry<bool> enableWispChanges; public static ConfigEntry<bool> enableGreaterWispChanges; public static ConfigEntry<bool> enableBellChanges; public static ConfigEntry<bool> enableImpChanges; public static ConfigEntry<bool> enableWormChanges; public static ConfigEntry<bool> enableLunarGolemChanges; public static ConfigEntry<bool> enableLunarWispChanges; private static ConfigFile EPConfig { get; set; } public void Awake() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown //IL_01a7: 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_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_024d: 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_025d: Unknown result type (might be due to invalid IL or missing references) //IL_0265: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_0280: Unknown result type (might be due to invalid IL or missing references) //IL_02ed: Unknown result type (might be due to invalid IL or missing references) //IL_02f7: Unknown result type (might be due to invalid IL or missing references) //IL_0312: Unknown result type (might be due to invalid IL or missing references) //IL_031c: Unknown result type (might be due to invalid IL or missing references) //IL_033d: Unknown result type (might be due to invalid IL or missing references) //IL_0347: 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_0372: Unknown result type (might be due to invalid IL or missing references) //IL_0393: Unknown result type (might be due to invalid IL or missing references) //IL_039d: Unknown result type (might be due to invalid IL or missing references) //IL_03b8: Unknown result type (might be due to invalid IL or missing references) //IL_03c2: Unknown result type (might be due to invalid IL or missing references) //IL_03ea: Unknown result type (might be due to invalid IL or missing references) //IL_03ef: Unknown result type (might be due to invalid IL or missing references) //IL_03f0: Unknown result type (might be due to invalid IL or missing references) //IL_03fa: 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_046c: Unknown result type (might be due to invalid IL or missing references) //IL_0471: Unknown result type (might be due to invalid IL or missing references) //IL_05bd: Unknown result type (might be due to invalid IL or missing references) //IL_05ca: Unknown result type (might be due to invalid IL or missing references) //IL_05fe: Unknown result type (might be due to invalid IL or missing references) //IL_0603: Unknown result type (might be due to invalid IL or missing references) //IL_065f: Unknown result type (might be due to invalid IL or missing references) //IL_0664: Unknown result type (might be due to invalid IL or missing references) //IL_0532: Unknown result type (might be due to invalid IL or missing references) //IL_0b44: Unknown result type (might be due to invalid IL or missing references) //IL_0b4e: Expected O, but got Unknown //IL_0b55: Unknown result type (might be due to invalid IL or missing references) //IL_0b5f: Expected O, but got Unknown //IL_0b66: Unknown result type (might be due to invalid IL or missing references) //IL_0b70: Expected O, but got Unknown //IL_0b77: Unknown result type (might be due to invalid IL or missing references) //IL_0b81: Expected O, but got Unknown //IL_0b88: Unknown result type (might be due to invalid IL or missing references) //IL_0b92: Expected O, but got Unknown //IL_0b99: Unknown result type (might be due to invalid IL or missing references) //IL_0ba3: Expected O, but got Unknown //IL_0baa: Unknown result type (might be due to invalid IL or missing references) //IL_0bb4: Expected O, but got Unknown //IL_0bbb: Unknown result type (might be due to invalid IL or missing references) //IL_0bc5: Expected O, but got Unknown //IL_0bcc: Unknown result type (might be due to invalid IL or missing references) //IL_0bd6: Expected O, but got Unknown //IL_0bdd: Unknown result type (might be due to invalid IL or missing references) //IL_0be7: Expected O, but got Unknown //IL_0bee: Unknown result type (might be due to invalid IL or missing references) //IL_0bf8: Expected O, but got Unknown //IL_0bff: Unknown result type (might be due to invalid IL or missing references) //IL_0c05: Expected O, but got Unknown //IL_0c18: Unknown result type (might be due to invalid IL or missing references) //IL_0c1d: Unknown result type (might be due to invalid IL or missing references) //IL_0c29: Unknown result type (might be due to invalid IL or missing references) //IL_0c33: Expected O, but got Unknown //IL_0c3a: Unknown result type (might be due to invalid IL or missing references) //IL_0c44: Expected O, but got Unknown //IL_0abb: Unknown result type (might be due to invalid IL or missing references) //IL_0838: Unknown result type (might be due to invalid IL or missing references) //IL_083d: Unknown result type (might be due to invalid IL or missing references) //IL_071d: Unknown result type (might be due to invalid IL or missing references) //IL_0b12: Unknown result type (might be due to invalid IL or missing references) //IL_0b32: Unknown result type (might be due to invalid IL or missing references) //IL_0b38: Unknown result type (might be due to invalid IL or missing references) //IL_08a4: Unknown result type (might be due to invalid IL or missing references) //IL_089a: Unknown result type (might be due to invalid IL or missing references) //IL_092c: Unknown result type (might be due to invalid IL or missing references) //IL_0931: Unknown result type (might be due to invalid IL or missing references) //IL_0998: Unknown result type (might be due to invalid IL or missing references) //IL_098e: Unknown result type (might be due to invalid IL or missing references) EPConfig = new ConfigFile(Paths.ConfigPath + "\\com.Nuxlar.EnemiesPlus.cfg", true); enableBeetleFamilyChanges = EPConfig.Bind<bool>("General", "Enable Beetle Family Changes", true, "Makes BeetleJuice stackable"); enableBeetleChanges = EPConfig.Bind<bool>("General", "Enable Beetle Changes", true, "Adds projectile attack to beetles"); enableBeetleGuardChanges = EPConfig.Bind<bool>("General", "Enable Beetle Guard Changes", true, "Adds rally cry to beetle guards"); enableBeetleQueenChanges = EPConfig.Bind<bool>("General", "Enable Beetle Queen Changes", true, "Adds BeetleJuice to Beetle Queen attacks and spit explodes mid air"); enableLemurianChanges = EPConfig.Bind<bool>("General", "Enable Lemurian Changes", true, "Adds slight leap to Lemurian bite"); enableWispChanges = EPConfig.Bind<bool>("General", "Enable Wisp Changes", true, "Increases Wisp bullet count"); enableGreaterWispChanges = EPConfig.Bind<bool>("General", "Enable Greater Wisp Changes", true, "Decreases Greater Wisp credit cost"); enableBellChanges = EPConfig.Bind<bool>("General", "Enable Brass Contraption Changes", true, "Adds a new ability, BuffBeam to Brass Contraptions"); enableImpChanges = EPConfig.Bind<bool>("General", "Enable Imp Changes", true, "Changes Imp's primary attack to be ranged"); enableWormChanges = EPConfig.Bind<bool>("General", "Enable Worm Changes", true, "Changes Worms to have better targeting and adds a leap attack"); enableLunarGolemChanges = EPConfig.Bind<bool>("General", "Enable Lunar Golem Changes", true, "Adds a new ability, Lunar Shell to Lunar Golems"); enableLunarWispChanges = EPConfig.Bind<bool>("General", "Enable Lunar Wisp Changes", true, "Increases Lunar Wisp movement speed and acceleration, orb applies helfire"); if (enableBeetleFamilyChanges.Value) { beetleJuice.canStack = true; } beetleJuiceDT = DamageAPI.ReserveDamageType(); ModdedDamageTypeHolderComponent val = beetleSpit.AddComponent<ModdedDamageTypeHolderComponent>(); if (enableBeetleQueenChanges.Value) { beetleQueenSpit.GetComponent<ProjectileImpactExplosion>().destroyOnEnemy = true; val.Add(beetleJuiceDT); beetleQueenSpit.AddComponent<ModdedDamageTypeHolderComponent>().Add(beetleJuiceDT); beetleQueenAcid.AddComponent<ModdedDamageTypeHolderComponent>().Add(beetleJuiceDT); } helfireDT = DamageAPI.ReserveDamageType(); lunarWispTrackingBomb.AddComponent<ModdedDamageTypeHolderComponent>().Add(helfireDT); if (enableGreaterWispChanges.Value) { greaterWispCard.directorCreditCost = 120; } bool flag = default(bool); ContentAddition.AddEntityState<BeetleSpit>(ref flag); ContentAddition.AddEntityState<SpikeSlash>(ref flag); ContentAddition.AddEntityState<RallyCry>(ref flag); ContentAddition.AddEntityState<BuffBeamPlus>(ref flag); Transform transform = beetleSpit.transform; transform.localScale /= 2f; beetleSpit.GetComponent<Rigidbody>().useGravity = false; beetleSpit.GetComponent<ProjectileController>().ghostPrefab = beetleSpitGhost; ProjectileImpactExplosion component = beetleSpit.GetComponent<ProjectileImpactExplosion>(); component.impactEffect = beetleSpitExplosion; ((ProjectileExplosion)component).childrenProjectilePrefab = null; component.destroyOnEnemy = true; ((ProjectileExplosion)component).fireChildren = false; ((ProjectileExplosion)component).blastRadius = 2f; Transform transform2 = beetleSpitGhost.transform; transform2.localScale /= 2f; Transform child = beetleSpitGhost.transform.GetChild(1); child.localScale /= 2f; Transform child2 = beetleSpitGhost.transform.GetChild(0).GetChild(0); child2.localScale /= 2f; Transform child3 = beetleSpitGhost.transform.GetChild(1).GetChild(0); child3.localScale /= 2f; Transform child4 = beetleSpitGhost.transform.GetChild(1).GetChild(1); child4.localScale /= 2f; Transform child5 = beetleSpitExplosion.transform.GetChild(0); child5.localScale /= 2f; foreach (Transform item in beetleSpitExplosion.transform.GetChild(0)) { item.localScale /= 2f; } ContentAddition.AddEffect(beetleSpitExplosion); if (enableBeetleChanges.Value) { SkillLocator component2 = beetleBody.GetComponent<SkillLocator>(); component2.primary.skillFamily.variants[0].skillDef.activationState = new SerializableEntityStateType(typeof(BeetleSpit)); component2.primary.skillFamily.variants[0].skillDef.baseRechargeInterval = 3f; component2.secondary.skillFamily.variants[0].skillDef.baseMaxStock = 0; AISkillDriver[] components = beetleMaster.GetComponents<AISkillDriver>(); foreach (AISkillDriver val3 in components) { switch (val3.customName) { case "HeadbuttOffNodegraph": val3.minDistance = 5f; val3.maxDistance = 20f; break; case "ChaseOffNodegraph": val3.maxDistance = 5f; val3.movementType = (MovementType)3; break; case "FollowNodeGraphToTarget": val3.minDistance = 15f; break; } } } SetupBGBuff(); frenzyAura.GetComponent<DestroyOnTimer>().duration = 8f; ((Renderer)((Component)frenzyAura.transform.GetChild(0)).GetComponent<ParticleSystemRenderer>()).sharedMaterial = frenzyMat; ContentAddition.AddEntityState<RallyCry>(ref flag); if (enableBeetleGuardChanges.Value) { AISkillDriver obj = beetleGuardMaster.AddComponent<AISkillDriver>(); obj.customName = "RallyCry"; obj.skillSlot = (SkillSlot)2; obj.requireSkillReady = true; obj.movementType = (MovementType)0; beetleGuard.GetComponent<SkillLocator>().utility.skillFamily.variants[0].skillDef.activationState = new SerializableEntityStateType(typeof(RallyCry)); } SetupHelfireBuff(); if (enableBellChanges.Value) { BuffBeamSetup(); } if (enableImpChanges.Value) { SkillDef skillDef = impBody.GetComponent<SkillLocator>().primary.skillFamily.variants[0].skillDef; skillDef.activationState = new SerializableEntityStateType(typeof(SpikeSlash)); skillDef.baseRechargeInterval = 5f; AISkillDriver[] components = impMaster.GetComponents<AISkillDriver>(); foreach (AISkillDriver val4 in components) { switch (val4.customName) { case "Slash": val4.minDistance = 15f; val4.maxDistance = 45f; break; case "LeaveNodegraph": val4.minDistance = 0f; val4.maxDistance = 15f; val4.shouldSprint = true; val4.movementType = (MovementType)3; break; case "StrafeBecausePrimaryIsntReady": val4.minDistance = 15f; break; case "BlinkBecauseClose": val4.minDistance = 25f; val4.maxDistance = 45f; break; case "PathToTarget": val4.minDistance = 15f; break; } } } if (enableLemurianChanges.Value) { lemBody.GetComponent<SkillLocator>().secondary.skillFamily.variants[0].skillDef.baseRechargeInterval = 1f; } voidSpike.GetComponent<ProjectileImpactExplosion>().destroyOnWorld = true; if (enableWormChanges.Value) { ParticleSystem[] componentsInChildren = ((Component)magmaWorm.GetComponent<ModelLocator>().modelTransform).gameObject.GetComponentsInChildren<ParticleSystem>(); foreach (ParticleSystem obj2 in componentsInChildren) { obj2.startSize *= 2f; } SkillDef skillDef2 = magmaWorm.GetComponent<SkillLocator>().utility.skillFamily.variants[0].skillDef; skillDef2.activationState = new SerializableEntityStateType(typeof(Leap)); skillDef2.baseRechargeInterval = 60f; skillDef2.activationStateMachineName = "Weapon"; AISkillDriver[] components = magmaWormMaster.GetComponents<AISkillDriver>(); foreach (AISkillDriver val5 in components) { if (val5.customName == "Blink") { val5.shouldSprint = true; val5.minDistance = 0f; val5.aimType = (AimType)1; } else { val5.skillSlot = (SkillSlot)(-1); } } componentsInChildren = ((Component)electricWorm.GetComponent<ModelLocator>().modelTransform).gameObject.GetComponentsInChildren<ParticleSystem>(); foreach (ParticleSystem obj3 in componentsInChildren) { obj3.startSize *= 2f; } SkillDef skillDef3 = electricWorm.GetComponent<SkillLocator>().utility.skillFamily.variants[0].skillDef; skillDef3.activationState = new SerializableEntityStateType(typeof(Leap)); skillDef3.baseRechargeInterval = 60f; skillDef3.activationStateMachineName = "Weapon"; components = electricWormMaster.GetComponents<AISkillDriver>(); foreach (AISkillDriver val6 in components) { if (val6.customName == "Blink") { val6.shouldSprint = true; val6.minDistance = 0f; val6.aimType = (AimType)1; } else { val6.skillSlot = (SkillSlot)(-1); } } } if (enableLunarWispChanges.Value) { CharacterBody component3 = lunarWisp.GetComponent<CharacterBody>(); component3.baseMoveSpeed = 20f; component3.baseAcceleration = 20f; AISkillDriver[] components = lunarWispMaster.GetComponents<AISkillDriver>(); foreach (AISkillDriver val7 in components) { switch (val7.customName) { case "Back Up": val7.maxDistance = 15f; break; case "Minigun": val7.minDistance = 15f; val7.maxDistance = 75f; break; case "Chase": val7.minDistance = 30f; val7.shouldSprint = true; break; } } } if (enableLunarGolemChanges.Value) { lunarGolem.GetComponent<SetStateOnHurt>().canBeHitStunned = false; lunarGolem.GetComponent<SkillLocator>().secondary.skillFamily.variants[0].skillDef.interruptPriority = (InterruptPriority)6; (from driver in lunarGolemMaster.GetComponents<AISkillDriver>() where driver.customName == "StrafeAndShoot" select driver).First().requireSkillReady = true; AISkillDriver obj4 = lunarGolemMaster.AddComponent<AISkillDriver>(); obj4.customName = "LunarShell"; obj4.skillSlot = (SkillSlot)1; obj4.requireSkillReady = true; obj4.requireEquipmentReady = false; obj4.driverUpdateTimerOverride = 3f; obj4.moveTargetType = (TargetType)0; obj4.movementType = (MovementType)1; } CharacterMaster.OnBodyStart += new hook_OnBodyStart(RearrangeSkillDrivers); CharacterBody.OnBuffFirstStackGained += new hook_OnBuffFirstStackGained(AddHelfireEffect); CharacterBody.OnBuffFinalStackLost += new hook_OnBuffFinalStackLost(RemoveHelfireEffect); Bite.OnEnter += new hook_OnEnter(BiteLeap); FireEmbers.OnEnter += new hook_OnEnter(IncreaseWispEmbers); SeekingBomb.OnEnter += new hook_OnEnter(ReplaceSeekingBombPrefab); WormBodyPositionsDriver.FixedUpdateServer += new hook_FixedUpdateServer(RemoveRandomTurns); GlobalEventManager.OnHitEnemy += new hook_OnHitEnemy(AddBeetleJuiceStack); GlobalEventManager.OnHitEnemy += new hook_OnHitEnemy(ApplyHelfire); HealthComponent.Heal += new hook_Heal(PreventHelfireHeal); CharacterBody.UpdateAllTemporaryVisualEffects += new hook_UpdateAllTemporaryVisualEffects(AddFrenzyVFX); CustomDotBehaviour val8 = new CustomDotBehaviour(AddPercentHelfireDamage); helfireDotIdx = DotAPI.RegisterDotDef(0.2f, 0f, (DamageColorIndex)7, helfireBuff, val8, (CustomDotVisual)null); RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(AddFrenzyBehavior); RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(AddLunarShellBehavior); } private void RemoveRandomTurns(orig_FixedUpdateServer orig, WormBodyPositionsDriver self) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: 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_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_00f7: 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_012b: Unknown result type (might be due to invalid IL or missing references) //IL_013b: 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_015b: 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_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0178: 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_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0187: 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_0190: 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_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0242: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_0269: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0278: Unknown result type (might be due to invalid IL or missing references) //IL_0283: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_0295: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02a8: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02b8: Unknown result type (might be due to invalid IL or missing references) //IL_02bd: Unknown result type (might be due to invalid IL or missing references) //IL_02ce: Unknown result type (might be due to invalid IL or missing references) //IL_033f: Unknown result type (might be due to invalid IL or missing references) //IL_0345: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Unknown result type (might be due to invalid IL or missing references) //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_020e: 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_00da: Unknown result type (might be due to invalid IL or missing references) if (!enableWormChanges.Value) { orig.Invoke(self); return; } CharacterBody component = ((Component)self).gameObject.GetComponent<CharacterBody>(); Vector3 val = self.referenceTransform.position; if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.master) && ((object)(from machine in ((Component)self).gameObject.GetComponents<EntityStateMachine>() where machine.customName == "Weapon" select machine).First().state).GetType() != typeof(Leap)) { BaseAI component2 = component.masterObject.GetComponent<BaseAI>(); if (Object.op_Implicit((Object)(object)component2) && component2.currentEnemy != null && (Object)(object)component2.currentEnemy.characterBody != (Object)null) { val = component2.currentEnemy.characterBody.corePosition; } } float speedMultiplier = self.wormBodyPositions.speedMultiplier; Vector3 val2 = val - self.chaserPosition; Vector3 normalized = ((Vector3)(ref val2)).normalized; float num = (float)((self.chaserIsUnderground ? ((double)self.maxTurnSpeed) : ((double)self.maxTurnSpeed * (double)self.turnRateCoefficientAboveGround)) * (Math.PI / 180.0)); Vector3 val3 = Vector3.RotateTowards(new Vector3(self.chaserVelocity.x, 0f, self.chaserVelocity.z), new Vector3(normalized.x, 0f, normalized.z) * speedMultiplier, num * Time.fixedDeltaTime, float.PositiveInfinity); val3 = ((Vector3)(ref val3)).normalized * speedMultiplier; float num2 = val.y - self.chaserPosition.y; float num3 = (0f - self.chaserVelocity.y) * self.yDamperConstant; float num4 = num2 * self.ySpringConstant; if (self.allowShoving && (double)Mathf.Abs(self.chaserVelocity.y) < (double)self.yShoveVelocityThreshold && (double)num2 > (double)self.yShovePositionThreshold) { val2 = self.chaserVelocity; self.chaserVelocity = Vector3Utils.XAZ(ref val2, self.chaserVelocity.y + self.yShoveForce * Time.fixedDeltaTime); } if (!self.chaserIsUnderground) { num4 *= self.wormForceCoefficientAboveGround; num3 *= self.wormForceCoefficientAboveGround; } val2 = self.chaserVelocity; self.chaserVelocity = Vector3Utils.XAZ(ref val2, self.chaserVelocity.y + (num4 + num3) * Time.fixedDeltaTime); self.chaserVelocity += Physics.gravity * Time.fixedDeltaTime; self.chaserVelocity = new Vector3(val3.x, self.chaserVelocity.y, val3.z); self.chaserPosition += self.chaserVelocity * Time.fixedDeltaTime; self.chasePositionVisualizer.position = self.chaserPosition; self.chaserIsUnderground = 0.0 - (double)num2 < (double)self.wormBodyPositions.undergroundTestYOffset; self.keyFrameGenerationTimer -= Time.deltaTime; if (!((double)self.keyFrameGenerationTimer > 0.0)) { self.keyFrameGenerationTimer = self.keyFrameGenerationInterval; self.wormBodyPositions.AttemptToGenerateKeyFrame(self.wormBodyPositions.GetSynchronizedTimeStamp() + self.wormBodyPositions.followDelay, self.chaserPosition, self.chaserVelocity); } } private void ReplaceSeekingBombPrefab(orig_OnEnter orig, SeekingBomb self) { if (enableLunarWispChanges.Value) { SeekingBomb.projectilePrefab = lunarWispTrackingBomb; } orig.Invoke(self); } private void AddHelfireEffect(orig_OnBuffFirstStackGained orig, CharacterBody self, BuffDef buffDef) { orig.Invoke(self, buffDef); if ((Object)(object)buffDef == (Object)(object)helfireBuff) { ((Component)self).gameObject.AddComponent<NuxHelfireEffectController>(); } } private void RemoveHelfireEffect(orig_OnBuffFinalStackLost orig, CharacterBody self, BuffDef buffDef) { orig.Invoke(self, buffDef); if ((Object)(object)buffDef == (Object)(object)helfireBuff) { Object.Destroy((Object)(object)((Component)self).gameObject.GetComponent<NuxHelfireEffectController>()); } } private void AddPercentHelfireDamage(DotController self, DotStack dotStack) { //IL_0001: 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_002f: 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_0036: Unknown result type (might be due to invalid IL or missing references) if (dotStack.dotIndex == helfireDotIdx && Object.op_Implicit((Object)(object)self.victimBody) && Object.op_Implicit((Object)(object)self.victimBody.healthComponent)) { dotStack.damageType = (DamageType)(dotStack.damageType | 1); dotStack.damage = self.victimBody.healthComponent.fullHealth * 0.1f / 10f * 0.2f; } } private void AddLunarShellBehavior(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)sender) && sender.HasBuff(Buffs.LunarShell)) { args.armorAdd += 200f; } } private void BuffBeamSetup() { //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_0054: 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_0107: 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_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.skillName = "BuffBeam"; ((Object)val).name = "BuffBeam"; val.skillNameToken = "BuffBeam"; val.skillDescriptionToken = "Creates a beam to a nearby ally and makes them invincible"; val.activationState = new SerializableEntityStateType(typeof(BuffBeamPlus)); val.activationStateMachineName = "Weapon"; val.interruptPriority = (InterruptPriority)6; val.baseMaxStock = 1; val.baseRechargeInterval = 30f; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.dontAllowPastMaxStocks = true; val.beginSkillCooldownOnSkillEnd = true; val.canceledFromSprinting = false; val.forceSprintDuringState = false; val.fullRestockOnAssign = true; val.resetCooldownTimerOnUse = false; val.isCombatSkill = true; val.mustKeyPress = false; val.cancelSprintingOnActivation = false; ContentAddition.AddSkillDef(val); GenericSkill val2 = bell.AddComponent<GenericSkill>(); val2.skillName = "BuffBeam"; SkillFamily val3 = ScriptableObject.CreateInstance<SkillFamily>(); ((Object)val3).name = "BellBuffBeamFamily"; val3.variants = (Variant[])(object)new Variant[1] { new Variant { skillDef = val } }; val2._skillFamily = val3; ContentAddition.AddSkillFamily(val3); bell.GetComponent<SkillLocator>().secondary = val2; AISkillDriver obj = bellMaster.AddComponent<AISkillDriver>(); obj.customName = "BuffBeam"; obj.skillSlot = (SkillSlot)1; obj.requireSkillReady = true; obj.requireEquipmentReady = false; obj.maxUserHealthFraction = 0.8f; obj.moveTargetType = (TargetType)0; } private void IncreaseWispEmbers(orig_OnEnter orig, FireEmbers self) { if (enableWispChanges.Value) { FireEmbers.damageCoefficient = 0.75f; FireEmbers.bulletCount = 6; } orig.Invoke(self); } private void SetupBGBuff() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) frenzyBuff = ScriptableObject.CreateInstance<BuffDef>(); ((Object)frenzyBuff).name = "BGFrenzy"; frenzyBuff.canStack = false; frenzyBuff.isCooldown = false; frenzyBuff.isDebuff = false; frenzyBuff.buffColor = Color.yellow; frenzyBuff.iconSprite = teamWarcryBuff.iconSprite; ((Object)frenzyBuff).name = ((Object)frenzyBuff).name; ContentAddition.AddBuffDef(frenzyBuff); } private void SetupHelfireBuff() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) helfireBuff = ScriptableObject.CreateInstance<BuffDef>(); ((Object)helfireBuff).name = "Helfire"; helfireBuff.canStack = true; helfireBuff.isCooldown = false; helfireBuff.isDebuff = true; helfireBuff.buffColor = Color.cyan; helfireBuff.iconSprite = fireBuffSprite; ((Object)helfireBuff).name = ((Object)helfireBuff).name; ContentAddition.AddBuffDef(helfireBuff); } private void RearrangeSkillDrivers(orig_OnBodyStart orig, CharacterMaster self, CharacterBody body) { orig.Invoke(self, body); if (((Object)body).name == "BeetleGuardBody(Clone)" && enableBeetleGuardChanges.Value) { int num = 2; AISkillDriver[] skillDrivers = ((Component)self).gameObject.GetComponent<BaseAI>().skillDrivers; if (num >= 0 && num < skillDrivers.Length) { AISkillDriver val = skillDrivers[num]; skillDrivers[num] = skillDrivers[^1]; skillDrivers[^1] = val; } ((Component)self).gameObject.GetComponent<BaseAI>().skillDrivers = skillDrivers; } if (((Object)body).name == "BellBody(Clone)" && enableBellChanges.Value) { int num2 = 2; AISkillDriver[] skillDrivers2 = ((Component)self).gameObject.GetComponent<BaseAI>().skillDrivers; if (num2 >= 0 && num2 < skillDrivers2.Length) { AISkillDriver val2 = skillDrivers2[num2]; skillDrivers2[num2] = skillDrivers2[^1]; skillDrivers2[^1] = val2; } ((Component)self).gameObject.GetComponent<BaseAI>().skillDrivers = skillDrivers2; } if (((Object)body).name == "LunarGolemBody(Clone)" && enableLunarGolemChanges.Value) { int num3 = 0; AISkillDriver[] array = ((Component)self).gameObject.GetComponent<BaseAI>().skillDrivers; if (num3 >= 0 && num3 < array.Length) { List<AISkillDriver> list = new List<AISkillDriver>(); list.Add(array[^1]); for (int i = 0; i < array.Length - 1; i++) { if (i != array.Length - 1) { list.Add(array[i]); } } array = list.ToArray(); } ((Component)self).gameObject.GetComponent<BaseAI>().skillDrivers = array; } if (!(((Object)body).name == "MagmaWormBody(Clone)")) { return; } int num4 = 0; AISkillDriver[] array2 = ((Component)self).gameObject.GetComponent<BaseAI>().skillDrivers; if (num4 >= 0 && num4 < array2.Length) { List<AISkillDriver> list2 = new List<AISkillDriver>(); list2.Add(array2[1]); for (int j = 0; j < array2.Length - 1; j++) { if (j != array2.Length - 1) { list2.Add(array2[j]); } } array2 = list2.ToArray(); } ((Component)self).gameObject.GetComponent<BaseAI>().skillDrivers = array2; } private void AddFrenzyVFX(orig_UpdateAllTemporaryVisualEffects orig, CharacterBody self) { orig.Invoke(self); self.UpdateSingleTemporaryVisualEffect(ref self.teamWarCryEffectInstance, frenzyAura, self.bestFitRadius, self.HasBuff(frenzyBuff), "HeadCenter"); } private void AddFrenzyBehavior(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)sender) && sender.HasBuff(frenzyBuff)) { args.attackSpeedMultAdd += 0.25f; args.moveSpeedMultAdd += 0.25f; } } private float PreventHelfireHeal(orig_Heal orig, HealthComponent self, float amount, ProcChainMask procChainMask, bool nonRegen) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)self.body) && self.body.HasBuff(helfireBuff)) { return 0f; } return orig.Invoke(self, amount, procChainMask, nonRegen); } private void ApplyHelfire(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim) { //IL_0070: 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) orig.Invoke(self, damageInfo, victim); if (Object.op_Implicit((Object)(object)damageInfo.attacker) && Object.op_Implicit((Object)(object)victim) && !damageInfo.rejected) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); CharacterBody component2 = victim.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component2) && (component.HasBuff(Buffs.LunarShell) || DamageAPI.HasModdedDamageType(damageInfo, helfireDT))) { DotController.InflictDot(victim, damageInfo.attacker, helfireDotIdx, 10f, 1f, (uint?)null); } } } private void AddBeetleJuiceStack(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, damageInfo, victim); if (!DamageAPI.HasModdedDamageType(damageInfo, beetleJuiceDT) || !Object.op_Implicit((Object)(object)victim) || damageInfo.rejected) { return; } CharacterBody component = victim.GetComponent<CharacterBody>(); if (!Object.op_Implicit((Object)(object)component)) { return; } component.AddTimedBuff(beetleJuice, 5f); foreach (TimedBuff timedBuff in component.timedBuffs) { if (timedBuff.buffIndex == Buffs.BeetleJuice.buffIndex) { timedBuff.timer = 5f; } } } private void BiteLeap(orig_OnEnter orig, Bite self) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0054: 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_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_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0046: 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_004d: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (enableLemurianChanges.Value) { Ray aimRay = ((BaseState)self).GetAimRay(); Vector3 val = ((Ray)(ref aimRay)).direction; val.y = 0f; float magnitude = ((Vector3)(ref val)).magnitude; if ((double)magnitude > 0.0) { val /= magnitude; } CharacterMotor characterMotor = ((EntityState)self).characterMotor; Vector3 velocity = val * ((EntityState)self).characterBody.moveSpeed * 2f; velocity.y = ((EntityState)self).characterBody.jumpPower * 0.25f; characterMotor.velocity = velocity; ((BaseCharacterController)((EntityState)self).characterMotor).Motor.ForceUnground(); } } } public class BeetleSpit : BaseState { public static float baseDuration = 1f; public static float damageCoefficient; public static string attackSoundString = "Play_beetle_worker_attack"; private GameObject projectilePrefab = EnemiesPlus.beetleSpit; private bool hasFired; private float stopwatch; private float duration; public override void OnEnter() { ((BaseState)this).OnEnter(); stopwatch = 0f; duration = baseDuration / base.attackSpeedStat; ((EntityState)this).GetModelTransform(); Util.PlayAttackSpeedSound(attackSoundString, ((EntityState)this).gameObject, 2f); ((EntityState)this).PlayCrossfade("Body", "EmoteSurprise", "Headbutt.playbackRate", duration, 0.1f); } public override void FixedUpdate() { //IL_0038: 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_004b: 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_0057: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); stopwatch += Time.deltaTime; if (!hasFired && (double)stopwatch >= (double)duration) { hasFired = true; Ray aimRay = ((BaseState)this).GetAimRay(); ProjectileManager.instance.FireProjectile(projectilePrefab, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, base.damageStat * 1f, 0f, Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f); } if (!((double)((EntityState)this).fixedAge < (double)duration) && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } public class BuffBeamPlus : BaseState { public static float duration; public static GameObject buffBeamPrefab; public static AnimationCurve beamWidthCurve; public static string playBeamSoundString; public static string stopBeamSoundString; public HurtBox target; private float healTimer; private float healInterval; private float healChunk; private CharacterBody targetBody; private GameObject buffBeamInstance; private BezierCurveLine healBeamCurve; private Transform muzzleTransform; private Transform beamTipTransform; public override void OnEnter() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown //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_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_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_008b: 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_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Invalid comparison between Unknown and I4 //IL_0157: 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_013e: Invalid comparison between Unknown and I4 ((BaseState)this).OnEnter(); Util.PlaySound(BuffBeam.playBeamSoundString, ((EntityState)this).gameObject); Ray aimRay = ((BaseState)this).GetAimRay(); BullseyeSearch val = new BullseyeSearch(); val.teamMaskFilter = TeamMask.none; if (Object.op_Implicit((Object)(object)((EntityState)this).teamComponent)) { ((TeamMask)(ref val.teamMaskFilter)).AddTeam(((EntityState)this).teamComponent.teamIndex); } val.filterByLoS = false; val.maxDistanceFilter = 50f; val.maxAngleFilter = 360f; val.searchOrigin = ((Ray)(ref aimRay)).origin; val.searchDirection = ((Ray)(ref aimRay)).direction; val.sortMode = (SortMode)1; val.RefreshCandidates(); val.FilterOutGameObject(((EntityState)this).gameObject); List<HurtBox> list = val.GetResults().ToList(); if (list.Count > 0) { foreach (HurtBox item in list) { if (Object.op_Implicit((Object)(object)item.healthComponent) && Object.op_Implicit((Object)(object)item.healthComponent.body) && item.healthComponent.alive) { CharacterBody body = item.healthComponent.body; if (Object.op_Implicit((Object)(object)body) && ((Object)body).name != "BellBody(Clone)" && ((int)body.hullClassification == 1 || (int)body.hullClassification == 2)) { target = item; targetBody = body; body.AddBuff(Buffs.Immune.buffIndex); break; } } } } if (!Object.op_Implicit((Object)(object)target) && !Object.op_Implicit((Object)(object)targetBody)) { ((EntityState)this).outer.SetNextStateToMain(); return; } string text = "Muzzle"; Transform modelTransform = ((EntityState)this).GetModelTransform(); if (!Object.op_Implicit((Object)(object)modelTransform)) { return; } ChildLocator component = ((Component)modelTransform).GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component)) { muzzleTransform = component.FindChild(text); buffBeamInstance = Object.Instantiate<GameObject>(BuffBeam.buffBeamPrefab); ChildLocator component2 = buffBeamInstance.GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component2)) { beamTipTransform = component2.FindChild("BeamTip"); } healBeamCurve = buffBeamInstance.GetComponentInChildren<BezierCurveLine>(); } } private void UpdateHealBeamVisuals() { //IL_0032: 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_0057: 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) healBeamCurve.lineRenderer.widthMultiplier = BuffBeam.beamWidthCurve.Evaluate(((EntityState)this).age / BuffBeam.duration); healBeamCurve.v0 = muzzleTransform.forward * 3f; ((Component)healBeamCurve).transform.position = muzzleTransform.position; if (Object.op_Implicit((Object)(object)target)) { beamTipTransform.position = ((Component)targetBody.mainHurtBox).transform.position; } } public override void Update() { ((EntityState)this).Update(); UpdateHealBeamVisuals(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if ((!((double)((EntityState)this).fixedAge < (double)BuffBeam.duration) || (Object)(object)target == (Object)null) && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { //IL_0034: Unknown result type (might be due to invalid IL or missing references) Util.PlaySound(BuffBeam.stopBeamSoundString, ((EntityState)this).gameObject); EntityState.Destroy((Object)(object)buffBeamInstance); if (Object.op_Implicit((Object)(object)targetBody)) { targetBody.RemoveBuff(Buffs.Immune.buffIndex); } ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)6; } public override void OnSerialize(NetworkWriter writer) { //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) ((EntityState)this).OnSerialize(writer); HurtBoxReference val = HurtBoxReference.FromHurtBox(target); ((HurtBoxReference)(ref val)).Write(writer); } public override void OnDeserialize(NetworkReader reader) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).OnDeserialize(reader); HurtBoxReference val = default(HurtBoxReference); ((HurtBoxReference)(ref val)).Read(reader); GameObject obj = ((HurtBoxReference)(ref val)).ResolveGameObject(); target = ((obj != null) ? obj.GetComponent<HurtBox>() : null); } } public class RallyCry : BaseState { public float baseDuration = 3.5f; public float buffDuration = 8f; private Animator modelAnimator; private List<HurtBox> nearbyAllies; private float duration; private bool hasCastBuff; public override void OnEnter() { //IL_001a: 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_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Expected O, but got Unknown //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_0074: 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_0081: 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_008d: 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) ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; Ray aimRay = ((BaseState)this).GetAimRay(); BullseyeSearch val = new BullseyeSearch(); val.teamMaskFilter = TeamMask.none; if (Object.op_Implicit((Object)(object)((EntityState)this).teamComponent)) { ((TeamMask)(ref val.teamMaskFilter)).AddTeam(((EntityState)this).teamComponent.teamIndex); } val.filterByLoS = false; val.maxDistanceFilter = 16f; val.maxAngleFilter = 360f; val.searchOrigin = ((Ray)(ref aimRay)).origin; val.searchDirection = ((Ray)(ref aimRay)).direction; val.sortMode = (SortMode)1; val.RefreshCandidates(); val.FilterOutGameObject(((EntityState)this).gameObject); nearbyAllies = val.GetResults().ToList(); modelAnimator = ((EntityState)this).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { Util.PlayAttackSpeedSound("Play_beetle_guard_death", ((EntityState)this).gameObject, 0.5f); ((EntityState)this).PlayCrossfade("Body", "DefenseUp", "DefenseUp.playbackRate", duration, 0.2f); } } public override void FixedUpdate() { //IL_004b: 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) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)modelAnimator) && (double)modelAnimator.GetFloat("DefenseUp.activate") > 0.5 && !hasCastBuff) { ScaleParticleSystemDuration component = Object.Instantiate<GameObject>(DefenseUp.defenseUpPrefab, ((EntityState)this).transform.position, Quaternion.identity, ((EntityState)this).transform).GetComponent<ScaleParticleSystemDuration>(); if (Object.op_Implicit((Object)(object)component)) { component.newDuration = buffDuration; } hasCastBuff = true; if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(Buffs.SmallArmorBoost, buffDuration); foreach (HurtBox nearbyAlly in nearbyAllies) { if (Object.op_Implicit((Object)(object)nearbyAlly.healthComponent.body) && !nearbyAlly.healthComponent.body.HasBuff(EnemiesPlus.frenzyBuff)) { nearbyAlly.healthComponent.body.AddTimedBuff(EnemiesPlus.frenzyBuff, buffDuration); } } } } if (!((double)((EntityState)this).fixedAge < (double)duration) && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } public class SpikeSlash : BaseState { public static float baseDuration = 3.5f; public static float damageCoefficient = 4f; public static float procCoefficient; public static float selfForce; public static float forceMagnitude = 16f; public static GameObject hitEffectPrefab; public static GameObject swipeEffectPrefab; public static string enterSoundString; public static string slashSoundString; public static float walkSpeedPenaltyCoefficient; public static GameObject projectilePrefab = EnemiesPlus.voidSpike; private Animator modelAnimator; private float duration; private int slashCount; private Transform modelTransform; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = DoubleSlash.baseDuration / base.attackSpeedStat; modelAnimator = ((EntityState)this).GetModelAnimator(); modelTransform = ((EntityState)this).GetModelTransform(); ((EntityState)this).characterMotor.walkSpeedPenaltyCoefficient = DoubleSlash.walkSpeedPenaltyCoefficient; Util.PlayAttackSpeedSound(DoubleSlash.enterSoundString, ((EntityState)this).gameObject, base.attackSpeedStat); if (Object.op_Implicit((Object)(object)modelAnimator)) { ((EntityState)this).PlayAnimation("Gesture, Additive", "DoubleSlash", "DoubleSlash.playbackRate", duration); ((EntityState)this).PlayAnimation("Gesture, Override", "DoubleSlash", "DoubleSlash.playbackRate", duration); } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(duration + 2f); } } public override void OnExit() { ((EntityState)this).characterMotor.walkSpeedPenaltyCoefficient = 1f; ((EntityState)this).OnExit(); } private void HandleSlash(string animatorParamName, string muzzleName, string hitBoxGroupName) { //IL_004b: 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_005d: 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) if (!((double)modelAnimator.GetFloat(animatorParamName) <= 0.100000001490116)) { Util.PlaySound(DoubleSlash.slashSoundString, ((EntityState)this).gameObject); EffectManager.SimpleMuzzleFlash(DoubleSlash.swipeEffectPrefab, ((EntityState)this).gameObject, muzzleName, true); slashCount++; Ray aimRay = ((BaseState)this).GetAimRay(); ProjectileManager.instance.FireProjectile(projectilePrefab, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, base.damageStat * 1f, 0f, Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (NetworkServer.active && Object.op_Implicit((Object)(object)modelAnimator)) { switch (slashCount) { case 0: HandleSlash("HandR.hitBoxActive", "SwipeRight", "HandR"); break; case 1: HandleSlash("HandL.hitBoxActive", "SwipeLeft", "HandL"); break; } } if (!((double)((EntityState)this).fixedAge < (double)duration) && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } public class NuxHelfireEffectController : MonoBehaviour { private CharacterBody victimBody; private ModelLocator modelLocator; private BurnEffectController helfireEffectController; private GameObject helfireEffectPrefab = EnemiesPlus.helfireIgniteEffect; private void Start() { victimBody = ((Component)this).GetComponent<CharacterBody>(); modelLocator = ((Component)this).GetComponent<ModelLocator>(); AddHelfireEffect(); } private void OnDestroy() { RemoveHelfireEffect(); } private void AddHelfireEffect() { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Expected O, but got Unknown victimBody = (Object.op_Implicit((Object)(object)victimBody) ? victimBody : ((Component)this).GetComponent<CharacterBody>()); if (Object.op_Implicit((Object)(object)victimBody)) { EffectManager.SpawnEffect(helfireEffectPrefab, new EffectData { origin = victimBody.corePosition }, true); } modelLocator = (Object.op_Implicit((Object)(object)modelLocator) ? modelLocator : ((Component)this).GetComponent<ModelLocator>()); if (Object.op_Implicit((Object)(object)modelLocator) && Object.op_Implicit((Object)(object)modelLocator.modelTransform)) { helfireEffectController = ((Component)this).gameObject.AddComponent<BurnEffectController>(); helfireEffectController.effectType = BurnEffectController.helfireEffect; helfireEffectController.target = ((Component)modelLocator.modelTransform).gameObject; } } private void RemoveHelfireEffect() { if (Object.op_Implicit((Object)(object)helfireEffectController)) { Object.Destroy((Object)(object)helfireEffectController); } } } }