using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Photon.Pun; using REPOLib.Modules; using REPOLib.Objects.Sdk; using UnityEngine; using UnityEngine.AI; using UnityEngine.Events; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Empress")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+5f1b735e473ca4ccf3b383128fbebd889cb564da")] [assembly: AssemblyProduct("EmpressUltrakill")] [assembly: AssemblyTitle("EmpressUltrakill")] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace EmpressUltrakill { internal sealed class EmpressSwordsmachineAudio : MonoBehaviour { private const float DefaultSpatialBlend = 1f; private const float DefaultMinDistance = 2.2f; private const float DefaultMaxDistance = 28f; private const float SeePlayerCooldown = 0.8f; private const float HurtFeedbackCooldown = 0.14f; private const float HurtFeedbackVolume = 1f; private AudioSource _ambientSource = null; private AudioSource _voiceSource = null; private AudioSource _impactSource = null; private AudioSource _hurtSource = null; private AudioClip? _ambientClip; private AudioClip? _seePlayerClip; private AudioClip? _hitClip; private AudioClip[] _hurtBeepClips = Array.Empty(); private EmpressSwordsmachineState _lastState; private int _hurtBeepIndex; private float _seePlayerTimer; private float _hurtFeedbackTimer; private bool _initialized; private bool _loadStarted; private bool _stateTracked; internal void Initialize() { if (!_initialized) { _ambientSource = CreateSource("AmbientSource", loop: true); _voiceSource = CreateSource("VoiceSource", loop: false); _impactSource = CreateSource("ImpactSource", loop: false); _hurtSource = CreateSource("HurtSource", loop: false, 0.82f, 4.5f, 36f); _hurtBeepClips = CreateHurtBeepSet(); _lastState = EmpressSwordsmachineState.SpawnIntro; _initialized = true; if (!_loadStarted) { _loadStarted = true; ((MonoBehaviour)this).StartCoroutine(LoadClipsRoutine()); } } } internal void UpdateState(EmpressSwordsmachineState state) { if (!_initialized) { Initialize(); } if (_seePlayerTimer > 0f) { _seePlayerTimer -= Time.deltaTime; } if (_hurtFeedbackTimer > 0f) { _hurtFeedbackTimer -= Time.deltaTime; } TryStartAmbientLoop(); if (!_stateTracked) { _lastState = state; _stateTracked = true; return; } if (state == EmpressSwordsmachineState.Windup && _lastState != EmpressSwordsmachineState.Windup) { PlaySeePlayerCue(); } _lastState = state; } internal void PlaySlamImpact() { if (!_initialized) { Initialize(); } if ((Object)(object)_hitClip != (Object)null) { _impactSource.PlayOneShot(_hitClip, 1f); } } internal void PlayHurtFeedback() { if (!_initialized) { Initialize(); } if (!(_hurtFeedbackTimer > 0f) && _hurtBeepClips.Length != 0) { _hurtFeedbackTimer = 0.14f; AudioClip val = _hurtBeepClips[_hurtBeepIndex]; _hurtBeepIndex = (_hurtBeepIndex + 1) % _hurtBeepClips.Length; _hurtSource.pitch = 0.98f + (float)_hurtBeepIndex * 0.04f; _hurtSource.PlayOneShot(val, 1f); } } private IEnumerator LoadClipsRoutine() { yield return LoadClipInto(EmpressUltrakillPlugin.GetSoundPath("ambient.mp3"), delegate(AudioClip? clip) { _ambientClip = clip; }); yield return LoadClipInto(EmpressUltrakillPlugin.GetSoundPath("see player.mp3"), delegate(AudioClip? clip) { _seePlayerClip = clip; }); yield return LoadClipInto(EmpressUltrakillPlugin.GetSoundPath("hit.mp3"), delegate(AudioClip? clip) { _hitClip = clip; }); TryStartAmbientLoop(); } private IEnumerator LoadClipInto(string path, Action setter) { if (!File.Exists(path)) { EmpressUltrakillPlugin.Log.LogWarning((object)("Missing Empress Swordsmachine sound file: " + path)); setter(null); yield break; } UnityWebRequest request = UnityWebRequestMultimedia.GetAudioClip(new Uri(path).AbsoluteUri, (AudioType)13); try { yield return request.SendWebRequest(); if ((int)request.result != 1) { EmpressUltrakillPlugin.Log.LogWarning((object)("Failed to load Empress Swordsmachine sound '" + path + "': " + request.error)); setter(null); } else { AudioClip clip = DownloadHandlerAudioClip.GetContent(request); ((Object)clip).name = Path.GetFileNameWithoutExtension(path); setter(clip); } } finally { ((IDisposable)request)?.Dispose(); } } private void TryStartAmbientLoop() { if (!((Object)(object)_ambientClip == (Object)null) && !_ambientSource.isPlaying) { _ambientSource.clip = _ambientClip; _ambientSource.volume = 0.4f; _ambientSource.Play(); } } private void PlaySeePlayerCue() { if (!((Object)(object)_seePlayerClip == (Object)null) && !(_seePlayerTimer > 0f)) { _seePlayerTimer = 0.8f; _voiceSource.PlayOneShot(_seePlayerClip, 1f); } } private AudioSource CreateSource(string sourceName, bool loop, float spatialBlend = 1f, float minDistance = 2.2f, float maxDistance = 28f) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown GameObject val = new GameObject(sourceName); val.transform.SetParent(((Component)this).transform, false); AudioSource val2 = val.AddComponent(); val2.playOnAwake = false; val2.loop = loop; val2.spatialBlend = spatialBlend; val2.minDistance = minDistance; val2.maxDistance = maxDistance; val2.rolloffMode = (AudioRolloffMode)1; val2.dopplerLevel = 0f; val2.volume = 0.4f; return val2; } private static AudioClip[] CreateHurtBeepSet() { return (AudioClip[])(object)new AudioClip[3] { CreateHurtBeep("EmpressHurtBeepA", 520f, 780f), CreateHurtBeep("EmpressHurtBeepB", 610f, 910f), CreateHurtBeep("EmpressHurtBeepC", 700f, 1040f) }; } private static AudioClip CreateHurtBeep(string clipName, float baseFrequency, float overtoneFrequency) { int num = Mathf.CeilToInt(3087f); float[] array = new float[num]; for (int i = 0; i < num; i++) { float num2 = (float)i / 22050f; float num3 = (float)i / Mathf.Max(1f, (float)num - 1f); float num4 = Mathf.Lerp(baseFrequency, overtoneFrequency, num3); float num5 = ((num3 < 0.72f) ? Mathf.Lerp(0.55f, 1f, num3 / 0.72f) : Mathf.Lerp(1f, 0f, (num3 - 0.72f) / 0.28f)); float num6 = Mathf.Sin(num2 * num4 * MathF.PI * 2f) * 0.78f + Mathf.Sin(num2 * (num4 * 1.85f) * MathF.PI * 2f) * 0.18f + Mathf.Sin(num2 * (num4 * 0.5f) * MathF.PI * 2f) * 0.12f; array[i] = Mathf.Clamp(num6 * num5 * 0.5f, -1f, 1f); } AudioClip val = AudioClip.Create(clipName, num, 1, 22050, false); val.SetData(array, 0); return val; } } internal enum EmpressSwordsmachineState { SpawnIntro, Patrol, Hunt, Windup, Dash, Slam, Recover, Reposition, Stunned } internal sealed class EmpressSwordsmachineBrain : MonoBehaviour, IPunObservable { private const float DetectionDistance = 26f; private const float PursuitDistance = 34f; private const float SightDashDistance = 30f; private const float SpawnIntroTime = 1f; private const float WindupTime = 0.42f; private const float DashTime = 0.65f; private const float SlamTime = 0.42f; private const float RecoverTime = 1f; private const float RepositionTime = 1.6f; private const float SlamRadius = 3.25f; private const float VisionHalfAngle = 65f; private const float StallRecoverTime = 1.75f; private const float StallMovementThreshold = 0.08f; private const float ForceLeaveGraceTime = 1200f; private const float DoorPushCooldownTime = 0.12f; private const float DoorPushProbeDistance = 0.72f; private const float DoorPushProbeRadius = 0.55f; private const float DoorPushForce = 2.8f; private const float DoorPushTorque = 1.1f; private static readonly int SightObstructionMask = LayerMask.GetMask(new string[5] { "Default", "PhysGrabObject", "PhysGrabObjectCart", "PhysGrabObjectHinge", "StaticGrabObject" }); private static readonly int DoorPushMask = LayerMask.GetMask(new string[1] { "PhysGrabObjectHinge" }); private static readonly Collider[] DoorPushHits = (Collider[])(object)new Collider[8]; private EnemyParent _enemyParent = null; private Enemy _enemy = null; private EnemyNavMeshAgent _enemyNavMeshAgent = null; private EmpressSwordsmachineVisual _visual = null; private EmpressSwordsmachineAudio _audio = null; private Transform _centerTransform = null; private NavMeshAgent _navMeshAgent = null; private EmpressSwordsmachineState _state; private PlayerAvatar? _targetPlayer; private Quaternion _networkRotation; private Vector3 _dashDestination; private Vector3 _slamPoint; private Vector3 _moveDestination; private Vector3 _lastPosition; private float _stateTimer; private float _decisionTimer; private float _attackCooldown; private float _dashTimer; private float _doorPushCooldown; private float _localVelX; private float _localVelZ; private float _remoteStateTimer; private float _spawnLifetime; private float _stallTimer; private int _failedDashes; private int _networkTargetViewId = -1; private bool _spawnInitialized; private bool _slamTriggered; private bool _initialized; private bool _wasStunned; internal void Initialize(EnemyParent enemyParent, Enemy enemy, EnemyNavMeshAgent enemyNavMeshAgent, EmpressSwordsmachineVisual visual, EmpressSwordsmachineAudio audio, Transform centerTransform) { //IL_0041: 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_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) _enemyParent = enemyParent; _enemy = enemy; _enemyNavMeshAgent = enemyNavMeshAgent; _visual = visual; _audio = audio; _centerTransform = centerTransform; _navMeshAgent = RepoEnemyAccess.GetAgent(enemyNavMeshAgent); _networkRotation = ((Component)this).transform.rotation; _lastPosition = ((Component)this).transform.position; _initialized = true; } internal void HandleSpawnEvent() { //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_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_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: 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_00d7: Unknown result type (might be due to invalid IL or missing references) if (_initialized) { EnsureRuntimeReady(); _state = EmpressSwordsmachineState.SpawnIntro; _stateTimer = 1f; _decisionTimer = 0f; _attackCooldown = 0.45f; _failedDashes = 0; _slamTriggered = false; _spawnInitialized = true; _wasStunned = false; _targetPlayer = null; _moveDestination = ((Component)this).transform.position; _dashDestination = ((Component)this).transform.position; _slamPoint = ((Component)this).transform.position; _networkTargetViewId = -1; RepoEnemyAccess.SetTargetPlayer(_enemy, null, -1); _enemy.CurrentState = (EnemyState)1; _enemyNavMeshAgent.Stop(0.2f); _lastPosition = ((Component)this).transform.position; _spawnLifetime = 0f; _stallTimer = 0f; } } internal void HandleDeathStart() { if (_initialized) { _state = EmpressSwordsmachineState.Stunned; _stateTimer = 0f; _decisionTimer = 0f; _attackCooldown = 0f; _dashTimer = 0f; _slamTriggered = true; _enemyNavMeshAgent.Stop(0.1f); } } internal void HandleDeath() { if (_initialized) { _enemyNavMeshAgent.Stop(0.1f); if (SemiFunc.IsMasterClientOrSingleplayer()) { _enemyParent.Despawn(); } } } private void Update() { //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0121: 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_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) if (_initialized && _spawnInitialized && IsGameplayReady()) { EnemyHealth health = RepoEnemyAccess.GetHealth(_enemy); if ((Object)(object)health != (Object)null && (RepoEnemyAccess.GetEnemyHealthDeadImpulse(health) || RepoEnemyAccess.GetEnemyHealthDead(health))) { _enemyNavMeshAgent.Stop(0.1f); UpdateVisuals(EmpressSwordsmachineState.Stunned, 0f); _lastPosition = ((Component)this).transform.position; } else if (GameManager.Multiplayer() && !RepoEnemyAccess.GetMasterClient(_enemy)) { ((Component)this).transform.rotation = Quaternion.Slerp(((Component)this).transform.rotation, _networkRotation, Time.deltaTime * 14f); UpdateRemoteTarget(); UpdateVisuals(_state, _remoteStateTimer); _lastPosition = ((Component)this).transform.position; } else { TickHostLogic(); UpdateVisuals(_state, _stateTimer); _lastPosition = ((Component)this).transform.position; } } } private void TickHostLogic() { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Invalid comparison between Unknown and I4 //IL_013b: Unknown result type (might be due to invalid IL or missing references) if (!RepoEnemyAccess.GetSpawned(_enemyParent)) { _enemyNavMeshAgent.Stop(0.1f); return; } if ((int)_enemy.CurrentState == 11) { _enemyNavMeshAgent.Stop(0.1f); if (SemiFunc.IsMasterClientOrSingleplayer()) { _enemyParent.Despawn(); } return; } _spawnLifetime += Time.deltaTime; if (_spawnLifetime >= 1200f && _state == EmpressSwordsmachineState.Patrol && (Object)(object)_targetPlayer == (Object)null && SemiFunc.EnemyForceLeave(_enemy)) { _enemyParent.Despawn(); SyncNetworkState(); return; } if (_attackCooldown > 0f) { _attackCooldown -= Time.deltaTime; } if (_doorPushCooldown > 0f) { _doorPushCooldown -= Time.deltaTime; } if (_enemy.IsStunned()) { _state = EmpressSwordsmachineState.Stunned; _enemy.CurrentState = (EnemyState)9; _enemyNavMeshAgent.Stop(0.1f); FaceClosestPlayer(8f); _failedDashes = 0; _wasStunned = true; SyncNetworkState(); return; } if (_wasStunned) { _wasStunned = false; EnterPatrol(); } UpdateStallRecovery(); if (_stateTimer > 0f) { _stateTimer -= Time.deltaTime; } switch (_state) { case EmpressSwordsmachineState.SpawnIntro: TickSpawnIntro(); break; case EmpressSwordsmachineState.Patrol: TickPatrol(); break; case EmpressSwordsmachineState.Hunt: TickHunt(); break; case EmpressSwordsmachineState.Windup: TickWindup(); break; case EmpressSwordsmachineState.Dash: TickDash(); break; case EmpressSwordsmachineState.Slam: TickSlam(); break; case EmpressSwordsmachineState.Recover: TickRecover(); break; case EmpressSwordsmachineState.Reposition: EnterPatrol(); break; case EmpressSwordsmachineState.Stunned: EnterPatrol(); break; } UpdateDoorInteraction(); SyncNetworkState(); } private void TickSpawnIntro() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) _enemy.CurrentState = (EnemyState)1; _enemyNavMeshAgent.Stop(0.2f); if (_stateTimer <= 0f && !SemiFunc.EnemySpawnIdlePause()) { EnterPatrol(); } } private void TickPatrol() { //IL_0008: 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_009a: 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_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: 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_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_0148: 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_0160: Unknown result type (might be due to invalid IL or missing references) _enemy.CurrentState = (EnemyState)2; PlayerAvatar visibleTarget = GetVisibleTarget(26f); if ((Object)(object)visibleTarget != (Object)null && _attackCooldown <= 0f) { EnterWindup(visibleTarget); return; } if (SemiFunc.EnemySpawnIdlePause()) { _enemyNavMeshAgent.Stop(0.2f); return; } if (((Behaviour)_navMeshAgent).enabled && _navMeshAgent.isOnNavMesh && _navMeshAgent.hasPath && Vector3.Distance(((Component)this).transform.position, _moveDestination) > 1.25f) { Vector3 desiredVelocity = _navMeshAgent.desiredVelocity; if (((Vector3)(ref desiredVelocity)).sqrMagnitude > 0.04f) { FaceTravelDirection(5f); return; } } if (_decisionTimer > 0f) { _decisionTimer -= Time.deltaTime; FaceTravelDirection(5f); return; } _decisionTimer = 1.9f; Vector3 val = SemiFunc.EnemyRoamFindPoint(((Component)this).transform.position); if (((Vector3)(ref val)).sqrMagnitude > 0.001f) { _moveDestination = val; SetMoveDestination(val, 1.2f, 9f); FacePosition(val, 4f); } else { _enemyNavMeshAgent.Stop(0.25f); } FaceTravelDirection(5f); } private void TickHunt() { //IL_0032: 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_0050: 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_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) PlayerAvatar visibleTarget = GetVisibleTarget(34f); if ((Object)(object)visibleTarget == (Object)null) { EnterPatrol(); return; } _targetPlayer = visibleTarget; float num = Vector3.Distance(_centerTransform.position, GetSightTargetPosition(_targetPlayer)); _enemy.CurrentState = (EnemyState)3; if (_attackCooldown <= 0f && num <= 30f) { EnterWindup(_targetPlayer); return; } if (num > 34f) { EnterPatrol(); return; } if (_decisionTimer > 0f) { _decisionTimer -= Time.deltaTime; return; } _decisionTimer = 0.2f; _moveDestination = SampleNavMeshPosition(((Component)_targetPlayer).transform.position, 2.5f, ((Component)_targetPlayer).transform.position); SetMoveDestination(_moveDestination, 1.45f, 11f); FaceTravelDirection(8f); } private void TickWindup() { //IL_0008: 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_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_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) _enemy.CurrentState = (EnemyState)3; _enemyParent.SpawnedTimerPause(0.3f); _enemyNavMeshAgent.Stop(0.2f); _targetPlayer = ResolveTarget(_targetPlayer); if ((Object)(object)_targetPlayer == (Object)null) { EnterPatrol(); return; } Vector3 sightTargetPosition = GetSightTargetPosition(_targetPlayer); float num = Vector3.Distance(_centerTransform.position, sightTargetPosition); if (num > 30f || !HasClearRay(_centerTransform.position, sightTargetPosition, num, _targetPlayer)) { EnterPatrol(); return; } FacePosition(_slamPoint, 18f); if (_stateTimer <= 0f) { BeginDash(); } } private void TickDash() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) _enemy.CurrentState = (EnemyState)4; _enemyParent.SpawnedTimerPause(0.5f); if (_dashTimer > 0f) { _dashTimer -= Time.deltaTime; } SetMoveDestination(_dashDestination, 16f, 220f); FacePosition(_slamPoint, 22f); if (_dashTimer <= 0f || Vector3.Distance(((Component)this).transform.position, _dashDestination) < 1.45f) { BeginSlam(); } } private void TickSlam() { //IL_0008: 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) _enemy.CurrentState = (EnemyState)4; _enemyParent.SpawnedTimerPause(0.4f); _enemyNavMeshAgent.Stop(0.2f); FacePosition(_slamPoint, 28f); if (!_slamTriggered && _stateTimer <= 0.12f) { PerformSlamImpact(); } if (_stateTimer <= 0f) { EnterRecover(); } } private void TickRecover() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) _enemy.CurrentState = (EnemyState)8; _enemyNavMeshAgent.Stop(0.15f); if ((Object)(object)_targetPlayer != (Object)null && !RepoEnemyAccess.IsDisabled(_targetPlayer)) { FacePlayer(_targetPlayer, 8f); } if (!(_stateTimer > 0f)) { PlayerAvatar visibleTarget = GetVisibleTarget(26f); if ((Object)(object)visibleTarget != (Object)null && _attackCooldown <= 0f) { EnterWindup(visibleTarget); } else if ((Object)(object)_targetPlayer == (Object)null || RepoEnemyAccess.IsDisabled(_targetPlayer)) { EnterPatrol(); } else { EnterPatrol(); } } } private void TickReposition() { EnterPatrol(); } private void EnterPatrol() { //IL_003e: Unknown result type (might be due to invalid IL or missing references) _state = EmpressSwordsmachineState.Patrol; _stateTimer = 0f; _decisionTimer = 0f; _slamTriggered = false; _targetPlayer = null; _stallTimer = 0f; _enemy.CurrentState = (EnemyState)2; RepoEnemyAccess.SetTargetPlayer(_enemy, null, -1); } private void EnterHunt(PlayerAvatar? player) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) _state = EmpressSwordsmachineState.Hunt; _stateTimer = 0f; _decisionTimer = 0f; _slamTriggered = false; _targetPlayer = ResolveTarget(player) ?? GetClosestValidPlayer(); _enemy.CurrentState = (EnemyState)5; } private void EnterWindup(PlayerAvatar player) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) _state = EmpressSwordsmachineState.Windup; _stateTimer = 0.42f; _decisionTimer = 0f; _slamTriggered = false; _stallTimer = 0f; _targetPlayer = player; LockChargeTarget(player); _enemy.CurrentState = (EnemyState)3; _enemyNavMeshAgent.Stop(0.25f); _targetPlayer.EnemyVisionFreezeTimerSet(0.2f); } private void BeginDash() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003d: 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_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0081: 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) //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_009f: Unknown result type (might be due to invalid IL or missing references) _state = EmpressSwordsmachineState.Dash; _dashTimer = 0.65f; _slamTriggered = false; _stallTimer = 0f; _enemy.CurrentState = (EnemyState)4; if (Vector3.Distance(_dashDestination, ((Component)this).transform.position) < 0.75f) { Vector3 val = ((Component)this).transform.position + ((Component)this).transform.forward * 8f; _dashDestination = SampleNavMeshPosition(val, 2.75f, val); _slamPoint = _dashDestination; _moveDestination = _dashDestination; } } private void BeginSlam() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_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) _state = EmpressSwordsmachineState.Slam; _stateTimer = 0.42f; _slamTriggered = false; _stallTimer = 0f; _enemy.CurrentState = (EnemyState)4; _enemyNavMeshAgent.Stop(0.25f); _slamPoint = SampleNavMeshPosition(((Component)this).transform.position + ((Component)this).transform.forward * 1.2f, 2f, _dashDestination); } private void EnterRecover() { //IL_003b: Unknown result type (might be due to invalid IL or missing references) _state = EmpressSwordsmachineState.Recover; _stateTimer = 1f; _decisionTimer = 0f; _attackCooldown = 2.2f; _stallTimer = 0f; _enemy.CurrentState = (EnemyState)8; _enemyNavMeshAgent.Stop(0.2f); } private void EnterReposition(PlayerAvatar? focusPlayer) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) _state = EmpressSwordsmachineState.Reposition; _stateTimer = 1.6f; _decisionTimer = 0f; _slamTriggered = false; _targetPlayer = ResolveTarget(focusPlayer) ?? GetClosestValidPlayer(); _enemy.CurrentState = (EnemyState)7; } private void PerformSlamImpact() { //IL_001a: 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_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_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_00b2: Unknown result type (might be due to invalid IL or missing references) if (_slamTriggered) { return; } _slamTriggered = true; TriggerGroundSlamEffect(_slamPoint); int num = SemiFunc.EnemyGetIndex(_enemy); bool flag = false; foreach (PlayerAvatar item in SemiFunc.PlayerGetList()) { if (IsTargetValid(item)) { Transform targetTransform = GetTargetTransform(item); float num2 = Vector3.Distance(targetTransform.position, _slamPoint); if (!(num2 > 3.25f) && HasClearRay(_slamPoint + Vector3.up * 0.3f, targetTransform.position, num2 + 0.25f, item)) { item.EnemyVisionFreezeTimerSet(0.35f); item.PlayerDeath(num); flag = true; } } } _failedDashes = ((!flag) ? (_failedDashes + 1) : 0); } private PlayerAvatar? GetVisibleTarget(float maxDistance) { //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_0042: 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_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0094: 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_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) PlayerAvatar result = null; float num = float.MinValue; foreach (PlayerAvatar item in SemiFunc.PlayerGetList()) { if (!IsTargetValid(item)) { continue; } Vector3 sightTargetPosition = GetSightTargetPosition(item); Vector3 val = sightTargetPosition - _centerTransform.position; float magnitude = ((Vector3)(ref val)).magnitude; if (magnitude > maxDistance) { continue; } Vector3 val2 = val; val2.y = 0f; if ((!(((Vector3)(ref val2)).sqrMagnitude > 0.0001f) || !(Vector3.Angle(((Component)this).transform.forward, ((Vector3)(ref val2)).normalized) > 65f)) && HasClearRay(_centerTransform.position, sightTargetPosition, magnitude, item)) { float num2 = 0f - magnitude; if (num2 > num) { num = num2; result = item; } } } return result; } private PlayerAvatar? GetClosestValidPlayer() { //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) PlayerAvatar result = null; float num = float.MaxValue; foreach (PlayerAvatar item in SemiFunc.PlayerGetList()) { if (IsTargetValid(item)) { float num2 = Vector3.Distance(((Component)this).transform.position, ((Component)item).transform.position); if (num2 < num) { num = num2; result = item; } } } return result; } private PlayerAvatar? ResolveTarget(PlayerAvatar? player) { return ((Object)(object)player != (Object)null && IsTargetValid(player)) ? player : null; } private bool IsTargetValid(PlayerAvatar? player) { return (Object)(object)player != (Object)null && !RepoEnemyAccess.IsDisabled(player) && !RepoEnemyAccess.IsDeadSet(player); } [PunRPC] private void GroundSlamRpc(Vector3 position, PhotonMessageInfo info = default(PhotonMessageInfo)) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) if (SemiFunc.MasterOnlyRPC(info) || !GameManager.Multiplayer()) { EnsureRuntimeReady(); _audio.PlaySlamImpact(); _visual.TriggerGroundSlam(position, 3.25f); } } private void TriggerGroundSlamEffect(Vector3 position) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_007d: 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) EnsureRuntimeReady(); if (!GameManager.Multiplayer()) { _audio.PlaySlamImpact(); _visual.TriggerGroundSlam(position, 3.25f); return; } PhotonView val = RepoEnemyAccess.GetPhotonView(_enemy) ?? ((Component)this).GetComponent(); if ((Object)(object)val != (Object)null) { val.RPC("GroundSlamRpc", (RpcTarget)0, new object[1] { position }); } else { _visual.TriggerGroundSlam(position, 3.25f); } } private void UpdateVisuals(EmpressSwordsmachineState visualState, float stateTimer) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: 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_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) Vector3 val = ((Component)this).transform.position - _lastPosition; Vector3 val2 = ((Component)this).transform.InverseTransformDirection(val / Mathf.Max(Time.deltaTime, 0.0001f)); _localVelX = Mathf.Lerp(_localVelX, val2.x, 10f * Time.deltaTime); _localVelZ = Mathf.Lerp(_localVelZ, val2.z, 10f * Time.deltaTime); if (_enemy.IsStunned()) { visualState = EmpressSwordsmachineState.Stunned; } if (1 == 0) { } float num = visualState switch { EmpressSwordsmachineState.Windup => 1f - Mathf.Clamp01(stateTimer / 0.42f), EmpressSwordsmachineState.Dash => 0.75f, EmpressSwordsmachineState.Slam => 1f, EmpressSwordsmachineState.Recover => 0.25f, _ => 0f, }; if (1 == 0) { } float attackCharge = num; object obj; if (!((Object)(object)_targetPlayer?.PlayerVisionTarget != (Object)null)) { PlayerAvatar? targetPlayer = _targetPlayer; obj = ((targetPlayer != null) ? ((Component)targetPlayer).transform : null); } else { obj = _targetPlayer.PlayerVisionTarget.VisionTransform; } Transform lookTarget = (Transform)obj; _audio.UpdateState(visualState); _visual.UpdatePose(visualState, new Vector3(_localVelX, 0f, _localVelZ), lookTarget, attackCharge); } private void SyncNetworkState() { _networkTargetViewId = (((Object)(object)_targetPlayer != (Object)null) ? _targetPlayer.photonView.ViewID : (-1)); RepoEnemyAccess.SetTargetPlayer(_enemy, _targetPlayer, _networkTargetViewId); } private void UpdateRemoteTarget() { PlayerAvatar val = null; if (_networkTargetViewId != -1) { foreach (PlayerAvatar item in SemiFunc.PlayerGetList()) { if (!RepoEnemyAccess.IsDisabled(item) && item.photonView.ViewID == _networkTargetViewId) { val = item; break; } } } _targetPlayer = val; RepoEnemyAccess.SetTargetPlayer(_enemy, val, _networkTargetViewId); } private void SetMoveDestination(Vector3 destination, float speed, float acceleration) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) if (EnsureRuntimeReady()) { _enemyNavMeshAgent.UpdateAgent(speed, acceleration); _enemyNavMeshAgent.SetDestination(destination); } } private void FacePlayer(PlayerAvatar player, float turnSpeed) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) FacePosition(GetTargetTransform(player).position, turnSpeed); } private void FaceClosestPlayer(float turnSpeed) { PlayerAvatar closestValidPlayer = GetClosestValidPlayer(); if ((Object)(object)closestValidPlayer != (Object)null) { FacePlayer(closestValidPlayer, turnSpeed); } } private void FacePosition(Vector3 position, float turnSpeed) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: 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_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_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) Vector3 val = position - ((Component)this).transform.position; val.y = 0f; if (!(((Vector3)(ref val)).sqrMagnitude <= 0.0001f)) { Quaternion val2 = Quaternion.LookRotation(((Vector3)(ref val)).normalized, Vector3.up); ((Component)this).transform.rotation = Quaternion.Slerp(((Component)this).transform.rotation, val2, turnSpeed * Time.deltaTime); } } private void FaceTravelDirection(float turnSpeed) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_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_009f: Unknown result type (might be due to invalid IL or missing references) Vector3 val = Vector3.zero; if (((Behaviour)_navMeshAgent).enabled && _navMeshAgent.isOnNavMesh) { val = _navMeshAgent.desiredVelocity; } val.y = 0f; if (((Vector3)(ref val)).sqrMagnitude <= 0.01f) { val = _moveDestination - ((Component)this).transform.position; val.y = 0f; } if (!(((Vector3)(ref val)).sqrMagnitude <= 0.01f)) { FacePosition(((Component)this).transform.position + val, turnSpeed); } } private Transform GetTargetTransform(PlayerAvatar player) { return ((Object)(object)player.PlayerVisionTarget != (Object)null) ? player.PlayerVisionTarget.VisionTransform : ((Component)player).transform; } private bool HasClearRay(Vector3 from, Vector3 to, float distance, PlayerAvatar? player) { //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_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) //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_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) Vector3 val = to - from; Vector3 normalized = ((Vector3)(ref val)).normalized; RaycastHit[] array = Physics.RaycastAll(from, normalized, distance, SightObstructionMask, (QueryTriggerInteraction)1); RaycastHit[] array2 = array; for (int i = 0; i < array2.Length; i++) { RaycastHit val2 = array2[i]; if (!((RaycastHit)(ref val2)).transform.IsChildOf(((Component)this).transform) && (!((Object)(object)player != (Object)null) || !((RaycastHit)(ref val2)).transform.IsChildOf(((Component)player).transform))) { return false; } } return true; } private Vector3 SampleNavMeshPosition(Vector3 desired, float range, Vector3 fallback) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0034: 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_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) NavMeshHit val = default(NavMeshHit); if (NavMesh.SamplePosition(desired, ref val, range, -1)) { return ((NavMeshHit)(ref val)).position; } if (NavMesh.SamplePosition(fallback, ref val, range, -1)) { return ((NavMeshHit)(ref val)).position; } return fallback; } private void LockChargeTarget(PlayerAvatar player) { //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_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_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_007d: 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) Vector3 position = ((Component)player).transform.position; Vector3 val = position - ((Component)this).transform.position; val.y = 0f; Vector3 fallback = ((Component)this).transform.position + ((((Vector3)(ref val)).sqrMagnitude > 0.001f) ? ((Vector3)(ref val)).normalized : ((Component)this).transform.forward) * 8f; _dashDestination = SampleNavMeshPosition(position, 2.75f, fallback); _slamPoint = _dashDestination; _moveDestination = _dashDestination; } private Vector3 GetSightTargetPosition(PlayerAvatar player) { //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_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_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) return ((Component)player).transform.position + Vector3.up * 0.95f; } private void UpdateStallRecovery() { //IL_006b: 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_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) bool flag; switch (_state) { case EmpressSwordsmachineState.SpawnIntro: case EmpressSwordsmachineState.Windup: case EmpressSwordsmachineState.Slam: case EmpressSwordsmachineState.Recover: case EmpressSwordsmachineState.Stunned: flag = true; break; default: flag = false; break; } if (flag) { _stallTimer = 0f; return; } bool flag2 = _state == EmpressSwordsmachineState.Dash; if (!flag2) { flag2 = Vector3.Distance(((Component)this).transform.position, _moveDestination) > 1.25f; } if (!flag2) { _stallTimer = 0f; return; } if (Vector3.Distance(((Component)this).transform.position, _lastPosition) > 0.08f) { _stallTimer = 0f; return; } _stallTimer += Time.deltaTime; if (_stallTimer >= 1.75f) { RecoverFromMovementStall(); } } private void RecoverFromMovementStall() { //IL_006c: 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_00b0: 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_0098: Unknown result type (might be due to invalid IL or missing references) _stallTimer = 0f; _decisionTimer = 0f; _dashTimer = 0f; _doorPushCooldown = 0f; _slamTriggered = false; _targetPlayer = null; RepoEnemyAccess.SetTargetPlayer(_enemy, null, -1); if (((Behaviour)_navMeshAgent).enabled) { _navMeshAgent.ResetPath(); } NavMeshHit val = default(NavMeshHit); if (NavMesh.SamplePosition(((Component)this).transform.position, ref val, 14f, -1)) { ((Behaviour)_navMeshAgent).enabled = true; _navMeshAgent.Warp(((NavMeshHit)(ref val)).position); } _moveDestination = ((Component)this).transform.position; _enemy.CurrentState = (EnemyState)2; _state = EmpressSwordsmachineState.Patrol; _enemyNavMeshAgent.Stop(0f); } private void UpdateDoorInteraction() { //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009a: 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_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_0235: Unknown result type (might be due to invalid IL or missing references) bool flag = _doorPushCooldown > 0f; bool flag2 = flag; if (!flag2) { bool flag3; switch (_state) { case EmpressSwordsmachineState.SpawnIntro: case EmpressSwordsmachineState.Windup: case EmpressSwordsmachineState.Slam: case EmpressSwordsmachineState.Recover: case EmpressSwordsmachineState.Stunned: flag3 = true; break; default: flag3 = false; break; } flag2 = flag3; } if (flag2) { return; } Vector3 doorPushDirection = GetDoorPushDirection(); if (((Vector3)(ref doorPushDirection)).sqrMagnitude <= 0.04f) { return; } Vector3 val = _centerTransform.position + doorPushDirection * 0.72f; int num = Physics.OverlapSphereNonAlloc(val, 0.55f, DoorPushHits, DoorPushMask, (QueryTriggerInteraction)1); if (num <= 0) { return; } for (int i = 0; i < num; i++) { Collider val2 = DoorPushHits[i]; DoorPushHits[i] = null; if ((Object)(object)val2 == (Object)null || ((Component)val2).transform.IsChildOf(((Component)this).transform)) { continue; } PhysGrabHinge componentInParent = ((Component)val2).GetComponentInParent(); if ((Object)(object)componentInParent == (Object)null) { continue; } PhysGrabObject component = ((Component)componentInParent).GetComponent(); Rigidbody component2 = ((Component)componentInParent).GetComponent(); HingeJoint component3 = ((Component)componentInParent).GetComponent(); if (!((Object)(object)component == (Object)null) && !((Object)(object)component2 == (Object)null) && !((Object)(object)component3 == (Object)null) && !component2.isKinematic) { Vector3 val3 = val2.ClosestPoint(val); Vector3 val4 = doorPushDirection * 2.8f; val4.y = Mathf.Max(val4.y, 0.08f); Vector3 val5 = ((Component)componentInParent).transform.position - ((Component)this).transform.position; val5.y = 0f; float num2 = Mathf.Sign(Vector3.Dot(Vector3.Cross(val5, doorPushDirection), Vector3.up)); if (Mathf.Abs(num2) < 0.01f) { num2 = 1f; } component.EnemyInteractTimeSet(); component2.AddForceAtPosition(val4, val3, (ForceMode)1); component2.AddTorque(Vector3.up * (1.1f * num2), (ForceMode)1); _doorPushCooldown = 0.12f; break; } } } private Vector3 GetDoorPushDirection() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: 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_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) Vector3 val = Vector3.zero; if (((Behaviour)_navMeshAgent).enabled && _navMeshAgent.isOnNavMesh) { val = _navMeshAgent.desiredVelocity; } val.y = 0f; if (((Vector3)(ref val)).sqrMagnitude > 0.04f) { return ((Vector3)(ref val)).normalized; } val = ((_state == EmpressSwordsmachineState.Dash) ? (_dashDestination - ((Component)this).transform.position) : (_moveDestination - ((Component)this).transform.position)); val.y = 0f; return (((Vector3)(ref val)).sqrMagnitude > 0.04f) ? ((Vector3)(ref val)).normalized : Vector3.zero; } private bool EnsureRuntimeReady() { //IL_00a0: 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_00d0: Unknown result type (might be due to invalid IL or missing references) if (!_visual.Ready) { _visual.Build(); _enemy.KillLookAtTransform = _visual.HeadTransform; _enemy.CustomValuableSpawnTransform = _visual.CoreTransform; } if (((Behaviour)_navMeshAgent).enabled && _navMeshAgent.isOnNavMesh) { if (!((Behaviour)_enemyNavMeshAgent).enabled) { ((Behaviour)_enemyNavMeshAgent).enabled = true; } return true; } Vector3 position = ((Component)_navMeshAgent).transform.position; NavMeshHit val = default(NavMeshHit); if (NavMesh.SamplePosition(position, ref val, 6f, -1)) { ((Behaviour)_navMeshAgent).enabled = true; _navMeshAgent.Warp(((NavMeshHit)(ref val)).position); if (!((Behaviour)_enemyNavMeshAgent).enabled) { ((Behaviour)_enemyNavMeshAgent).enabled = true; } return true; } return false; } private bool IsGameplayReady() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Invalid comparison between Unknown and I4 return (Object)(object)LevelGenerator.Instance != (Object)null && LevelGenerator.Instance.Generated && (Object)(object)GameDirector.instance != (Object)null && (int)GameDirector.instance.currentState == 2 && !SemiFunc.RunIsLobbyMenu() && !SemiFunc.MenuLevel(); } public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { //IL_0001: 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_0038: Unknown result type (might be due to invalid IL or missing references) if (SemiFunc.MasterOnlyRPC(info)) { if (stream.IsWriting) { stream.SendNext((object)(int)_state); stream.SendNext((object)((Component)this).transform.rotation); stream.SendNext((object)_stateTimer); stream.SendNext((object)_networkTargetViewId); } else { _state = (EmpressSwordsmachineState)(int)stream.ReceiveNext(); _networkRotation = (Quaternion)stream.ReceiveNext(); _remoteStateTimer = (float)stream.ReceiveNext(); _networkTargetViewId = (int)stream.ReceiveNext(); } } } } [DefaultExecutionOrder(-100)] internal sealed class EmpressSwordsmachineTemplateBootstrap : MonoBehaviour { private const string EnableObjectName = "EnableObject"; private const string EnemyObjectName = "EmpressSwordsmachineEnemy"; private const string CenterObjectName = "Center"; private const string TemplateContainerName = "EmpressSwordsmachineTemplateContainer"; private const int SwordsmachineHealth = 240; private static readonly HashSet TemplateInstanceIds = new HashSet(); private static GameObject? _templateContainer; private bool _runtimeBuilt; internal static GameObject CreateTemplate(ManualLogSource log) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown //IL_0054: Unknown result type (might be due to invalid IL or missing references) GameObject val = EnsureTemplateContainer(); GameObject val2 = new GameObject("EmpressSwordsmachinePrefab") { layer = ResolveLayer("Enemy") }; val2.transform.SetParent(val.transform, false); ((Object)val2).hideFlags = (HideFlags)61; val2.transform.position = new Vector3(0f, -5000f, 0f); TemplateInstanceIds.Add(((Object)val2).GetInstanceID()); BuildTemplateCore(val2.transform); log.LogInfo((object)"Created Empress Swordsmachine template core."); return val2; } internal static bool IsTemplateInstance(GameObject gameObject) { Transform val = gameObject.transform; while ((Object)(object)val.parent != (Object)null) { val = val.parent; } return TemplateInstanceIds.Contains(((Object)((Component)val).gameObject).GetInstanceID()); } private static GameObject EnsureTemplateContainer() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected O, but got Unknown if ((Object)(object)_templateContainer != (Object)null) { return _templateContainer; } _templateContainer = new GameObject("EmpressSwordsmachineTemplateContainer"); ((Object)_templateContainer).hideFlags = (HideFlags)61; Object.DontDestroyOnLoad((Object)(object)_templateContainer); _templateContainer.SetActive(false); return _templateContainer; } private void Start() { if (IsTemplateInstance(((Component)this).gameObject) || _runtimeBuilt) { return; } _runtimeBuilt = true; try { BuildRuntimeInstance(); } catch (Exception arg) { EmpressUltrakillPlugin.Log.LogError((object)$"Failed to finish Empress Swordsmachine spawn: {arg}"); } } private static void BuildTemplateCore(Transform root) { //IL_0044: 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_0068: Expected O, but got Unknown //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Expected O, but got Unknown //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Expected O, but got Unknown //IL_0112: 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_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_026a: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) int layer = ResolveLayer("Enemy"); ((Component)root).gameObject.layer = layer; TrySetTag(((Component)root).gameObject, "Enemy"); EnemyParent val = ((Component)root).gameObject.AddComponent(); PhotonView val2 = ((Component)root).gameObject.AddComponent(); val2.Synchronization = (ViewSynchronization)3; ((Behaviour)val2).enabled = false; ((Component)root).gameObject.AddComponent(); GameObject val3 = new GameObject("EnableObject"); val3.transform.SetParent(root, false); val3.layer = layer; TrySetTag(val3, "Enemy"); GameObject val4 = new GameObject("EmpressSwordsmachineEnemy"); val4.transform.SetParent(val3.transform, false); val4.transform.localPosition = Vector3.zero; val4.layer = layer; val4.SetActive(false); TrySetTag(val4, "Enemy"); GameObject val5 = new GameObject("Center"); val5.transform.SetParent(val4.transform, false); val5.transform.localPosition = new Vector3(0f, 1.42f, 0f); PhotonView val6 = val4.AddComponent(); val6.Synchronization = (ViewSynchronization)3; ((Behaviour)val6).enabled = false; CapsuleCollider val7 = val4.AddComponent(); val7.center = new Vector3(0f, 1.24f, 0f); val7.height = 2.65f; val7.radius = 0.44f; EnemyStateSpawn stateSpawn = val4.AddComponent(); EnemyStateStunned stateStunned = val4.AddComponent(); Enemy val8 = val4.AddComponent(); val8.Type = (EnemyType)3; val.enemyName = "Empress Swordsmachine"; val.difficulty = (Difficulty)2; val.actionMultiplier = 1.5f; val.overchargeMultiplier = 1.2f; val.EnableObject = val3; val.SpawnedTimeMin = 1200f; val.SpawnedTimeMax = 1800f; val.DespawnedTimeMin = 26f; val.DespawnedTimeMax = 44f; RepoEnemyAccess.SetSetupDone(val, value: false); RepoEnemyAccess.SetEnemyParentEnemy(val, val8); RepoEnemyAccess.SetEnemyParent(val8, val); RepoEnemyAccess.SetPhotonView(val8, val6); val8.CenterTransform = val5.transform; val8.KillLookAtTransform = val5.transform; val8.CustomValuableSpawnTransform = val5.transform; RepoEnemyAccess.SetStateSpawn(val8, stateSpawn); RepoEnemyAccess.SetHasStateSpawn(val8, value: true); RepoEnemyAccess.SetStateStunned(val8, stateStunned); RepoEnemyAccess.SetHasStateStunned(val8, value: true); RepoEnemyAccess.SetVisionMask(val8, LayerMask.op_Implicit(LayerMask.op_Implicit(SemiFunc.LayerMaskGetVisionObstruct()) + LayerMask.GetMask(new string[1] { "HideTriggers" }))); val8.CurrentState = (EnemyState)1; RepoEnemyAccess.SetTargetPlayerViewId(val8, -1); RepoEnemyAccess.SetStateSpawnEnemy(stateSpawn, val8); RepoEnemyAccess.SetStateStunnedEnemy(stateStunned, val8); val4.SetActive(true); val2.ObservedComponents = new List { (Component)(object)val }; val6.ObservedComponents = new List { (Component)(object)val8 }; SetLayerRecursively(root, layer); TrySetTagRecursively(root, "Enemy"); } private void BuildRuntimeInstance() { //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Expected O, but got Unknown //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Expected O, but got Unknown //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Expected O, but got Unknown //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Expected O, but got Unknown //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Expected O, but got Unknown //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Expected O, but got Unknown //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Expected O, but got Unknown //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Expected O, but got Unknown if (!TryResolveCore(out EnemyParent enemyParent, out Enemy enemy, out EnemyStateSpawn stateSpawn, out PhotonView rootPhotonView, out PhotonView enemyPhotonView, out Transform centerTransform)) { throw new InvalidOperationException("Empress Swordsmachine core components were not present on spawned clone."); } SetHideFlagsRecursively(((Component)this).transform, (HideFlags)0); ((Behaviour)rootPhotonView).enabled = true; ((Behaviour)enemyPhotonView).enabled = true; EnemyNavMeshAgent val = EnsureRuntimeNavMeshAgent(enemy); EmpressSwordsmachineVisual empressSwordsmachineVisual = ((Component)enemy).GetComponent() ?? ((Component)enemy).gameObject.AddComponent(); empressSwordsmachineVisual.Build(); EnemyHealth val2 = ((Component)enemy).GetComponent() ?? ((Component)enemy).gameObject.AddComponent(); ConfigureEnemyHealth(enemy, enemyPhotonView, val2, empressSwordsmachineVisual); EmpressSwordsmachineAudio empressSwordsmachineAudio = ((Component)enemy).GetComponent() ?? ((Component)enemy).gameObject.AddComponent(); empressSwordsmachineAudio.Initialize(); EmpressSwordsmachineBrain empressSwordsmachineBrain = ((Component)enemy).GetComponent() ?? ((Component)enemy).gameObject.AddComponent(); empressSwordsmachineBrain.Initialize(enemyParent, enemy, val, empressSwordsmachineVisual, empressSwordsmachineAudio, centerTransform); RepoEnemyAccess.SetEnemyParentEnemy(enemyParent, enemy); RepoEnemyAccess.SetEnemyParent(enemy, enemyParent); RepoEnemyAccess.SetPhotonView(enemy, enemyPhotonView); RepoEnemyAccess.SetNavMeshAgent(enemy, val); RepoEnemyAccess.SetHasNavMeshAgent(enemy, value: true); RepoEnemyAccess.SetHealth(enemy, val2); RepoEnemyAccess.SetHasHealth(enemy, value: true); RepoEnemyAccess.SetStateSpawn(enemy, stateSpawn); RepoEnemyAccess.SetHasStateSpawn(enemy, value: true); RepoEnemyAccess.SetTargetPlayer(enemy, null, -1); enemy.CenterTransform = centerTransform; enemy.KillLookAtTransform = empressSwordsmachineVisual.HeadTransform; enemy.CustomValuableSpawnTransform = empressSwordsmachineVisual.CoreTransform; RepoEnemyAccess.SetStateSpawnEnemy(stateSpawn, enemy); RepoEnemyAccess.EnsureEnemyHealthOnHurt(val2).RemoveListener(new UnityAction(empressSwordsmachineAudio.PlayHurtFeedback)); RepoEnemyAccess.EnsureEnemyHealthOnHurt(val2).AddListener(new UnityAction(empressSwordsmachineAudio.PlayHurtFeedback)); RepoEnemyAccess.EnsureEnemyHealthOnObjectHurt(val2); RepoEnemyAccess.EnsureEnemyHealthOnDeathStart(val2).RemoveListener(new UnityAction(empressSwordsmachineBrain.HandleDeathStart)); RepoEnemyAccess.EnsureEnemyHealthOnDeathStart(val2).AddListener(new UnityAction(empressSwordsmachineBrain.HandleDeathStart)); RepoEnemyAccess.EnsureEnemyHealthOnDeath(val2).RemoveListener(new UnityAction(empressSwordsmachineBrain.HandleDeath)); RepoEnemyAccess.EnsureEnemyHealthOnDeath(val2).AddListener(new UnityAction(empressSwordsmachineBrain.HandleDeath)); stateSpawn.OnSpawn.RemoveListener(new UnityAction(empressSwordsmachineBrain.HandleSpawnEvent)); stateSpawn.OnSpawn.AddListener(new UnityAction(empressSwordsmachineBrain.HandleSpawnEvent)); rootPhotonView.ObservedComponents = new List { (Component)(object)enemyParent }; enemyPhotonView.ObservedComponents = new List { (Component)(object)enemy, (Component)(object)empressSwordsmachineBrain }; } private bool TryResolveCore(out EnemyParent enemyParent, out Enemy enemy, out EnemyStateSpawn stateSpawn, out PhotonView rootPhotonView, out PhotonView enemyPhotonView, out Transform centerTransform) { enemyParent = ((Component)this).GetComponent(); rootPhotonView = ((Component)this).GetComponent(); enemy = ((Component)this).GetComponentInChildren(true); stateSpawn = ((Component)this).GetComponentInChildren(true); PhotonView val = (((Object)(object)enemy != (Object)null) ? ((Component)enemy).GetComponent() : null); Transform val2 = (((Object)(object)enemy != (Object)null && (Object)(object)enemy.CenterTransform != (Object)null) ? enemy.CenterTransform : ((Component)this).transform.Find("EnableObject/EmpressSwordsmachineEnemy/Center")); enemyPhotonView = val; centerTransform = val2; return (Object)(object)enemyParent != (Object)null && (Object)(object)enemy != (Object)null && (Object)(object)stateSpawn != (Object)null && (Object)(object)rootPhotonView != (Object)null && (Object)(object)val != (Object)null && (Object)(object)val2 != (Object)null; } private static EnemyNavMeshAgent EnsureRuntimeNavMeshAgent(Enemy enemy) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0084: 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) NavMeshHit val = default(NavMeshHit); if (NavMesh.SamplePosition(((Component)enemy).transform.position, ref val, 8f, -1)) { ((Component)enemy).transform.position = ((NavMeshHit)(ref val)).position; } NavMeshAgent val2 = ((Component)enemy).GetComponent() ?? ((Component)enemy).gameObject.AddComponent(); ConfigureNavMeshAgent(val2); EnemyNavMeshAgent val3 = ((Component)enemy).GetComponent() ?? ((Component)enemy).gameObject.AddComponent(); val3.updateRotation = false; ((Behaviour)val3).enabled = false; NavMeshHit val4 = default(NavMeshHit); if (!((Behaviour)val2).enabled && NavMesh.SamplePosition(((Component)enemy).transform.position, ref val4, 6f, -1)) { ((Behaviour)val2).enabled = true; val2.Warp(((NavMeshHit)(ref val4)).position); } return val3; } private static void ConfigureNavMeshAgent(NavMeshAgent navMeshAgent) { navMeshAgent.speed = 6.5f; navMeshAgent.acceleration = 60f; navMeshAgent.angularSpeed = 240f; navMeshAgent.stoppingDistance = 1.15f; navMeshAgent.radius = 0.44f; navMeshAgent.height = 2.45f; navMeshAgent.autoTraverseOffMeshLink = true; navMeshAgent.obstacleAvoidanceType = (ObstacleAvoidanceType)4; } private static void ConfigureEnemyHealth(Enemy enemy, PhotonView enemyPhotonView, EnemyHealth health, EmpressSwordsmachineVisual visual) { RepoEnemyAccess.SetEnemyHealthEnemy(health, enemy); RepoEnemyAccess.SetEnemyHealthPhotonView(health, enemyPhotonView); RepoEnemyAccess.SetEnemyHealthMeshParent(health, visual.VisualRootTransform); RepoEnemyAccess.SetEnemyHealthMaxHealth(health, 240); RepoEnemyAccess.SetEnemyHealthCurrent(health, 240); RepoEnemyAccess.SetEnemyHealthDeathFreezeTime(health, 0.08f); RepoEnemyAccess.SetEnemyHealthImpactHurt(health, value: true); RepoEnemyAccess.SetEnemyHealthImpactLightDamage(health, 4); RepoEnemyAccess.SetEnemyHealthImpactMediumDamage(health, 10); RepoEnemyAccess.SetEnemyHealthImpactHeavyDamage(health, 18); RepoEnemyAccess.SetEnemyHealthObjectHurt(health, value: true); RepoEnemyAccess.SetEnemyHealthObjectHurtMultiplier(health, 1f); RepoEnemyAccess.SetEnemyHealthObjectHurtStun(health, value: true); RepoEnemyAccess.SetEnemyHealthObjectHurtStunTime(health, 1.25f); RepoEnemyAccess.SetEnemyHealthSpawnValuable(health, value: true); RepoEnemyAccess.SetEnemyHealthSpawnValuableMax(health, 2); } private static int ResolveLayer(string layerName) { int num = LayerMask.NameToLayer(layerName); return (num >= 0) ? num : 0; } private static void SetHideFlagsRecursively(Transform root, HideFlags hideFlags) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) ((Object)((Component)root).gameObject).hideFlags = hideFlags; foreach (Transform item in root) { Transform root2 = item; SetHideFlagsRecursively(root2, hideFlags); } } private static void SetLayerRecursively(Transform root, int layer) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown ((Component)root).gameObject.layer = layer; foreach (Transform item in root) { Transform root2 = item; SetLayerRecursively(root2, layer); } } private static void TrySetTagRecursively(Transform root, string tag) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown TrySetTag(((Component)root).gameObject, tag); foreach (Transform item in root) { Transform root2 = item; TrySetTagRecursively(root2, tag); } } private static void TrySetTag(GameObject gameObject, string tag) { try { gameObject.tag = tag; } catch (UnityException) { } } } internal sealed class EmpressSwordsmachineVisual : MonoBehaviour { private const float VisualScale = 0.86f; private Transform _visualRoot = null; private Transform _hips = null; private Transform _torsoPivot = null; private Transform _headPivot = null; private Transform _leftArmPivot = null; private Transform _rightArmPivot = null; private Transform _leftLegPivot = null; private Transform _rightLegPivot = null; private Transform _swordPivot = null; private Material _bodyMaterial = null; private Material _trimMaterial = null; private Material _eyeMaterial = null; private Material _swordMaterial = null; private float _stepCycle; private float _heatLevel; private static readonly int EmissionColorId = Shader.PropertyToID("_EmissionColor"); internal bool Ready { get; private set; } internal Transform HeadTransform => _headPivot; internal Transform CoreTransform => _torsoPivot; internal Transform VisualRootTransform => _visualRoot; internal void Build() { //IL_0033: 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_0067: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_009b: 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_00cf: 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_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //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_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_0219: 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_025a: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Unknown result type (might be due to invalid IL or missing references) //IL_029b: Unknown result type (might be due to invalid IL or missing references) //IL_02c5: Unknown result type (might be due to invalid IL or missing references) //IL_02d9: Unknown result type (might be due to invalid IL or missing references) //IL_0306: Unknown result type (might be due to invalid IL or missing references) //IL_031a: Unknown result type (might be due to invalid IL or missing references) //IL_0347: Unknown result type (might be due to invalid IL or missing references) //IL_035b: Unknown result type (might be due to invalid IL or missing references) //IL_0388: Unknown result type (might be due to invalid IL or missing references) //IL_03c6: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Unknown result type (might be due to invalid IL or missing references) //IL_0446: Unknown result type (might be due to invalid IL or missing references) if (!Ready) { int layer = ResolveLayer("Enemy"); Shader shader = ResolveShader(); _bodyMaterial = CreateMaterial(shader, new Color(0.48f, 0.49f, 0.52f), new Color(0.02f, 0.02f, 0.02f)); _trimMaterial = CreateMaterial(shader, new Color(0.15f, 0.16f, 0.18f), new Color(0f, 0f, 0f)); _eyeMaterial = CreateMaterial(shader, new Color(1f, 0.68f, 0.14f), new Color(0.7f, 0.28f, 0.02f)); _swordMaterial = CreateMaterial(shader, new Color(0.76f, 0.79f, 0.86f), new Color(0.38f, 0.14f, 0.02f)); _visualRoot = new GameObject("EmpressSwordsmachineVisualRoot").transform; _visualRoot.SetParent(((Component)this).transform, false); _visualRoot.localPosition = Vector3.zero; _visualRoot.localRotation = Quaternion.identity; _visualRoot.localScale = Vector3.one * 0.86f; ((Component)_visualRoot).gameObject.layer = layer; _hips = CreatePivot(_visualRoot, "Hips", new Vector3(0f, 0.92f, 0f)); CreatePart(_hips, "Pelvis", (PrimitiveType)3, new Vector3(0f, 0.06f, 0f), new Vector3(0.84f, 0.32f, 0.44f), _trimMaterial, layer); _torsoPivot = CreatePivot(_hips, "TorsoPivot", new Vector3(0f, 0.24f, 0f)); CreatePart(_torsoPivot, "Torso", (PrimitiveType)3, new Vector3(0f, 0.58f, 0f), new Vector3(0.94f, 1.12f, 0.58f), _bodyMaterial, layer); CreatePart(_torsoPivot, "ChestPlate", (PrimitiveType)3, new Vector3(0f, 0.78f, 0.14f), new Vector3(0.7f, 0.42f, 0.1f), _trimMaterial, layer); _headPivot = CreatePivot(_torsoPivot, "HeadPivot", new Vector3(0f, 1.08f, 0.04f)); CreatePart(_headPivot, "Head", (PrimitiveType)3, new Vector3(0f, 0.22f, 0f), new Vector3(0.56f, 0.54f, 0.54f), _bodyMaterial, layer); CreatePart(_headPivot, "Visor", (PrimitiveType)3, new Vector3(0f, 0.2f, 0.28f), new Vector3(0.34f, 0.14f, 0.08f), _eyeMaterial, layer); CreatePart(_headPivot, "Crest", (PrimitiveType)3, new Vector3(0f, 0.47f, -0.02f), new Vector3(0.18f, 0.18f, 0.42f), _trimMaterial, layer); _leftArmPivot = CreatePivot(_torsoPivot, "LeftArmPivot", new Vector3(-0.56f, 0.86f, 0f)); CreateArm(_leftArmPivot, "Left", withSword: false, layer); _rightArmPivot = CreatePivot(_torsoPivot, "RightArmPivot", new Vector3(0.56f, 0.86f, 0f)); _swordPivot = CreateArm(_rightArmPivot, "Right", withSword: true, layer); _leftLegPivot = CreatePivot(_hips, "LeftLegPivot", new Vector3(-0.22f, -0.02f, 0f)); CreateLeg(_leftLegPivot, "Left", layer); _rightLegPivot = CreatePivot(_hips, "RightLegPivot", new Vector3(0.22f, -0.02f, 0f)); CreateLeg(_rightLegPivot, "Right", layer); SetLayerRecursively(_visualRoot, layer); Ready = true; } } internal void UpdatePose(EmpressSwordsmachineState state, Vector3 localVelocity, Transform? lookTarget, float attackCharge) { //IL_0016: 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_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_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_0463: Unknown result type (might be due to invalid IL or missing references) //IL_0474: Unknown result type (might be due to invalid IL or missing references) //IL_048b: Unknown result type (might be due to invalid IL or missing references) //IL_0499: Unknown result type (might be due to invalid IL or missing references) //IL_04a9: Unknown result type (might be due to invalid IL or missing references) //IL_04c0: Unknown result type (might be due to invalid IL or missing references) //IL_04ce: Unknown result type (might be due to invalid IL or missing references) //IL_04de: Unknown result type (might be due to invalid IL or missing references) //IL_04f5: Unknown result type (might be due to invalid IL or missing references) //IL_0503: Unknown result type (might be due to invalid IL or missing references) //IL_0513: Unknown result type (might be due to invalid IL or missing references) //IL_052a: Unknown result type (might be due to invalid IL or missing references) //IL_0538: Unknown result type (might be due to invalid IL or missing references) //IL_0548: Unknown result type (might be due to invalid IL or missing references) //IL_055f: Unknown result type (might be due to invalid IL or missing references) //IL_0570: Unknown result type (might be due to invalid IL or missing references) //IL_0580: Unknown result type (might be due to invalid IL or missing references) //IL_0597: Unknown result type (might be due to invalid IL or missing references) //IL_05a8: Unknown result type (might be due to invalid IL or missing references) //IL_05b8: Unknown result type (might be due to invalid IL or missing references) //IL_05cf: Unknown result type (might be due to invalid IL or missing references) //IL_05e0: Unknown result type (might be due to invalid IL or missing references) //IL_05f0: Unknown result type (might be due to invalid IL or missing references) //IL_062e: Unknown result type (might be due to invalid IL or missing references) //IL_0648: Unknown result type (might be due to invalid IL or missing references) //IL_0668: Unknown result type (might be due to invalid IL or missing references) //IL_0682: Unknown result type (might be due to invalid IL or missing references) //IL_03c2: Unknown result type (might be due to invalid IL or missing references) //IL_03c7: Unknown result type (might be due to invalid IL or missing references) //IL_03cc: Unknown result type (might be due to invalid IL or missing references) //IL_03ce: Unknown result type (might be due to invalid IL or missing references) //IL_03d5: Unknown result type (might be due to invalid IL or missing references) //IL_03e9: Unknown result type (might be due to invalid IL or missing references) //IL_03f5: Unknown result type (might be due to invalid IL or missing references) //IL_03fc: Unknown result type (might be due to invalid IL or missing references) //IL_0403: Unknown result type (might be due to invalid IL or missing references) //IL_0408: Unknown result type (might be due to invalid IL or missing references) if (Ready) { Vector2 val = new Vector2(localVelocity.x, localVelocity.z); float magnitude = ((Vector2)(ref val)).magnitude; float num = Mathf.Clamp01(magnitude / 1.8f); _stepCycle += Time.deltaTime * Mathf.Lerp(0.8f, 2.6f, num); float num2 = Mathf.Sin(_stepCycle) * 11f * num; float num3 = Mathf.Sin(_stepCycle + MathF.PI) * 11f * num; float num4 = Mathf.Sin(_stepCycle * 2f) * 0.016f * num; float num5 = Mathf.Clamp((0f - localVelocity.z) * 3f, -6f, 6f); float num6 = Mathf.Clamp((0f - localVelocity.x) * 4f, -8f, 8f); float num7 = 0f; float num8 = 0f; float num9 = num2 * 0.4f; float num10 = -30f + num3 * 0.2f; float num11 = 10f; float num12 = -8f; float num13 = num3; float num14 = num2; float num15 = 0f; float num16 = 0.12f; switch (state) { case EmpressSwordsmachineState.SpawnIntro: num5 -= 18f * (1f - attackCharge); num7 += 6f; num10 = -70f + attackCharge * 18f; num11 = 14f; num15 = -10f; num16 = 0.35f + attackCharge * 0.15f; break; case EmpressSwordsmachineState.Hunt: num5 += 4f; num10 = -32f; num11 = 12f; num15 = -6f; num16 = 0.22f; break; case EmpressSwordsmachineState.Windup: num5 -= 14f; num7 -= 4f; num9 = 18f; num12 = -16f; num10 = -142f; num11 = 22f; num13 = -16f; num14 = 10f; num15 = -16f; num16 = 0.6f + attackCharge * 0.4f; break; case EmpressSwordsmachineState.Dash: num5 = 14f; num6 = Mathf.Clamp(num6, -6f, 6f); num7 -= 2f; num9 = -18f; num12 = -10f; num10 = -128f; num11 = 18f; num13 = -14f; num14 = 16f; num15 = -14f; num16 = 0.9f; break; case EmpressSwordsmachineState.Slam: num5 = 22f; num7 = 12f; num9 = 18f; num12 = -16f; num10 = 18f; num11 = 10f; num13 = 12f; num14 = -18f; num15 = 108f; num16 = 1f; break; case EmpressSwordsmachineState.Recover: num5 -= 10f; num7 += 4f; num9 = 22f; num10 = 24f; num11 = -4f; num15 = 28f; num16 = 0.32f; break; case EmpressSwordsmachineState.Reposition: num5 += 2f; num10 = -26f; num11 = 12f; num15 = -8f; num16 = 0.18f; break; case EmpressSwordsmachineState.Stunned: num5 = 34f; num6 = Mathf.Sin(Time.time * 10f) * 4f; num7 = 22f; num9 = 72f; num12 = -22f; num10 = 94f; num11 = 8f; num13 = -16f; num14 = 14f; num15 = 32f; num16 = 0.05f; break; } if ((Object)(object)lookTarget != (Object)null) { Vector3 val2 = _torsoPivot.InverseTransformPoint(lookTarget.position); float num17 = Mathf.Atan2(val2.x, val2.z) * 57.29578f; float y = val2.y; val = new Vector2(val2.x, val2.z); float num18 = (0f - Mathf.Atan2(y, Mathf.Max(0.001f, ((Vector2)(ref val)).magnitude))) * 57.29578f; num8 += Mathf.Clamp(num17, -42f, 42f); num7 += Mathf.Clamp(num18, -22f, 18f); } _visualRoot.localPosition = new Vector3(0f, num4, 0f); _hips.localRotation = Quaternion.identity; _torsoPivot.localRotation = Quaternion.Slerp(_torsoPivot.localRotation, Quaternion.Euler(num5, 0f, num6), Time.deltaTime * 12f); _headPivot.localRotation = Quaternion.Slerp(_headPivot.localRotation, Quaternion.Euler(num7, num8, 0f), Time.deltaTime * 15f); _leftArmPivot.localRotation = Quaternion.Slerp(_leftArmPivot.localRotation, Quaternion.Euler(num9, num12, 0f), Time.deltaTime * 14f); _rightArmPivot.localRotation = Quaternion.Slerp(_rightArmPivot.localRotation, Quaternion.Euler(num10, num11, 0f), Time.deltaTime * 14f); _leftLegPivot.localRotation = Quaternion.Slerp(_leftLegPivot.localRotation, Quaternion.Euler(num13, 0f, 0f), Time.deltaTime * 14f); _rightLegPivot.localRotation = Quaternion.Slerp(_rightLegPivot.localRotation, Quaternion.Euler(num14, 0f, 0f), Time.deltaTime * 14f); _swordPivot.localRotation = Quaternion.Slerp(_swordPivot.localRotation, Quaternion.Euler(num15, 0f, 0f), Time.deltaTime * 18f); _heatLevel = Mathf.Lerp(_heatLevel, num16, Time.deltaTime * 8f); SetEmission(_eyeMaterial, new Color(0.9f, 0.36f, 0.08f) * Mathf.Lerp(0.15f, 1.8f, _heatLevel)); SetEmission(_swordMaterial, new Color(1f, 0.4f, 0.08f) * Mathf.Lerp(0.1f, 2.3f, _heatLevel)); } } internal void TriggerGroundSlam(Vector3 worldPosition, float radius) { //IL_0016: 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_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Expected O, but got Unknown //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) if (Ready) { Vector3 position = worldPosition; RaycastHit val = default(RaycastHit); if (Physics.Raycast(worldPosition + Vector3.up * 3f, Vector3.down, ref val, 8f, LayerMask.GetMask(new string[1] { "Default" }), (QueryTriggerInteraction)1)) { position = ((RaycastHit)(ref val)).point + Vector3.up * 0.03f; } GameObject val2 = new GameObject("EmpressSwordsmachineGroundSlam"); val2.transform.position = position; EmpressSwordsmachineGroundSlamEffect empressSwordsmachineGroundSlamEffect = val2.AddComponent(); empressSwordsmachineGroundSlamEffect.Initialize(radius); } } private Transform CreateArm(Transform parent, string side, bool withSword, int layer) { //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_005f: 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_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_017d: 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_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) CreatePart(parent, side + "UpperArm", (PrimitiveType)1, new Vector3(0f, -0.36f, 0f), new Vector3(0.22f, 0.48f, 0.22f), _bodyMaterial, layer); Transform parent2 = CreatePivot(parent, side + "ForearmPivot", new Vector3(0f, -0.72f, 0f)); CreatePart(parent2, side + "Forearm", (PrimitiveType)1, new Vector3(0f, -0.28f, 0f), new Vector3(0.18f, 0.42f, 0.18f), _trimMaterial, layer); Transform val = CreatePivot(parent2, side + "HandPivot", new Vector3(0f, -0.56f, 0f)); CreatePart(val, side + "Hand", (PrimitiveType)3, new Vector3(0f, -0.05f, 0f), new Vector3(0.18f, 0.18f, 0.18f), _trimMaterial, layer); if (!withSword) { return val; } Transform val2 = CreatePivot(val, side + "SwordPivot", new Vector3(0f, -0.02f, 0.1f)); CreatePart(val2, side + "Guard", (PrimitiveType)3, new Vector3(0f, 0f, 0.1f), new Vector3(0.42f, 0.08f, 0.12f), _eyeMaterial, layer); CreatePart(val2, side + "Handle", (PrimitiveType)3, new Vector3(0f, 0f, 0.18f), new Vector3(0.08f, 0.08f, 0.26f), _trimMaterial, layer); CreatePart(val2, side + "Blade", (PrimitiveType)3, new Vector3(0f, 0f, 1.16f), new Vector3(0.08f, 0.16f, 2f), _swordMaterial, layer); return val2; } private void CreateLeg(Transform parent, string side, int layer) { //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_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0099: 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_00db: Unknown result type (might be due to invalid IL or missing references) CreatePart(parent, side + "Thigh", (PrimitiveType)1, new Vector3(0f, -0.42f, 0f), new Vector3(0.24f, 0.62f, 0.24f), _bodyMaterial, layer); Transform parent2 = CreatePivot(parent, side + "CalfPivot", new Vector3(0f, -0.82f, 0f)); CreatePart(parent2, side + "Calf", (PrimitiveType)1, new Vector3(0f, -0.34f, 0f), new Vector3(0.2f, 0.54f, 0.2f), _trimMaterial, layer); CreatePart(parent2, side + "Foot", (PrimitiveType)3, new Vector3(0f, -0.72f, 0.16f), new Vector3(0.24f, 0.12f, 0.46f), _trimMaterial, layer); } private static Transform CreatePivot(Transform parent, string name, Vector3 localPosition) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject(name); val.transform.SetParent(parent, false); val.transform.localPosition = localPosition; val.transform.localRotation = Quaternion.identity; return val.transform; } private static Transform CreatePart(Transform parent, string name, PrimitiveType primitiveType, Vector3 localPosition, Vector3 localScale, Material material, int layer) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0031: 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) GameObject val = GameObject.CreatePrimitive(primitiveType); ((Object)val).name = name; val.transform.SetParent(parent, false); val.transform.localPosition = localPosition; val.transform.localRotation = Quaternion.identity; val.transform.localScale = localScale; val.layer = layer; Collider component = val.GetComponent(); if ((Object)(object)component != (Object)null) { Object.Destroy((Object)(object)component); } MeshRenderer component2 = val.GetComponent(); if ((Object)(object)component2 != (Object)null) { ((Renderer)component2).sharedMaterial = material; } return val.transform; } private static Shader ResolveShader() { return Shader.Find("Standard") ?? Shader.Find("Universal Render Pipeline/Lit") ?? Shader.Find("Legacy Shaders/Diffuse") ?? Shader.Find("Sprites/Default"); } private static Material CreateMaterial(Shader shader, Color color, Color emission) { //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_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown //IL_0054: Unknown result type (might be due to invalid IL or missing references) Material val = new Material(shader) { color = color }; if (val.HasProperty("_Glossiness")) { val.SetFloat("_Glossiness", 0.12f); } if (val.HasProperty(EmissionColorId)) { val.EnableKeyword("_EMISSION"); val.SetColor(EmissionColorId, emission); } return val; } private static void SetEmission(Material material, Color emission) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) if (material.HasProperty(EmissionColorId)) { material.EnableKeyword("_EMISSION"); material.SetColor(EmissionColorId, emission); } } private static int ResolveLayer(string layerName) { int num = LayerMask.NameToLayer(layerName); return (num >= 0) ? num : 0; } private static void SetLayerRecursively(Transform root, int layer) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown ((Component)root).gameObject.layer = layer; foreach (Transform item in root) { Transform root2 = item; SetLayerRecursively(root2, layer); } } } internal sealed class EmpressSwordsmachineGroundSlamEffect : MonoBehaviour { private Transform _pulseDisc = null; private Transform _ring = null; private Material _pulseMaterial = null; private Material _ringMaterial = null; private float _radius; private float _timer; private float _lifetime; private static readonly int EmissionColorId = Shader.PropertyToID("_EmissionColor"); internal void Initialize(float radius) { //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Expected O, but got Unknown //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_0136: 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) _radius = radius; _lifetime = 0.45f; Shader val = Shader.Find("Standard") ?? Shader.Find("Universal Render Pipeline/Lit") ?? Shader.Find("Legacy Shaders/Diffuse") ?? Shader.Find("Sprites/Default"); _pulseMaterial = new Material(val) { color = new Color(0.95f, 0.45f, 0.12f, 0.85f) }; _ringMaterial = new Material(val) { color = new Color(1f, 0.72f, 0.18f, 0.95f) }; if (_pulseMaterial.HasProperty(EmissionColorId)) { _pulseMaterial.EnableKeyword("_EMISSION"); _pulseMaterial.SetColor(EmissionColorId, new Color(1f, 0.42f, 0.08f) * 1.3f); } if (_ringMaterial.HasProperty(EmissionColorId)) { _ringMaterial.EnableKeyword("_EMISSION"); _ringMaterial.SetColor(EmissionColorId, new Color(1f, 0.65f, 0.12f) * 2f); } _pulseDisc = CreateDisc("PulseDisc", _pulseMaterial, 0.2f, 0.025f); _ring = CreateDisc("Ring", _ringMaterial, 0.12f, 0.015f); } private void Update() { //IL_0085: 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_00f4: 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_013b: 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_018d: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) _timer += Time.deltaTime; float num = Mathf.Clamp01(_timer / Mathf.Max(_lifetime, 0.0001f)); float num2 = 1f - Mathf.Pow(1f - num, 3f); float num3 = Mathf.Lerp(0.4f, _radius * 1.7f, num2); float num4 = Mathf.Lerp(0.25f, _radius * 2.3f, num2); _pulseDisc.localScale = new Vector3(num3, 0.025f, num3); _ring.localScale = new Vector3(num4, 0.015f, num4); Color color = default(Color); ((Color)(ref color))..ctor(0.95f, 0.45f, 0.12f, 0.75f * (1f - num)); Color color2 = default(Color); ((Color)(ref color2))..ctor(1f, 0.72f, 0.18f, 0.95f * (1f - num)); _pulseMaterial.color = color; _ringMaterial.color = color2; if (_pulseMaterial.HasProperty(EmissionColorId)) { _pulseMaterial.SetColor(EmissionColorId, new Color(1f, 0.42f, 0.08f) * Mathf.Lerp(1.3f, 0f, num)); } if (_ringMaterial.HasProperty(EmissionColorId)) { _ringMaterial.SetColor(EmissionColorId, new Color(1f, 0.65f, 0.12f) * Mathf.Lerp(2f, 0f, num)); } if (_timer >= _lifetime) { Object.Destroy((Object)(object)((Component)this).gameObject); } } private Transform CreateDisc(string name, Material material, float scale, float thickness) { //IL_0029: 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_004f: Unknown result type (might be due to invalid IL or missing references) GameObject val = GameObject.CreatePrimitive((PrimitiveType)2); ((Object)val).name = name; val.transform.SetParent(((Component)this).transform, false); val.transform.localPosition = Vector3.zero; val.transform.localRotation = Quaternion.identity; val.transform.localScale = new Vector3(scale, thickness, scale); Collider component = val.GetComponent(); if ((Object)(object)component != (Object)null) { Object.Destroy((Object)(object)component); } MeshRenderer component2 = val.GetComponent(); if ((Object)(object)component2 != (Object)null) { ((Renderer)component2).sharedMaterial = material; } return val.transform; } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("omniscye.empressultrakill", "Empress Swordsmachine", "1.0.0")] internal sealed class EmpressUltrakillPlugin : BaseUnityPlugin { private static readonly FieldInfo EnemySetupField = AccessTools.Field(typeof(EnemyContent), "_setup"); private static readonly FieldInfo SpawnObjectsField = AccessTools.Field(typeof(EnemyContent), "_spawnObjects"); internal const string PluginGuid = "omniscye.empressultrakill"; internal const string PluginName = "Empress Swordsmachine"; internal const string PluginVersion = "1.0.0"; internal const string TemplatePrefabName = "EmpressSwordsmachinePrefab"; internal const float EnemySoundVolume = 0.4f; private static Harmony? _harmony; private static bool _registered; internal static ManualLogSource Log { get; private set; } = null; internal static string PluginDirectory { get; private set; } = string.Empty; internal static string GetSoundPath(string fileName) { return Path.Combine(PluginDirectory, "Sounds", fileName); } private void Awake() { //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown Log = ((BaseUnityPlugin)this).Logger; PluginDirectory = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location) ?? string.Empty; ((Component)this).transform.parent = null; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); if (_harmony == null) { _harmony = new Harmony("omniscye.empressultrakill"); } PatchTemplateGuards(_harmony); RegisterEnemy(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Loaded Empress Swordsmachine v1.0.0"); } private void RegisterEnemy() { if (!_registered) { GameObject item = EmpressSwordsmachineTemplateBootstrap.CreateTemplate(((BaseUnityPlugin)this).Logger); RarityPreset val = ScriptableObject.CreateInstance(); ((Object)val).hideFlags = (HideFlags)61; ((Object)val).name = "Rarity - Empress Swordsmachine"; val.chance = 100f; EnemySetup val2 = ScriptableObject.CreateInstance(); ((Object)val2).hideFlags = (HideFlags)61; ((Object)val2).name = "Enemy - Empress Swordsmachine"; val2.spawnObjects = new List(); val2.levelsCompletedCondition = false; val2.levelsCompletedMin = 0; val2.levelsCompletedMax = 10; val2.rarityPreset = val; val2.runsPlayed = 0; EnemyContent val3 = ScriptableObject.CreateInstance(); ((Object)val3).hideFlags = (HideFlags)61; ((Object)val3).name = "EnemyContentEmpressSwordsmachine"; EnemySetupField.SetValue(val3, val2); SpawnObjectsField.SetValue(val3, new List { item }); Enemies.RegisterEnemy(val3); _registered = true; ((BaseUnityPlugin)this).Logger.LogInfo((object)"Registered Empress Swordsmachine through REPOLib."); } } private static void PatchTemplateGuards(Harmony harmony) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Expected O, but got Unknown //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Expected O, but got Unknown //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Expected O, but got Unknown //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Expected O, but got Unknown //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Expected O, but got Unknown //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Expected O, but got Unknown //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Expected O, but got Unknown //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Expected O, but got Unknown //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Expected O, but got Unknown harmony.Patch((MethodBase)AccessTools.Method(typeof(EnemyParent), "Awake", (Type[])null, (Type[])null), new HarmonyMethod(typeof(EmpressUltrakillPlugin), "SkipTemplateEnemyParentAwake", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); harmony.Patch((MethodBase)AccessTools.Method(typeof(EnemyParent), "Update", (Type[])null, (Type[])null), new HarmonyMethod(typeof(EmpressUltrakillPlugin), "SkipTemplateEnemyParentUpdate", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); harmony.Patch((MethodBase)AccessTools.Method(typeof(Enemy), "Awake", (Type[])null, (Type[])null), new HarmonyMethod(typeof(EmpressUltrakillPlugin), "SkipTemplateEnemyAwake", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); harmony.Patch((MethodBase)AccessTools.Method(typeof(Enemy), "Start", (Type[])null, (Type[])null), new HarmonyMethod(typeof(EmpressUltrakillPlugin), "SkipTemplateEnemyStart", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); harmony.Patch((MethodBase)AccessTools.Method(typeof(Enemy), "Update", (Type[])null, (Type[])null), new HarmonyMethod(typeof(EmpressUltrakillPlugin), "SkipTemplateEnemyUpdate", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); harmony.Patch((MethodBase)AccessTools.Method(typeof(EnemyNavMeshAgent), "Awake", (Type[])null, (Type[])null), new HarmonyMethod(typeof(EmpressUltrakillPlugin), "SkipTemplateEnemyNavMeshAgentAwake", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); harmony.Patch((MethodBase)AccessTools.Method(typeof(EnemyNavMeshAgent), "OnEnable", (Type[])null, (Type[])null), new HarmonyMethod(typeof(EmpressUltrakillPlugin), "SkipTemplateEnemyNavMeshAgentOnEnable", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); harmony.Patch((MethodBase)AccessTools.Method(typeof(EnemyNavMeshAgent), "Update", (Type[])null, (Type[])null), new HarmonyMethod(typeof(EmpressUltrakillPlugin), "SkipTemplateEnemyNavMeshAgentUpdate", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); harmony.Patch((MethodBase)AccessTools.Method(typeof(EnemyStateSpawn), "Update", (Type[])null, (Type[])null), new HarmonyMethod(typeof(EmpressUltrakillPlugin), "SkipTemplateEnemyStateSpawnUpdate", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); harmony.Patch((MethodBase)AccessTools.Method(typeof(EnemyStateStunned), "Update", (Type[])null, (Type[])null), new HarmonyMethod(typeof(EmpressUltrakillPlugin), "SkipTemplateEnemyStateStunnedUpdate", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); } private static bool SkipTemplateEnemyParentAwake(EnemyParent __instance) { return !EmpressSwordsmachineTemplateBootstrap.IsTemplateInstance(((Component)__instance).gameObject); } private static bool SkipTemplateEnemyParentUpdate(EnemyParent __instance) { return !EmpressSwordsmachineTemplateBootstrap.IsTemplateInstance(((Component)__instance).gameObject); } private static bool SkipTemplateEnemyAwake(Enemy __instance) { return !EmpressSwordsmachineTemplateBootstrap.IsTemplateInstance(((Component)__instance).gameObject); } private static bool SkipTemplateEnemyStart(Enemy __instance) { return !EmpressSwordsmachineTemplateBootstrap.IsTemplateInstance(((Component)__instance).gameObject); } private static bool SkipTemplateEnemyUpdate(Enemy __instance) { return !EmpressSwordsmachineTemplateBootstrap.IsTemplateInstance(((Component)__instance).gameObject); } private static bool SkipTemplateEnemyNavMeshAgentAwake(EnemyNavMeshAgent __instance) { return !EmpressSwordsmachineTemplateBootstrap.IsTemplateInstance(((Component)__instance).gameObject); } private static bool SkipTemplateEnemyNavMeshAgentOnEnable(EnemyNavMeshAgent __instance) { return !EmpressSwordsmachineTemplateBootstrap.IsTemplateInstance(((Component)__instance).gameObject); } private static bool SkipTemplateEnemyNavMeshAgentUpdate(EnemyNavMeshAgent __instance) { return !EmpressSwordsmachineTemplateBootstrap.IsTemplateInstance(((Component)__instance).gameObject); } private static bool SkipTemplateEnemyStateSpawnUpdate(EnemyStateSpawn __instance) { return !EmpressSwordsmachineTemplateBootstrap.IsTemplateInstance(((Component)__instance).gameObject); } private static bool SkipTemplateEnemyStateStunnedUpdate(EnemyStateStunned __instance) { return !EmpressSwordsmachineTemplateBootstrap.IsTemplateInstance(((Component)__instance).gameObject); } } internal static class RepoEnemyAccess { private static readonly FieldRef EnemyParentEnemyRef = AccessTools.FieldRefAccess("Enemy"); private static readonly FieldRef EnemyParentSetupDoneRef = AccessTools.FieldRefAccess("SetupDone"); private static readonly FieldRef EnemyParentSpawnedRef = AccessTools.FieldRefAccess("Spawned"); private static readonly FieldRef EnemyEnemyParentRef = AccessTools.FieldRefAccess("EnemyParent"); private static readonly FieldRef EnemyHasNavMeshAgentRef = AccessTools.FieldRefAccess("HasNavMeshAgent"); private static readonly FieldRef EnemyHasHealthRef = AccessTools.FieldRefAccess("HasHealth"); private static readonly FieldRef EnemyHasStateSpawnRef = AccessTools.FieldRefAccess("HasStateSpawn"); private static readonly FieldRef EnemyHasStateStunnedRef = AccessTools.FieldRefAccess("HasStateStunned"); private static readonly FieldRef EnemyHealthRef = AccessTools.FieldRefAccess("Health"); private static readonly FieldRef EnemyMasterClientRef = AccessTools.FieldRefAccess("MasterClient"); private static readonly FieldRef EnemyNavMeshAgentRef = AccessTools.FieldRefAccess("NavMeshAgent"); private static readonly FieldRef EnemyPhotonViewRef = AccessTools.FieldRefAccess("PhotonView"); private static readonly FieldRef EnemyStateSpawnRef = AccessTools.FieldRefAccess("StateSpawn"); private static readonly FieldRef EnemyStateStunnedRef = AccessTools.FieldRefAccess("StateStunned"); private static readonly FieldRef EnemyTargetPlayerAvatarRef = AccessTools.FieldRefAccess("TargetPlayerAvatar"); private static readonly FieldRef EnemyTargetPlayerViewIdRef = AccessTools.FieldRefAccess("TargetPlayerViewID"); private static readonly FieldRef EnemyVisionMaskRef = AccessTools.FieldRefAccess("VisionMask"); private static readonly FieldRef EnemyNavMeshAgentAgentRef = AccessTools.FieldRefAccess("Agent"); private static readonly FieldRef EnemyStateSpawnEnemyRef = AccessTools.FieldRefAccess("Enemy"); private static readonly FieldRef EnemyStateStunnedEnemyRef = AccessTools.FieldRefAccess("enemy"); private static readonly FieldRef EnemyHealthPhotonViewRef = AccessTools.FieldRefAccess("photonView"); private static readonly FieldRef EnemyHealthEnemyRef = AccessTools.FieldRefAccess("enemy"); private static readonly FieldRef EnemyHealthHealthRef = AccessTools.FieldRefAccess("health"); private static readonly FieldRef EnemyHealthHealthCurrentRef = AccessTools.FieldRefAccess("healthCurrent"); private static readonly FieldRef EnemyHealthDeadImpulseRef = AccessTools.FieldRefAccess("deadImpulse"); private static readonly FieldRef EnemyHealthDeadRef = AccessTools.FieldRefAccess("dead"); private static readonly FieldRef EnemyHealthDeathFreezeTimeRef = AccessTools.FieldRefAccess("deathFreezeTime"); private static readonly FieldRef EnemyHealthImpactHurtRef = AccessTools.FieldRefAccess("impactHurt"); private static readonly FieldRef EnemyHealthImpactLightDamageRef = AccessTools.FieldRefAccess("impactLightDamage"); private static readonly FieldRef EnemyHealthImpactMediumDamageRef = AccessTools.FieldRefAccess("impactMediumDamage"); private static readonly FieldRef EnemyHealthImpactHeavyDamageRef = AccessTools.FieldRefAccess("impactHeavyDamage"); private static readonly FieldRef EnemyHealthObjectHurtRef = AccessTools.FieldRefAccess("objectHurt"); private static readonly FieldRef EnemyHealthObjectHurtMultiplierRef = AccessTools.FieldRefAccess("objectHurtMultiplier"); private static readonly FieldRef EnemyHealthObjectHurtStunRef = AccessTools.FieldRefAccess("objectHurtStun"); private static readonly FieldRef EnemyHealthObjectHurtStunTimeRef = AccessTools.FieldRefAccess("objectHurtStunTime"); private static readonly FieldRef EnemyHealthMeshParentRef = AccessTools.FieldRefAccess("meshParent"); private static readonly FieldRef EnemyHealthSpawnValuableRef = AccessTools.FieldRefAccess("spawnValuable"); private static readonly FieldRef EnemyHealthSpawnValuableMaxRef = AccessTools.FieldRefAccess("spawnValuableMax"); private static readonly FieldRef EnemyHealthOnHurtRef = AccessTools.FieldRefAccess("onHurt"); private static readonly FieldRef EnemyHealthOnDeathStartRef = AccessTools.FieldRefAccess("onDeathStart"); private static readonly FieldRef EnemyHealthOnDeathRef = AccessTools.FieldRefAccess("onDeath"); private static readonly FieldRef EnemyHealthOnObjectHurtRef = AccessTools.FieldRefAccess("onObjectHurt"); private static readonly FieldRef PlayerAvatarDisabledRef = AccessTools.FieldRefAccess("isDisabled"); private static readonly FieldRef PlayerAvatarDeadSetRef = AccessTools.FieldRefAccess("deadSet"); internal static void SetSetupDone(EnemyParent enemyParent, bool value) { EnemyParentSetupDoneRef.Invoke(enemyParent) = value; } internal static bool GetSpawned(EnemyParent enemyParent) { return EnemyParentSpawnedRef.Invoke(enemyParent); } internal static void SetEnemyParentEnemy(EnemyParent enemyParent, Enemy enemy) { EnemyParentEnemyRef.Invoke(enemyParent) = enemy; } internal static void SetEnemyParent(Enemy enemy, EnemyParent enemyParent) { EnemyEnemyParentRef.Invoke(enemy) = enemyParent; } internal static void SetPhotonView(Enemy enemy, PhotonView photonView) { EnemyPhotonViewRef.Invoke(enemy) = photonView; } internal static PhotonView? GetPhotonView(Enemy enemy) { return EnemyPhotonViewRef.Invoke(enemy); } internal static void SetNavMeshAgent(Enemy enemy, EnemyNavMeshAgent navMeshAgent) { EnemyNavMeshAgentRef.Invoke(enemy) = navMeshAgent; } internal static void SetHasNavMeshAgent(Enemy enemy, bool value) { EnemyHasNavMeshAgentRef.Invoke(enemy) = value; } internal static void SetHealth(Enemy enemy, EnemyHealth health) { EnemyHealthRef.Invoke(enemy) = health; } internal static EnemyHealth? GetHealth(Enemy enemy) { return EnemyHealthRef.Invoke(enemy); } internal static void SetHasHealth(Enemy enemy, bool value) { EnemyHasHealthRef.Invoke(enemy) = value; } internal static void SetStateSpawn(Enemy enemy, EnemyStateSpawn stateSpawn) { EnemyStateSpawnRef.Invoke(enemy) = stateSpawn; } internal static void SetHasStateSpawn(Enemy enemy, bool value) { EnemyHasStateSpawnRef.Invoke(enemy) = value; } internal static EnemyStateStunned? GetStateStunned(Enemy enemy) { return EnemyStateStunnedRef.Invoke(enemy); } internal static void SetStateStunned(Enemy enemy, EnemyStateStunned stateStunned) { EnemyStateStunnedRef.Invoke(enemy) = stateStunned; } internal static void SetHasStateStunned(Enemy enemy, bool value) { EnemyHasStateStunnedRef.Invoke(enemy) = value; } internal static void SetVisionMask(Enemy enemy, LayerMask visionMask) { //IL_000b: 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) EnemyVisionMaskRef.Invoke(enemy) = visionMask; } internal static void SetTargetPlayerAvatar(Enemy enemy, PlayerAvatar? player) { EnemyTargetPlayerAvatarRef.Invoke(enemy) = player; } internal static void SetTargetPlayerViewId(Enemy enemy, int viewId) { EnemyTargetPlayerViewIdRef.Invoke(enemy) = viewId; } internal static void SetTargetPlayer(Enemy enemy, PlayerAvatar? player, int viewId) { SetTargetPlayerAvatar(enemy, player); SetTargetPlayerViewId(enemy, viewId); } internal static bool GetMasterClient(Enemy enemy) { return EnemyMasterClientRef.Invoke(enemy); } internal static NavMeshAgent GetAgent(EnemyNavMeshAgent enemyNavMeshAgent) { return EnemyNavMeshAgentAgentRef.Invoke(enemyNavMeshAgent); } internal static void SetStateSpawnEnemy(EnemyStateSpawn stateSpawn, Enemy enemy) { EnemyStateSpawnEnemyRef.Invoke(stateSpawn) = enemy; } internal static void SetStateStunnedEnemy(EnemyStateStunned stateStunned, Enemy enemy) { EnemyStateStunnedEnemyRef.Invoke(stateStunned) = enemy; } internal static void SetEnemyHealthPhotonView(EnemyHealth enemyHealth, PhotonView photonView) { EnemyHealthPhotonViewRef.Invoke(enemyHealth) = photonView; } internal static void SetEnemyHealthEnemy(EnemyHealth enemyHealth, Enemy enemy) { EnemyHealthEnemyRef.Invoke(enemyHealth) = enemy; } internal static void SetEnemyHealthMaxHealth(EnemyHealth enemyHealth, int value) { EnemyHealthHealthRef.Invoke(enemyHealth) = value; } internal static void SetEnemyHealthCurrent(EnemyHealth enemyHealth, int value) { EnemyHealthHealthCurrentRef.Invoke(enemyHealth) = value; } internal static bool GetEnemyHealthDeadImpulse(EnemyHealth enemyHealth) { return EnemyHealthDeadImpulseRef.Invoke(enemyHealth); } internal static bool GetEnemyHealthDead(EnemyHealth enemyHealth) { return EnemyHealthDeadRef.Invoke(enemyHealth); } internal static void SetEnemyHealthDeathFreezeTime(EnemyHealth enemyHealth, float value) { EnemyHealthDeathFreezeTimeRef.Invoke(enemyHealth) = value; } internal static void SetEnemyHealthImpactHurt(EnemyHealth enemyHealth, bool value) { EnemyHealthImpactHurtRef.Invoke(enemyHealth) = value; } internal static void SetEnemyHealthImpactLightDamage(EnemyHealth enemyHealth, int value) { EnemyHealthImpactLightDamageRef.Invoke(enemyHealth) = value; } internal static void SetEnemyHealthImpactMediumDamage(EnemyHealth enemyHealth, int value) { EnemyHealthImpactMediumDamageRef.Invoke(enemyHealth) = value; } internal static void SetEnemyHealthImpactHeavyDamage(EnemyHealth enemyHealth, int value) { EnemyHealthImpactHeavyDamageRef.Invoke(enemyHealth) = value; } internal static void SetEnemyHealthObjectHurt(EnemyHealth enemyHealth, bool value) { EnemyHealthObjectHurtRef.Invoke(enemyHealth) = value; } internal static void SetEnemyHealthObjectHurtMultiplier(EnemyHealth enemyHealth, float value) { EnemyHealthObjectHurtMultiplierRef.Invoke(enemyHealth) = value; } internal static void SetEnemyHealthObjectHurtStun(EnemyHealth enemyHealth, bool value) { EnemyHealthObjectHurtStunRef.Invoke(enemyHealth) = value; } internal static void SetEnemyHealthObjectHurtStunTime(EnemyHealth enemyHealth, float value) { EnemyHealthObjectHurtStunTimeRef.Invoke(enemyHealth) = value; } internal static void SetEnemyHealthMeshParent(EnemyHealth enemyHealth, Transform meshParent) { EnemyHealthMeshParentRef.Invoke(enemyHealth) = meshParent; } internal static void SetEnemyHealthSpawnValuable(EnemyHealth enemyHealth, bool value) { EnemyHealthSpawnValuableRef.Invoke(enemyHealth) = value; } internal static void SetEnemyHealthSpawnValuableMax(EnemyHealth enemyHealth, int value) { EnemyHealthSpawnValuableMaxRef.Invoke(enemyHealth) = value; } internal static UnityEvent EnsureEnemyHealthOnHurt(EnemyHealth enemyHealth) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) UnityEvent val = (UnityEvent)(((object)EnemyHealthOnHurtRef.Invoke(enemyHealth)) ?? ((object)new UnityEvent())); EnemyHealthOnHurtRef.Invoke(enemyHealth) = val; return val; } internal static UnityEvent GetEnemyHealthOnDeathStart(EnemyHealth enemyHealth) { return EnemyHealthOnDeathStartRef.Invoke(enemyHealth); } internal static UnityEvent GetEnemyHealthOnDeath(EnemyHealth enemyHealth) { return EnemyHealthOnDeathRef.Invoke(enemyHealth); } internal static UnityEvent EnsureEnemyHealthOnDeathStart(EnemyHealth enemyHealth) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) UnityEvent val = (UnityEvent)(((object)EnemyHealthOnDeathStartRef.Invoke(enemyHealth)) ?? ((object)new UnityEvent())); EnemyHealthOnDeathStartRef.Invoke(enemyHealth) = val; return val; } internal static UnityEvent EnsureEnemyHealthOnDeath(EnemyHealth enemyHealth) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) UnityEvent val = (UnityEvent)(((object)EnemyHealthOnDeathRef.Invoke(enemyHealth)) ?? ((object)new UnityEvent())); EnemyHealthOnDeathRef.Invoke(enemyHealth) = val; return val; } internal static UnityEvent EnsureEnemyHealthOnObjectHurt(EnemyHealth enemyHealth) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) UnityEvent val = (UnityEvent)(((object)EnemyHealthOnObjectHurtRef.Invoke(enemyHealth)) ?? ((object)new UnityEvent())); EnemyHealthOnObjectHurtRef.Invoke(enemyHealth) = val; return val; } internal static bool IsDisabled(PlayerAvatar player) { return PlayerAvatarDisabledRef.Invoke(player); } internal static bool IsDeadSet(PlayerAvatar player) { return PlayerAvatarDeadSetRef.Invoke(player); } } }