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 VariantPack TheOriginal30 v2.2.1
plugins/TheOriginal30.dll
Decompiled 2 months agousing 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.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using EntityStates; using EntityStates.Croco; using EntityStates.GreaterWispMonster; using EntityStates.JellyfishMonster.MOAJ; using EntityStates.JellyfishMonster.Nuclear; using EntityStates.JellyfishMonster.Spectral; using EntityStates.LemurianBruiserMonster; using EntityStates.Mage.Weapon; using EntityStates.ParentMonster; using HG; using HG.Coroutines; using HG.Reflection; using KinematicCharacterController; using LoadingScreenFix; using MSU; using MSU.Config; using R2API; using R2API.Utils; using RoR2; using RoR2.ContentManagement; using RoR2.Navigation; using RoR2.Projectile; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using VAPI; using VAPI.Components; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: OptIn] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] namespace EntityStates.ScavMonster.Dream { public class DreamLuck : BaseState { private float duration; private PickupIndex dropPickup; private int itemsToGrant; private PickupDisplay pickupDisplay; public override void OnEnter() { //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0142: 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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: 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_00b8: 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_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Expected I4, but got Unknown ((BaseState)this).OnEnter(); duration = FindItem.baseDuration / base.attackSpeedStat; ((EntityState)this).PlayCrossfade("Body", "SitRummage", "Sit.playbackRate", duration, 0.1f); Util.PlaySound(FindItem.sound, ((EntityState)this).gameObject); if (((EntityState)this).isAuthority) { WeightedSelection<List<PickupIndex>> obj = new WeightedSelection<List<PickupIndex>>(8); obj.AddChoice(Run.instance.availableTier3DropList.Where(PickupIsNonBlacklistedItem).ToList(), FindItem.tier3Chance); List<PickupIndex> list = obj.Evaluate(Random.value); dropPickup = list[Random.Range(0, list.Count)]; PickupDef pickupDef = PickupCatalog.GetPickupDef(dropPickup); if (pickupDef != null) { ItemDef itemDef = ItemCatalog.GetItemDef(pickupDef.itemIndex); if ((Object)(object)itemDef != (Object)null) { itemsToGrant = 0; ItemTier tier = itemDef.tier; switch ((int)tier) { case 0: itemsToGrant = FindItem.tier1Count; break; case 1: itemsToGrant = FindItem.tier2Count; break; case 2: itemsToGrant = FindItem.tier3Count; break; default: itemsToGrant = 1; break; } } } } Transform val = ((BaseState)this).FindModelChild("PickupDisplay"); pickupDisplay = ((Component)val).GetComponent<PickupDisplay>(); PickupDisplay obj2 = pickupDisplay; UniquePickup val2 = new UniquePickup(dropPickup); obj2.SetPickup(ref val2, false); } public override void OnExit() { //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) PickupDisplay obj = pickupDisplay; UniquePickup val = new UniquePickup(PickupIndex.none); obj.SetPickup(ref val, false); ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0029: 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_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)new GrantItem { dropPickup = dropPickup, itemsToGrant = itemsToGrant }); } } public override void OnSerialize(NetworkWriter writer) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).OnSerialize(writer); NetworkExtensions.Write(writer, dropPickup); } public override void OnDeserialize(NetworkReader reader) { //IL_0009: 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) ((EntityState)this).OnDeserialize(reader); dropPickup = NetworkExtensions.ReadPickupIndex(reader); } private bool PickupIsNonBlacklistedItem(PickupIndex pickupIndex) { //IL_0000: 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) PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupIndex); if (pickupDef == null) { return false; } ItemDef itemDef = ItemCatalog.GetItemDef(pickupDef.itemIndex); if ((Object)(object)itemDef != (Object)null) { return itemDef.DoesNotContainTag((ItemTag)4); } return false; } } public class EnterLuckySit : BaseSitState { private float duration; public override void OnEnter() { ((BaseSitState)this).OnEnter(); duration = EnterSit.baseDuration / ((BaseState)this).attackSpeedStat; Util.PlaySound(EnterSit.soundString, ((EntityState)this).gameObject); ((EntityState)this).PlayCrossfade("Body", "EnterSit", "Sit.playbackRate", duration, 0.1f); ((EntityState)this).modelLocator.normalizeToFloor = true; ((Behaviour)((Component)((EntityState)this).modelLocator.modelTransform).GetComponent<AimAnimator>()).enabled = true; } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextState((EntityState)(object)new DreamLuck()); } } } } namespace EntityStates.Wisp1Monster.AlmostGreat { public class ChargeGreaterCannon : BaseState { public static float baseDuration = 3f; protected float duration; private GameObject chargeEffect; private const float soundDuration = 2f; private string attackString; private GameObject effectPrefab; private ChargeCannons goodState; 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_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) if (goodState == null) { goodState = new ChargeCannons(); } attackString = goodState.attackString; effectPrefab = goodState.effectPrefab; ((BaseState)this).OnEnter(); Util.PlayAttackSpeedSound(attackString, ((EntityState)this).gameObject, base.attackSpeedStat * (2f / baseDuration)); duration = baseDuration / base.attackSpeedStat; Transform modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { ChildLocator component = ((Component)modelTransform).GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.FindChild("Muzzle"))) { chargeEffect = Object.Instantiate<GameObject>(effectPrefab, ((EntityState)this).transform.position, ((EntityState)this).transform.rotation); chargeEffect.transform.parent = ((EntityState)this).transform; ScaleParticleSystemDuration component2 = chargeEffect.GetComponent<ScaleParticleSystemDuration>(); if (Object.op_Implicit((Object)(object)component2)) { component2.newDuration = duration; } } } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(duration); } ((EntityState)this).PlayAnimation("Body", "ChargeAttack1", "ChargeAttack1.playbackRate", duration, 0f); } public override void OnExit() { ((EntityState)this).OnExit(); EntityState.Destroy((Object)(object)chargeEffect); } public override void Update() { ((EntityState)this).Update(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { FireGreaterCannon nextState = new FireGreaterCannon(); ((EntityState)this).outer.SetNextState((EntityState)(object)nextState); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)1; } } public class FireGreaterCannon : BaseState { public static float baseDuration = 2f; public static float damageCoefficient = 12f; private float duration; private GameObject effectPrefab; private FireCannons goodState; public override void OnEnter() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Expected O, but got Unknown //IL_00d3: 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_00df: Unknown result type (might be due to invalid IL or missing references) if (goodState == null) { goodState = new FireCannons(); } effectPrefab = goodState.effectPrefab; ((BaseState)this).OnEnter(); Ray aimRay = ((BaseState)this).GetAimRay(); duration = baseDuration / base.attackSpeedStat; ((EntityState)this).PlayAnimation("Body", "FireAttack1", "FireAttack1.playbackRate", duration, 0f); if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).modelLocator) && Object.op_Implicit((Object)(object)((EntityState)this).modelLocator.modelTransform)) { ChildLocator component = ((Component)((EntityState)this).modelLocator.modelTransform).GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.FindChild("Muzzle"))) { ProjectileManager.instance.FireProjectile(Resources.Load<GameObject>("Prefabs/Projectiles/WispCannon"), ((EntityState)this).transform.position, Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, base.damageStat * damageCoefficient, 80f, Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null); } } } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)1; } } } namespace EntityStates.LemurianMonster.Flamethrower { public class FireFlamethrower : BaseState { private static bool _initializedFromMageFlamethrower; private static float baseFlamethrowerDuration; private static float tickFrequency; public static GameObject flameThrowerEffectPrefab; public static float maxDistance = 40f; private float tickDamageCoefficient; private float flamethrowerStopwatch; private float stopwatch; private float entryDuration; private float flamethrowerDuration; private bool hasBegunFlamethrower; private ChildLocator childLocator; private Transform flamethrowerTransform; private Transform mouthMuzzle; private bool isCrit; private const float flamethrowerEffectBaseDistance = 16f; [SystemInitializer(new Type[] { })] private static void Initialize() { //IL_0005: 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_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_0049: 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_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_0071: Unknown result type (might be due to invalid IL or missing references) flameThrowerEffectPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Drones/DroneFlamethrowerEffect.prefab").WaitForCompletion(), "FlamethrowerLemurianEffect", false); EntityState.Destroy((Object)(object)flameThrowerEffectPrefab.GetComponent<DestroyOnTimer>()); ParticleSystem componentInChildren = flameThrowerEffectPrefab.GetComponentInChildren<ParticleSystem>(); MainModule main = componentInChildren.main; ((MainModule)(ref main)).startLifetime = MinMaxCurve.op_Implicit(0.5f); ((MainModule)(ref main)).startSpeed = MinMaxCurve.op_Implicit(70f); EmissionModule emission = componentInChildren.emission; ((EmissionModule)(ref emission)).rateOverTime = MinMaxCurve.op_Implicit(80f); } private void InitFromMage() { //IL_000e: 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) if (!_initializedFromMageFlamethrower) { _initializedFromMageFlamethrower = true; Flamethrower val = new Flamethrower(); baseFlamethrowerDuration = val.baseFlamethrowerDuration; tickFrequency = val.tickFrequency; } } public override void OnEnter() { InitFromMage(); ((BaseState)this).OnEnter(); entryDuration = Flamethrower.baseEntryDuration / base.attackSpeedStat; flamethrowerDuration = baseFlamethrowerDuration; Transform modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(entryDuration + flamethrowerDuration + 1f); } if (Object.op_Implicit((Object)(object)modelTransform)) { childLocator = ((Component)modelTransform).GetComponent<ChildLocator>(); mouthMuzzle = childLocator.FindChild("MuzzleMouth"); } int num = Mathf.CeilToInt(flamethrowerDuration * tickFrequency); tickDamageCoefficient = 0.5f / (float)num; if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { isCrit = Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master); } ((EntityState)this).PlayAnimation("Gesture", "ChargeFireball", "ChargeFireball.playbackRate", entryDuration, 0f); } public override void OnExit() { Util.PlaySound(Flamethrower.endAttackSoundString, ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)flamethrowerTransform)) { EntityState.Destroy((Object)(object)((Component)flamethrowerTransform).gameObject); } ((EntityState)this).OnExit(); } private void FireGauntlet(string muzzleString) { //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_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_0023: 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_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_003f: 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_0054: 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_0072: 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_0084: 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_009b: 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_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: 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_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: 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_0113: 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) Ray aimRay = ((BaseState)this).GetAimRay(); if (((EntityState)this).isAuthority) { new BulletAttack { owner = ((EntityState)this).gameObject, weapon = ((EntityState)this).gameObject, origin = ((Ray)(ref aimRay)).origin, aimVector = ((Ray)(ref aimRay)).direction, minSpread = 0f, damage = tickDamageCoefficient * base.damageStat, force = Flamethrower.force, muzzleName = muzzleString, hitEffectPrefab = Flamethrower.impactEffectPrefab, isCrit = isCrit, radius = Flamethrower.radius, falloffModel = (FalloffModel)0, stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask, procCoefficient = Flamethrower.procCoefficientPerTick, maxDistance = maxDistance, smartCollision = true, damageType = DamageTypeCombo.op_Implicit((DamageType)(Util.CheckRoll(Flamethrower.ignitePercentChance, ((EntityState)this).characterBody.master) ? 128 : 0)) }.Fire(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.ApplyForce(((Ray)(ref aimRay)).direction * (0f - Flamethrower.recoilForce), false, false); } } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; if (stopwatch >= entryDuration && !hasBegunFlamethrower) { hasBegunFlamethrower = true; Util.PlaySound(Flamethrower.startAttackSoundString, ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)childLocator) && Object.op_Implicit((Object)(object)mouthMuzzle)) { flamethrowerTransform = Object.Instantiate<GameObject>(flameThrowerEffectPrefab, mouthMuzzle).transform; ((Component)flamethrowerTransform).GetComponent<ScaleParticleSystemDuration>().newDuration = flamethrowerDuration; } ((EntityState)this).PlayAnimation("Gesture", "FireFireball", "FireFireball.playbackRate", tickFrequency, 0f); FireGauntlet("MuzzleCenter"); } if (hasBegunFlamethrower) { flamethrowerStopwatch += Time.deltaTime; float num = 1f / tickFrequency / 2f; if (flamethrowerStopwatch > num) { flamethrowerStopwatch -= num; FireGauntlet("MuzzleMouth"); } UpdateFlamethrowerEffect(); } if (stopwatch >= flamethrowerDuration + entryDuration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void UpdateFlamethrowerEffect() { //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_0009: 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_0022: Unknown result type (might be due to invalid IL or missing references) Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 direction = ((Ray)(ref aimRay)).direction; if (Object.op_Implicit((Object)(object)flamethrowerTransform)) { flamethrowerTransform.forward = direction; } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)3; } } } namespace EntityStates.LemurianMonster.Badass { public class ChargeFireballAndMissile : BaseState { public static float baseDuration = ChargeFireball.baseDuration; public static GameObject chargeVfxPrefab = ChargeFireball.chargeVfxPrefab; public static string attackString = ChargeFireball.attackString; private float duration; private GameObject chargeVfxInstance; public override void OnEnter() { //IL_0099: 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) baseDuration = ChargeFireball.baseDuration; chargeVfxPrefab = ChargeFireball.chargeVfxPrefab; attackString = ChargeFireball.attackString; ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; ((EntityState)this).GetModelAnimator(); Transform modelTransform = ((EntityState)this).GetModelTransform(); Util.PlayAttackSpeedSound(attackString, ((EntityState)this).gameObject, base.attackSpeedStat); if (Object.op_Implicit((Object)(object)modelTransform)) { ChildLocator component = ((Component)modelTransform).GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component)) { Transform val = component.FindChild("MuzzleMouth"); if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)chargeVfxPrefab)) { chargeVfxInstance = Object.Instantiate<GameObject>(chargeVfxPrefab, val.position, val.rotation); chargeVfxInstance.transform.parent = val; } } } ((EntityState)this).PlayAnimation("Gesture", "ChargeFireball", "ChargeFireball.playbackRate", duration, 0f); } public override void OnExit() { ((EntityState)this).OnExit(); if (Object.op_Implicit((Object)(object)chargeVfxInstance)) { EntityState.Destroy((Object)(object)chargeVfxInstance); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { FireFireballAndMissile nextState = new FireFireballAndMissile(); ((EntityState)this).outer.SetNextState((EntityState)(object)nextState); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)1; } } public class FireFireballAndMissile : BaseState { public static GameObject projectilePrefab = FireFireball.projectilePrefab; public static GameObject effectPrefab = FireFireball.effectPrefab; public static float baseDuration = FireFireball.baseDuration; public static float damageCoefficient = FireFireball.damageCoefficient; public static float force = FireFireball.force; public static string attackString = FireFireball.attackString; public static GameObject missleProjectilePrefab = Resources.Load<GameObject>("Prefabs/Projectiles/MissileProjectile"); public static float missileDamageCoef = 1.2f; private float duration; public override void OnEnter() { //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_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_0102: 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_010c: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; ((EntityState)this).PlayAnimation("Gesture", "FireFireball", "FireFireball.playbackRate", duration, 0f); Util.PlaySound(attackString, ((EntityState)this).gameObject); Ray aimRay = ((BaseState)this).GetAimRay(); string text = "MuzzleMouth"; string text2 = "Chest"; if (Object.op_Implicit((Object)(object)effectPrefab)) { EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, text, false); EffectManager.SimpleMuzzleFlash(FireMegaFireball.muzzleflashEffectPrefab, ((EntityState)this).gameObject, text2, false); } if (((EntityState)this).isAuthority) { ProjectileManager.instance.FireProjectile(projectilePrefab, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, base.damageStat * damageCoefficient, force, Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null); ProjectileManager.instance.FireProjectile(missleProjectilePrefab, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(Vector3.up), ((EntityState)this).gameObject, missileDamageCoef * base.damageStat, 0f, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null); } } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)1; } } } namespace EntityStates.JellyfishMonster.Spectral { public class SpawnRandomLesserEnemyVariant : GenericCharacterDeath { public static GameObject enterEffectPrefab; public static List<MasterIndex> validMasters = new List<MasterIndex>(); public static int monsterCount = 1; private GameObject chosenMonster; private BodyVariantDefProvider chosenMonsterVariantDefProvider; private DeathRewards deathRewards; public override void OnEnter() { //IL_003f: 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) enterEffectPrefab = DeathState.enterEffectPrefab; ((GenericCharacterDeath)this).OnEnter(); deathRewards = ((EntityState)this).GetComponent<DeathRewards>(); ((GenericCharacterDeath)this).DestroyModel(); if (!NetworkServer.active) { return; } chosenMonster = MasterCatalog.GetMasterPrefab(validMasters[Random.Range(0, validMasters.Count)]); CharacterMaster component = chosenMonster.GetComponent<CharacterMaster>(); if (!Object.op_Implicit((Object)(object)component.bodyPrefab)) { ((GenericCharacterDeath)this).DestroyBodyAsapServer(); return; } chosenMonsterVariantDefProvider = BodyVariantDefProvider.FindProvider(component.bodyPrefab.GetComponent<CharacterBody>().bodyIndex); for (int i = 0; i < monsterCount; i++) { SpawnEnemyServer(); } ((GenericCharacterDeath)this).DestroyBodyAsapServer(); } private void GiveEquipmentIndex(CharacterMaster master) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody.inventory)) { master.inventory.SetEquipmentIndex(((EntityState)this).characterBody.inventory.currentEquipmentIndex, false); } } private void SpawnEnemyServer() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_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_0025: 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_003f: 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_005a: 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_005c: 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_006c: 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_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Expected O, but got Unknown Vector3 position = ((EntityState)this).characterBody.corePosition + SpawnNova.jellyDropRadius * Random.insideUnitSphere; VariantSummon val = new VariantSummon { applyOnStart = true, useAmbientLevel = false, ignoreTeamMemberLimit = true, teamIndexOverride = ((EntityState)this).characterBody.teamComponent.teamIndex, position = position, variantDefs = Array.Empty<VariantDef>(), masterPrefab = chosenMonster, preSpawnSetupCallback = GiveEquipmentIndex, summonerBodyObject = null }; if (Object.op_Implicit((Object)(object)deathRewards)) { val.summonerDeathRewards = deathRewards; val.deathRewardsCoefficient = 1f; } ref VariantDef[] variantDefs = ref val.variantDefs; VariantDef variantDef = chosenMonsterVariantDefProvider.GetVariantDef(Random.Range(0, chosenMonsterVariantDefProvider.totalVariantCount)); ArrayUtils.ArrayAppend<VariantDef>(ref variantDefs, ref variantDef); val.PerformSummon(); } public override void CreateDeathEffects() { //IL_001d: 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) ((GenericCharacterDeath)this).CreateDeathEffects(); if (Object.op_Implicit((Object)(object)enterEffectPrefab)) { EffectManager.SimpleEffect(enterEffectPrefab, ((EntityState)this).transform.position, ((EntityState)this).transform.rotation, false); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)9; } } } namespace EntityStates.JellyfishMonster.MOAJ { public class SpawnJellies : GenericCharacterDeath { public static GameObject enterEffectPrefab; public static GameObject masterPrefab; public static int jellies = 5; private DeathRewards deathRewards; public override void OnEnter() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0053: 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_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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: 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_0084: 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_009c: 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_00b2: 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_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: 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_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Expected O, but got Unknown enterEffectPrefab = DeathState.enterEffectPrefab; masterPrefab = MasterCatalog.GetMasterPrefab(MasterCatalog.FindAiMasterIndexForBody(((EntityState)this).characterBody.bodyIndex)); ((GenericCharacterDeath)this).OnEnter(); deathRewards = ((EntityState)this).GetComponent<DeathRewards>(); ((GenericCharacterDeath)this).DestroyModel(); if (!NetworkServer.active) { return; } for (int i = 0; i < SpawnNova.jellyCount; i++) { Vector3 position = ((EntityState)this).characterBody.corePosition + SpawnNova.jellyDropRadius * Random.insideUnitSphere; VariantSummon val = new VariantSummon { applyOnStart = false, variantDefs = Array.Empty<VariantDef>(), useAmbientLevel = false, teamIndexOverride = ((EntityState)this).characterBody.teamComponent.teamIndex, ignoreTeamMemberLimit = true, position = position, masterPrefab = masterPrefab, preSpawnSetupCallback = GiveEquipmentIndex, summonerBodyObject = null }; if (Object.op_Implicit((Object)(object)deathRewards)) { val.deathRewardsCoefficient = 0.2f; val.summonerDeathRewards = deathRewards; } val.PerformSummon(); } ((GenericCharacterDeath)this).DestroyBodyAsapServer(); } private void GiveEquipmentIndex(CharacterMaster master) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody.inventory)) { master.inventory.SetEquipmentIndex(((EntityState)this).characterBody.inventory.currentEquipmentIndex, false); } } public override void CreateDeathEffects() { //IL_001d: 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) ((GenericCharacterDeath)this).CreateDeathEffects(); if (Object.op_Implicit((Object)(object)enterEffectPrefab)) { EffectManager.SimpleEffect(enterEffectPrefab, ((EntityState)this).transform.position, ((EntityState)this).transform.rotation, false); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)9; } } public class SpawnNova : BaseState { public static float baseDuration = 0.5f; public static int jellyCount = 5; public static float jellyDropRadius = 5f; public static GameObject masterPrefab; private bool hasExploded; private float duration; private float stopwatch; private GameObject chargeEffect; private PrintController printController; private uint soundID; private DeathRewards deathRewards; public override void OnEnter() { //IL_0035: 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_009e: 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_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); deathRewards = ((EntityState)this).GetComponent<DeathRewards>(); stopwatch = 0f; duration = baseDuration / base.attackSpeedStat; masterPrefab = MasterCatalog.GetMasterPrefab(MasterCatalog.FindAiMasterIndexForBody(((EntityState)this).characterBody.bodyIndex)); Transform modelTransform = ((EntityState)this).GetModelTransform(); ((EntityState)this).PlayCrossfade("Body", "Nova", "Nova.playbackRate", duration, 0.1f); soundID = Util.PlaySound(JellyNova.chargingSoundString, ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)JellyNova.chargingEffectPrefab)) { chargeEffect = Object.Instantiate<GameObject>(JellyNova.chargingEffectPrefab, ((EntityState)this).transform.position, ((EntityState)this).transform.rotation); chargeEffect.transform.parent = ((EntityState)this).transform; chargeEffect.transform.localScale = Vector3.one * NuclearNova.novaRadius; chargeEffect.GetComponent<ScaleParticleSystemDuration>().newDuration = duration; } if (Object.op_Implicit((Object)(object)modelTransform)) { printController = ((Component)modelTransform).GetComponent<PrintController>(); if (Object.op_Implicit((Object)(object)printController)) { ((Behaviour)printController).enabled = true; printController.printTime = duration; } } } public override void OnExit() { ((EntityState)this).OnExit(); if (Object.op_Implicit((Object)(object)chargeEffect)) { EntityState.Destroy((Object)(object)chargeEffect); } if (Object.op_Implicit((Object)(object)printController)) { ((Behaviour)printController).enabled = false; } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; if (stopwatch >= duration && ((EntityState)this).isAuthority && !hasExploded) { Detonate(); } } private void Detonate() { //IL_009c: 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_00a8: 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_00c3: Expected O, but got Unknown //IL_00e6: Unknown result type (might be due to invalid IL or missing references) hasExploded = true; Util.PlaySound(JellyNova.novaSoundString, ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator)) { if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator.modelBaseTransform)) { EntityState.Destroy((Object)(object)((Component)((EntityState)this).modelLocator.modelBaseTransform).gameObject); } if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator.modelTransform)) { EntityState.Destroy((Object)(object)((Component)((EntityState)this).modelLocator.modelTransform).gameObject); } } if (Object.op_Implicit((Object)(object)chargeEffect)) { EntityState.Destroy((Object)(object)chargeEffect); } if (Object.op_Implicit((Object)(object)JellyNova.novaEffectPrefab)) { EffectManager.SpawnEffect(JellyNova.novaEffectPrefab, new EffectData { origin = ((EntityState)this).transform.position, scale = NuclearNova.novaRadius }, true); } if (NetworkServer.active) { SpawnJellies(); } if (Object.op_Implicit((Object)(object)((EntityState)this).healthComponent)) { ((EntityState)this).healthComponent.Suicide((GameObject)null, (GameObject)null, DamageTypeCombo.op_Implicit((DamageType)0)); } } private void SpawnJellies() { //IL_000d: 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_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_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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_004a: 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_0065: 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_006d: 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_0073: 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_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Expected O, but got Unknown for (int i = 0; i < jellyCount; i++) { Vector3 position = ((EntityState)this).characterBody.corePosition + jellyDropRadius * Random.insideUnitSphere; VariantSummon val = new VariantSummon { applyOnStart = false, variantDefs = Array.Empty<VariantDef>(), useAmbientLevel = false, teamIndexOverride = ((EntityState)this).characterBody.teamComponent.teamIndex, ignoreTeamMemberLimit = true, position = position, masterPrefab = masterPrefab, preSpawnSetupCallback = GiveEquipmentIndex, summonerBodyObject = null }; if (Object.op_Implicit((Object)(object)deathRewards)) { val.summonerDeathRewards = deathRewards; val.deathRewardsCoefficient = 0.2f; } val.PerformSummon(); } } private void GiveEquipmentIndex(CharacterMaster master) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody.inventory)) { master.inventory.SetEquipmentIndex(((EntityState)this).characterBody.inventory.currentEquipmentIndex, false); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)3; } } } namespace EntityStates.JellyfishMonster.Nuclear { public class NuclearNova : BaseState { public static float baseDuration = 1.5f; public static float novaRadius = 24f; public static float novaForce = 2500f; private bool hasExploded; private float duration; private float stopwatch; private GameObject chargeEffect; private PrintController printController; private uint soundID; public override void OnEnter() { //IL_0078: 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_00b3: 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) ((BaseState)this).OnEnter(); stopwatch = 0f; duration = baseDuration / base.attackSpeedStat; Transform modelTransform = ((EntityState)this).GetModelTransform(); ((EntityState)this).PlayCrossfade("Body", "Nova", "Nova.playbackRate", duration, 0.1f); soundID = Util.PlaySound(JellyNova.chargingSoundString, ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)JellyNova.chargingEffectPrefab)) { chargeEffect = Object.Instantiate<GameObject>(JellyNova.chargingEffectPrefab, ((EntityState)this).transform.position, ((EntityState)this).transform.rotation); chargeEffect.transform.parent = ((EntityState)this).transform; chargeEffect.transform.localScale = Vector3.one * novaRadius; chargeEffect.GetComponent<ScaleParticleSystemDuration>().newDuration = duration; } if (Object.op_Implicit((Object)(object)modelTransform)) { printController = ((Component)modelTransform).GetComponent<PrintController>(); if (Object.op_Implicit((Object)(object)printController)) { ((Behaviour)printController).enabled = true; printController.printTime = duration; } } } public override void OnExit() { ((EntityState)this).OnExit(); if (Object.op_Implicit((Object)(object)chargeEffect)) { EntityState.Destroy((Object)(object)chargeEffect); } if (Object.op_Implicit((Object)(object)printController)) { ((Behaviour)printController).enabled = false; } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; if (stopwatch >= duration && ((EntityState)this).isAuthority && !hasExploded) { Detonate(); } } private void Detonate() { //IL_00c3: 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_00d4: 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_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_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_0103: 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_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) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0142: 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_014c: Unknown result type (might be due to invalid IL or missing references) //IL_009c: 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_00a8: 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_00c3: Expected O, but got Unknown //IL_0168: Unknown result type (might be due to invalid IL or missing references) hasExploded = true; Util.PlaySound(JellyNova.novaSoundString, ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator)) { if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator.modelBaseTransform)) { EntityState.Destroy((Object)(object)((Component)((EntityState)this).modelLocator.modelBaseTransform).gameObject); } if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator.modelTransform)) { EntityState.Destroy((Object)(object)((Component)((EntityState)this).modelLocator.modelTransform).gameObject); } } if (Object.op_Implicit((Object)(object)chargeEffect)) { EntityState.Destroy((Object)(object)chargeEffect); } if (Object.op_Implicit((Object)(object)JellyNova.novaEffectPrefab)) { EffectManager.SpawnEffect(JellyNova.novaEffectPrefab, new EffectData { origin = ((EntityState)this).transform.position, scale = novaRadius }, true); } new BlastAttack { attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, teamIndex = TeamComponent.GetObjectTeam(((EntityState)this).gameObject), baseDamage = base.damageStat * JellyNova.novaDamageCoefficient, baseForce = novaForce, position = ((EntityState)this).transform.position, radius = novaRadius, procCoefficient = 2f, attackerFiltering = (AttackerFiltering)2, damageType = DamageTypeCombo.op_Implicit((DamageType)4194304) }.Fire(); if (Object.op_Implicit((Object)(object)((EntityState)this).healthComponent)) { ((EntityState)this).healthComponent.Suicide((GameObject)null, (GameObject)null, DamageTypeCombo.op_Implicit((DamageType)0)); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)3; } } } namespace EntityStates.GolemMonster.Rush { public class GolemBlink : BaseState { private Transform modelTransform; private float stopwatch; private Vector3 blinkDestination = Vector3.zero; private Vector3 blinkStart = Vector3.zero; private CharacterModel characterModel; private HurtBoxGroup hurtboxGroup; public override void OnEnter() { //IL_00c0: 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_00cf: 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_00e8: 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_0103: 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_0109: 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_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_0124: 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_013e: 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_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0158: 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_0164: 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_0176: 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) ((BaseState)this).OnEnter(); Util.PlaySound(LoomingPresence.beginSoundString, ((EntityState)this).gameObject); modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { characterModel = ((Component)modelTransform).GetComponent<CharacterModel>(); hurtboxGroup = ((Component)modelTransform).GetComponent<HurtBoxGroup>(); } if (Object.op_Implicit((Object)(object)characterModel)) { CharacterModel obj = characterModel; int invisibilityCount = obj.invisibilityCount; obj.invisibilityCount = invisibilityCount + 1; } if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup obj2 = hurtboxGroup; int hurtBoxesDeactivatorCounter = obj2.hurtBoxesDeactivatorCounter + 1; obj2.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((Behaviour)((EntityState)this).characterMotor).enabled = false; } if (((EntityState)this).isAuthority) { Vector3 val = ((EntityState)this).inputBank.aimDirection * LoomingPresence.blinkDistance; blinkDestination = ((EntityState)this).transform.position; blinkStart = ((EntityState)this).transform.position; NodeGraph groundNodes = SceneInfo.instance.groundNodes; NodeIndex val2 = groundNodes.FindClosestNode(((EntityState)this).transform.position + val, ((EntityState)this).characterBody.hullClassification, float.PositiveInfinity); groundNodes.GetNodePosition(val2, ref blinkDestination); blinkDestination += ((EntityState)this).transform.position - ((EntityState)this).characterBody.footPosition; val = blinkDestination - blinkStart; CreateBlinkEffect(Util.GetCorePosition(((EntityState)this).gameObject), val); } } private void CreateBlinkEffect(Vector3 origin, Vector3 direction) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //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_000d: 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) EffectData val = new EffectData(); val.rotation = Util.QuaternionSafeLookRotation(direction); val.origin = origin; EffectManager.SpawnEffect(LoomingPresence.blinkPrefab, val, true); } private void SetPosition(Vector3 newPosition) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((BaseCharacterController)((EntityState)this).characterMotor).Motor.SetPositionAndRotation(newPosition, Quaternion.identity, true); } } public override void FixedUpdate() { //IL_0044: 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_005b: 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_003d: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; } SetPosition(Vector3.Lerp(blinkStart, blinkDestination, stopwatch / LoomingPresence.duration)); if (stopwatch >= LoomingPresence.duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) Util.PlaySound(LoomingPresence.endSoundString, ((EntityState)this).gameObject); modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { CharacterDirection characterDirection = ((EntityState)this).characterDirection; Ray aimRay = ((BaseState)this).GetAimRay(); characterDirection.forward = ((Ray)(ref aimRay)).direction; } if (Object.op_Implicit((Object)(object)modelTransform) && Object.op_Implicit((Object)(object)LoomingPresence.destealthMaterial)) { TemporaryOverlay obj = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>(); obj.duration = LoomingPresence.destealthDuration; obj.destroyComponentOnEnd = true; obj.originalMaterial = LoomingPresence.destealthMaterial; obj.inspectorCharacterModel = ((Component)modelTransform).gameObject.GetComponent<CharacterModel>(); obj.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); obj.animateShaderAlpha = true; } if (Object.op_Implicit((Object)(object)characterModel)) { CharacterModel obj2 = characterModel; int invisibilityCount = obj2.invisibilityCount; obj2.invisibilityCount = invisibilityCount - 1; } if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup obj3 = hurtboxGroup; int hurtBoxesDeactivatorCounter = obj3.hurtBoxesDeactivatorCounter - 1; obj3.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((Behaviour)((EntityState)this).characterMotor).enabled = true; } ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } } namespace EntityStates.BeetleMonster.Toxic { public class ToxicHeadbutt : BaseState { public static float explosionRadius = 2f; public static float damageCoefficent = 0.8f; public static GameObject crocoEffect = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Croco/CrocoLeapExplosion.prefab").WaitForCompletion(); private OverlapAttack attack; private Animator modelAnimator; private RootMotionAccumulator rootMotionAccumulator; private float duration; private bool hasExploded; public override void OnEnter() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); rootMotionAccumulator = ((EntityState)this).GetModelRootMotionAccumulator(); modelAnimator = ((EntityState)this).GetModelAnimator(); duration = HeadbuttState.baseDuration / base.attackSpeedStat; attack = new OverlapAttack(); attack.attacker = ((EntityState)this).gameObject; attack.inflictor = ((EntityState)this).gameObject; attack.teamIndex = TeamComponent.GetObjectTeam(attack.attacker); attack.damage = HeadbuttState.damageCoefficient * base.damageStat; attack.hitEffectPrefab = HeadbuttState.hitEffectPrefab; Transform modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { attack.hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == "Headbutt"); } Util.PlaySound(HeadbuttState.attackSoundString, ((EntityState)this).gameObject); ((EntityState)this).PlayCrossfade("Body", "Headbutt", "Headbutt.playbackRate", duration, 0.1f); } public override void FixedUpdate() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0020: 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_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0092: 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) //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_00bd: 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) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)rootMotionAccumulator)) { Vector3 val = rootMotionAccumulator.ExtractRootMotion(); if (val != Vector3.zero && ((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += val; } } if (((EntityState)this).isAuthority) { attack.forceVector = (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) ? (((EntityState)this).characterDirection.forward * HeadbuttState.forceMagnitude) : Vector3.zero); if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) && Object.op_Implicit((Object)(object)((EntityState)this).inputBank)) { ((EntityState)this).characterDirection.moveVector = ((EntityState)this).inputBank.aimDirection; } if (Object.op_Implicit((Object)(object)modelAnimator) && modelAnimator.GetFloat("Headbutt.hitBoxActive") > 0.5f) { Detonate(); } } } private void Detonate() { //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_007c: 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_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) //IL_0099: 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_00b6: 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_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: 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_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: 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_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_0108: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_015b: 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_0162: 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) //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_0179: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Expected O, but got Unknown //IL_01a6: Unknown result type (might be due to invalid IL or missing references) if (hasExploded) { return; } hasExploded = true; if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator)) { if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator.modelBaseTransform)) { EntityState.Destroy((Object)(object)((Component)((EntityState)this).modelLocator.modelBaseTransform).gameObject); } if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator.modelTransform)) { EntityState.Destroy((Object)(object)((Component)((EntityState)this).modelLocator.modelTransform).gameObject); } } new BlastAttack { attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, teamIndex = TeamComponent.GetObjectTeam(((EntityState)this).gameObject), baseDamage = base.damageStat * damageCoefficent, baseForce = 0f, position = ((EntityState)this).transform.position, radius = explosionRadius, procCoefficient = 2f, attackerFiltering = (AttackerFiltering)2, damageType = DamageTypeCombo.op_Implicit((DamageType)4096) }.Fire(); Vector3 footPosition = ((EntityState)this).characterBody.footPosition; FireProjectileInfo val = default(FireProjectileInfo); val.projectilePrefab = BaseLeap.projectilePrefab; val.crit = ((BaseState)this).RollCrit(); val.force = 0f; val.damage = base.damageStat; val.owner = ((EntityState)this).gameObject; val.rotation = Quaternion.identity; val.position = footPosition; FireProjectileInfo val2 = val; ProjectileManager.instance.FireProjectile(val2); EffectManager.SpawnEffect(crocoEffect, new EffectData { origin = footPosition, scale = explosionRadius }, true); if (Object.op_Implicit((Object)(object)((EntityState)this).healthComponent)) { ((EntityState)this).healthComponent.Suicide((GameObject)null, (GameObject)null, DamageTypeCombo.op_Implicit((DamageType)0)); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } } namespace EntityStates.BeetleMonster.Battle { public class HeavyHeadbutt : BaseState { public static float pushForce = 8000f; private OverlapAttack attack; private Animator modelAnimator; private RootMotionAccumulator rootMotionAccumulator; private float duration; public override void OnEnter() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); rootMotionAccumulator = ((EntityState)this).GetModelRootMotionAccumulator(); modelAnimator = ((EntityState)this).GetModelAnimator(); duration = HeadbuttState.baseDuration / base.attackSpeedStat; attack = new OverlapAttack(); attack.attacker = ((EntityState)this).gameObject; attack.inflictor = ((EntityState)this).gameObject; attack.teamIndex = TeamComponent.GetObjectTeam(attack.attacker); attack.damage = HeadbuttState.damageCoefficient * base.damageStat; attack.hitEffectPrefab = HeadbuttState.hitEffectPrefab; Transform modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { attack.hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == "Headbutt"); } Util.PlaySound(HeadbuttState.attackSoundString, ((EntityState)this).gameObject); ((EntityState)this).PlayCrossfade("Body", "Headbutt", "Headbutt.playbackRate", duration, 0.1f); } public override void FixedUpdate() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0020: 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_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0092: 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) //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_00bd: 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) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)rootMotionAccumulator)) { Vector3 val = rootMotionAccumulator.ExtractRootMotion(); if (val != Vector3.zero && ((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += val; } } if (((EntityState)this).isAuthority) { attack.forceVector = (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) ? (((EntityState)this).characterDirection.forward * pushForce) : Vector3.zero); if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) && Object.op_Implicit((Object)(object)((EntityState)this).inputBank)) { ((EntityState)this).characterDirection.moveVector = ((EntityState)this).inputBank.aimDirection; } if (Object.op_Implicit((Object)(object)modelAnimator) && modelAnimator.GetFloat("Headbutt.hitBoxActive") > 0.5f) { attack.Fire((List<HurtBox>)null); } } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } } namespace TO30 { public static class TO30Assets { private const string ASSET_BUNDLE_NAME = "to30assets"; private const string LOADING_SCREEN_SPRITES = "to30loadingscreen"; private const string ASSET_BUNDLE_FOLDER_NAME = "assetbundles"; public static ResourceAvailability assetsAvailability; private static AssetBundle _assetBundle; private static string assetBundleFolderPath => Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)TO30Main.instance).Info.Location), "assetbundles"); public static TAsset LoadAsset<TAsset>(string name) where TAsset : Object { return _assetBundle.LoadAsset<TAsset>(name); } public static TO30AssetRequest<TAsset> LoadAssetAsync<TAsset>(string name) where TAsset : Object { return new TO30AssetRequest<TAsset>(_assetBundle.LoadAssetAsync(name)); } public static TAsset[] LoadAssets<TAsset>() where TAsset : Object { return _assetBundle.LoadAllAssets<TAsset>(); } public static TO30AssetRequest<TAsset> LoadAssetsAsync<TAsset>() where TAsset : Object { return new TO30AssetRequest<TAsset>(_assetBundle.LoadAllAssetsAsync<TAsset>()); } internal static AssetBundle GetLoadingScreenBundle() { return AssetBundle.LoadFromFile(Path.Combine(assetBundleFolderPath, "to30loadingscreen")); } internal static IEnumerator Initialize() { if (!((ResourceAvailability)(ref assetsAvailability)).available) { TO30Log.Info("Initializing Assets...", 57, "Initialize"); IEnumerator loadRoutine = LoadAssetBundle(); while (!MSUtil.IsDone(loadRoutine)) { yield return null; } ParallelCoroutine coroutine = new ParallelCoroutine(); coroutine.Add(SwapShaders()); coroutine.Add(SwapAddressableShaders()); coroutine.Add(FinishMaterialVariants()); while (!MSUtil.IsDone((IEnumerator)coroutine)) { yield return null; } ((ResourceAvailability)(ref assetsAvailability)).MakeAvailable(); } } private static IEnumerator LoadAssetBundle() { AssetBundleCreateRequest request = AssetBundle.LoadFromFileAsync(Path.Combine(assetBundleFolderPath, "to30assets")); while (!((AsyncOperation)request).isDone) { yield return null; } _assetBundle = request.assetBundle; } private static IEnumerator FinishMaterialVariants() { TO30AssetRequest<MaterialVariant> request = TO30Assets.LoadAssetsAsync<MaterialVariant>(); while (!request.isDone) { yield return null; } ParallelCoroutine routine = new ParallelCoroutine(); MaterialVariant[] assets = request.assets; foreach (MaterialVariant val in assets) { routine.Add(val.ApplyOverrides()); } while (!MSUtil.IsDone((IEnumerator)routine)) { yield return null; } } private static IEnumerator SwapShaders() { return ShaderUtil.SwapStubbedShadersAsync(_assetBundle); } private static IEnumerator SwapAddressableShaders() { return ShaderUtil.LoadAddressableMaterialShadersAsync(_assetBundle); } } public class TO30AssetRequest<TAsset> : IEnumerator where TAsset : Object { private AssetBundleRequest _request; public TAsset asset => (TAsset)(object)_request.asset; public TAsset[] assets => _request.allAssets.OfType<TAsset>().ToArray(); public bool isDone => ((AsyncOperation)_request).isDone; public float progress => ((AsyncOperation)_request).progress; object IEnumerator.Current => _request.asset; internal TO30AssetRequest(AssetBundleRequest request) { _request = request; } bool IEnumerator.MoveNext() { return !((AsyncOperation)_request).isDone; } void IEnumerator.Reset() { throw new NotSupportedException(); } } public class TO30Config { public const string PREFIX = "TO30."; internal static ConfigFactory configFactory { get; private set; } internal TO30Config(BaseUnityPlugin plugin) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown configFactory = new ConfigFactory(plugin); } } public class TO30Content : IContentPackProvider { internal static ParallelCoroutine _parallelPreLoadDispatchers; private static Func<IEnumerator>[] _loadDispatchers; internal static ParallelCoroutine _parallelPostLoadDispatchers; private static Action[] _fieldAssignDispatchers; private bool _initialized; private static VariantPackDef _variantPack; public string identifier => "com.Nebby.TO30"; public static ReadOnlyContentPack readOnlyContentPack => new ReadOnlyContentPack(contentPack); internal static ContentPack contentPack { get; } public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { if (_initialized) { yield break; } IEnumerator enumerator2 = TO30Assets.Initialize(); while (!MSUtil.IsDone(enumerator2)) { yield return null; } while (!MSUtil.IsDone((IEnumerator)_parallelPreLoadDispatchers)) { yield return null; } for (int i = 0; i < _loadDispatchers.Length; i++) { args.ReportProgress(Util.Remap((float)(i + 1), 0f, (float)_loadDispatchers.Length, 0.1f, 0.2f)); enumerator2 = _loadDispatchers[i](); while (enumerator2?.MoveNext() ?? false) { yield return null; } } while (!MSUtil.IsDone((IEnumerator)_parallelPostLoadDispatchers)) { yield return null; } for (int j = 0; j < _fieldAssignDispatchers.Length; j++) { args.ReportProgress(Util.Remap((float)(j + 1), 0f, (float)_fieldAssignDispatchers.Length, 0.95f, 0.99f)); _fieldAssignDispatchers[j](); } } public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { ContentPack.Copy(contentPack, args.output); args.ReportProgress(1f); yield return null; } public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { args.ReportProgress(1f); yield break; } private static IEnumerator PopulateContentPackWithAssetCollection() { TO30AssetRequest<AssetCollection> request = TO30Assets.LoadAssetAsync<AssetCollection>("acContentPack"); while (!request.isDone) { yield return null; } ContentUtil.AddContentFromAssetCollection(contentPack, request.asset); } private static IEnumerator AddVariantPack() { TO30Log.Info("Adding Variants", 94, "AddVariantPack"); TO30AssetRequest<VariantPackDef> variantPackRequest = TO30Assets.LoadAssetAsync<VariantPackDef>("TO30VariantPack"); TO30AssetRequest<VariantDef> variantDefsRequest = TO30Assets.LoadAssetsAsync<VariantDef>(); ParallelCoroutine coroutine = new ParallelCoroutine(); coroutine.Add((IEnumerator)variantPackRequest); coroutine.Add((IEnumerator)variantDefsRequest); while (!MSUtil.IsDone((IEnumerator)coroutine)) { yield return null; } _variantPack = variantPackRequest.asset; _variantPack.variants = variantDefsRequest.assets; VariantPackCatalog.AddVariantPack(_variantPack, ((BaseUnityPlugin)TO30Main.instance).Config); } private static IEnumerator AddStates() { TO30Log.Info("Adding EntityStates", 113, "AddStates"); yield return null; contentPack.entityStateTypes.Add((from t in typeof(TO30Content).Assembly.GetTypes() where t.IsSubclassOf(typeof(EntityState)) && !t.IsAbstract select t).ToArray()); } private void AddSelf(AddContentPackProviderDelegate addContentPackProviderDelegate) { addContentPackProviderDelegate.Invoke((IContentPackProvider)(object)this); } internal TO30Content() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(AddSelf); ((ResourceAvailability)(ref TO30Assets.assetsAvailability)).CallWhenAvailable((Action)delegate { _parallelPostLoadDispatchers.Add((IEnumerator)AsyncAssetLoadAttribute.CreateParallelCoroutineForMod((BaseUnityPlugin)(object)TO30Main.instance)); }); } static TO30Content() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Expected O, but got Unknown //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Expected O, but got Unknown //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown contentPack = new ContentPack(); _parallelPreLoadDispatchers = new ParallelCoroutine(); _parallelPostLoadDispatchers = new ParallelCoroutine(); _fieldAssignDispatchers = Array.Empty<Action>(); _loadDispatchers = new Func<IEnumerator>[4] { () => LanguageFileLoader.AddLanguageFilesFromModAsync((BaseUnityPlugin)(object)TO30Main.instance, "languages"), PopulateContentPackWithAssetCollection, AddStates, AddVariantPack }; } } internal class TO30Log { private static ManualLogSource logger; public static void Fatal(object data, [CallerLineNumber] int i = 0, [CallerMemberName] string member = "") { Log((LogLevel)1, data, i, member); } public static void Error(object data, [CallerLineNumber] int i = 0, [CallerMemberName] string member = "") { Log((LogLevel)2, data, i, member); } public static void Warning(object data, [CallerLineNumber] int i = 0, [CallerMemberName] string member = "") { Log((LogLevel)4, data, i, member); } public static void Message(object data, [CallerLineNumber] int i = 0, [CallerMemberName] string member = "") { Log((LogLevel)8, data, i, member); } public static void Info(object data, [CallerLineNumber] int i = 0, [CallerMemberName] string member = "") { Log((LogLevel)16, data, i, member); } public static void Debug(object data, [CallerLineNumber] int i = 0, [CallerMemberName] string member = "") { Log((LogLevel)32, data, i, member); } private static void Log(LogLevel level, object data, int i, string member) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) LogRuntime(level, data, i, member); } private static void LogEditor(LogLevel level, object data, int i, string member) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Invalid comparison between Unknown and I4 //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Invalid comparison between Unknown and I4 //IL_0004: 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: Invalid comparison between Unknown and I4 //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Invalid comparison between Unknown and I4 //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Invalid comparison between Unknown and I4 //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Invalid comparison between Unknown and I4 if ((int)level <= 4) { if (level - 1 > 1) { if ((int)level == 4) { Debug.LogWarning((object)Format(data, i, member)); } } else { Debug.LogError((object)Format(data, i, member)); } } else if ((int)level == 8 || (int)level == 16 || (int)level == 32) { Debug.Log((object)Format(data, i, member)); } } private static void LogRuntime(LogLevel level, object data, int i, string member) { //IL_0000: 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_004a: 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) object obj = ((((Enum)level).HasFlag((Enum)(object)(LogLevel)4) || ((Enum)level).HasFlag((Enum)(object)(LogLevel)2) || ((Enum)level).HasFlag((Enum)(object)(LogLevel)1)) ? Format(data, i, member) : data); logger.Log(level, obj); } public static string Format(object data, int i, string member) { return $"{data} | Line={i} : Member={member}"; } internal TO30Log(ManualLogSource logger_) { logger = logger_; } } [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Nebby.TO30", "The Original 30", "2.2.1")] public class TO30Main : BaseUnityPlugin { public const string GUID = "com.Nebby.TO30"; public const string MODNAME = "The Original 30"; public const string VERSION = "2.2.1"; public static TO30Main instance { get; private set; } private void Awake() { instance = this; new TO30Log(((BaseUnityPlugin)this).Logger); new TO30Config((BaseUnityPlugin)(object)this); new TO30Content(); LoadingScreenFix.AddSpriteAnimations(TO30Assets.GetLoadingScreenBundle()); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(AddSpectralSummons)); } private void AddSpectralSummons() { //IL_0010: 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_0030: 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) SpawnRandomLesserEnemyVariant.validMasters.AddRange(new List<MasterIndex> { MasterCatalog.FindMasterIndex("BeetleMaster"), MasterCatalog.FindMasterIndex("ImpMaster"), MasterCatalog.FindMasterIndex("LemurianMaster"), MasterCatalog.FindMasterIndex("WispMaster") }); } } } namespace TO30.Components { public class AddGunToVulture : VariantComponent { private static GameObject _gun; private CharacterModel _model; private ChildLocator _childLocator; [AsyncAssetLoad] private static IEnumerator Load() { TO30AssetRequest<GameObject> numerator = TO30Assets.LoadAssetAsync<GameObject>("VulturePistol"); while (!numerator.isDone) { yield return null; } _gun = numerator.asset; } private void Start() { _childLocator = ((Component)this).GetComponentInChildren<ChildLocator>(); AddGun(); Object.Destroy((Object)(object)this); } private void AddGun() { //IL_003c: 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_0060: 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_0079: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((VariantComponent)this).characterModel)) { GameObject obj = Object.Instantiate<GameObject>(_gun, _childLocator.FindChild("Head")); obj.transform.localPosition = new Vector3(0f, 3.5f, 0.5f); obj.transform.localRotation = Quaternion.Euler(new Vector3(0f, 90f, 180f)); obj.transform.localScale = Vector3.one * 16f; } } } public class AddMissileLauncherToLemurian : VariantComponent { private static GameObject fab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/CommandMissile/DisplayMissileRack.prefab").WaitForCompletion(); private CharacterModel model; private ChildLocator childLocator; private void Start() { model = ((Component)this).GetComponentInChildren<CharacterModel>(); childLocator = ((Component)this).GetComponentInChildren<ChildLocator>(); AddMissileLauncher(); Object.Destroy((Object)(object)this); } private void AddMissileLauncher() { //IL_003c: 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_0060: 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_0079: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)model)) { GameObject obj = Object.Instantiate<GameObject>(fab, childLocator.FindChild("Chest")); obj.transform.localPosition = new Vector3(0f, 0f, 1.75f); obj.transform.localRotation = Quaternion.Euler(new Vector3(90f, 0f, 0f)); obj.transform.localScale = Vector3.one * 8f; } } } public class ModifyPrintController : VariantComponent { private void Start() { PrintController component = ((Component)((VariantComponent)this).characterModel).GetComponent<PrintController>(); if (Object.op_Implicit((Object)(object)component)) { component.printTime = 25f; component.maxPrintHeight = 100f; } Object.Destroy((Object)(object)this); } } }