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 NebbysWrath v2.1.2
plugins/NebbysWrath.dll
Decompiled 2 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Logging; using EntityStates; using EntityStates.AncientWispMonster; using EntityStates.ArchWispMonster; using EntityStates.GolemMonster; using EntityStates.GreaterWispMonster; using EntityStates.JellyfishMonster.Spectral; using EntityStates.LemurianBruiserMonster; using EntityStates.LemurianMonster; using EntityStates.MagmaWorm; using EntityStates.MajorConstruct.Weapon; using EntityStates.ParentMonster; using EntityStates.RoboBallBoss.Weapon; using EntityStates.TitanMonster; using EntityStates.VagrantMonster; using EntityStates.Wisp1Monster; using HG; using HG.Reflection; using KinematicCharacterController; using MSU; using MSU.Config; using NW; using NW.DamageTypes; using NW.Modules; using NW.PrefabClones; using On.EntityStates.MajorConstruct.Weapon; using R2API; using R2API.Utils; using RoR2; using RoR2.CharacterAI; using RoR2.ContentManagement; using RoR2.Navigation; using RoR2.Projectile; using RoR2.Skills; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.ResourceManagement.AsyncOperations; 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.MegaConstruct.Omicron { public class FireLasers : BaseState { private static float _duration; private static string _animationLayerName; private static string _animationStateName; private static string _animationPlaybackRateParam; private static bool _obtainedOrigs; private float _fireStopwatch; private float _timeBetweenFires; private Transform[] _firePoints; public override void OnEnter() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0023: 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) if (!_obtainedOrigs) { _obtainedOrigs = true; SpawnMinorConstructs val = new SpawnMinorConstructs(); _duration = val.duration / 2f; _animationLayerName = val.animationLayerName; _animationStateName = val.animationStateName; _animationPlaybackRateParam = val.animationPlaybackRateParam; } ((BaseState)this).OnEnter(); ((EntityState)this).PlayAnimation(_animationLayerName, _animationStateName, _animationPlaybackRateParam, _duration, 0f); _timeBetweenFires = _duration / 4f; ChildLocator modelChildLocator = ((EntityState)this).GetModelChildLocator(); _firePoints = (Transform[])(object)new Transform[4] { modelChildLocator.FindChild("AttachmentPoint0"), modelChildLocator.FindChild("AttachmentPoint1"), modelChildLocator.FindChild("AttachmentPoint2"), modelChildLocator.FindChild("AttachmentPoint3") }; } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge > _duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } _fireStopwatch -= Time.fixedDeltaTime; if (_fireStopwatch <= 0f) { _fireStopwatch += _timeBetweenFires; Fire(); } } private void Fire() { //IL_002b: 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_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)this).isAuthority) { Transform val = _firePoints[Run.instance.stageRng.RangeInt(0, _firePoints.Length)]; FireProjectileInfo val2 = default(FireProjectileInfo); val2.crit = ((BaseState)this).RollCrit(); val2.damage = base.damageStat; val2.damageColorIndex = (DamageColorIndex)0; val2.force = 30f; val2.owner = ((EntityState)this).gameObject; val2.position = val.position; Ray aimRay = ((BaseState)this).GetAimRay(); val2.rotation = Quaternion.LookRotation(((Ray)(ref aimRay)).direction); val2.projectilePrefab = OmicronProjectile.omicronProjectile; FireProjectileInfo val3 = val2; ProjectileManager.instance.FireProjectile(val3); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } public class LaserBarrage : FlyState { private static string _animationLayerName; private static string _animationEnterStateName; private static float _duration; private static bool _obtainedOrigs; private static float _baseTimeBetweenLasers = 0.5f; private static float _baseDurationUntilFullSpeed; private static float _fullSpeedMultiplier = 2f; private float _timeUntilFullSpeed; private float _fullSpeedStopwatch; private float _baseTimeBetweenLasersForThisState; private float _actualTimeBetweenLasers; private float _fireStopwatch; private Transform[] _firePoints; public override void OnEnter() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) if (!_obtainedOrigs) { _obtainedOrigs = true; RaiseShield val = new RaiseShield(); _animationLayerName = val.animationLayerName; _animationEnterStateName = val.animationEnterStateName; _duration = val.duration; _baseDurationUntilFullSpeed = _duration / 2f; } ((FlyState)this).OnEnter(); ((EntityState)this).PlayAnimation(_animationLayerName, _animationEnterStateName); _baseTimeBetweenLasersForThisState = _baseTimeBetweenLasers / ((BaseState)this).attackSpeedStat; _actualTimeBetweenLasers = _baseTimeBetweenLasersForThisState; _timeUntilFullSpeed = _baseDurationUntilFullSpeed / ((BaseState)this).attackSpeedStat; ChildLocator modelChildLocator = ((EntityState)this).GetModelChildLocator(); _firePoints = (Transform[])(object)new Transform[4] { modelChildLocator.FindChild("BarragePoint0"), modelChildLocator.FindChild("BarragePoint1"), modelChildLocator.FindChild("BarragePoint2"), modelChildLocator.FindChild("BarragePoint3") }; } public override bool CanExecuteSkill(GenericSkill skillSlot) { return false; } public override void FixedUpdate() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown ((FlyState)this).FixedUpdate(); if (((EntityState)this).fixedAge > _duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)new ExitShield()); } if (_fullSpeedStopwatch < _timeUntilFullSpeed) { _fullSpeedStopwatch += Time.fixedDeltaTime; float num = Util.Remap(_fullSpeedStopwatch, 0f, _timeUntilFullSpeed, 1f, _fullSpeedMultiplier); _actualTimeBetweenLasers = _baseTimeBetweenLasersForThisState / num; } _fireStopwatch += Time.fixedDeltaTime; if (_fireStopwatch > _actualTimeBetweenLasers) { _fireStopwatch -= _actualTimeBetweenLasers; FireLaser(); } } private void FireLaser() { //IL_000d: 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_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_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)this).isAuthority) { FireProjectileInfo val = default(FireProjectileInfo); val.crit = ((BaseState)this).RollCrit(); val.damage = ((BaseState)this).damageStat; val.damageColorIndex = (DamageColorIndex)0; val.force = 30f; val.owner = ((EntityState)this).gameObject; val.projectilePrefab = OmicronProjectile.omicronProjectile; FireProjectileInfo val2 = val; for (int i = 0; i < _firePoints.Length; i++) { val2.rotation = Quaternion.LookRotation(_firePoints[i].forward); val2.position = _firePoints[i].position; ProjectileManager.instance.FireProjectile(val2); } } } } } namespace EntityStates.VagrantMonster.Mothership { public class DeployJellies : DeathState { public static GameObject masterPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Jellyfish/JellyfishMaster.prefab").WaitForCompletion(); public static VariantDef moajDef; public static EquipmentIndex index; private Vector3 spawnPossition; private DeathRewards rewards; private static void LoadDef() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) moajDef = VariantCatalog.GetVariantDef(VariantCatalog.FindVariantIndex("MOAJ")); } public override void OnEnter() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_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) ((DeathState)this).OnEnter(); spawnPossition = ((EntityState)this).characterBody.corePosition; index = ((EntityState)this).characterBody.equipmentSlot.equipmentIndex; rewards = ((EntityState)this).GetComponent<DeathRewards>(); if (NetworkServer.active) { if (Chainloader.PluginInfos.ContainsKey("com.Nebby.TO30") && Object.op_Implicit((Object)(object)moajDef)) { SpawnJellies(3, (VariantDef[])(object)new VariantDef[1] { moajDef }); } else { SpawnJellies(10, Array.Empty<VariantDef>()); } } } private void SpawnJellies(int count, VariantDef[] variantDefs) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Expected O, but got Unknown //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0037: 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) for (int i = 0; i < count; i++) { VariantSummon val = new VariantSummon(); ((MasterSummon)val).position = spawnPossition; ((MasterSummon)val).masterPrefab = masterPrefab; ((MasterSummon)val).summonerBodyObject = ((EntityState)this).gameObject; ((MasterSummon)val).teamIndexOverride = ((EntityState)this).teamComponent.teamIndex; val.variantDefs = variantDefs; val.applyOnStart = true; if (Object.op_Implicit((Object)(object)rewards)) { val.summonerDeathRewards = rewards; val.deathRewardsCoefficient = count / 10; } CharacterMaster val2 = val.PerformSummon(); if (Object.op_Implicit((Object)(object)val2)) { CharacterBody body = val2.GetBody(); body.AddTimedBuff(Buffs.Immune, 1f); body.inventory.SetEquipmentIndex(index); } } } } } namespace EntityStates.VagrantMonster.Weapon.Mothership { public class ChargeJellies : BaseState { public static float baseDuration = 3f; public static GameObject chargingEffectPrefab; public static string chargingSoundString; private float duration; private float stopwatch; private GameObject chargeEffectInstance; private uint soundID; public override void OnEnter() { //IL_00b7: 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) chargingEffectPrefab = ChargeTrackingBomb.chargingEffectPrefab; chargingSoundString = ChargeTrackingBomb.chargingSoundString; ((BaseState)this).OnEnter(); stopwatch = 0f; duration = baseDuration / 5f; Transform modelTransform = ((EntityState)this).GetModelTransform(); ((EntityState)this).PlayCrossfade("Gesture, Override", "ChargeTrackingBomb", "ChargeTrackingBomb.playbackRate", duration, 0.3f); soundID = Util.PlayAttackSpeedSound(chargingSoundString, ((EntityState)this).gameObject, 5f); if (!Object.op_Implicit((Object)(object)modelTransform)) { return; } ChildLocator component = ((Component)modelTransform).GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component)) { Transform val = component.FindChild("TrackingBombMuzzle"); if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)chargingEffectPrefab)) { chargeEffectInstance = Object.Instantiate<GameObject>(chargingEffectPrefab, val.position, val.rotation); chargeEffectInstance.transform.parent = val; chargeEffectInstance.GetComponent<ScaleParticleSystemDuration>().newDuration = duration; } } } public override void OnExit() { ((EntityState)this).OnExit(); if (Object.op_Implicit((Object)(object)chargeEffectInstance)) { EntityState.Destroy((Object)(object)chargeEffectInstance); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; if (stopwatch >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)(object)new FireJellies()); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)3; } } public class FireJellies : BaseState { public static float baseDuration = 3f; public static SpawnCard JellySpawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/Jellyfish/cscJellyfish.asset").WaitForCompletion(); public static GameObject SpawnEffectPrefab; private float duration; private float stopwatch; private BullseyeSearch enemySearch; public override void OnEnter() { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: 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) SpawnEffectPrefab = FireTrackingBomb.muzzleEffectPrefab; ((BaseState)this).OnEnter(); stopwatch = 0f; duration = baseDuration / 5f; ((EntityState)this).PlayAnimation("Gesture, Override", "FireTrackingBomb", "FireTrackingBomb.playbackRate", duration, 0f); if (NetworkServer.active) { enemySearch = new BullseyeSearch(); enemySearch.filterByDistinctEntity = false; enemySearch.filterByLoS = false; enemySearch.maxDistanceFilter = float.PositiveInfinity; enemySearch.minDistanceFilter = 0f; enemySearch.minAngleFilter = 0f; enemySearch.maxAngleFilter = 180f; enemySearch.teamMaskFilter = TeamMask.GetEnemyTeams(((BaseState)this).GetTeam()); enemySearch.sortMode = (SortMode)1; enemySearch.viewer = ((EntityState)this).characterBody; } SpawnJellies(); } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; if (stopwatch >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void SpawnJellies() { //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_0047: 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_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_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: 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_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Expected O, but got Unknown //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Expected O, but got Unknown Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 searchOrigin = ((Ray)(ref aimRay)).origin; RaycastHit val = default(RaycastHit); if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank) && ((EntityState)this).inputBank.GetAimRaycast(float.PositiveInfinity, ref val)) { searchOrigin = ((RaycastHit)(ref val)).point; } if (enemySearch == null) { return; } enemySearch.searchOrigin = searchOrigin; enemySearch.RefreshCandidates(); HurtBox val2 = enemySearch.GetResults().FirstOrDefault(); if (!Object.op_Implicit((Object)(object)((Object.op_Implicit((Object)(object)val2) && Object.op_Implicit((Object)(object)val2.healthComponent)) ? val2.healthComponent.body.coreTransform : ((EntityState)this).characterBody.coreTransform))) { return; } for (int i = 0; i < 5; i++) { VariantDirectorSpawnRequest val3 = new VariantDirectorSpawnRequest(JellySpawnCard, new DirectorPlacementRule { placementMode = (PlacementMode)1, minDistance = 3f, maxDistance = 20f, spawnOnTarget = ((EntityState)this).transform }, RoR2Application.rng); val3.applyOnStart = false; val3.supressRewards = true; val3.variantDefs = Array.Empty<VariantDef>(); ((DirectorSpawnRequest)val3).summonerBodyObject = ((EntityState)this).gameObject; DirectorCore instance = DirectorCore.instance; GameObject val4 = ((instance != null) ? instance.TrySpawnObject((DirectorSpawnRequest)(object)val3) : null); if (Object.op_Implicit((Object)(object)val4)) { CharacterBody body = val4.GetComponent<CharacterMaster>().GetBody(); EffectManager.SimpleMuzzleFlash(SpawnEffectPrefab, ((Component)body).gameObject, "TrackingBombMuzzle", false); } } } } } namespace EntityStates.RoboBallMini.Weapon.MK2 { public class MK2Charge : BaseState { public static float baseDuration = 1f; public static GameObject chargeEffectPrefab; public static string attackString; public static string muzzleString; private float duration; private GameObject chargeInstance; public override void OnEnter() { //IL_009c: 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) baseDuration = ChargeEyeblast.baseDuration; chargeEffectPrefab = ChargeEyeblast.chargeEffectPrefab; attackString = ChargeEyeblast.attackString; muzzleString = "Muzzle"; ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; Transform modelTransform = ((EntityState)this).GetModelTransform(); Util.PlayAttackSpeedSound(attackString, ((EntityState)this).gameObject, base.attackSpeedStat); if (!Object.op_Implicit((Object)(object)modelTransform)) { return; } ChildLocator component = ((Component)modelTransform).GetComponent<ChildLocator>(); if (!Object.op_Implicit((Object)(object)component)) { return; } Transform val = component.FindChild(muzzleString); if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)chargeEffectPrefab)) { chargeInstance = Object.Instantiate<GameObject>(chargeEffectPrefab, val.position, val.rotation); chargeInstance.transform.parent = val; ScaleParticleSystemDuration component2 = chargeInstance.GetComponent<ScaleParticleSystemDuration>(); if (Object.op_Implicit((Object)(object)component2)) { component2.newDuration = duration; } } } public override void OnExit() { ((EntityState)this).OnExit(); if (Object.op_Implicit((Object)(object)chargeInstance)) { EntityState.Destroy((Object)(object)chargeInstance); } } public override void Update() { ((EntityState)this).Update(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState(GetNextState()); } } public virtual EntityState GetNextState() { return (EntityState)(object)new MK2Fire(); } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)1; } } public class MK2Fire : BaseState { [SerializeField] public GameObject projectilePrefab; public static GameObject muzzleflashEffectPrefab; [SerializeField] public int projectileCount = 3; [SerializeField] public float totalYawSpread = 5f; [SerializeField] public float baseDuration = 2f; [SerializeField] public float baseFireDuration = 0.2f; [SerializeField] public float damageCoefficient = 1.2f; [SerializeField] public float projectileSpeed; public static float force = 20f; public static float selfForce; public static string attackString; public static string muzzleString; private float duration; private float fireDuration; private int projectilesFired; private bool projectileSpreadIsYaw; public override void OnEnter() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_0098: 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_00a0: 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) FireEyeBlast val = new FireEyeBlast(); projectilePrefab = val.projectilePrefab; muzzleflashEffectPrefab = FireEyeBlast.muzzleflashEffectPrefab; projectileSpeed = val.projectileSpeed; selfForce = FireEyeBlast.selfForce / 4f; attackString = FireEyeBlast.attackString; muzzleString = FireEyeBlast.muzzleString; ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; fireDuration = baseFireDuration / base.attackSpeedStat; Util.PlaySound(attackString, ((EntityState)this).gameObject); if (((EntityState)this).isAuthority) { HealthComponent healthComponent = ((EntityState)this).healthComponent; Ray aimRay = ((BaseState)this).GetAimRay(); healthComponent.TakeDamageForce(((Ray)(ref aimRay)).direction * selfForce, false, false); } if (Random.value <= 0.5f) { projectileSpreadIsYaw = true; } } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_00da: 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_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority) { int num = Mathf.FloorToInt(((EntityState)this).fixedAge / fireDuration * (float)projectileCount); if (projectilesFired <= num && projectilesFired < projectileCount) { if (Object.op_Implicit((Object)(object)muzzleflashEffectPrefab)) { EffectManager.SimpleMuzzleFlash(muzzleflashEffectPrefab, ((EntityState)this).gameObject, muzzleString, false); } Ray aimRay = ((BaseState)this).GetAimRay(); float num2 = projectileSpeed; int num3 = Mathf.FloorToInt((float)projectilesFired - (float)(projectileCount - 1) / 2f); float num4 = 0f; float num5 = 0f; if (projectileSpreadIsYaw) { num4 = (float)num3 / (float)(projectileCount - 1) * totalYawSpread; } else { num5 = (float)num3 / (float)(projectileCount - 1) * totalYawSpread; } Vector3 val = Util.ApplySpread(((Ray)(ref aimRay)).direction, 0f, 0f, 1f, 1f, num4, num5); ProjectileManager.instance.FireProjectile(projectilePrefab, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(val), ((EntityState)this).gameObject, base.damageStat * damageCoefficient, force, Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, num2, (DamageTypeCombo?)null); projectilesFired++; } } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)1; } } } namespace EntityStates.Scorchling.Electric { public class ScorchlingElectricBomb : BaseState { public static float breachToSpitTime = 1f; public static float spitToLaunchTime = 0.3f; public static float spitToBurrowTime = 5f; public static float burrowToEndOfTime = 1f; public static float animDurationBreach = 1f; public static float animDurationSpit = 1f; public static float animDurationBurrow = 1f; public static float animDurationPostSpit = 0.75f; public static float percentageToFireProjectile = 0.75f; public static GameObject burrowEffectPrefab; public static float burrowRadius = 1f; public static string breachSoundString; public static string spitSoundString; public static string burrowSoundString; public static string burrowLoopSoundString; public static string burrowStopLoopSoundString; public static GameObject mortarProjectilePrefab; public static GameObject mortarMuzzleflashEffect; public static int mortarCount; public static string mortarMuzzleName; public static string mortarSoundString; public static float mortarDamageCoefficient; public static float timeToTarget = 3f; public static float projectileVelocity = 55f; public static float minimumDistance; private bool spitStarted; private bool firedProjectile; private bool earlyExit; private ScorchlingController sController; private bool _gotOrig; [AsyncAssetLoad] private static IEnumerator Load() { AsyncOperationHandle<GameObject> request = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElectricWorm/ElectricOrbProjectile.prefab"); while (!request.IsDone) { yield return null; } mortarProjectilePrefab = request.Result; } public override void OnEnter() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001b: 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_0031: 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_0047: 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_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //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_0089: 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_009f: 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) if (!_gotOrig) { ScorchlingLavaBomb val = new ScorchlingLavaBomb(); breachToSpitTime = val.breachToSpitTime; spitToLaunchTime = val.spitToLaunchTime; spitToBurrowTime = val.spitToBurrowTime; burrowToEndOfTime = val.burrowToEndOfTime; animDurationBreach = val.animDurationBreach; animDurationSpit = val.animDurationSpit; animDurationBurrow = val.animDurationBurrow; animDurationPostSpit = val.animDurationPostSpit; percentageToFireProjectile = val.percentageToFireProjectile; burrowEffectPrefab = val.burrowEffectPrefab; burrowRadius = val.burrowRadius; breachSoundString = val.breachSoundString; spitSoundString = val.spitSoundString; burrowSoundString = val.burrowSoundString; burrowLoopSoundString = val.burrowLoopSoundString; burrowStopLoopSoundString = val.burrowStopLoopSoundString; mortarMuzzleflashEffect = ScorchlingLavaBomb.mortarMuzzleflashEffect; mortarCount = ScorchlingLavaBomb.mortarCount; mortarMuzzleName = ScorchlingLavaBomb.mortarMuzzleName; mortarSoundString = ScorchlingLavaBomb.mortarSoundString; mortarDamageCoefficient = ScorchlingLavaBomb.mortarDamageCoefficient; timeToTarget = ScorchlingLavaBomb.timeToTarget; projectileVelocity = ScorchlingLavaBomb.projectileVelocity; minimumDistance = ScorchlingLavaBomb.minimumDistance; } ((BaseState)this).OnEnter(); sController = ((Component)((EntityState)this).characterBody).GetComponent<ScorchlingController>(); animDurationBreach = (sController.isBurrowed ? animDurationBreach : 0f); spitToBurrowTime += animDurationBreach + animDurationSpit; burrowToEndOfTime += spitToBurrowTime; if (sController.isBurrowed) { earlyExit = true; if (Util.HasEffectiveAuthority(((EntityState)this).characterBody.networkIdentity)) { ((EntityState)this).outer.SetNextState((EntityState)(object)new ScorchlingElectricBreach { proceedImmediatelyToElectricBomb = true, breachToBurrow = breachToSpitTime }); } } else { ((EntityState)this).characterBody.SetAimTimer(burrowToEndOfTime); } } public override void FixedUpdate() { if (earlyExit) { return; } ((EntityState)this).FixedUpdate(); if (!spitStarted && ((EntityState)this).fixedAge > animDurationBreach) { spitStarted = true; ((EntityState)this).PlayAnimation("FullBody, Override", "Spit", "Spit.playbackRate", animDurationSpit, 0f); } if (spitStarted && !firedProjectile && ((EntityState)this).fixedAge > animDurationSpit * percentageToFireProjectile + animDurationBreach) { firedProjectile = true; Util.PlaySound(spitSoundString, ((EntityState)this).gameObject); EffectManager.SimpleMuzzleFlash(mortarMuzzleflashEffect, ((EntityState)this).gameObject, mortarMuzzleName, false); if (((EntityState)this).isAuthority) { Spit(); } } if (firedProjectile && ((EntityState)this).fixedAge > animDurationBreach + animDurationSpit + animDurationPostSpit) { ((EntityState)this).outer.SetNextStateToMain(); } } public void Spit() { //IL_0023: 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_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_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Expected O, but got Unknown //IL_004f: 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_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_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_009d: 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_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00db: 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_00f7: 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_00d4: 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) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: 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_0128: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Unknown result type (might be due to invalid IL or missing references) Transform val = ((Component)((EntityState)this).characterBody.modelLocator.modelTransform).GetComponent<ChildLocator>().FindChild("MuzzleFire"); Ray val2 = default(Ray); ((Ray)(ref val2))..ctor(val.position, val.forward); Ray val3 = default(Ray); ((Ray)(ref val3))..ctor(((Ray)(ref val2)).origin, Vector3.up); BullseyeSearch val4 = new BullseyeSearch(); val4.searchOrigin = ((Ray)(ref val2)).origin; val4.searchDirection = ((Ray)(ref val2)).direction; val4.filterByLoS = false; val4.teamMaskFilter = TeamMask.allButNeutral; if (Object.op_Implicit((Object)(object)((EntityState)this).teamComponent)) { ((TeamMask)(ref val4.teamMaskFilter)).RemoveTeam(((EntityState)this).teamComponent.teamIndex); } val4.sortMode = (SortMode)2; val4.RefreshCandidates(); HurtBox val5 = val4.GetResults().FirstOrDefault(); bool flag = false; Vector3 val6 = Vector3.zero; RaycastHit val7 = default(RaycastHit); if (Object.op_Implicit((Object)(object)val5)) { val6 = ((Component)val5).transform.position; flag = true; } else if (Physics.Raycast(val2, ref val7, 1000f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask), (QueryTriggerInteraction)1)) { val6 = ((RaycastHit)(ref val7)).point; flag = true; } float magnitude = projectileVelocity; if (flag) { Vector3 val8 = val6 - ((Ray)(ref val3)).origin; Vector2 val9 = default(Vector2); ((Vector2)(ref val9))..ctor(val8.x, val8.z); float magnitude2 = ((Vector2)(ref val9)).magnitude; Vector2 val10 = val9 / magnitude2; if (magnitude2 < minimumDistance) { magnitude2 = minimumDistance; } float num = Trajectory.CalculateInitialYSpeed(timeToTarget, val8.y); float num2 = magnitude2 / timeToTarget; Vector3 direction = default(Vector3); ((Vector3)(ref direction))..ctor(val10.x * num2, num, val10.y * num2); magnitude = ((Vector3)(ref direction)).magnitude; ((Ray)(ref val3)).direction = direction; } Quaternion val11 = Util.QuaternionSafeLookRotation(((Ray)(ref val3)).direction); ProjectileManager.instance.FireProjectile(mortarProjectilePrefab, ((Ray)(ref val3)).origin, val11, ((EntityState)this).gameObject, base.damageStat * mortarDamageCoefficient, 0f, Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, magnitude, (DamageTypeCombo?)null); } public override void OnExit() { ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } public class ScorchlingElectricBreach : BaseState { public static float crackToBreachTime = 1f; public float breachToBurrow = 5f; public static float burrowToEndOfTime = 1f; public static float animDuration = 1f; public static float blastProcCoefficient; public static float blastDamageCoefficient; public static float blastForce; public static Vector3 blastBonusForce; public static float knockbackForce; public static GameObject crackEffectPrefab; public static float crackRadius = 1f; public static GameObject blastEffectPrefab; public static GameObject blastImpactEffectPrefab; public static float blastRadius = 1f; public static GameObject burrowEffectPrefab; public static float burrowRadius = 1f; public static string preBreachSoundString; public static string breachSoundString; public static string burrowSoundString; public static string burrowLoopSoundString; public static string burrowStopLoopSoundString; private static bool _gotOrig; public bool proceedImmediatelyToElectricBomb; private bool breached; private bool burrowed; private bool amServer; private Vector3 breachPosition; private ScorchlingController scorchlingController; private CharacterBody enemyCBody; 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_0020: 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_0036: 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_004c: 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_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: 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_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_008e: 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_00a4: 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_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: 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_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_020d: 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: Expected O, but got Unknown //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) if (!_gotOrig) { _gotOrig = true; ScorchlingBreach val = new ScorchlingBreach(); crackToBreachTime = val.crackToBreachTime; burrowToEndOfTime = val.burrowToEndOfTime; animDuration = val.animDuration; blastProcCoefficient = val.blastProcCoefficient; blastDamageCoefficient = val.blastDamageCoefficient; blastForce = val.blastForce; blastBonusForce = val.blastBonusForce; knockbackForce = val.knockbackForce; crackEffectPrefab = val.crackEffectPrefab; crackRadius = val.crackRadius; blastEffectPrefab = val.blastEffectPrefab; blastImpactEffectPrefab = val.blastImpactEffectPrefab; blastRadius = val.blastRadius; burrowEffectPrefab = val.burrowEffectPrefab; burrowRadius = val.burrowRadius; preBreachSoundString = val.preBreachSoundString; breachSoundString = val.breachSoundString; burrowSoundString = val.burrowSoundString; burrowLoopSoundString = val.burrowLoopSoundString; burrowStopLoopSoundString = val.burrowStopLoopSoundString; } ((BaseState)this).OnEnter(); amServer = NetworkServer.active; scorchlingController = ((Component)((EntityState)this).characterBody).GetComponent<ScorchlingController>(); Util.PlaySound(preBreachSoundString, ((EntityState)this).gameObject); if (amServer) { Target currentEnemy = ((Component)((EntityState)this).characterBody.master).GetComponent<BaseAI>().currentEnemy; enemyCBody = ((currentEnemy != null) ? currentEnemy.characterBody : null); if (proceedImmediatelyToElectricBomb) { breachToBurrow = 1f; } breachToBurrow += crackToBreachTime; burrowToEndOfTime += breachToBurrow; breachPosition = ((EntityState)this).characterBody.footPosition; if (!proceedImmediatelyToElectricBomb && Object.op_Implicit((Object)(object)enemyCBody)) { breachPosition = enemyCBody.footPosition; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.walkSpeedPenaltyCoefficient = 0f; } ((EntityState)this).characterBody.SetAimTimer(breachToBurrow); TeleportHelper.TeleportBody(((EntityState)this).characterBody, breachPosition); EffectManager.SpawnEffect(crackEffectPrefab, new EffectData { origin = breachPosition, scale = crackRadius }, true); scorchlingController.SetTeleportPermission(false); } } public override void FixedUpdate() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0058: 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) ((EntityState)this).FixedUpdate(); if (amServer && ((EntityState)this).fixedAge < crackToBreachTime && (Object)(object)enemyCBody != (Object)null) { Vector3 val = enemyCBody.corePosition - ((EntityState)this).characterBody.corePosition; Vector3 normalized = ((Vector3)(ref val)).normalized; ((EntityState)this).characterBody.characterDirection.forward = normalized; } if (!breached && ((EntityState)this).fixedAge > crackToBreachTime) { breached = true; scorchlingController.Breach(); ((EntityState)this).PlayAnimation("FullBody, Override", "Breach", "Breach.playbackRate", animDuration, 0f); Util.PlaySound(breachSoundString, ((EntityState)this).gameObject); Util.PlaySound(burrowStopLoopSoundString, ((EntityState)this).gameObject); if (amServer) { DetonateAuthority(); } } if (((EntityState)this).fixedAge > burrowToEndOfTime) { DoExit(); } } private void DoExit() { if (proceedImmediatelyToElectricBomb) { ((EntityState)this).outer.SetNextState((EntityState)(object)new ScorchlingElectricBomb()); } else { ((EntityState)this).outer.SetNextStateToMain(); } } protected Result DetonateAuthority() { //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_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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_0038: 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_0055: 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_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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0098: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00af: 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_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) EffectManager.SpawnEffect(blastEffectPrefab, new EffectData { origin = breachPosition, scale = blastRadius }, true); return new BlastAttack { attacker = ((EntityState)this).gameObject, baseDamage = base.damageStat * blastDamageCoefficient, baseForce = blastForce, bonusForce = blastBonusForce, crit = ((BaseState)this).RollCrit(), damageType = DamageTypeCombo.op_Implicit((DamageType)32), falloffModel = (FalloffModel)0, procCoefficient = blastProcCoefficient, radius = blastRadius, position = breachPosition, attackerFiltering = (AttackerFiltering)2, impactEffect = EffectCatalog.FindEffectIndexFromPrefab(blastImpactEffectPrefab), teamIndex = ((EntityState)this).teamComponent.teamIndex }.Fire(); } public override void OnExit() { ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { if (!proceedImmediatelyToElectricBomb) { return (InterruptPriority)2; } return (InterruptPriority)7; } } } namespace EntityStates.RoboBallBoss.Weapon.Swarming { public class DeploySwarm : BaseState { public static float baseDuration = DeployMinions.baseDuration; public static string attackSoundString = DeployMinions.attackSoundString; public static string summonSoundString = DeployMinions.summonSoundString; public static float maxSummonCount = 5f; public static float summonDuration = DeployMinions.summonDuration; public static string summonMuzzleString = DeployMinions.summonMuzzleString; public static GameObject roboBallMiniMaster = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/RoboBallBoss/RoboBallMiniMaster.prefab").WaitForCompletion(); public static VariantDef swarmingDef = NWAssets.LoadAsset<VariantDef>("SwarmerProbe"); private Animator animator; private Transform modelTransform; private ChildLocator childLocator; private float duration; private float summonInterval; private float summonTimer; private int summonCount; private bool isSummoning; public override void OnEnter() { ((BaseState)this).OnEnter(); animator = ((EntityState)this).GetModelAnimator(); modelTransform = ((EntityState)this).GetModelTransform(); childLocator = ((Component)modelTransform).GetComponent<ChildLocator>(); duration = baseDuration; ((EntityState)this).PlayCrossfade("Gesture, Additive", "DeployMinions", "DeployMinions.playbackRate", duration, 0.1f); Util.PlaySound(attackSoundString, ((EntityState)this).gameObject); summonInterval = summonDuration / maxSummonCount; } private Transform FindTargetClosest(Vector3 point, TeamIndex enemyTeam) { //IL_0000: 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_0025: Unknown result type (might be due to invalid IL or missing references) ReadOnlyCollection<TeamComponent> teamMembers = TeamComponent.GetTeamMembers(enemyTeam); float num = 99999f; Transform result = null; for (int i = 0; i < teamMembers.Count; i++) { float num2 = Vector3.SqrMagnitude(((Component)teamMembers[i]).transform.position - point); if (num2 < num) { num = num2; result = ((Component)teamMembers[i]).transform; } } return result; } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); bool flag = animator.GetFloat("DeployMinions.active") > 0.9f; if (isSummoning) { summonTimer += Time.fixedDeltaTime; if (NetworkServer.active && summonTimer > 0f && (float)summonCount < maxSummonCount) { summonCount++; summonTimer -= summonInterval; SummonMinion(); } } isSummoning = flag; if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void SummonMinion() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //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) VariantSummon val = new VariantSummon(); ((MasterSummon)val).position = childLocator.FindChild(summonMuzzleString).position; ((MasterSummon)val).masterPrefab = roboBallMiniMaster; ((MasterSummon)val).summonerBodyObject = ((Component)((EntityState)this).characterBody).gameObject; val.applyOnStart = true; val.supressRewards = true; val.variantDefs = (VariantDef[])(object)new VariantDef[1] { swarmingDef }; val.PerformSummon(); } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } } namespace EntityStates.ParentMonster.Child { public class ChildDeath : GenericCharacterDeath { public float timeBeforeDestealth = 2f; public float destealthDuration = 0.1f; public Material destealthMaterial; public GameObject effectPrefab; public string effectMuzzleString = "SlamZone"; public static Vector3 SpawnPosition; public static CharacterSpawnCard parentSpawnCard = Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Parent/cscParent.asset").WaitForCompletion(); public static DeathState og = new DeathState(); private bool destealth; private DeathRewards deathRewards; public override bool shouldAutoDestroy { get { if (destealth) { return ((EntityState)this).fixedAge > timeBeforeDestealth + destealthDuration; } return false; } } public override void OnEnter() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) ((GenericCharacterDeath)this).OnEnter(); SpawnPosition = ((EntityState)this).characterBody.corePosition; effectPrefab = og.effectPrefab; destealthMaterial = og.destealthMaterial; deathRewards = ((EntityState)this).GetComponent<DeathRewards>(); } public override void OnExit() { ((GenericCharacterDeath)this).DestroyModel(); ((GenericCharacterDeath)this).OnExit(); } private void SpawnParents() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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_004e: Expected O, but got Unknown //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Expected O, but got Unknown //IL_0064: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active) { return; } for (int i = 0; i < 2; i++) { VariantDirectorSpawnRequest val = new VariantDirectorSpawnRequest((SpawnCard)(object)parentSpawnCard, new DirectorPlacementRule { maxDistance = 20f, minDistance = 3f, placementMode = (PlacementMode)1, spawnOnTarget = ((EntityState)this).transform }, RoR2Application.rng); val.applyOnStart = false; ((DirectorSpawnRequest)val).ignoreTeamMemberLimit = true; ((DirectorSpawnRequest)val).teamIndexOverride = ((EntityState)this).teamComponent.teamIndex; val.variantDefs = Array.Empty<VariantDef>(); if (Object.op_Implicit((Object)(object)deathRewards)) { val.deathRewardsBase = deathRewards; val.deathRewardsCoefficient = 0.5f; } GameObject val2 = DirectorCore.instance.TrySpawnObject((DirectorSpawnRequest)(object)val); if (Object.op_Implicit((Object)(object)val2)) { val2.GetComponent<CharacterMaster>().GetBody().AddBuff(Buffs.WarCryBuff); } } } public override void FixedUpdate() { ((GenericCharacterDeath)this).FixedUpdate(); if (((EntityState)this).fixedAge > timeBeforeDestealth && !destealth) { SpawnParents(); DoDestealth(); } if (destealth && ((EntityState)this).fixedAge > timeBeforeDestealth + destealthDuration) { ((GenericCharacterDeath)this).DestroyModel(); } } private void DoDestealth() { destealth = true; if (Object.op_Implicit((Object)(object)effectPrefab)) { EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, effectMuzzleString, false); } Transform modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { CharacterModel component = ((Component)modelTransform).gameObject.GetComponent<CharacterModel>(); if (Object.op_Implicit((Object)(object)destealthMaterial)) { TemporaryOverlay obj = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>(); obj.duration = destealthDuration; obj.destroyComponentOnEnd = true; obj.originalMaterial = destealthMaterial; obj.inspectorCharacterModel = component; obj.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); obj.animateShaderAlpha = true; PrintController component2 = ((Component)((EntityState)this).modelLocator.modelTransform).gameObject.GetComponent<PrintController>(); ((Behaviour)component2).enabled = false; component2.printTime = destealthDuration; component2.startingPrintHeight = 0f; component2.maxPrintHeight = 20f; component2.startingPrintBias = 0f; component2.maxPrintBias = 2f; component2.disableWhenFinished = false; component2.printCurve = AnimationCurve.EaseInOut(0f, 0f, 1f, 1f); ((Behaviour)component2).enabled = true; } Transform val = ((BaseState)this).FindModelChild("CoreLight"); if (Object.op_Implicit((Object)(object)val)) { ((Component)val).gameObject.SetActive(false); } } } } public class Tantrum : BaseState { public static float duration = 3f; public static float damageCoefficient = 4f; public static float forceMagnitude = 16f; public static float radius = 7f; private BlastAttack attack; public static string attackSoundString; public static GameObject slamImpactEffect; public static GameObject meleeTrailEffectL; public static GameObject meleeTrailEffectR; private Animator modelAnimator; private Transform modelTransform; private bool hasAttacked; public override void OnEnter() { //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0077: 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) ((BaseState)this).OnEnter(); modelAnimator = ((EntityState)this).GetModelAnimator(); modelTransform = ((EntityState)this).GetModelTransform(); Util.PlayAttackSpeedSound(attackSoundString, ((EntityState)this).gameObject, base.attackSpeedStat); ((EntityState)this).PlayCrossfade("Body", "Slam", "Slam.playbackRate", duration / base.attackSpeedStat, 0.1f); if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { CharacterDirection characterDirection = ((EntityState)this).characterDirection; Ray aimRay = ((BaseState)this).GetAimRay(); characterDirection.moveVector = ((Ray)(ref aimRay)).direction; } } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)modelAnimator) && modelAnimator.GetFloat("Slam.hitBoxActive") > 0.5f && !hasAttacked) { if (((EntityState)this).isAuthority) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.moveVector = ((EntityState)this).characterDirection.forward; } if (Object.op_Implicit((Object)(object)modelTransform)) { Transform val = ((BaseState)this).FindModelChild("SlamZone"); if (Object.op_Implicit((Object)(object)val)) { attack = new BlastAttack(); attack.attacker = ((EntityState)this).gameObject; attack.inflictor = ((EntityState)this).gameObject; attack.teamIndex = ((EntityState)this).teamComponent.teamIndex; attack.baseDamage = base.damageStat * damageCoefficient; attack.baseForce = forceMagnitude; attack.position = val.position; attack.radius = radius; attack.Fire(); } } } hasAttacked = true; } if (((EntityState)this).fixedAge >= duration / base.attackSpeedStat && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } } namespace EntityStates.MiniMushroom.Healer { public class HealerGrenade : BaseState { public static GameObject chargeEffectPrefab = SporeGrenade.chargeEffectPrefab; public static string attackSoundString = "Play_minimushroom_spore_shoot"; public static string chargeUpSoundString = "Play_minimushroom_spore_chargeUp"; public static float recoilAmplitude = 1f; public static GameObject projectilePrefab = NW.PrefabClones.HealerGrenade.projectile; public static float baseDuration = 4.4f; public static string muzzleString = "Muzzle"; public static float damageCoefficient = 1f; public static float timeToTarget = 1.5f; public static float projectileVelocity = 20f; public static float minimumDistance = 5f; public static float maximumDistance = 60f; public static float baseChargeTime = 2.6f; private uint chargeupSoundID; private Ray projectileRay; private Transform modelTransform; private float duration; private float chargeTime; private bool hasFired; private Animator modelAnimator; private GameObject chargeEffectInstance; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; chargeTime = baseChargeTime / base.attackSpeedStat; modelAnimator = ((EntityState)this).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { modelAnimator.SetBool("isCharged", false); ((EntityState)this).PlayAnimation("Gesture, Additive", "Charge"); chargeupSoundID = Util.PlaySound(chargeUpSoundString, ((Component)((EntityState)this).characterBody.modelLocator.modelTransform).gameObject); } Transform val = ((BaseState)this).FindModelChild("ChargeSpot"); if (Object.op_Implicit((Object)(object)val)) { chargeEffectInstance = Object.Instantiate<GameObject>(chargeEffectPrefab, val); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (!(((EntityState)this).fixedAge >= chargeTime)) { return; } if (!hasFired) { hasFired = true; Animator obj = modelAnimator; if (obj != null) { obj.SetBool("isCharged", true); } if (((EntityState)this).isAuthority) { FireGrenade(muzzleString); } } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).PlayAnimation("Gesture, Additive", "Empty"); AkSoundEngine.StopPlayingID(chargeupSoundID); if (Object.op_Implicit((Object)(object)chargeEffectInstance)) { EntityState.Destroy((Object)(object)chargeEffectInstance); } ((EntityState)this).OnExit(); } private void FireGrenade(string targetMuzzle) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: 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_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: 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_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_0222: 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_0119: 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_0127: 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_0143: 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_0173: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) Ray aimRay = ((BaseState)this).GetAimRay(); Ray val = default(Ray); ((Ray)(ref val))..ctor(((Ray)(ref aimRay)).origin, Vector3.up); Transform val2 = ((BaseState)this).FindModelChild(targetMuzzle); if (Object.op_Implicit((Object)(object)val2)) { ((Ray)(ref val)).origin = val2.position; } BullseyeSearch val3 = new BullseyeSearch(); val3.searchOrigin = ((Ray)(ref aimRay)).origin; val3.searchDirection = ((Ray)(ref aimRay)).direction; val3.filterByLoS = false; val3.teamMaskFilter = TeamMask.allButNeutral; if (Object.op_Implicit((Object)(object)((EntityState)this).teamComponent)) { ((TeamMask)(ref val3.teamMaskFilter)).RemoveTeam(((EntityState)this).teamComponent.teamIndex); } val3.sortMode = (SortMode)2; val3.RefreshCandidates(); HurtBox val4 = val3.GetResults().FirstOrDefault(); bool flag = false; Vector3 val5 = Vector3.zero; RaycastHit val6 = default(RaycastHit); if (Object.op_Implicit((Object)(object)val4)) { val5 = ((Component)val4).transform.position; flag = true; } else if (Physics.Raycast(aimRay, ref val6, 1000f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask), (QueryTriggerInteraction)1)) { val5 = ((RaycastHit)(ref val6)).point; flag = true; } float magnitude = projectileVelocity; if (flag) { Vector3 val7 = val5 - ((Ray)(ref val)).origin; Vector2 val8 = default(Vector2); ((Vector2)(ref val8))..ctor(val7.x, val7.z); float magnitude2 = ((Vector2)(ref val8)).magnitude; Vector2 val9 = val8 / magnitude2; if (magnitude2 < minimumDistance) { magnitude2 = minimumDistance; } if (magnitude2 > maximumDistance) { magnitude2 = maximumDistance; } float num = Trajectory.CalculateInitialYSpeed(timeToTarget, val7.y); float num2 = magnitude2 / timeToTarget; Vector3 direction = default(Vector3); ((Vector3)(ref direction))..ctor(val9.x * num2, num, val9.y * num2); magnitude = ((Vector3)(ref direction)).magnitude; ((Ray)(ref val)).direction = direction; } Quaternion val10 = Util.QuaternionSafeLookRotation(((Ray)(ref val)).direction + Random.insideUnitSphere * 0.05f); HealingWard component = ((ProjectileExplosion)projectilePrefab.GetComponent<ProjectileImpactExplosion>()).childrenProjectilePrefab.GetComponent<HealingWard>(); component.healPoints = ((EntityState)this).characterBody.baseMaxHealth / 10f; component.healFraction = 0.01f; ProjectileManager.instance.FireProjectile(projectilePrefab, ((Ray)(ref val)).origin, val10, ((EntityState)this).gameObject, base.damageStat * damageCoefficient, 0f, Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, magnitude, (DamageTypeCombo?)null); } } } namespace EntityStates.MiniMushroom.AD { public class ArmorBreakerGrenade : BaseState { public static GameObject chargeEffectPrefab = SporeGrenade.chargeEffectPrefab; public static string attackSoundString = "Play_minimushroom_spore_shoot"; public static string chargeUpSoundString = "Play_minimushroom_spore_chargeUp"; public static float recoilAmplitude = 1f; public static GameObject projectilePrefab = NW.PrefabClones.ArmorBreakerGrenade.projectile; public static float baseDuration = 4.4f; public static string muzzleString = "Muzzle"; public static float damageCoefficient = 1f; public static float timeToTarget = 1.5f; public static float projectileVelocity = 20f; public static float minimumDistance = 5f; public static float maximumDistance = 60f; public static float baseChargeTime = 2.6f; private uint chargeupSoundID; private Ray projectileRay; private Transform modelTransform; private float duration; private float chargeTime; private bool hasFired; private Animator modelAnimator; private GameObject chargeEffectInstance; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; chargeTime = baseChargeTime / base.attackSpeedStat; modelAnimator = ((EntityState)this).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { modelAnimator.SetBool("isCharged", false); ((EntityState)this).PlayAnimation("Gesture, Additive", "Charge"); chargeupSoundID = Util.PlaySound(chargeUpSoundString, ((Component)((EntityState)this).characterBody.modelLocator.modelTransform).gameObject); } Transform val = ((BaseState)this).FindModelChild("ChargeSpot"); if (Object.op_Implicit((Object)(object)val)) { chargeEffectInstance = Object.Instantiate<GameObject>(chargeEffectPrefab, val); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (!(((EntityState)this).fixedAge >= chargeTime)) { return; } if (!hasFired) { hasFired = true; Animator obj = modelAnimator; if (obj != null) { obj.SetBool("isCharged", true); } if (((EntityState)this).isAuthority) { FireGrenade(muzzleString); } } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).PlayAnimation("Gesture, Additive", "Empty"); AkSoundEngine.StopPlayingID(chargeupSoundID); if (Object.op_Implicit((Object)(object)chargeEffectInstance)) { EntityState.Destroy((Object)(object)chargeEffectInstance); } ((EntityState)this).OnExit(); } private void FireGrenade(string targetMuzzle) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: 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_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: 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_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: 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_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0119: 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_0127: 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_0143: 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_0173: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) Ray aimRay = ((BaseState)this).GetAimRay(); Ray val = default(Ray); ((Ray)(ref val))..ctor(((Ray)(ref aimRay)).origin, Vector3.up); Transform val2 = ((BaseState)this).FindModelChild(targetMuzzle); if (Object.op_Implicit((Object)(object)val2)) { ((Ray)(ref val)).origin = val2.position; } BullseyeSearch val3 = new BullseyeSearch(); val3.searchOrigin = ((Ray)(ref aimRay)).origin; val3.searchDirection = ((Ray)(ref aimRay)).direction; val3.filterByLoS = false; val3.teamMaskFilter = TeamMask.allButNeutral; if (Object.op_Implicit((Object)(object)((EntityState)this).teamComponent)) { ((TeamMask)(ref val3.teamMaskFilter)).RemoveTeam(((EntityState)this).teamComponent.teamIndex); } val3.sortMode = (SortMode)2; val3.RefreshCandidates(); HurtBox val4 = val3.GetResults().FirstOrDefault(); bool flag = false; Vector3 val5 = Vector3.zero; RaycastHit val6 = default(RaycastHit); if (Object.op_Implicit((Object)(object)val4)) { val5 = ((Component)val4).transform.position; flag = true; } else if (Physics.Raycast(aimRay, ref val6, 1000f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask), (QueryTriggerInteraction)1)) { val5 = ((RaycastHit)(ref val6)).point; flag = true; } float magnitude = projectileVelocity; if (flag) { Vector3 val7 = val5 - ((Ray)(ref val)).origin; Vector2 val8 = default(Vector2); ((Vector2)(ref val8))..ctor(val7.x, val7.z); float magnitude2 = ((Vector2)(ref val8)).magnitude; Vector2 val9 = val8 / magnitude2; if (magnitude2 < minimumDistance) { magnitude2 = minimumDistance; } if (magnitude2 > maximumDistance) { magnitude2 = maximumDistance; } float num = Trajectory.CalculateInitialYSpeed(timeToTarget, val7.y); float num2 = magnitude2 / timeToTarget; Vector3 direction = default(Vector3); ((Vector3)(ref direction))..ctor(val9.x * num2, num, val9.y * num2); magnitude = ((Vector3)(ref direction)).magnitude; ((Ray)(ref val)).direction = direction; } Quaternion val10 = Util.QuaternionSafeLookRotation(((Ray)(ref val)).direction + Random.insideUnitSphere * 0.05f); ProjectileManager.instance.FireProjectile(projectilePrefab, ((Ray)(ref val)).origin, val10, ((EntityState)this).gameObject, base.damageStat * damageCoefficient, 0f, Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, magnitude, (DamageTypeCombo?)null); } } } namespace EntityStates.Wisp1Monster.Stone { public class ChargeStoneLaser : BaseState { public static float baseDuration = 3f; public static float laserMaxWidth = 0.2f; public static GameObject effectPrefab = ChargeLaser.effectPrefab; public static GameObject laserPrefab = ChargeLaser.laserPrefab; public static string attackSoundString = ChargeLaser.attackSoundString; private float duration; private uint chargePlayID; private GameObject chargeEffectInstance; private GameObject laserEffectInstance; private LineRenderer laserLineComponent; private Vector3 laserDirection; private Vector3 visualEndPosition; private float flashTimer; private bool laserOn; public override void OnEnter() { //IL_0082: 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_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; Transform modelTransform = ((EntityState)this).GetModelTransform(); chargePlayID = Util.PlayAttackSpeedSound(attackSoundString, ((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("Muzzle"); if (Object.op_Implicit((Object)(object)val)) { if (Object.op_Implicit((Object)(object)effectPrefab)) { chargeEffectInstance = Object.Instantiate<GameObject>(effectPrefab, val.position, val.rotation); chargeEffectInstance.transform.parent = val; ScaleParticleSystemDuration component2 = chargeEffectInstance.GetComponent<ScaleParticleSystemDuration>(); if (Object.op_Implicit((Object)(object)component2)) { component2.newDuration = duration; } } if (Object.op_Implicit((Object)(object)laserPrefab)) { laserEffectInstance = Object.Instantiate<GameObject>(laserPrefab, val.position, val.rotation); laserEffectInstance.transform.parent = val; laserLineComponent = laserEffectInstance.GetComponent<LineRenderer>(); } } } ((EntityState)this).PlayAnimation("Body", "ChargeAttack1", "ChargeAttack1.playbackRate", duration, 0f); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(duration); } } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(duration); } flashTimer = 0f; laserOn = true; } public override void OnExit() { ((EntityState)this).OnExit(); AkSoundEngine.StopPlayingID(chargePlayID); if (Object.op_Implicit((Object)(object)chargeEffectInstance)) { EntityState.Destroy((Object)(object)chargeEffectInstance); } if (Object.op_Implicit((Object)(object)laserEffectInstance)) { EntityState.Destroy((Object)(object)laserEffectInstance); } } public override void Update() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_004e: 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_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0063: 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_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).Update(); if (!Object.op_Implicit((Object)(object)laserEffectInstance) || !Object.op_Implicit((Object)(object)laserLineComponent)) { return; } float num = 1000f; Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 position = laserEffectInstance.transform.parent.position; Vector3 point = ((Ray)(ref aimRay)).GetPoint(num); laserDirection = point - position; RaycastHit val = default(RaycastHit); if (Physics.Raycast(aimRay, ref val, num, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask))) { point = ((RaycastHit)(ref val)).point; } laserLineComponent.SetPosition(0, position); laserLineComponent.SetPosition(1, point); float num2; if (duration - ((EntityState)this).age > 0.5f) { num2 = ((EntityState)this).age / duration; } else { flashTimer -= Time.deltaTime; if (flashTimer <= 0f) { laserOn = !laserOn; flashTimer = 1f / 30f; } num2 = (laserOn ? 1f : 0f); } num2 *= laserMaxWidth; laserLineComponent.startWidth = num2; laserLineComponent.endWidth = num2; } public override void FixedUpdate() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { FireStoneLaser fireStoneLaser = new FireStoneLaser(); fireStoneLaser.laserDirection = laserDirection; ((EntityState)this).outer.SetNextState((EntityState)(object)fireStoneLaser); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)1; } } public class FireStoneLaser : BaseState { public static GameObject effectPrefab = FireLaser.effectPrefab; public static GameObject hitEffectPrefab = FireLaser.hitEffectPrefab; public static GameObject tracerEffectPrefab = FireLaser.tracerEffectPrefab; public static float damageCoefficient = FireLaser.damageCoefficient; public static float blastRadius = FireLaser.blastRadius; public static float force = FireLaser.force; public static float minSpread = FireLaser.minSpread; public static float maxSpread = FireLaser.maxSpread; public static int bulletCount = FireLaser.bulletCount; public static float baseDuration = FireLaser.baseDuration; public static string attackSoundString = FireLaser.attackSoundString; public Vector3 laserDirection; private float duration; private Ray modifiedAimRay; 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_002b: 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_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: 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_00f4: 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_0113: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_013e: 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_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: 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_0184: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_020d: 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_0219: Expected O, but got Unknown ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; modifiedAimRay = ((BaseState)this).GetAimRay(); ((Ray)(ref modifiedAimRay)).direction = laserDirection; ((EntityState)this).GetModelAnimator(); Transform modelTransform = ((EntityState)this).GetModelTransform(); Util.PlaySound(attackSoundString, ((EntityState)this).gameObject); string text = "Muzzle"; if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(2f); } ((EntityState)this).PlayAnimation("Body", "FireAttack1", "FireAttack1.playbackRate", duration, 0f); if (Object.op_Implicit((Object)(object)effectPrefab)) { EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, text, false); } if (!((EntityState)this).isAuthority) { return; } float num = 1000f; Vector3 val = ((Ray)(ref modifiedAimRay)).origin + ((Ray)(ref modifiedAimRay)).direction * num; RaycastHit val2 = default(RaycastHit); if (Physics.Raycast(modifiedAimRay, ref val2, num, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.defaultLayer)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask))) { val = ((RaycastHit)(ref val2)).point; } new BlastAttack { attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, teamIndex = TeamComponent.GetObjectTeam(((EntityState)this).gameObject), baseDamage = base.damageStat * 5.72f * damageCoefficient, baseForce = force * 0.2f, position = val, radius = blastRadius, falloffModel = (FalloffModel)2, bonusForce = force * ((Ray)(ref modifiedAimRay)).direction }.Fire(); _ = ((Ray)(ref modifiedAimRay)).origin; if (!Object.op_Implicit((Object)(object)modelTransform)) { return; } ChildLocator component = ((Component)modelTransform).GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component)) { int num2 = component.FindChildIndex(text); if (Object.op_Implicit((Object)(object)tracerEffectPrefab)) { EffectData val3 = new EffectData { origin = val, start = ((Ray)(ref modifiedAimRay)).origin }; val3.SetChildLocatorTransformReference(((EntityState)this).gameObject, num2); EffectManager.SpawnEffect(tracerEffectPrefab, val3, true); EffectManager.SpawnEffect(hitEffectPrefab, val3, true); } } } 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.Wisp1Monster.Archaic { public class ChargeArchaicCannon : BaseState { public static GameObject chargeEffectPrefab; public static GameObject laserEffectPrefab = ChargeEmbers.laserEffectPrefab; public static float baseDuration = 3f; private GameObject chargeEffectInstance; private GameObject laserEffectInstance; private LineRenderer laserEffectInstanceLineRenderer; protected float duration; private string attackString; private float stopwatch; public override void OnEnter() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) ChargeCannons val = new ChargeCannons(); chargeEffectPrefab = ((ChargeCannons)val).effectPrefab; attackString = ((ChargeCannons)val).attackString; ((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"))) { if (Object.op_Implicit((Object)(object)chargeEffectPrefab)) { chargeEffectInstance = Object.Instantiate<GameObject>(chargeEffectPrefab, ((EntityState)this).transform.position, ((EntityState)this).transform.rotation); chargeEffectInstance.transform.parent = ((EntityState)this).transform; ScaleParticleSystemDuration component2 = chargeEffectInstance.GetComponent<ScaleParticleSystemDuration>(); if (Object.op_Implicit((Object)(object)component2)) { component2.newDuration = duration; } } if (Object.op_Implicit((Object)(object)laserEffectPrefab)) { laserEffectInstance = Object.Instantiate<GameObject>(laserEffectPrefab, ((EntityState)this).transform.position, ((EntityState)this).transform.rotation); laserEffectInstance.transform.parent = ((EntityState)this).transform; laserEffectInstanceLineRenderer = laserEffectInstance.GetComponent<LineRenderer>(); } } } 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(); if (Object.op_Implicit((Object)(object)chargeEffectPrefab)) { EntityState.Destroy((Object)(object)chargeEffectInstance); } if (Object.op_Implicit((Object)(object)laserEffectPrefab)) { EntityState.Destroy((Object)(object)laserEffectInstance); } } public override void Update() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_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_001e: 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_002b: 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_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).Update(); Ray aimRay = ((BaseState)this).GetAimRay(); float num = 50f; Vector3 origin = ((Ray)(ref aimRay)).origin; Vector3 point = ((Ray)(ref aimRay)).GetPoint(num); laserEffectInstanceLineRenderer.SetPosition(0, origin); laserEffectInstanceLineRenderer.SetPosition(1, point); Color startColor = default(Color); ((Color)(ref startColor))..ctor(255f, 191f, 237f, stopwatch / duration); Color clear = Color.clear; laserEffectInstanceLineRenderer.startColor = startColor; laserEffectInstanceLineRenderer.endColor = clear; }