using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using AmpMod.Modules;
using AmpMod.Modules.Survivors;
using AmpMod.SkillStates;
using AmpMod.SkillStates.Amp;
using AmpMod.SkillStates.Amp.BaseStates;
using AmpMod.SkillStates.BaseStates;
using AmpMod.SkillStates.Nemesis_Amp;
using AmpMod.SkillStates.Nemesis_Amp.Components;
using AmpMod.SkillStates.Nemesis_Amp.Orbs;
using AmpMod.SkillStates.SkillComponents;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using EntityStates;
using EntityStates.BrotherMonster.Weapon;
using EntityStates.Huntress;
using EntityStates.Mage;
using EntityStates.Mage.Weapon;
using EntityStates.MagmaWorm;
using HG;
using HG.Reflection;
using IL.RoR2;
using JetBrains.Annotations;
using KinematicCharacterController;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.RoR2;
using On.RoR2.CharacterSpeech;
using On.RoR2.Stats;
using R2API;
using R2API.Networking;
using R2API.Networking.Interfaces;
using R2API.Utils;
using RoR2;
using RoR2.Achievements;
using RoR2.Audio;
using RoR2.CharacterSpeech;
using RoR2.ContentManagement;
using RoR2.HudOverlay;
using RoR2.Orbs;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.Stats;
using RoR2.UI;
using TMPro;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Events;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.Rendering.PostProcessing;
using UnityEngine.SceneManagement;
using UnityEngine.Serialization;
using UnityEngine.UI;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("AmpMod")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+b54d8a3941e60bd09723d2fabb1d949120f745ec")]
[assembly: AssemblyProduct("AmpMod")]
[assembly: AssemblyTitle("AmpMod")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: UnverifiableCode]
internal class BodyInfo
{
internal string bodyName = "";
internal string bodyNameToken = "";
internal string subtitleNameToken = "";
internal string bodyNameToClone = "Commando";
internal Texture characterPortrait = null;
internal GameObject crosshair = null;
internal GameObject podPrefab = null;
internal float maxHealth = 100f;
internal float healthGrowth = 2f;
internal float healthRegen = 0f;
internal float shield = 0f;
internal float shieldGrowth = 0f;
internal float moveSpeed = 7f;
internal float moveSpeedGrowth = 0f;
internal float acceleration = 80f;
internal float jumpPower = 15f;
internal float jumpPowerGrowth = 0f;
internal float damage = 12f;
internal float attackSpeed = 1f;
internal float attackSpeedGrowth = 0f;
internal float armor = 0f;
internal float armorGrowth = 0f;
internal float crit = 1f;
internal float critGrowth = 0f;
internal int jumpCount = 1;
internal Color bodyColor = Color.grey;
internal Vector3 aimOriginPosition = new Vector3(0f, 1.8f, 0f);
internal Vector3 modelBasePosition = new Vector3(0f, -0.92f, 0f);
internal Vector3 cameraPivotPosition = new Vector3(0f, 1.6f, 0f);
}
internal class CustomRendererInfo
{
internal string childName;
internal Material material;
internal bool ignoreOverlays;
}
internal class SkillDefInfo
{
public string skillName;
public string skillNameToken;
public string skillDescriptionToken;
public Sprite skillIcon;
public SerializableEntityStateType activationState;
public string activationStateMachineName;
public int baseMaxStock;
public float baseRechargeInterval;
public bool beginSkillCooldownOnSkillEnd;
public bool canceledFromSprinting;
public bool forceSprintDuringState;
public bool fullRestockOnAssign;
public InterruptPriority interruptPriority;
public bool resetCooldownTimerOnUse;
public bool isCombatSkill;
public bool mustKeyPress;
public bool cancelSprintingOnActivation;
public int rechargeStock;
public int requiredStock;
public int stockToConsume;
public string[] keywordTokens;
}
namespace AmpMod.SkillStates
{
internal class AltPulseLeap : BaseSkillState
{
private BlastAttack boostBlast;
private string launchSound = "PlayBoltExit";
private float launchDamage = 2.5f;
private GameObject launchEffect;
private ChildLocator childLocator;
private float smallHopVelocity = 12f;
private AmpLightningController lightningController;
private Vector3 lungeVelocity;
private Vector3 initialLaunchVelocity;
private float blastRadius = 11f;
private float flyDuration = 0.15f;
private float exitAnimDuration = 0.65f;
private float exitDuration = 1.2f;
private Transform modelTransform;
private bool hasResetRot;
private bool hasFlown;
private float speedCoefficient = 20f;
private bool hasFired = false;
public static AnimationCurve speedCoefficientCurve = FlyUpState.speedCoefficientCurve;
private Vector3 aimDirection;
private Transform leftMuzzleTransform;
private Transform swordTipTransform;
private bool isFlying;
private Animator animator;
private Vector3 flyDirection;
private float upSpeed;
private Transform inputSpace;
private GameObject muzzlePrefab;
private Rotator rotator;
private GameObject blinkPrefab;
private float lungeSpeed = 40f;
public override void OnEnter()
{
//IL_0131: Unknown result type (might be due to invalid IL or missing references)
//IL_0142: Unknown result type (might be due to invalid IL or missing references)
//IL_0157: Unknown result type (might be due to invalid IL or missing references)
//IL_0168: Unknown result type (might be due to invalid IL or missing references)
//IL_0179: Unknown result type (might be due to invalid IL or missing references)
//IL_020e: Unknown result type (might be due to invalid IL or missing references)
//IL_0213: Unknown result type (might be due to invalid IL or missing references)
//IL_0217: Unknown result type (might be due to invalid IL or missing references)
//IL_021c: Unknown result type (might be due to invalid IL or missing references)
//IL_0228: Unknown result type (might be due to invalid IL or missing references)
//IL_022d: Unknown result type (might be due to invalid IL or missing references)
//IL_0232: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
lightningController = ((EntityState)this).GetComponent<AmpLightningController>();
blinkPrefab = lightningController.pulseLeapEffect;
muzzlePrefab = lightningController.pulseMuzzleEffect;
if (((EntityState)this).isAuthority)
{
FireLaunchBlast();
modelTransform = ((EntityState)this).GetModelTransform();
animator = ((EntityState)this).GetModelAnimator();
childLocator = ((Component)modelTransform).GetComponent<ChildLocator>();
if (!Object.op_Implicit((Object)(object)childLocator))
{
Debug.Log((object)"No ChildLocator found");
}
if (Object.op_Implicit((Object)(object)modelTransform) && Object.op_Implicit((Object)(object)childLocator))
{
Transform val = childLocator.FindChild("HandL");
Transform val2 = childLocator.FindChild("SwordTip");
leftMuzzleTransform = Object.Instantiate<GameObject>(muzzlePrefab, val).transform;
swordTipTransform = Object.Instantiate<GameObject>(muzzlePrefab, val2).transform;
}
((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f);
((EntityState)this).characterMotor.disableAirControlUntilCollision = true;
CreateBlinkEffect(Util.GetCorePosition(((EntityState)this).gameObject));
inputSpace = new GameObject("inputSpace").transform;
inputSpace.position = Vector3.zero;
inputSpace.rotation = Quaternion.identity;
inputSpace.localScale = Vector3.one;
upSpeed = animator.GetFloat("upSpeed");
animator.SetBool("isFlying", true);
rotator = ((Component)modelTransform.Find("metarig")).GetComponent<Rotator>();
if (!Object.op_Implicit((Object)(object)rotator))
{
rotator = ((Component)modelTransform.Find("metarig")).gameObject.AddComponent<Rotator>();
}
rotator.ResetRotation(0f);
Ray aimRay = ((BaseState)this).GetAimRay();
aimDirection = ((Ray)(ref aimRay)).direction;
rotator.SetRotation(Quaternion.LookRotation(CreateForwardRotation(), Vector3.up), flyDuration);
((EntityState)this).PlayAnimation("FullBody, Override", "PulseLeap", "BaseSkill.playbackRate", flyDuration, 0f);
}
Transform val3 = ((EntityState)this).GetModelTransform();
childLocator = ((Component)val3).GetComponent<ChildLocator>();
Util.PlaySound(launchSound, ((EntityState)this).gameObject);
}
public void AltHandleMovements(Vector3 flyVector)
{
//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_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
((EntityState)this).characterMotor.velocity = Vector3.zero;
CharacterMotor characterMotor = ((EntityState)this).characterMotor;
characterMotor.rootMotion += flyVector * (((BaseState)this).moveSpeedStat * speedCoefficient * Time.fixedDeltaTime);
}
public static Vector3 CalculateLungeVelocity(Vector3 currentVelocity, Vector3 aimDirection, float lungeSpeed)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: 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_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
currentVelocity = ((Vector3.Dot(currentVelocity, aimDirection) < 0f) ? Vector3.zero : Vector3.Project(currentVelocity, aimDirection));
return currentVelocity + aimDirection * lungeSpeed;
}
public void FireLaunchBlast()
{
//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_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: 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_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Unknown result type (might be due to invalid IL or missing references)
//IL_0082: 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_0093: 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_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)
//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
//IL_00d1: Expected O, but got Unknown
//IL_00d7: 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)
if (((EntityState)this).isAuthority)
{
boostBlast = new BlastAttack
{
attacker = ((EntityState)this).gameObject,
baseDamage = launchDamage * ((EntityState)this).characterBody.damage,
baseForce = 0f,
attackerFiltering = (AttackerFiltering)2,
crit = ((EntityState)this).characterBody.RollCrit(),
damageColorIndex = (DamageColorIndex)3,
damageType = DamageTypeCombo.op_Implicit((DamageType)0),
falloffModel = (FalloffModel)0,
inflictor = ((EntityState)this).gameObject,
position = ((EntityState)this).transform.position,
procChainMask = default(ProcChainMask),
procCoefficient = 1f,
radius = blastRadius,
teamIndex = ((EntityState)this).characterBody.teamComponent.teamIndex
};
DamageAPI.AddModdedDamageType(boostBlast, DamageTypes.applyCharge);
boostBlast.Fire();
}
}
private void CreateBlinkEffect(Vector3 origin)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
//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_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
EffectData val = new EffectData();
val.rotation = Util.QuaternionSafeLookRotation(aimDirection);
val.origin = origin;
val.scale = 0.3f;
EffectManager.SpawnEffect(blinkPrefab, val, false);
}
private Vector3 CreateForwardRotation()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_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_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: 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_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: 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_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_009e: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
//IL_00af: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
Ray aimRay = ((BaseState)this).GetAimRay();
Vector3 direction = ((Ray)(ref aimRay)).direction;
Vector3 moveVector = ((EntityState)this).inputBank.moveVector;
Vector3 val = default(Vector3);
((Vector3)(ref val))..ctor(direction.x, 0f, direction.z);
val = Vector3.Normalize(val);
inputSpace.rotation = Quaternion.LookRotation(val, Vector3.up);
direction = inputSpace.InverseTransformDirection(direction);
moveVector = inputSpace.InverseTransformDirection(moveVector);
Vector3 val2 = direction;
val2.y += (((EntityState)this).inputBank.jump.down ? 2f : 0f);
val2 = Vector3.Normalize(val2);
return inputSpace.TransformDirection(val2);
}
public override void FixedUpdate()
{
//IL_00a4: 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_00cd: Unknown result type (might be due to invalid IL or missing references)
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
//IL_00f0: Expected O, but got Unknown
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
((EntityState)this).FixedUpdate();
if (((EntityState)this).isAuthority)
{
if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !hasFired)
{
hasFired = true;
((EntityState)this).characterMotor.velocity = Vector3.zero;
((BaseState)this).SmallHop(((EntityState)this).characterMotor, smallHopVelocity);
}
if (((EntityState)this).fixedAge <= flyDuration)
{
AltHandleMovements(aimDirection);
}
}
if (((EntityState)this).fixedAge >= flyDuration && NetworkServer.active && !((Enum)((EntityState)this).characterBody.bodyFlags).HasFlag((Enum)(object)(BodyFlags)1))
{
CharacterBody characterBody = ((EntityState)this).characterBody;
characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags | 1);
((EntityState)this).characterMotor.onHitGroundAuthority += new HitGroundDelegate(CharacterMotor_onHitGround);
}
if (((EntityState)this).isAuthority && ((((EntityState)this).fixedAge >= flyDuration) & !hasFlown))
{
if (Object.op_Implicit((Object)(object)inputSpace))
{
Object.Destroy((Object)(object)((Component)inputSpace).gameObject);
}
((EntityState)this).characterMotor.disableAirControlUntilCollision = false;
rotator.ResetRotation(0.3f);
hasResetRot = true;
((EntityState)this).characterMotor.velocity.y = 0f;
((EntityState)this).PlayAnimation("FullBody, Override", "PulseExit", "BaseSkill.playbackRate", exitAnimDuration, 0f);
hasFlown = true;
animator.SetBool("isMoving", false);
}
if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= flyDuration + exitDuration && hasFlown)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
private void CharacterMotor_onHitGround(ref HitGroundInfo hitGroundInfo)
{
//IL_0007: 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_0058: Expected O, but got Unknown
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: 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_003b: Unknown result type (might be due to invalid IL or missing references)
if (((Enum)((EntityState)this).characterBody.bodyFlags).HasFlag((Enum)(object)(BodyFlags)1))
{
hitGroundInfo.velocity = Vector3.zero;
CharacterBody characterBody = ((EntityState)this).characterBody;
characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags & -2);
}
((EntityState)this).characterMotor.onHitGroundAuthority -= new HitGroundDelegate(CharacterMotor_onHitGround);
}
public override void OnExit()
{
((EntityState)this).OnExit();
if (!((EntityState)this).isAuthority)
{
return;
}
if (!hasResetRot)
{
if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor))
{
((EntityState)this).characterMotor.disableAirControlUntilCollision = false;
}
if (Object.op_Implicit((Object)(object)rotator))
{
rotator.ResetRotation(0.5f);
}
hasResetRot = true;
((EntityState)this).PlayAnimation("FullBody, Override", "PulseExit", "BaseSkill.playbackRate", exitAnimDuration, 0f);
animator.SetBool("isMoving", false);
}
animator.SetBool("isFlying", false);
}
}
public abstract class BaseChannelWurm : BaseSkillState
{
private ChildLocator childLocator;
private Animator animator;
private float baseChannelDuration = 3f;
private float channelDuration;
private bool hasBegunChannelling;
private bool hasChannelled;
private string chargeSoundString = "PlayWormCharge";
private uint stopChargeID;
protected abstract SummonWurm GetNextState();
public override void OnEnter()
{
((BaseState)this).OnEnter();
animator = ((EntityState)this).GetModelAnimator();
animator.SetBool("IsChannelling", true);
channelDuration = baseChannelDuration / ((BaseState)this).attackSpeedStat;
((EntityState)this).PlayAnimation("Worm, Override", "WormChannelStart", "LorentzCannon.Playbackrate", 1.4f, 0f);
if (NetworkServer.active)
{
((EntityState)this).characterBody.AddBuff(Buffs.Slow50);
}
stopChargeID = Util.PlaySound(chargeSoundString, ((EntityState)this).gameObject);
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (animator.GetBool("attacking"))
{
((EntityState)this).outer.SetNextStateToMain();
}
if (!hasBegunChannelling)
{
hasBegunChannelling = true;
((EntityState)this).PlayAnimation("Worm, Override", "WormChannel", "LorentzCannon.Playbackrate", baseChannelDuration, 0f);
}
if (((ButtonState)(ref ((EntityState)this).inputBank.skill1)).justPressed && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
if (((EntityState)this).fixedAge >= channelDuration && ((EntityState)this).isAuthority)
{
SummonWurm nextState = GetNextState();
animator.SetBool("HasChannelled", true);
((EntityState)this).outer.SetNextState((EntityState)(object)nextState);
hasBegunChannelling = false;
hasChannelled = true;
}
}
public override void OnExit()
{
((EntityState)this).OnExit();
animator.SetBool("IsChannelling", false);
AkSoundEngine.StopPlayingID(stopChargeID, 0);
if (NetworkServer.active)
{
((EntityState)this).characterBody.RemoveBuff(Buffs.Slow50);
}
if (!hasChannelled)
{
RefundCooldown();
}
}
private void RefundCooldown()
{
((BaseSkillState)this).activatorSkillSlot.rechargeStopwatch = 0.9f * ((BaseSkillState)this).activatorSkillSlot.finalRechargeInterval;
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)0;
}
}
internal class CancelSkill : BaseSkillState
{
public override void OnEnter()
{
((BaseState)this).OnEnter();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (!((EntityState)this).isAuthority)
{
}
}
}
internal class CancelWurm : BaseSkillState
{
private GenericSkill specialSlot;
public static SkillDef cancelSkillDef;
public override void OnEnter()
{
((BaseState)this).OnEnter();
if (Object.op_Implicit((Object)(object)SummonWurm.wormMaster))
{
SummonWurm.wormMaster.TrueKill();
}
}
public override void OnExit()
{
((EntityState)this).OnExit();
cancelSkillDef = SummonWurm.cancelSkillDef;
specialSlot = ((EntityState)this).skillLocator.special;
if (Object.op_Implicit((Object)(object)specialSlot) && Object.op_Implicit((Object)(object)cancelSkillDef))
{
specialSlot.UnsetSkillOverride(SummonWurm.src, cancelSkillDef, (SkillOverridePriority)4);
}
Debug.Log((object)"Exiting");
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
((EntityState)this).outer.SetNextStateToMain();
}
}
public class ChannelWurm : BaseChannelWurm
{
public override void OnEnter()
{
base.OnEnter();
}
protected override SummonWurm GetNextState()
{
return new SummonWurm();
}
public override void FixedUpdate()
{
base.FixedUpdate();
}
public override void OnExit()
{
base.OnExit();
}
}
public class Ferroshot : BaseSkillState
{
public static float damageCoefficient = 1.4f;
public static float procCoefficient = 1f;
public static float baseDuration = 1f;
public static float force = 10f;
public static float recoil = 0f;
private AmpLightningController lightningController;
public static float range = 600f;
private GameObject bulletPrefab;
public static float launchForce = 150f;
private static int numOfBullets = 6;
private const float FIRE_TIME_PERCENTAGE = 0.25f;
private string launchString = "PlayFerroshotLaunchAlter";
private string prepString = "PlayFerroshotCreateAlter";
private uint stopPrepID;
private Animator animator;
private ChildLocator childLocator;
private Transform leftMuzzleTransform;
public static GameObject ferroshotPrefabBasic = Asset.bulletPrepItem;
private float totalDuration;
private float fireDuration;
private float chargeDuration;
private bool hasFired;
private float distanceFromHead = 0.5f;
private GameObject[] bullets = (GameObject[])(object)new GameObject[numOfBullets];
private bool hasMuzzleEffect;
private GameObject muzzleEffectPrefab = Asset.ampBulletMuzzleEffect;
private Transform fireMuzzleTransform;
public override void OnEnter()
{
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_0073: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
totalDuration = baseDuration / ((BaseState)this).attackSpeedStat;
fireDuration = 0.25f * totalDuration;
chargeDuration = totalDuration - fireDuration;
((EntityState)this).characterBody.SetAimTimer(2f);
lightningController = ((EntityState)this).GetComponent<AmpLightningController>();
bulletPrefab = lightningController.lorentzProjectile;
Ray aimRay = ((BaseState)this).GetAimRay();
((EntityState)this).PlayAnimation("Worm, Override", "ShootProjectile", "LorentzCannon.playbackRate", 1.2f * totalDuration, 0f);
Transform modelTransform = ((EntityState)this).GetModelTransform();
if (Object.op_Implicit((Object)(object)modelTransform))
{
childLocator = ((Component)modelTransform).GetComponent<ChildLocator>();
leftMuzzleTransform = childLocator.FindChild("LowerArmL");
}
}
public override void OnExit()
{
if (Object.op_Implicit((Object)(object)fireMuzzleTransform))
{
EntityState.Destroy((Object)(object)((Component)fireMuzzleTransform).gameObject);
}
((EntityState)this).OnExit();
}
private Vector3 getLoc(float yDir, float angle)
{
//IL_0028: 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_003b: Unknown result type (might be due to invalid IL or missing references)
float num = Mathf.Cos(yDir) * Mathf.Cos(angle);
float num2 = Mathf.Sin(angle);
float num3 = (0f - Mathf.Sin(yDir)) * Mathf.Cos(angle);
return new Vector3(num, num2, num3) * distanceFromHead;
}
private void updateRotAndLoc()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: 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_0063: 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_0082: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
Ray aimRay = ((BaseState)this).GetAimRay();
float num = MathF.PI / (float)(numOfBullets - 1);
for (int i = 0; i < numOfBullets; i++)
{
if ((Object)(object)bullets[i] != (Object)null)
{
bullets[i].transform.position = ((Ray)(ref aimRay)).origin + getLoc(((EntityState)this).modelLocator.modelTransform.eulerAngles.y * (MathF.PI / 180f), num * (float)i);
bullets[i].transform.rotation = Quaternion.LookRotation(((Ray)(ref aimRay)).direction);
}
}
}
private IEnumerator Fire()
{
hasFired = true;
if (!((EntityState)this).isAuthority)
{
yield break;
}
float angle = MathF.PI / (float)(numOfBullets - 1);
Ray aimRay;
for (int j = 0; j < numOfBullets; j++)
{
aimRay = ((BaseState)this).GetAimRay();
stopPrepID = Util.PlaySound(prepString, ((EntityState)this).gameObject);
bullets[j] = Object.Instantiate<GameObject>(ferroshotPrefabBasic, ((Ray)(ref aimRay)).origin + getLoc(((EntityState)this).modelLocator.modelTransform.eulerAngles.y * (MathF.PI / 180f), angle * (float)j), Quaternion.LookRotation(((Ray)(ref aimRay)).direction));
bullets[j].transform.parent = ((EntityState)this).characterBody.transform;
yield return (object)new WaitForSeconds((totalDuration - fireDuration) / (float)numOfBullets);
}
aimRay = ((BaseState)this).GetAimRay();
RaycastHit hit = default(RaycastHit);
bool somethingHit = Physics.Raycast(((Ray)(ref aimRay)).origin, ((Ray)(ref aimRay)).direction, ref hit);
for (int i = 0; i < numOfBullets; i++)
{
Vector3 direction;
if (somethingHit && ((RaycastHit)(ref hit)).distance > 2.5f)
{
Vector3 val = ((RaycastHit)(ref hit)).point - bullets[i].transform.position;
direction = ((Vector3)(ref val)).normalized;
}
else
{
direction = ((Ray)(ref aimRay)).direction;
}
ProjectileManager.instance.FireProjectile(bulletPrefab, bullets[i].transform.position, Quaternion.LookRotation(direction), ((EntityState)this).gameObject, damageCoefficient * ((BaseState)this).damageStat, launchForce, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, launchForce, (DamageTypeCombo?)null);
Util.PlaySound(launchString, ((EntityState)this).gameObject);
EntityState.Destroy((Object)(object)bullets[i]);
yield return (object)new WaitForSeconds(fireDuration / (float)numOfBullets);
}
AkSoundEngine.StopPlayingID(stopPrepID);
hit = default(RaycastHit);
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (!hasMuzzleEffect)
{
hasMuzzleEffect = true;
if (!Object.op_Implicit((Object)(object)childLocator))
{
}
}
if (((EntityState)this).fixedAge < totalDuration)
{
if (!hasFired)
{
((MonoBehaviour)((EntityState)this).characterBody).StartCoroutine(Fire());
}
updateRotAndLoc();
}
else if (((EntityState)this).fixedAge >= totalDuration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)2;
}
}
public class Fulmination : BaseSkillState
{
[Header("Effect/Animation Variables")]
public GameObject lightningEffectPrefab;
public static GameObject impactEffectPrefab;
public EffectData fulminationData;
private AmpLightningController lightningController;
private Transform fulminationTransform;
private Transform muzzleTransform;
private Transform handLTransform;
private ChildLocator childLocator;
private bool hasMuzzleEffect;
private Animator animator;
[Header("Attack Variables")]
public static float radius = 1f;
public static float basetickFrequency = 6f;
public static float tickFrequency;
public static float force = 20f;
private float tickDamageCoefficient;
public static float procCoefficientPerTick;
public static float totalDamageCoefficient = 16f;
public static float minimumDuration = 1f;
public static float baseticktotal;
[Header("Sounds")]
public string enterSoundString = "PlayFulminationEnter";
public string attackSoundString = "PlayFulminationState";
public string endSoundString = "PlayFulminationExitAlter";
public uint stopSoundID;
[Header("Duration/Timer Variables")]
public static float delayTime = 0.2f;
public static float baseEntryDuration = 0.5f;
public static float baseFulminationDuration = 3f;
private float fulminationStopwatch;
private float stopwatch;
public float entryDuration;
private float fulminationDuration;
private bool hasBegunFulmination;
private GenericSkill specialSlot;
public static SkillDef cancelSkillDef;
private string prefix = "NT";
public override void OnEnter()
{
((BaseState)this).OnEnter();
lightningController = ((EntityState)this).GetComponent<AmpLightningController>();
lightningEffectPrefab = lightningController.fulminationEffect;
impactEffectPrefab = lightningController.fulminationHitEffect;
stopwatch = 0f;
entryDuration = baseEntryDuration / ((BaseState)this).attackSpeedStat;
fulminationDuration = baseFulminationDuration;
Transform modelTransform = ((EntityState)this).GetModelTransform();
animator = ((EntityState)this).GetModelAnimator();
if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
{
((EntityState)this).characterBody.SetAimTimer(entryDuration + fulminationDuration + 1f);
childLocator = ((Component)modelTransform).GetComponent<ChildLocator>();
handLTransform = childLocator.FindChild("HandL");
}
Util.PlaySound("PlayFulminationEnter", ((EntityState)this).gameObject);
tickFrequency = basetickFrequency * ((BaseState)this).attackSpeedStat;
baseticktotal = Mathf.CeilToInt(basetickFrequency * fulminationDuration);
tickDamageCoefficient = totalDamageCoefficient / baseticktotal;
animator.SetBool("isUsingIndependentSkill", true);
((EntityState)this).PlayAnimation("Fulminate, Override", "FulminateStart", "BaseSkill.playbackRate", entryDuration, 0f);
animator.SetBool("isFulminating", true);
cancelSkillDef = Skills.fulminationCancelSkillDef;
specialSlot = ((EntityState)this).skillLocator.special;
if (Object.op_Implicit((Object)(object)specialSlot) && Object.op_Implicit((Object)(object)cancelSkillDef))
{
specialSlot.SetSkillOverride((object)this, cancelSkillDef, (SkillOverridePriority)4);
}
}
public override void OnExit()
{
((EntityState)this).OnExit();
if (Object.op_Implicit((Object)(object)specialSlot) && Object.op_Implicit((Object)(object)cancelSkillDef))
{
specialSlot.UnsetSkillOverride((object)this, cancelSkillDef, (SkillOverridePriority)4);
}
Util.PlaySound(endSoundString, ((EntityState)this).gameObject);
AkSoundEngine.StopPlayingID(stopSoundID, 0);
if (Object.op_Implicit((Object)(object)fulminationTransform))
{
EntityState.Destroy((Object)(object)((Component)fulminationTransform).gameObject);
}
animator.SetBool("isFulminating", false);
animator.SetBool("isUsingIndependentSkill", false);
((EntityState)this).PlayCrossfade("Fulminate, Override", "FulminateEnd", 0.1f);
}
private void FireLightning(string muzzleString)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_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_0027: 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_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: 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_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_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)
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: 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_00bc: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
//IL_00df: Unknown result type (might be due to invalid IL or missing references)
//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
//IL_00ec: Expected O, but got Unknown
//IL_00ed: 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)
Ray aimRay = ((BaseState)this).GetAimRay();
if (((EntityState)this).isAuthority)
{
BulletAttack val = new BulletAttack
{
owner = ((EntityState)this).gameObject,
weapon = ((EntityState)this).gameObject,
origin = ((Ray)(ref aimRay)).origin,
aimVector = ((Ray)(ref aimRay)).direction,
minSpread = 0f,
damage = tickDamageCoefficient * ((EntityState)this).characterBody.damage,
force = 2f,
muzzleName = muzzleString,
hitEffectPrefab = impactEffectPrefab,
isCrit = ((EntityState)this).characterBody.RollCrit(),
radius = radius,
falloffModel = (FalloffModel)0,
stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask,
procCoefficient = 1f,
maxDistance = 20f,
smartCollision = true,
damageType = DamageTypeCombo.op_Implicit((DamageType)0)
};
DamageAPI.AddModdedDamageType(val, DamageTypes.fulminationChain);
if (Util.CheckRoll(15f, ((EntityState)this).characterBody.master))
{
DamageAPI.AddModdedDamageType(val, DamageTypes.applyCharge);
}
val.Fire();
}
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
stopwatch += Time.fixedDeltaTime;
if (stopwatch >= entryDuration && !hasBegunFulmination)
{
hasBegunFulmination = true;
animator.SetBool("isUsingIndependentSkill", false);
if (Object.op_Implicit((Object)(object)childLocator))
{
Transform val = childLocator.FindChild("HandL");
if (Object.op_Implicit((Object)(object)val))
{
fulminationTransform = Object.Instantiate<GameObject>(lightningEffectPrefab, val).transform;
}
}
stopSoundID = Util.PlaySound(attackSoundString, ((EntityState)this).gameObject);
FireLightning("HandL");
}
if (hasBegunFulmination)
{
fulminationStopwatch += Time.deltaTime;
if (fulminationStopwatch > 1f / tickFrequency)
{
fulminationStopwatch -= 1f / tickFrequency;
FireLightning("HandL");
}
UpdateFulminationEffect();
}
if (stopwatch >= fulminationDuration + entryDuration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
private void UpdateFulminationEffect()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
Ray aimRay = ((BaseState)this).GetAimRay();
Vector3 direction = ((Ray)(ref aimRay)).direction;
if (Object.op_Implicit((Object)(object)fulminationTransform))
{
fulminationTransform.forward = direction;
}
}
}
internal class PlasmaSlash : BaseSkillState
{
private float baseTotalDuration = 0.75f;
private float baseChargeDuration = 0.5f;
protected string hitboxName = "SpinSlash";
private float chargeDuration;
private float totalDuration;
public OverlapAttack attack;
protected DamageType damageType = (DamageType)0;
protected float damageCoefficient = 7f;
protected float procCoefficient = 1f;
protected GameObject swingEffectPrefab = Asset.heatSwing;
protected GameObject hitEffectPrefab = Asset.heatHit;
protected float stopwatch;
private ChildLocator childLocator;
protected Animator animator;
private bool hasMuzzleEffect;
private GameObject muzzleEffectPrefab = Asset.plasmaMuzzle;
protected float pushForce = 300f;
protected Vector3 bonusForce = Vector3.zero;
protected NetworkSoundEventIndex impactSound = Asset.heatShockHitSoundEvent.index;
private bool hasFired = false;
private string chargeSoundString = "PlayHeatShockCharge";
public uint stopChargeSound;
protected string swingSoundString = "PlayHeatShockSwing";
private string muzzleString = "HeatSwing";
private bool inGroundedState;
private Transform swordMuzzle;
public static float shortHopVelocity;
private GameObject fireBeamPrefab = Projectiles.fireBeamPrefab;
private float fireBeamDamage = 5f;
public override void OnEnter()
{
//IL_010e: Unknown result type (might be due to invalid IL or missing references)
//IL_0118: Expected O, but got Unknown
//IL_011f: Unknown result type (might be due to invalid IL or missing references)
//IL_0124: Unknown result type (might be due to invalid IL or missing references)
//IL_0129: Unknown result type (might be due to invalid IL or missing references)
//IL_0157: Unknown result type (might be due to invalid IL or missing references)
//IL_015c: Unknown result type (might be due to invalid IL or missing references)
//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
//IL_01e6: Unknown result type (might be due to invalid IL or missing references)
//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
animator = ((EntityState)this).GetModelAnimator();
chargeDuration = baseChargeDuration / ((BaseState)this).attackSpeedStat;
totalDuration = baseTotalDuration / ((BaseState)this).attackSpeedStat;
animator.SetBool("isUsingIndependentSkill", true);
hasMuzzleEffect = false;
((EntityState)this).characterBody.SetAimTimer(totalDuration);
HitBoxGroup hitBoxGroup = null;
Transform modelTransform = ((EntityState)this).GetModelTransform();
childLocator = ((Component)modelTransform).GetComponent<ChildLocator>();
if (Object.op_Implicit((Object)(object)modelTransform))
{
hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == hitboxName);
childLocator = ((Component)modelTransform).GetComponent<ChildLocator>();
swordMuzzle = childLocator.FindChild("SwordPlace");
}
if (((BaseState)this).isGrounded)
{
inGroundedState = true;
((EntityState)this).PlayAnimation("FullBody, Override", "SpinningSlash", "BaseSkill.playbackRate", totalDuration, 0f);
stopChargeSound = Util.PlaySound(chargeSoundString, ((EntityState)this).gameObject);
attack = new OverlapAttack();
attack.damageType = DamageTypeCombo.op_Implicit(damageType);
attack.attacker = ((EntityState)this).gameObject;
attack.inflictor = ((EntityState)this).gameObject;
attack.teamIndex = ((BaseState)this).GetTeam();
attack.damage = damageCoefficient * ((EntityState)this).characterBody.damage;
attack.procCoefficient = procCoefficient;
attack.hitEffectPrefab = hitEffectPrefab;
attack.forceVector = bonusForce;
attack.pushAwayForce = pushForce;
attack.hitBoxGroup = hitBoxGroup;
attack.isCrit = ((BaseState)this).RollCrit();
attack.impactSound = impactSound;
DamageAPI.AddModdedDamageType(attack, DamageTypes.strongBurnIfCharged);
}
else if (!((BaseState)this).isGrounded)
{
stopChargeSound = Util.PlaySound(chargeSoundString, ((EntityState)this).gameObject);
inGroundedState = false;
((EntityState)this).PlayAnimation("FullBody, Override", "SpinningSlash", "BaseSkill.playbackRate", totalDuration, 0f);
}
}
protected virtual void ModifyProjectile(ref FireProjectileInfo projectileInfo)
{
}
private void FireAerialAttack()
{
//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_004a: 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_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_00b1: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
if (((EntityState)this).isAuthority)
{
Ray aimRay = ((BaseState)this).GetAimRay();
AkSoundEngine.StopPlayingID(stopChargeSound, 0);
if (Object.op_Implicit((Object)(object)fireBeamPrefab))
{
Util.PlaySound(swingSoundString, ((EntityState)this).gameObject);
FireProjectileInfo val = default(FireProjectileInfo);
val.projectilePrefab = fireBeamPrefab;
val.position = ((Ray)(ref aimRay)).origin;
val.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction);
val.owner = ((EntityState)this).gameObject;
val.damage = fireBeamDamage * ((EntityState)this).characterBody.damage;
val.crit = ((BaseState)this).RollCrit();
FireProjectileInfo projectileInfo = val;
ModifyProjectile(ref projectileInfo);
ProjectileManager.instance.FireProjectile(projectileInfo);
}
}
}
private void FireGroundAttack()
{
if (!hasFired)
{
hasFired = true;
AkSoundEngine.StopPlayingID(stopChargeSound, 0);
Util.PlaySound(swingSoundString, ((EntityState)this).gameObject);
if (((EntityState)this).isAuthority)
{
PlaySwingEffect();
}
}
if (((EntityState)this).isAuthority)
{
attack.Fire((List<HurtBox>)null);
}
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (!hasMuzzleEffect)
{
hasMuzzleEffect = true;
swordMuzzle = Object.Instantiate<GameObject>(muzzleEffectPrefab, swordMuzzle).transform;
Debug.Log((object)"spawning muzzle");
}
if (inGroundedState)
{
if (((EntityState)this).fixedAge > chargeDuration && !hasFired)
{
FireGroundAttack();
hasFired = true;
if (Object.op_Implicit((Object)(object)swordMuzzle))
{
EntityState.Destroy((Object)(object)((Component)swordMuzzle).gameObject);
}
}
if (((EntityState)this).fixedAge >= totalDuration)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
else
{
if (inGroundedState || !Object.op_Implicit((Object)(object)((EntityState)this).characterMotor))
{
return;
}
if (!hasFired)
{
((EntityState)this).characterMotor.velocity.y = shortHopVelocity;
}
if (((EntityState)this).fixedAge > chargeDuration && !hasFired)
{
FireAerialAttack();
hasFired = true;
if (Object.op_Implicit((Object)(object)swordMuzzle))
{
EntityState.Destroy((Object)(object)((Component)swordMuzzle).gameObject);
}
}
if (((EntityState)this).fixedAge >= totalDuration)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
}
protected void PlaySwingEffect()
{
EffectManager.SimpleMuzzleFlash(swingEffectPrefab, ((EntityState)this).gameObject, muzzleString, true);
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)2;
}
public override void OnExit()
{
((EntityState)this).OnExit();
if (Object.op_Implicit((Object)(object)swordMuzzle))
{
EntityState.Destroy((Object)(object)((Component)swordMuzzle).gameObject);
}
if (!hasFired)
{
AkSoundEngine.StopPlayingID(stopChargeSound, 0);
}
animator.SetBool("isUsingIndependentSkill", false);
}
}
internal class PulseLeap : BaseSkillState
{
private BlastAttack boostBlast;
private string launchSound = "PlayBoltExit";
private float launchDamage = 2.5f;
private GameObject launchEffect;
private float aerialBoostCoefficient = 50f;
private float groundXZBoostCoefficient = 50f;
private float groundYBoostCoefficient = 30f;
private float initialGroundedHopCoefficient = 10f;
private ChildLocator childLocator;
private Vector3 boostVelocity;
private float charge = 1f;
public float minLungeSpeed = 30f;
public float maxLungeSpeed = 100f;
public override void OnEnter()
{
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
Transform modelTransform = ((EntityState)this).GetModelTransform();
childLocator = ((Component)modelTransform).GetComponent<ChildLocator>();
if (!((EntityState)this).characterMotor.isGrounded)
{
Ray aimRay = ((BaseState)this).GetAimRay();
if ((double)((Ray)(ref aimRay)).direction.y < 0.5)
{
((EntityState)this).PlayAnimation("FullBody, Override", "BoostAerial", "ShootGun.playbackRate", 0.1f, 0f);
goto IL_0094;
}
}
((EntityState)this).PlayAnimation("Fulminate, Override", "BoostGrounded", "ShootGun.playbackRate", 0.1f, 0f);
goto IL_0094;
IL_0094:
Util.PlaySound(launchSound, ((EntityState)this).gameObject);
}
public void FireLaunchBlast()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: 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_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: 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_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_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: 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_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0092: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
//IL_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_00c3: Expected O, but got Unknown
//IL_00c9: 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_00e0: Unknown result type (might be due to invalid IL or missing references)
//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
//IL_0101: Unknown result type (might be due to invalid IL or missing references)
//IL_010d: Expected O, but got Unknown
boostBlast = new BlastAttack
{
attacker = ((EntityState)this).gameObject,
baseDamage = launchDamage * ((EntityState)this).characterBody.damage,
baseForce = 0f,
attackerFiltering = (AttackerFiltering)2,
crit = ((EntityState)this).characterBody.RollCrit(),
damageColorIndex = (DamageColorIndex)3,
damageType = DamageTypeCombo.op_Implicit((DamageType)32),
falloffModel = (FalloffModel)0,
inflictor = ((EntityState)this).gameObject,
position = ((EntityState)this).characterBody.corePosition,
procChainMask = default(ProcChainMask),
procCoefficient = 1f,
radius = 6f,
teamIndex = ((EntityState)this).characterBody.teamComponent.teamIndex
};
DamageAPI.AddModdedDamageType(boostBlast, DamageTypes.applyCharge);
boostBlast.Fire();
EffectData val = new EffectData
{
origin = childLocator.FindChild("FootL").position,
scale = 1.5f
};
launchEffect = Asset.boltExitEffect;
EffectManager.SpawnEffect(launchEffect, val, true);
}
private void DoBoost()
{
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
//IL_0052: 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_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_006f: 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)
//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_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)
Ray aimRay;
if (((EntityState)this).characterMotor.isGrounded)
{
((EntityState)this).characterMotor.velocity.y = initialGroundedHopCoefficient;
((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f);
CharacterMotor characterMotor = ((EntityState)this).characterMotor;
Vector3 velocity = characterMotor.velocity;
aimRay = ((BaseState)this).GetAimRay();
float num = ((Ray)(ref aimRay)).direction.x * groundXZBoostCoefficient;
aimRay = ((BaseState)this).GetAimRay();
float num2 = Math.Abs(((Ray)(ref aimRay)).direction.y) * groundYBoostCoefficient;
aimRay = ((BaseState)this).GetAimRay();
characterMotor.velocity = velocity + new Vector3(num, num2, ((Ray)(ref aimRay)).direction.z * groundXZBoostCoefficient);
}
else
{
((EntityState)this).characterMotor.velocity.y = 0f;
CharacterMotor characterMotor2 = ((EntityState)this).characterMotor;
Vector3 velocity2 = characterMotor2.velocity;
aimRay = ((BaseState)this).GetAimRay();
characterMotor2.velocity = velocity2 + ((Ray)(ref aimRay)).direction * aerialBoostCoefficient;
}
}
public static Vector3 CalculateLungeVelocity(Vector3 currentVelocity, Vector3 aimDirection, float charge, float lungeSpeed)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: 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_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
currentVelocity = ((Vector3.Dot(currentVelocity, aimDirection) < 0f) ? Vector3.zero : Vector3.Project(currentVelocity, aimDirection));
return currentVelocity + aimDirection * lungeSpeed;
}
public override void FixedUpdate()
{
//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)
((EntityState)this).FixedUpdate();
if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor))
{
((EntityState)this).characterMotor.velocity = boostVelocity;
FireLaunchBlast();
}
if (((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
private void CharacterMotor_onHitGround(ref HitGroundInfo hitGroundInfo)
{
//IL_0007: 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_004d: Expected O, but got Unknown
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
if (((Enum)((EntityState)this).characterBody.bodyFlags).HasFlag((Enum)(object)(BodyFlags)1))
{
CharacterBody characterBody = ((EntityState)this).characterBody;
characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags & -2);
}
((EntityState)this).characterMotor.onHitGroundAuthority -= new HitGroundDelegate(CharacterMotor_onHitGround);
}
public override void OnExit()
{
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: 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_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Expected O, but got Unknown
if (NetworkServer.active && !((Enum)((EntityState)this).characterBody.bodyFlags).HasFlag((Enum)(object)(BodyFlags)1))
{
CharacterBody characterBody = ((EntityState)this).characterBody;
characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags | 1);
((EntityState)this).characterMotor.onHitGroundAuthority += new HitGroundDelegate(CharacterMotor_onHitGround);
}
((EntityState)this).OnExit();
}
}
public class AmpChargeTracker : MonoBehaviour
{
public class SyncOrbs : INetMessage, ISerializableObject
{
public enum METHOD
{
EnableSecondOrb,
DisableSecondOrb
}
private NetworkInstanceId netId;
private METHOD method;
public SyncOrbs()
{
}
public SyncOrbs(NetworkInstanceId netId, METHOD method)
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
this.netId = netId;
this.method = method;
}
void ISerializableObject.Deserialize(NetworkReader reader)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
netId = reader.ReadNetworkId();
method = (METHOD)reader.ReadInt32();
}
void INetMessage.OnReceived()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
GameObject val = Util.FindNetworkObject(netId);
if (!Object.op_Implicit((Object)(object)val))
{
Debug.LogWarning((object)"SyncOrbs: Given network id associates with no known gameobject");
return;
}
switch (method)
{
case METHOD.EnableSecondOrb:
EnableSecondOrb(val);
break;
case METHOD.DisableSecondOrb:
DisableSecondOrb(val);
break;
default:
Debug.LogError((object)"SyncOrbs: Invalid method sent to client");
break;
}
}
void ISerializableObject.Serialize(NetworkWriter writer)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
writer.Write(netId);
writer.Write((int)method);
}
private void EnableSecondOrb(GameObject go)
{
((Component)go.GetComponent<ChildLocator>().FindChild("Orb2Location")).gameObject.SetActive(true);
}
private void DisableSecondOrb(GameObject go)
{
((Component)go.GetComponent<ChildLocator>().FindChild("Orb2Location")).gameObject.SetActive(false);
}
}
public GameObject owner;
public GameObject victim;
public CharacterBody ownerBody;
public CharacterBody victimBody;
private bool makeOrbs;
private GameObject orbPrefab;
private GameObject orbPrefabFull;
private GameObject orbPair;
private bool secondOrbActive;
private void Start()
{
orbPrefab = owner.gameObject.GetComponent<AmpLightningController>().chargeOrb;
orbPrefabFull = owner.gameObject.GetComponent<AmpLightningController>().chargeOrbFull;
GameObject obj = owner;
ownerBody = ((obj != null) ? obj.GetComponent<CharacterBody>() : null);
GameObject obj2 = victim;
victimBody = ((obj2 != null) ? obj2.GetComponent<CharacterBody>() : null);
makeOrbs = Config.chargeOrbsEnable.Value;
}
[Server]
private void CheckOrbDraw()
{
//IL_010c: 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)
if (!makeOrbs)
{
return;
}
if (Object.op_Implicit((Object)(object)victimBody) && victimBody.healthComponent.health <= 0f)
{
DestroyOrbs();
return;
}
int buffCount = victimBody.GetBuffCount(Buffs.chargeBuildup);
if (buffCount >= 1 && !Object.op_Implicit((Object)(object)orbPair))
{
if (buffCount == 2)
{
orbPair = Object.Instantiate<GameObject>(orbPrefabFull, victim.transform);
secondOrbActive = true;
}
else
{
orbPair = Object.Instantiate<GameObject>(orbPrefab, victim.transform);
}
NetworkedBodyAttachment component = orbPair.GetComponent<NetworkedBodyAttachment>();
component.AttachToGameObjectAndSpawn(victim, (string)null);
}
else if (buffCount == 2 && !secondOrbActive)
{
NetMessageExtensions.Send((INetMessage)(object)new SyncOrbs(orbPair.GetComponent<NetworkIdentity>().netId, SyncOrbs.METHOD.EnableSecondOrb), (NetworkDestination)1);
secondOrbActive = true;
}
else if (buffCount == 1 && secondOrbActive)
{
NetMessageExtensions.Send((INetMessage)(object)new SyncOrbs(orbPair.GetComponent<NetworkIdentity>().netId, SyncOrbs.METHOD.DisableSecondOrb), (NetworkDestination)1);
}
else if (buffCount == 0 && Object.op_Implicit((Object)(object)orbPair))
{
DestroyOrbs();
}
}
private void FixedUpdate()
{
CheckOrbDraw();
}
private void DestroyOrbs()
{
if (Object.op_Implicit((Object)(object)orbPair))
{
Object.Destroy((Object)(object)orbPair);
orbPair = null;
secondOrbActive = false;
}
}
}
[RequireComponent(typeof(VehicleSeat))]
[RequireComponent(typeof(Rigidbody))]
public class BoltVehicle : MonoBehaviour, ICameraStateProvider
{
[Header("Vehicle Parameters")]
public float duration = 1.5f;
public float initialSpeed = 50f;
private AmpLightningController lightningController;
public float targetSpeed = 50f;
public float acceleration = 1000f;
public string stateSoundString = "PlayBoltStateWind";
public float cameraLerpTime = 0.25f;
public GameObject enterEffectPrefab;
public string enterSoundString = "PlayBoltEnter";
public bool exitAllowed;
public uint stopID;
[Header("Blast Parameters")]
public GameObject exitEffectPrefab;
public string exitSoundString = "PlayBoltExit";
public float blastRadius = 1f;
private BlastAttack boltBlast;
[Header("Overlap Parameters")]
public float overlapDamageCoefficient = 1.5f;
public float overlapProcCoefficient = 1f;
public float overlapForce = 0.5f;
public float overlapFireFrequency = 30f;
public float overlapResetFrequency = 1f;
public float overlapVehicleDurationBonusPerHit;
public GameObject overlapHitEffectPrefab = Asset.electricImpactEffect;
[Header("Misc. Variables")]
private float age;
public bool hasDetonatedServer;
private VehicleSeat vehicleSeat;
private Rigidbody rigidbody;
private OverlapAttack overlapAttack;
private float overlapFireAge;
private float overlapResetAge;
private float blastDamageCoefficient = StaticValues.boltBlastDamageCoefficient;
public void Awake()
{
hasDetonatedServer = false;
vehicleSeat = ((Component)this).GetComponent<VehicleSeat>();
rigidbody = ((Component)this).GetComponent<Rigidbody>();
vehicleSeat.onPassengerEnter += OnPassengerEnter;
vehicleSeat.onPassengerExit += OnPassengerExit;
vehicleSeat.exitVehicleAllowedCheck.AddCallback((CallbackDelegate<Interactability, CharacterBody>)CheckExitAllowed);
}
private void CheckExitAllowed(CharacterBody characterBody, ref Interactability? resultOverride)
{
resultOverride = (Interactability)(exitAllowed ? 2 : 0);
}
private void OnPassengerExit(GameObject passenger)
{
AkSoundEngine.StopPlayingID(stopID, 0);
Util.PlaySound(exitSoundString, ((Component)this).gameObject);
if (NetworkServer.active)
{
DetonateServer();
}
foreach (CameraRigController readOnlyInstances in CameraRigController.readOnlyInstancesList)
{
if ((Object)(object)readOnlyInstances.target == (Object)(object)passenger)
{
readOnlyInstances.SetOverrideCam((ICameraStateProvider)(object)this, 0.5f);
readOnlyInstances.SetOverrideCam((ICameraStateProvider)null, 0.5f);
}
}
}
public void OnPassengerEnter(GameObject passenger)
{
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_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_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_00a2: Expected O, but got Unknown
//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
//IL_010f: Unknown result type (might be due to invalid IL or missing references)
//IL_011b: 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_0129: 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_013a: Unknown result type (might be due to invalid IL or missing references)
//IL_0140: Unknown result type (might be due to invalid IL or missing references)
//IL_0146: Unknown result type (might be due to invalid IL or missing references)
//IL_0151: Unknown result type (might be due to invalid IL or missing references)
//IL_0158: Unknown result type (might be due to invalid IL or missing references)
//IL_015d: Unknown result type (might be due to invalid IL or missing references)
//IL_0162: Unknown result type (might be due to invalid IL or missing references)
//IL_0173: Unknown result type (might be due to invalid IL or missing references)
//IL_0184: Expected O, but got Unknown
//IL_018a: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)vehicleSeat.currentPassengerInputBank))
{
Vector3 aimDirection = vehicleSeat.currentPassengerInputBank.aimDirection;
rigidbody.rotation = Quaternion.LookRotation(aimDirection);
rigidbody.velocity = aimDirection * initialSpeed;
CharacterBody currentPassengerBody = vehicleSeat.currentPassengerBody;
if (Object.op_Implicit((Object)(object)currentPassengerBody))
{
lightningController = ((Component)currentPassengerBody).gameObject.GetComponent<AmpLightningController>();
}
EffectData val = new EffectData
{
origin = currentPassengerBody.corePosition,
scale = 10f
};
enterEffectPrefab = lightningController.surgeEnter;
EffectManager.SpawnEffect(enterEffectPrefab, val, true);
Util.PlaySound(enterSoundString, ((Component)this).gameObject);
if (NetworkServer.active)
{
currentPassengerBody.AddBuff(Buffs.HiddenInvincibility);
}
overlapAttack = new OverlapAttack
{
attacker = ((Component)currentPassengerBody).gameObject,
damage = overlapDamageCoefficient * currentPassengerBody.damage,
pushAwayForce = overlapForce,
isCrit = currentPassengerBody.RollCrit(),
damageColorIndex = (DamageColorIndex)3,
inflictor = ((Component)this).gameObject,
procChainMask = default(ProcChainMask),
procCoefficient = 1f,
teamIndex = currentPassengerBody.teamComponent.teamIndex,
hitBoxGroup = ((Component)this).gameObject.GetComponent<HitBoxGroup>(),
hitEffectPrefab = overlapHitEffectPrefab
};
DamageAPI.AddModdedDamageType(overlapAttack, DamageTypes.applyCharge);
stopID = Util.PlaySound(stateSoundString, ((Component)this).gameObject);
}
}
public void DetonateServer()
{
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_008f: Unknown result type (might be due to invalid IL or missing references)
//IL_009b: 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_00b9: Unknown result type (might be due to invalid IL or missing references)
//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
//IL_00c0: 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_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00d6: 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_00e2: Unknown result type (might be due to invalid IL or missing references)
//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0104: Unknown result type (might be due to invalid IL or missing references)
//IL_010a: Unknown result type (might be due to invalid IL or missing references)
//IL_0110: Unknown result type (might be due to invalid IL or missing references)
//IL_011b: Unknown result type (might be due to invalid IL or missing references)
//IL_0126: Unknown result type (might be due to invalid IL or missing references)
//IL_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_013c: Expected O, but got Unknown
//IL_0142: Unknown result type (might be due to invalid IL or missing references)
//IL_0153: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: 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_0068: Expected O, but got Unknown
if (!hasDetonatedServer)
{
hasDetonatedServer = true;
CharacterBody currentPassengerBody = vehicleSeat.currentPassengerBody;
if (NetworkServer.active)
{
currentPassengerBody.RemoveBuff(Buffs.HiddenInvincibility);
}
if (Object.op_Implicit((Object)(object)currentPassengerBody))
{
EffectData val = new EffectData
{
origin = ((Component)this).transform.position,
scale = 1.5f
};
exitEffectPrefab = lightningController.surgeExitEffect;
EffectManager.SpawnEffect(exitEffectPrefab, val, true);
}
boltBlast = new BlastAttack
{
attacker = ((Component)currentPassengerBody).gameObject,
baseDamage = blastDamageCoefficient * currentPassengerBody.damage,
baseForce = 0f,
attackerFiltering = (AttackerFiltering)2,
crit = currentPassengerBody.RollCrit(),
damageColorIndex = (DamageColorIndex)3,
damageType = DamageTypeCombo.op_Implicit((DamageType)32),
falloffModel = (FalloffModel)1,
inflictor = ((Component)this).gameObject,
position = ((Component)this).transform.position,
procChainMask = default(ProcChainMask),
procCoefficient = 1f,
radius = 10f,
teamIndex = currentPassengerBody.teamComponent.teamIndex
};
DamageAPI.AddModdedDamageType(boltBlast, DamageTypes.applyCharge);
boltBlast.Fire();
Object.Destroy((Object)(object)((Component)this).gameObject);
}
}
private void FixedUpdate()
{
//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
//IL_0102: Unknown result type (might be due to invalid IL or missing references)
//IL_0107: Unknown result type (might be due to invalid IL or missing references)
//IL_010a: Unknown result type (might be due to invalid IL or missing references)
//IL_0115: Unknown result type (might be due to invalid IL or missing references)
//IL_011a: Unknown result type (might be due to invalid IL or missing references)
//IL_011b: Unknown result type (might be due to invalid IL or missing references)
//IL_011c: Unknown result type (might be due to invalid IL or missing references)
//IL_0129: 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_0138: 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_014e: Unknown result type (might be due to invalid IL or missing references)
//IL_0150: 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)
if (!Object.op_Implicit((Object)(object)vehicleSeat) || !Object.op_Implicit((Object)(object)vehicleSeat.currentPassengerInputBank))
{
return;
}
age += Time.fixedDeltaTime;
overlapFireAge += Time.fixedDeltaTime;
overlapResetAge += Time.fixedDeltaTime;
if (NetworkServer.active)
{
if (overlapFireAge > 1f / overlapFireFrequency)
{
overlapAttack.Fire((List<HurtBox>)null);
}
if (overlapResetAge >= 1f / overlapResetFrequency)
{
overlapAttack.ResetIgnoredHealthComponents();
overlapResetAge = 0f;
}
}
Ray val = vehicleSeat.currentPassengerInputBank.GetAimRay();
float num = default(float);
val = CameraRigController.ModifyAimRayIfApplicable(val, ((Component)this).gameObject, ref num);
Vector3 velocity = rigidbody.velocity;
Vector3 val2 = ((Ray)(ref val)).direction * targetSpeed;
Vector3 val3 = Vector3.MoveTowards(velocity, val2, acceleration * Time.fixedDeltaTime);
rigidbody.MoveRotation(Quaternion.LookRotation(((Ray)(ref val)).direction));
rigidbody.AddForce(val3 - velocity, (ForceMode)2);
}
public void GetCameraState(CameraRigController cameraRigController, ref CameraState cameraState)
{
}
public bool IsUserLookAllowed(CameraRigController cameraRigController)
{
return true;
}
public bool IsUserControlAllowed(CameraRigController cameraRigController)
{
return true;
}
public bool IsHudAllowed(CameraRigController cameraRigController)
{
return true;
}
}
[RequireComponent(typeof(ProjectileDamage))]
public class RadialDamage : MonoBehaviour
{
[Header("Damage Tick Parameters")]
public float tickDamageCoefficient = 1.5f;
private float interval = 1f;
private float damageTimer;
private string hitboxName = "VortexHitbox";
public DamageInfo damageInfo = new DamageInfo();
public GameObject explosionEffect;
private OverlapAttack attack;
private float resetStopwatch;
private float fireStopwatch;
public float resetFrequency = 1f;
public float fireFrequency = 1f;
[Header("Damaging Object Parameters")]
protected Transform transform;
protected TeamFilter teamFilter;
[Header("Final Blast Parameters")]
public BlastAttack radialBlast;
public float finalBlastDamageCoefficient = 4f;
private float timer;
private string explosionString = "PlayVortexExplosion";
private string loopString = "PlayVortexLoop";
[Header("Damage Owner/Positional Parameters")]
public ProjectileDamage projectileDamage;
public ProjectileController projectileController;
private ChildLocator childLocator;
private HitBoxGroup vortexHitbox;
private bool hasSetAttacker;
public GameObject attacker;
public CharacterBody charBody;
public Vector3 position;
public float radius = 10f;
private SphereSearch sphereSearch;
public float duration = 3f;
private string spawnSound = "PlayVortexSpawn";
private void Awake()
{
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Expected O, but got Unknown
//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_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
projectileDamage = ((Component)this).GetComponent<ProjectileDamage>();
projectileController = ((Component)this).GetComponent<ProjectileController>();
transform = ((Component)this).GetComponent<Transform>();
teamFilter = ((Component)this).GetComponent<TeamFilter>();
sphereSearch = new SphereSearch();
PointSoundManager.EmitSoundServer(Asset.vortexSpawnSoundEvent.index, transform.position);
PointSoundManager.EmitSoundServer(Asset.vortexLoopSoundEvent.index, transform.position);
}
private void Start()
{
//IL_0060: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: 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_0096: Unknown result type (might be due to invalid IL or missing references)
//IL_009b: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
//IL_00de: Unknown result type (might be due to invalid IL or missing references)
//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
//IL_0106: Unknown result type (might be due to invalid IL or missing references)
//IL_010d: Unknown result type (might be due to invalid IL or missing references)
//IL_0112: Unknown result type (might be due to invalid IL or missing references)
//IL_011c: Expected O, but got Unknown
attacker = (Object.op_Implicit((Object)(object)projectileController.owner) ? projectileController.owner.gameObject : null);
charBody = (Object.op_Implicit((Object)(object)attacker) ? attacker.GetComponent<CharacterBody>() : null);
ResetOverlap();
explosionEffect = Asset.vortexExplosionEffect;
radialBlast = new BlastAttack
{
attacker = attacker,
baseDamage = finalBlastDamageCoefficient * charBody.damage,
baseForce = 0f,
attackerFiltering = (AttackerFiltering)2,
crit = charBody.RollCrit(),
damageColorIndex = (DamageColorIndex)3,
damageType = DamageTypeCombo.op_Implicit((DamageType)0),
falloffModel = (FalloffModel)0,
inflictor = ((Component)this).gameObject,
position = transform.position,
procChainMask = default(ProcChainMask),
procCoefficient = 1f,
radius = radius,
teamIndex = teamFilter.teamIndex
};
}
private void ResetOverlap()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Expected O, but got Unknown
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
attack = new OverlapAttack();
attack.procCoefficient = 1f;
attack.attacker = attacker;
attack.inflictor = ((Component)this).gameObject;
attack.teamIndex = (TeamIndex)1;
attack.attackerFiltering = (AttackerFiltering)2;
attack.damage = tickDamageCoefficient * charBody.damage;
attack.forceVector = Vector3.zero;
attack.isCrit = charBody.RollCrit();
attack.damageColorIndex = (DamageColorIndex)0;
attack.damageType = DamageTypeCombo.op_Implicit((DamageType)0);
attack.hitBoxGroup = Array.Find(((Component)this).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == hitboxName);
}
private void FixedUpdate()
{
//IL_0088: 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_0093: Unknown result type (might be due to invalid IL or missing references)
//IL_009a: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Expected O, but got Unknown
if (NetworkServer.active)
{
timer += Time.fixedDeltaTime;
damageTimer -= Time.fixedDeltaTime;
if (damageTimer <= 0f)
{
damageTimer = interval;
ResetOverlap();
attack.Fire((List<HurtBox>)null);
}
}
if (timer >= duration - Time.fixedDeltaTime)
{
radialBlast.Fire();
EffectData val = new EffectData
{
origin = transform.position,
scale = 1.5f
};
EffectManager.SpawnEffect(explosionEffect, val, true);
timer = 0f;
}
}
}
public class SlashCombo : BaseMeleeAttack
{
private new float chargeProc = 100f;
public override void OnEnter()
{
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_00e3: 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)
AmpLightningController component = ((EntityState)this).GetComponent<AmpLightningController>();
hitboxName = "Sword";
damageType = (DamageType)0;
damageCoefficient = 1.5f;
procCoefficient = 0.1f;
pushForce = 300f;
bonusForce = Vector3.zero;
baseDuration = 0.8f;
attackStartTime = 0.2f;
attackEndTime = 0.4f;
baseEarlyExitTime = 0.4f;
hitStopDuration = 0.012f;
attackRecoil = 0.5f;
hitHopVelocity = 4f;
swingSoundString = "PlayStormbladeSwing1";
hitSoundString = "";
muzzleString = ((swingIndex % 2 == 0) ? "SwingLeft" : "SwingRight");
swingEffectPrefab = component.swingEffect;
hitEffectPrefab = component.swingHitEffect;
impactSound = Asset.stormbladeHitSoundEvent.index;
base.OnEnter();
}
protected override void PlayAttackAnimation()
{
base.PlayAttackAnimation();
}
protected override void PlaySwingEffect()
{
base.PlaySwingEffect();
}
protected override void OnHitEnemyAuthority()
{
base.OnHitEnemyAuthority();
}
protected override void SetNextState()
{
int num = ((swingIndex == 0) ? 1 : 0);
((EntityState)this).outer.SetNextState((EntityState)(object)new SlashCombo
{
swingIndex = num
});
}
public override void OnExit()
{
base.OnExit();
}
}
public class SummonWurm : BaseSkillState
{
private string prefix = "NT";
private GenericSkill specialSlot;
public static SkillDef cancelSkillDef;
public static CharacterMaster wormMaster;
public CharacterBody wormBody;
public static GameObject wormExplosion;
public static object src = new SummonWurm();
private bool hasSpawned;
private float wormLifeDuration = 30f;
private Animator animator;
private string summonSoundString = "PlayWormSummon";
public override void OnEnter()
{
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: 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();
((EntityState)this).PlayAnimation("Worm, Override", "WormChannelRelease", "BaseSkill.playbackRate", 0.5f, 0f);
animator = ((EntityState)this).GetModelAnimator();
SkillDefInfo skillDefInfo = new SkillDefInfo();
skillDefInfo.skillName = prefix + "_AMP_BODY_SPECIAL_WORMCANCEL_NAME";
skillDefInfo.skillNameToken = prefix + "_AMP_BODY_SPECIAL_WORMCANCEL_NAME";
skillDefInfo.skillDescriptionToken = prefix + "_AMP_BODY_SPECIAL_WORMCANCEL_DESCRIPTION";
skillDefInfo.skillIcon = Asset.mainAssetBundle.LoadAsset<Sprite>("texReturn");
skillDefInfo.activationStateMachineName = "Slide";
skillDefInfo.activationState = new SerializableEntityStateType(typeof(CancelWurm));
skillDefInfo.baseMaxStock = 0;
skillDefInfo.baseRechargeInterval = 0f;
skillDefInfo.beginSkillCooldownOnSkillEnd = false;
skillDefInfo.canceledFromSprinting = false;
skillDefInfo.forceSprintDuringState = false;
skillDefInfo.fullRestockOnAssign = false;
skillDefInfo.interruptPriority = (InterruptPriority)0;
skillDefInfo.resetCooldownTimerOnUse = false;
skillDefInfo.isCombatSkill = false;
skillDefInfo.mustKeyPress = true;
skillDefInfo.cancelSprintingOnActivation = false;
skillDefInfo.rechargeStock = 0;
skillDefInfo.requiredStock = 0;
skillDefInfo.stockToConsume = 0;
cancelSkillDef = Skills.CreateSkillDef(skillDefInfo);
specialSlot = ((EntityState)this).skillLocator.special;
if (Object.op_Implicit((Object)(object)specialSlot) && (Object)(object)cancelSkillDef != (Object)null)
{
specialSlot.SetSkillOverride(src, cancelSkillDef, (SkillOverridePriority)4);
}
if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
{
SpawnWorm(((EntityState)this).characterBody);
}
animator.SetBool("HasChannelled", false);
}
private void SpawnWorm(CharacterBody characterBody)
{
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: 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_005c: 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_006a: 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_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_008d: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: Unknown result type (might be due to invalid IL or missing references)
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_009e: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
//IL_00d0: Expected O, but got Unknown
//IL_0185: Unknown result type (might be due to invalid IL or missing references)
//IL_0161: Unknown result type (might be due to invalid IL or missing references)
//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
GameObject melvinPrefab = Asset.melvinPrefab;
Util.PlaySound(summonSoundString, ((EntityState)this).gameObject);
EffectManager.SimpleMuzzleFlash(FireLunarShards.muzzleFlashEffectPrefab, ((EntityState)this).gameObject, "HandL", false);
if (NetworkServer.active)
{
MasterSummon val = new MasterSummon
{
masterPrefab = melvinPrefab,
ignoreTeamMemberLimit = false,
teamIndexOverride = (TeamIndex)1,
summonerBodyObject = ((Component)characterBody).gameObject,
position = characterBody.corePosition + new Vector3(0f, 0f, 2f),
rotation = characterBody.transform.rotation,
inventoryToCopy = characterBody.inventory,
inventoryItemCopyFilter = (ItemIndex index) => index != Items.ExtraLife.itemIndex && index != Items.ExtraLifeVoid.itemIndex
};
val.preSpawnSetupCallback = delegate(CharacterMaster master)
{
master.inventory.GiveItem(Asset.wormHealth, 1);
};
wormMaster = val.Perform();
}
if (!Object.op_Implicit((Object)(object)wormMaster))
{
return;
}
wormBody = wormMaster.GetBody();
((Component)wormMaster).gameObject.AddComponent<MasterSuicideOnTimer>().lifeTimer = wormLifeDuration;
if (NetworkServer.active)
{
for (int i = -1; i <= wormMaster.inventory.GetItemCount(Items.ExtraLife.itemIndex) + 1; i++)
{
wormMaster.inventory.RemoveItem(Items.ExtraLife.itemIndex, 1);
}
for (int j = 0; j <= wormMaster.inventory.GetItemCount(Items.ExtraLifeVoid.itemIndex) + 1; j++)
{
wormMaster.inventory.RemoveItem(Items.ExtraLifeVoid.itemIndex, 1);
}
}
if (Object.op_Implicit((Object)(object)wormMaster.GetBody()))
{
GameObject bodyObject = wormMaster.GetBodyObject();
WormHealthTracker wormHealthTracker = bodyObject.AddComponent<WormHealthTracker>();
wormHealthTracker.owner = ((EntityState)this).gameObject;
wormHealthTracker.wormSkill = src;
wormHealthTracker.wormMaster = wormMaster;
wormHealthTracker.cancelSkillDef = cancelSkillDef;
wormHealthTracker.specialSlot = ((EntityState)this).skillLocator.special;
}
}
private void SetupWorm(CharacterBody body)
{
body.statsDirty = true;
}
private void recalcWorm(CharacterBody body, StatHookEventArgs args)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
if (body.bodyIndex == wormBody.bodyIndex)
{
args.baseHealthAdd -= wormBody.baseMaxHealth - ((EntityState)this).characterBody.baseMaxHealth * 3f;
}
}
public override void OnExit()
{
((EntityState)this).OnExit();
specialSlot.UnsetSkillOverride((object)this, cancelSkillDef, (SkillOverridePriority)4);
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
}
public class Surge : BaseSkillState
{
private float duration = 1.5f;
private float delay = 0.2f;
public GameObject boltObject;
public InputBankTest inputBank;
public CharacterMaster master;
public bool naturalEnd;
private bool hasEffectiveAuthority;
private GameObject boltVehicle;
private VehicleSeat boltSeat;
private GenericSkill utilitySlot;
private NetworkBehaviour networkBehaviour;
private float ageCheck;
private AmpLightningController lightningController;
private bool exitedEarly;
public static SkillDef cancelSkillDef;
private string prefix = "NT";
private void UpdateAuthority()
{
hasEffectiveAuthority = Util.HasEffectiveAuthority(((EntityState)this).gameObject);
}
public override void OnEnter()
{
//IL_008b: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
if (!NetworkServer.active)
{
return;
}
UpdateAuthority();
lightningController = ((Entity