Decompiled source of VariantPack NebbysWrath v2.1.1
plugins/NebbysWrath.dll
Decompiled a week 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); 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); } 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_0207: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_0229: 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, false); 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)5; } } } 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); } } } 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); } } } 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; } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); stopwa