using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using GlobalEnums; using HutongGames.PlayMaker; using InControl; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Knight")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+47fc3ec7399a3c8aa2c3b10f258cb5c745bafce8")] [assembly: AssemblyProduct("Knight")] [assembly: AssemblyTitle("Knight")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [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 Knight { public class HeroAnimationController : MonoBehaviour { public tk2dSpriteAnimator animator; private HeroController heroCtrl; private HeroControllerStates cState; private PlayerData pd; [HideInInspector] public bool playLanding; private bool playRunToIdle; private bool playDashToIdle; private bool playBackDashToIdleEnd; public bool wasAttacking; private bool wasFacingRight; [HideInInspector] public bool setEntryAnim; private bool changedClipFromLastFrame; private bool attackComplete; public ActorStates actorState { get; private set; } public ActorStates prevActorState { get; private set; } public ActorStates stateBeforeControl { get; private set; } public bool controlEnabled { get; private set; } private void Awake() { animator = ((Component)this).GetComponent(); heroCtrl = ((Component)this).GetComponent(); cState = heroCtrl.cState; } private void Start() { //IL_0018: 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_0036: Invalid comparison between Unknown and I4 pd = PlayerData.instance; ResetAll(); actorState = heroCtrl.hero_state; if (controlEnabled) { if ((int)heroCtrl.hero_state == 3) { PlayFromFrame("Airborne", 7); } else { PlayIdle(); } } else { animator.Stop(); } } private void Update() { if (controlEnabled) { UpdateAnimation(); } else if (cState.facingRight) { wasFacingRight = true; } else { wasFacingRight = false; } if (pd.betaEnd) { animator.Play("Run"); } } private void ResetAll() { playLanding = false; playRunToIdle = false; playDashToIdle = false; wasFacingRight = false; controlEnabled = true; } private void ResetPlays() { playLanding = false; playRunToIdle = false; playDashToIdle = false; } public void UpdateState(ActorStates newState) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Invalid comparison between Unknown and I4 //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Invalid comparison between Unknown and I4 //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Invalid comparison between Unknown and I4 //IL_0065: 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_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Invalid comparison between Unknown and I4 if (controlEnabled && newState != actorState) { if ((int)actorState == 3 && (int)newState == 1 && !playLanding) { playLanding = true; } if ((int)actorState == 2 && (int)newState == 1 && !playRunToIdle && !cState.inWalkZone && !cState.attacking) { playRunToIdle = true; } prevActorState = actorState; actorState = newState; } } public void PlayClip(string clipName) { if (controlEnabled) { if (clipName == "Exit Door To Idle") { animator.AnimationCompleted = AnimationCompleteDelegate; } Play(clipName); } } private void UpdateAnimation() { //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Invalid comparison between Unknown and I4 //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Invalid comparison between Unknown and I4 //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Invalid comparison between Unknown and I4 //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_0215: Invalid comparison between Unknown and I4 //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Invalid comparison between Unknown and I4 //IL_044b: Unknown result type (might be due to invalid IL or missing references) //IL_0451: Invalid comparison between Unknown and I4 //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_0249: Invalid comparison between Unknown and I4 //IL_04d1: Unknown result type (might be due to invalid IL or missing references) //IL_04d7: Invalid comparison between Unknown and I4 //IL_052c: Unknown result type (might be due to invalid IL or missing references) //IL_0532: Invalid comparison between Unknown and I4 //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_060c: Unknown result type (might be due to invalid IL or missing references) //IL_0612: Invalid comparison between Unknown and I4 //IL_027a: Unknown result type (might be due to invalid IL or missing references) //IL_0280: Invalid comparison between Unknown and I4 //IL_0622: Unknown result type (might be due to invalid IL or missing references) //IL_0628: Invalid comparison between Unknown and I4 changedClipFromLastFrame = false; if (playLanding) { Play("Land"); animator.AnimationCompleted = AnimationCompleteDelegate; playLanding = false; } if (playRunToIdle) { Play("Run To Idle"); animator.AnimationCompleted = AnimationCompleteDelegate; playRunToIdle = false; } if (playBackDashToIdleEnd) { Play("Backdash Land 2"); animator.AnimationCompleted = AnimationCompleteDelegate; playBackDashToIdleEnd = false; } if (playDashToIdle) { Play("Dash To Idle"); animator.AnimationCompleted = AnimationCompleteDelegate; playDashToIdle = false; } if ((int)actorState == 7) { if (cState.recoilFrozen) { Play("Stun"); } else if (cState.recoiling) { Play("Recoil"); } else if (cState.transitioning) { if (cState.onGround) { if ((int)heroCtrl.transitionState == 1) { if (!animator.IsPlaying("Run")) { if (!pd.equippedCharm_37) { Play("Run"); } else { Play("Sprint"); } } } else if ((int)heroCtrl.transitionState == 3) { if (!pd.equippedCharm_37) { if (!animator.IsPlaying("Run")) { PlayFromFrame("Run", 3); } } else { Play("Sprint"); } } } else if ((int)heroCtrl.transitionState == 1) { if (!animator.IsPlaying("Airborne")) { PlayFromFrame("Airborne", 7); } } else if ((int)heroCtrl.transitionState == 2) { if (!animator.IsPlaying("Airborne")) { PlayFromFrame("Airborne", 7); } } else if ((int)heroCtrl.transitionState == 3 && !setEntryAnim) { if ((int)heroCtrl.gatePosition == 0) { PlayFromFrame("Airborne", 7); } else if ((int)heroCtrl.gatePosition == 3) { PlayFromFrame("Airborne", 3); } setEntryAnim = true; } } } else if (setEntryAnim) { setEntryAnim = false; } else if (cState.dashing) { if (heroCtrl.dashingDown) { if (cState.shadowDashing) { if (pd.equippedCharm_16) { Play("Shadow Dash Down Sharp"); } else { Play("Shadow Dash Down"); } } else { Play("Dash Down"); } } else if (cState.shadowDashing) { if (pd.equippedCharm_16) { Play("Shadow Dash Sharp"); } else { Play("Shadow Dash"); } } else { Play("Dash"); } } else if (cState.backDashing) { Play("Back Dash"); } else if (cState.attacking) { if (cState.upAttacking) { Play("UpSlash"); } else if (cState.downAttacking) { Play("DownSlash"); } else if (cState.wallSliding) { Play("Wall Slash"); } else if (!cState.altAttack) { Play("Slash"); } else { Play("SlashAlt"); } } else if (cState.casting) { Play("Fireball"); } else if (cState.wallSliding) { Play("Wall Slide"); } else if ((int)actorState == 1) { if (cState.lookingUpAnim && !animator.IsPlaying("LookUp")) { Play("LookUp"); } else if (CanPlayLookDown()) { Play("LookDown"); } else if (!cState.lookingUpAnim && !cState.lookingDownAnim && CanPlayIdle()) { PlayIdle(); } } else if ((int)actorState == 2) { if (!animator.IsPlaying("Turn")) { if (cState.inWalkZone) { if (!animator.IsPlaying("Walk")) { Play("Walk"); } } else { PlayRun(); } } } else if ((int)actorState == 3) { if (cState.swimming) { Play("Swim"); } else if (heroCtrl.wallLocked) { Play("Walljump"); } else if (cState.doubleJumping) { Play("Double Jump"); } else if (cState.jumping) { if (!animator.IsPlaying("Airborne")) { PlayFromFrame("Airborne", 0); } } else if (cState.falling) { if (!animator.IsPlaying("Airborne")) { PlayFromFrame("Airborne", 5); } } else if (!animator.IsPlaying("Airborne")) { PlayFromFrame("Airborne", 3); } } else if ((int)actorState == 6) { Play("Dash Down Land"); } else if ((int)actorState == 5) { Play("HardLand"); } if (cState.facingRight) { if (!wasFacingRight && cState.onGround && canPlayTurn()) { Play("Turn"); } wasFacingRight = true; } else { if (wasFacingRight && cState.onGround && canPlayTurn()) { Play("Turn"); } wasFacingRight = false; } if (cState.attacking) { wasAttacking = true; } else { wasAttacking = false; } ResetPlays(); } private bool CanPlayIdle() { if (!animator.IsPlaying("Land") && !animator.IsPlaying("Run To Idle") && !animator.IsPlaying("Dash To Idle") && !animator.IsPlaying("Backdash Land") && !animator.IsPlaying("Backdash Land 2") && !animator.IsPlaying("LookUpEnd") && !animator.IsPlaying("LookDownEnd") && !animator.IsPlaying("Exit Door To Idle") && !animator.IsPlaying("Wake Up Ground") && !animator.IsPlaying("Hazard Respawn")) { return true; } return false; } private bool CanPlayLookDown() { if (cState.lookingDownAnim && !animator.IsPlaying("Lookup")) { return true; } return false; } private bool canPlayTurn() { if (!animator.IsPlaying("Wake Up Ground") && !animator.IsPlaying("Hazard Respawn")) { return true; } return false; } private void AnimationCompleteDelegate(tk2dSpriteAnimator sprite, tk2dSpriteAnimationClip clip) { if (clip.name == "Land") { PlayIdle(); } if (clip.name == "Run To Idle") { PlayIdle(); } if (clip.name == "Backdash To Idle") { PlayIdle(); } if (clip.name == "Dash To Idle") { PlayIdle(); } if (clip.name == "Exit Door To Idle") { PlayIdle(); } } public void PlayIdle() { if (pd.health == 1 && pd.healthBlue < 1) { if (pd.equippedCharm_6) { animator.Play("Idle"); } else { animator.Play("Idle Hurt"); } } else if (animator.IsPlaying("LookUp")) { animator.Play("LookUpEnd"); } else if (animator.IsPlaying("LookDown")) { animator.Play("LookDownEnd"); } else if (heroCtrl.wieldingLantern) { animator.Play("Lantern Idle"); } else { animator.Play("Idle"); } } private void PlayRun() { if (heroCtrl.wieldingLantern) { animator.Play("Lantern Run"); } else if (pd.equippedCharm_37) { Play("Sprint"); } else if (wasAttacking) { animator.PlayFromFrame("Run", 3); } else { animator.Play("Run"); } } private void Play(string clipName) { if (clipName != animator.CurrentClip.name) { changedClipFromLastFrame = true; } animator.Play(clipName); } private void PlayFromFrame(string clipName, int frame) { if (clipName != animator.CurrentClip.name) { changedClipFromLastFrame = true; } animator.PlayFromFrame(clipName, frame); } public void StopControl() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) if (controlEnabled) { controlEnabled = false; stateBeforeControl = actorState; } } public void StartControl() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) actorState = heroCtrl.hero_state; controlEnabled = true; PlayIdle(); } public void StartControlWithoutSettingState() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Invalid comparison between Unknown and I4 //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Invalid comparison between Unknown and I4 controlEnabled = true; if ((int)stateBeforeControl == 2 && (int)actorState == 2) { actorState = (ActorStates)1; } } public void FinishedDash() { playDashToIdle = true; } public void StopAttack() { if (animator.IsPlaying("UpSlash") || animator.IsPlaying("DownSlash")) { animator.Stop(); } } public float GetCurrentClipDuration() { return (float)animator.CurrentClip.frames.Length / animator.CurrentClip.fps; } public float GetClipDuration(string clipName) { if ((Object)(object)animator == (Object)null) { animator = ((Component)this).GetComponent(); } tk2dSpriteAnimationClip clipByName = animator.GetClipByName(clipName); if (clipByName == null) { Debug.LogError((object)("HeroAnim: Could not find animation clip with the name " + clipName)); return -1f; } return (float)clipByName.frames.Length / clipByName.fps; } } public class HeroAudioController : MonoBehaviour { private HeroController heroCtrl; [Header("Sound Effects")] public AudioSource softLanding; public AudioSource hardLanding; public AudioSource jump; public AudioSource takeHit; public AudioSource backDash; public AudioSource dash; public AudioSource footStepsRun; public AudioSource footStepsWalk; public AudioSource wallslide; public AudioSource nailArtCharge; public AudioSource nailArtReady; public AudioSource falling; public AudioSource walljump; private Coroutine fallingCo; private void Awake() { heroCtrl = ((Component)this).GetComponent(); } public void PlaySound(HeroSounds soundEffect) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Expected I4, but got Unknown if (heroCtrl.cState.isPaused) { return; } switch ((int)soundEffect) { case 4: RandomizePitch(jump, 0.9f, 1.1f); softLanding.Play(); break; case 5: hardLanding.Play(); break; case 2: RandomizePitch(jump, 0.9f, 1.1f); jump.Play(); break; case 3: RandomizePitch(walljump, 0.9f, 1.1f); walljump.Play(); break; case 8: takeHit.Play(); break; case 7: dash.Play(); break; case 9: wallslide.Play(); break; case 6: backDash.Play(); break; case 0: if (!footStepsRun.isPlaying && !softLanding.isPlaying) { footStepsRun.Play(); } break; case 1: if (!footStepsWalk.isPlaying && !softLanding.isPlaying) { footStepsWalk.Play(); } break; case 10: nailArtCharge.Play(); break; case 11: nailArtReady.Play(); break; case 12: fallingCo = ((MonoBehaviour)this).StartCoroutine(FadeInVolume(falling, 0.7f)); falling.Play(); break; } } public void StopSound(HeroSounds soundEffect) { //IL_0000: 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_0005: Invalid comparison between Unknown and I4 //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected I4, but got Unknown if ((int)soundEffect != 0) { if ((int)soundEffect != 1) { switch (soundEffect - 9) { case 0: wallslide.Stop(); break; case 1: nailArtCharge.Stop(); break; case 2: nailArtReady.Stop(); break; case 3: falling.Stop(); if (fallingCo != null) { ((MonoBehaviour)this).StopCoroutine(fallingCo); } break; } } else { footStepsWalk.Stop(); } } else { footStepsRun.Stop(); } } public void StopAllSounds() { softLanding.Stop(); hardLanding.Stop(); jump.Stop(); takeHit.Stop(); backDash.Stop(); dash.Stop(); footStepsRun.Stop(); footStepsWalk.Stop(); wallslide.Stop(); nailArtCharge.Stop(); nailArtReady.Stop(); falling.Stop(); } public void PauseAllSounds() { softLanding.Pause(); hardLanding.Pause(); jump.Pause(); takeHit.Pause(); backDash.Pause(); dash.Pause(); footStepsRun.Pause(); footStepsWalk.Pause(); wallslide.Pause(); nailArtCharge.Pause(); nailArtReady.Pause(); falling.Pause(); } public void UnPauseAllSounds() { softLanding.UnPause(); hardLanding.UnPause(); jump.UnPause(); takeHit.UnPause(); backDash.UnPause(); dash.UnPause(); footStepsRun.UnPause(); footStepsWalk.UnPause(); wallslide.UnPause(); nailArtCharge.UnPause(); nailArtReady.UnPause(); falling.UnPause(); } private void RandomizePitch(AudioSource src, float minPitch, float maxPitch) { float pitch = Random.Range(minPitch, maxPitch); src.pitch = pitch; } private void ResetPitch(AudioSource src) { src.pitch = 1f; } private IEnumerator FadeInVolume(AudioSource src, float duration) { float elapsedTime = 0f; src.volume = 0f; while (elapsedTime < duration) { elapsedTime += Time.deltaTime; float num = elapsedTime / duration; src.volume = Mathf.Lerp(0f, 1f, num); yield return null; } } } public class HeroBox : MonoBehaviour { public static bool inactive; private HeroController heroCtrl; private GameObject damagingObject; private bool isHitBuffered; private int damageDealt; private int hazardType; private CollisionSide collisionSide; private void Start() { heroCtrl = HeroController.instance; } private void OnTriggerEnter2D(Collider2D otherCollider) { if (!inactive) { CheckForDamage(otherCollider); } } private void OnTriggerStay2D(Collider2D otherCollider) { if (!inactive) { CheckForDamage(otherCollider); } } private void CheckForDamage(Collider2D otherCollider) { //IL_003f: 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_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Expected I4, but got Unknown //IL_00df: 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_00ff: Unknown result type (might be due to invalid IL or missing references) if (FSMUtility.ContainsFSM(((Component)otherCollider).gameObject, "damages_hero")) { PlayMakerFSM obj = FSMUtility.LocateFSM(((Component)otherCollider).gameObject, "damages_hero"); int damageAmount = FSMUtility.GetInt(obj, "damageDealt"); int num = FSMUtility.GetInt(obj, "hazardType"); if (((Component)otherCollider).transform.position.x > ((Component)this).transform.position.x) { heroCtrl.TakeDamage(((Component)otherCollider).gameObject, (CollisionSide)2, damageAmount, num); } else { heroCtrl.TakeDamage(((Component)otherCollider).gameObject, (CollisionSide)1, damageAmount, num); } return; } DamageHero component = ((Component)otherCollider).gameObject.GetComponent(); if ((Object)(object)component != (Object)null && !heroCtrl.cState.shadowDashing) { damageDealt = component.damageDealt; hazardType = (int)component.hazardType; damagingObject = ((Component)otherCollider).gameObject; collisionSide = (CollisionSide)((!(damagingObject.transform.position.x > ((Component)this).transform.position.x)) ? 1 : 2); if (!IsHitTypeBuffered(hazardType)) { ApplyBufferedHit(); } else { isHitBuffered = true; } } } private static bool IsHitTypeBuffered(int hazardType) { return hazardType == 0; } private void LateUpdate() { if (isHitBuffered) { ApplyBufferedHit(); } } private void ApplyBufferedHit() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) heroCtrl.TakeDamage(damagingObject, collisionSide, damageDealt, hazardType); isHitBuffered = false; } } public class HeroController : MonoBehaviour { public delegate void HeroInPosition(bool forceDirect); public delegate void TakeDamageEvent(); public delegate void HeroDeathEvent(); private bool verboseMode; public float RUN_SPEED; public float RUN_SPEED_CH; public float RUN_SPEED_CH_COMBO; public float WALK_SPEED; public float UNDERWATER_SPEED; public float JUMP_SPEED; public float JUMP_SPEED_UNDERWATER; public float MIN_JUMP_SPEED; public int JUMP_STEPS; public int JUMP_STEPS_MIN; public int JUMP_TIME; public int DOUBLE_JUMP_STEPS; public int WJLOCK_STEPS_SHORT; public int WJLOCK_STEPS_LONG; public float WJ_KICKOFF_SPEED; public int WALL_STICKY_STEPS; public float DASH_SPEED; public float DASH_SPEED_SHARP; public float DASH_TIME; public int DASH_QUEUE_STEPS; public float BACK_DASH_SPEED; public float BACK_DASH_TIME; public float SHADOW_DASH_SPEED; public float SHADOW_DASH_TIME; public float SHADOW_DASH_COOLDOWN; public float SUPER_DASH_SPEED; public float DASH_COOLDOWN; public float DASH_COOLDOWN_CH; public float BACKDASH_COOLDOWN; public float WALLSLIDE_SPEED; public float WALLSLIDE_DECEL; public float NAIL_CHARGE_TIME_DEFAULT; public float NAIL_CHARGE_TIME_CHARM; public float CYCLONE_HORIZONTAL_SPEED; public float SWIM_ACCEL; public float SWIM_MAX_SPEED; public float TIME_TO_ENTER_SCENE_BOT; public float TIME_TO_ENTER_SCENE_HOR; public float SPEED_TO_ENTER_SCENE_HOR; public float SPEED_TO_ENTER_SCENE_UP; public float SPEED_TO_ENTER_SCENE_DOWN; public float DEFAULT_GRAVITY; public float UNDERWATER_GRAVITY; public float ATTACK_DURATION; public float ATTACK_DURATION_CH; public float ALT_ATTACK_RESET; public float ATTACK_RECOVERY_TIME; public float ATTACK_COOLDOWN_TIME; public float ATTACK_COOLDOWN_TIME_CH; public float BOUNCE_TIME; public float BOUNCE_SHROOM_TIME; public float BOUNCE_VELOCITY; public float SHROOM_BOUNCE_VELOCITY; public float RECOIL_HOR_TIME; public float RECOIL_HOR_VELOCITY; public float RECOIL_HOR_VELOCITY_LONG; public float RECOIL_HOR_STEPS; public float RECOIL_DOWN_VELOCITY; public float RUN_PUFF_TIME; public float BIG_FALL_TIME; public float HARD_LANDING_TIME; public float DOWN_DASH_TIME; public float MAX_FALL_VELOCITY; public float MAX_FALL_VELOCITY_UNDERWATER; public float RECOIL_DURATION; public float RECOIL_DURATION_STAL; public float RECOIL_VELOCITY; public float DAMAGE_FREEZE_DOWN; public float DAMAGE_FREEZE_WAIT; public float DAMAGE_FREEZE_UP; public float INVUL_TIME; public float INVUL_TIME_STAL; public float INVUL_TIME_PARRY; public float INVUL_TIME_QUAKE; public float INVUL_TIME_CYCLONE; public float CAST_TIME; public float CAST_RECOIL_TIME; public float CAST_RECOIL_VELOCITY; public float WALLSLIDE_CLIP_DELAY; public int GRUB_SOUL_MP; public int GRUB_SOUL_MP_COMBO; private int JUMP_QUEUE_STEPS = 2; private int JUMP_RELEASE_QUEUE_STEPS = 2; private int DOUBLE_JUMP_QUEUE_STEPS = 10; private int ATTACK_QUEUE_STEPS = 5; private float DELAY_BEFORE_ENTER = 0.1f; private float LOOK_DELAY = 0.85f; private float LOOK_ANIM_DELAY = 0.25f; private float DEATH_WAIT = 2.85f; private float HAZARD_DEATH_CHECK_TIME = 3f; private float FLOATING_CHECK_TIME = 0.18f; private float NAIL_TERRAIN_CHECK_TIME = 0.12f; private float BUMP_VELOCITY = 4f; private float BUMP_VELOCITY_DASH = 5f; private int LANDING_BUFFER_STEPS = 5; private int LEDGE_BUFFER_STEPS = 2; private int HEAD_BUMP_STEPS = 3; private float MANTIS_CHARM_SCALE = 1.35f; private float FIND_GROUND_POINT_DISTANCE = 10f; private float FIND_GROUND_POINT_DISTANCE_EXT = 50f; public ActorStates hero_state; public ActorStates prev_hero_state; public HeroTransitionState transitionState; public DamageMode damageMode; public float move_input; public float vertical_input; public float controller_deadzone = 0.2f; public Vector2 current_velocity; private bool isGameplayScene; public bool isEnteringFirstLevel; public Vector2 slashOffset; public Vector2 upSlashOffset; public Vector2 downwardSlashOffset; public Vector2 spell1Offset; private int jump_steps; private int jumped_steps; private int doubleJump_steps; private float dash_timer; private float back_dash_timer; private float shadow_dash_timer; private float attack_time; private float attack_cooldown; private Vector2 transition_vel; private float altAttackTime; private float lookDelayTimer; private float bounceTimer; private float recoilHorizontalTimer; private float runPuffTimer; private float hardLandingTimer; private float dashLandingTimer; private float recoilTimer; private int recoilSteps; private int landingBufferSteps; private int dashQueueSteps; private bool dashQueuing; private float shadowDashTimer; private float dashCooldownTimer; private float nailChargeTimer; private int wallLockSteps; private float wallslideClipTimer; private float hardLandFailSafeTimer; private float hazardDeathTimer; private float floatingBufferTimer; private float attackDuration; public float parryInvulnTimer; [Space(6f)] [Header("Slash Prefabs")] public GameObject slashPrefab; public GameObject slashAltPrefab; public GameObject upSlashPrefab; public GameObject downSlashPrefab; public GameObject wallSlashPrefab; public NailSlash normalSlash; public NailSlash alternateSlash; public NailSlash upSlash; public NailSlash downSlash; public NailSlash wallSlash; public PlayMakerFSM normalSlashFsm; public PlayMakerFSM alternateSlashFsm; public PlayMakerFSM upSlashFsm; public PlayMakerFSM downSlashFsm; public PlayMakerFSM wallSlashFsm; [Space(6f)] [Header("Effect Prefabs")] public GameObject nailTerrainImpactEffectPrefab; public GameObject spell1Prefab; public GameObject takeHitPrefab; public GameObject takeHitDoublePrefab; public GameObject softLandingEffectPrefab; public GameObject hardLandingEffectPrefab; public GameObject runEffectPrefab; public GameObject backDashPrefab; public GameObject jumpEffectPrefab; public GameObject jumpTrailPrefab; public GameObject fallEffectPrefab; public ParticleSystem wallslideDustPrefab; public GameObject artChargeEffect; public GameObject artChargedEffect; public GameObject artChargedFlash; public tk2dSpriteAnimator artChargedEffectAnim; public GameObject shadowdashBurstPrefab; public GameObject shadowdashDownBurstPrefab; public GameObject dashParticlesPrefab; public GameObject shadowdashParticlesPrefab; public GameObject shadowRingPrefab; public GameObject shadowRechargePrefab; public GameObject dJumpWingsPrefab; public GameObject dJumpFlashPrefab; public ParticleSystem dJumpFeathers; public GameObject wallPuffPrefab; public GameObject sharpShadowPrefab; public GameObject grubberFlyBeamPrefabL; public GameObject grubberFlyBeamPrefabR; public GameObject grubberFlyBeamPrefabU; public GameObject grubberFlyBeamPrefabD; public GameObject grubberFlyBeamPrefabL_fury; public GameObject grubberFlyBeamPrefabR_fury; public GameObject grubberFlyBeamPrefabU_fury; public GameObject grubberFlyBeamPrefabD_fury; public GameObject carefreeShield; [Space(6f)] [Header("Hero Death")] public GameObject corpsePrefab; public GameObject spikeDeathPrefab; public GameObject acidDeathPrefab; public GameObject lavaDeathPrefab; public GameObject heroDeathPrefab; [Space(6f)] [Header("Hero Other")] public GameObject cutscenePrefab; private GameManager gm; private Rigidbody2D rb2d; private Collider2D col2d; private MeshRenderer renderer; private Transform transform; private HeroAnimationController animCtrl; public HeroControllerStates cState; public PlayerData playerData; private HeroAudioController audioCtrl; private AudioSource audioSource; [HideInInspector] public UIManager ui; private InputHandler inputHandler; public PlayMakerFSM damageEffectFSM; private ParticleSystem dashParticleSystem; private InvulnerablePulse invPulse; private SpriteFlash spriteFlash; public AudioSource footStepsRunAudioSource; public AudioSource footStepsWalkAudioSource; private float prevGravityScale; private Vector2 recoilVector; private Vector2 lastInputState; public GatePosition gatePosition; private bool runMsgSent; private bool hardLanded; private bool fallRumble; public bool acceptingInput; private bool fallTrailGenerated; private bool drainMP; private float drainMP_timer; private float drainMP_time; private float MP_drained; private float drainMP_seconds; private float focusMP_amount; private float dashBumpCorrection; public bool controlReqlinquished; public bool enterWithoutInput; public bool lookingUpAnim; public bool lookingDownAnim; public bool carefreeShieldEquipped; private int hitsSinceShielded; private EndBeta endBeta; private int jumpQueueSteps; private bool jumpQueuing; private int doubleJumpQueueSteps; private bool doubleJumpQueuing; private int jumpReleaseQueueSteps; private bool jumpReleaseQueuing; private int attackQueueSteps; private bool attackQueuing; public bool touchingWallL; public bool touchingWallR; public bool wallSlidingL; public bool wallSlidingR; private bool airDashed; public bool dashingDown; public bool wieldingLantern; private bool startWithWallslide; private bool startWithJump; private bool startWithFullJump; private bool startWithDash; private bool startWithAttack; private bool nailArt_cyclone; private bool wallSlashing; private bool doubleJumped; public bool inAcid; private bool wallJumpedR; private bool wallJumpedL; public bool wallLocked; private float currentWalljumpSpeed; private float walljumpSpeedDecel; private int wallUnstickSteps; private bool recoilLarge; public float conveyorSpeed; public float conveyorSpeedV; private bool enteringVertically; private bool playingWallslideClip; private bool playedMantisClawClip; public bool exitedSuperDashing; public bool exitedQuake; private bool fallCheckFlagged; private int ledgeBufferSteps; private int headBumpSteps; private float nailChargeTime; public bool takeNoDamage; private bool joniBeam; public bool fadedSceneIn; private bool stopWalkingOut; private bool boundsChecking; private bool blockerFix; [SerializeField] private Vector2[] positionHistory; private bool tilemapTestActive; private Vector2 groundRayOriginC; private Vector2 groundRayOriginL; private Vector2 groundRayOriginR; private Coroutine takeDamageCoroutine; private Coroutine tilemapTestCoroutine; public AudioClip footstepsRunDust; public AudioClip footstepsRunGrass; public AudioClip footstepsRunBone; public AudioClip footstepsRunSpa; public AudioClip footstepsRunMetal; public AudioClip footstepsRunWater; public AudioClip footstepsWalkDust; public AudioClip footstepsWalkGrass; public AudioClip footstepsWalkBone; public AudioClip footstepsWalkSpa; public AudioClip footstepsWalkMetal; public AudioClip nailArtCharge; public AudioClip nailArtChargeComplete; public AudioClip blockerImpact; public AudioClip shadowDashClip; public AudioClip sharpShadowClip; public AudioClip doubleJumpClip; public AudioClip mantisClawClip; private GameObject slash; private NailSlash slashComponent; private PlayMakerFSM slashFsm; private GameObject runEffect; private GameObject backDash; private GameObject jumpEffect; private GameObject fallEffect; private GameObject dashEffect; private GameObject grubberFlyBeam; private GameObject hazardCorpe; public PlayMakerFSM vignetteFSM; public SpriteRenderer heroLight; public SpriteRenderer vignette; public PlayMakerFSM dashBurst; public PlayMakerFSM superDash; public PlayMakerFSM fsm_thornCounter; public PlayMakerFSM spellControl; public PlayMakerFSM fsm_fallTrail; public PlayMakerFSM fsm_orbitShield; public VibrationData softLandVibration; public VibrationData wallJumpVibration; public VibrationPlayer wallSlideVibrationPlayer; public VibrationData dashVibration; public VibrationData shadowDashVibration; public VibrationData doubleJumpVibration; public bool isHeroInPosition = true; private bool jumpReleaseQueueingEnabled; private static HeroController _instance; private const float PreventCastByDialogueEndDuration = 0.3f; private float preventCastByDialogueEndTimer; private Vector2 oldPos = Vector2.zero; public float fallTimer { get; private set; } public PlayMakerFSM proxyFSM { get; private set; } public TransitionPoint sceneEntryGate { get; private set; } public bool IsDreamReturning { get { PlayMakerFSM val = PlayMakerFSM.FindFsmOnGameObject(((Component)this).gameObject, "Dream Return"); if (Object.op_Implicit((Object)(object)val)) { FsmBool val2 = val.FsmVariables.FindFsmBool("Dream Returning"); if (val2 != null) { return val2.Value; } } return false; } } public static HeroController instance { get { HeroController silentInstance = SilentInstance; if (!Object.op_Implicit((Object)(object)silentInstance)) { Debug.LogError((object)"Couldn't find a Hero, make sure one exists in the scene."); } return silentInstance; } } public static HeroController SilentInstance { get { if ((Object)(object)_instance == (Object)null) { _instance = Object.FindObjectOfType(); if (Object.op_Implicit((Object)(object)_instance) && Application.isPlaying) { Object.DontDestroyOnLoad((Object)(object)((Component)_instance).gameObject); } } return _instance; } } public static HeroController UnsafeInstance => _instance; public event Action OnHazardRespawn; public event HeroInPosition heroInPosition; public event TakeDamageEvent OnTakenDamage; public event HeroDeathEvent OnDeath; private void Awake() { if ((Object)(object)_instance == (Object)null) { _instance = this; Object.DontDestroyOnLoad((Object)(object)this); } else if ((Object)(object)this != (Object)(object)_instance) { Object.Destroy((Object)(object)((Component)this).gameObject); return; } SetupGameRefs(); SetupPools(); } private void Start() { heroInPosition += delegate { isHeroInPosition = true; }; playerData = PlayerData.instance; ui = UIManager.instance; if ((Object)(object)superDash == (Object)null) { Debug.Log((object)"SuperDash came up null, locating manually"); superDash = FSMUtility.LocateFSM(((Component)this).gameObject, "Superdash"); } if ((Object)(object)fsm_thornCounter == (Object)null) { Debug.Log((object)"Thorn Counter came up null, locating manually"); fsm_thornCounter = FSMUtility.LocateFSM(((Component)transform.Find("Charm Effects")).gameObject, "Thorn Counter"); } if ((Object)(object)dashBurst == (Object)null) { Debug.Log((object)"DashBurst came up null, locating manually"); dashBurst = FSMUtility.GetFSM(((Component)transform.Find("Effects").Find("Dash Burst")).gameObject); } if ((Object)(object)spellControl == (Object)null) { Debug.Log((object)"SpellControl came up null, locating manually"); spellControl = FSMUtility.LocateFSM(((Component)this).gameObject, "Spell Control"); } if (playerData.equippedCharm_26) { nailChargeTime = NAIL_CHARGE_TIME_CHARM; } else { nailChargeTime = NAIL_CHARGE_TIME_DEFAULT; } if (gm.IsGameplayScene()) { isGameplayScene = true; ((Renderer)vignette).enabled = true; if (this.heroInPosition != null) { this.heroInPosition(forceDirect: false); } FinishedEnteringScene(); } else { isGameplayScene = false; Extensions.SetPositionY(transform, -2000f); ((Renderer)vignette).enabled = false; AffectedByGravity(gravityApplies: false); } CharmUpdate(); if (Object.op_Implicit((Object)(object)acidDeathPrefab)) { ObjectPool.CreatePool(acidDeathPrefab, 1, false); } if (Object.op_Implicit((Object)(object)spikeDeathPrefab)) { ObjectPool.CreatePool(spikeDeathPrefab, 1, false); } } public void SceneInit() { if (!((Object)(object)this == (Object)(object)_instance)) { return; } if (!Object.op_Implicit((Object)(object)gm)) { gm = GameManager.instance; } if (gm.IsGameplayScene()) { isGameplayScene = true; HeroBox.inactive = false; } else { isGameplayScene = false; acceptingInput = false; SetState((ActorStates)7); Extensions.SetPositionY(transform, -2000f); ((Renderer)vignette).enabled = false; AffectedByGravity(gravityApplies: false); } Extensions.SetPositionZ(transform, 0.004f); if (!blockerFix) { if (playerData.killedBlocker) { gm.SetPlayerDataInt("killsBlocker", 0); } blockerFix = true; } SetWalkZone(inWalkZone: false); } private void Update() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Invalid comparison between Unknown and I4 //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Invalid comparison between Unknown and I4 //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: Invalid comparison between Unknown and I4 //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_023b: Invalid comparison between Unknown and I4 //IL_02ef: Unknown result type (might be due to invalid IL or missing references) //IL_02f5: Invalid comparison between Unknown and I4 //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_02a4: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Invalid comparison between Unknown and I4 //IL_0118: 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_02ad: Unknown result type (might be due to invalid IL or missing references) //IL_02b3: Invalid comparison between Unknown and I4 //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_03f1: Unknown result type (might be due to invalid IL or missing references) //IL_03f7: Invalid comparison between Unknown and I4 //IL_03ac: Unknown result type (might be due to invalid IL or missing references) //IL_03bb: Unknown result type (might be due to invalid IL or missing references) if (Time.frameCount % 10 == 0) { Update10(); } current_velocity = rb2d.velocity; FallCheck(); FailSafeChecks(); if ((int)hero_state == 2 && !cState.dashing && !cState.backDashing && !controlReqlinquished) { if (cState.inWalkZone) { audioCtrl.StopSound((HeroSounds)0); audioCtrl.PlaySound((HeroSounds)1); } else { audioCtrl.StopSound((HeroSounds)1); audioCtrl.PlaySound((HeroSounds)0); } if (runMsgSent && rb2d.velocity.x > -0.1f && rb2d.velocity.x < 0.1f) { runEffect.GetComponent().SendEvent("RUN STOP"); runEffect.transform.SetParent((Transform)null, true); runMsgSent = false; } if (!runMsgSent && (rb2d.velocity.x < -0.1f || rb2d.velocity.x > 0.1f)) { runEffect = ObjectPoolExtensions.Spawn(runEffectPrefab); runEffect.transform.SetParent(((Component)this).gameObject.transform, false); runMsgSent = true; } } else { audioCtrl.StopSound((HeroSounds)0); audioCtrl.StopSound((HeroSounds)1); if (runMsgSent) { runEffect.GetComponent().SendEvent("RUN STOP"); runEffect.transform.SetParent((Transform)null, true); runMsgSent = false; } } if ((int)hero_state == 6) { dashLandingTimer += Time.deltaTime; if (dashLandingTimer > DOWN_DASH_TIME) { BackOnGround(); } } if ((int)hero_state == 5) { hardLandingTimer += Time.deltaTime; if (hardLandingTimer > HARD_LANDING_TIME) { SetState((ActorStates)0); BackOnGround(); } } else if ((int)hero_state == 7) { if (cState.recoiling) { if ((!playerData.equippedCharm_4 && recoilTimer < RECOIL_DURATION) || (playerData.equippedCharm_4 && recoilTimer < RECOIL_DURATION_STAL)) { recoilTimer += Time.deltaTime; } else { CancelDamageRecoil(); if (((int)prev_hero_state == 1 || (int)prev_hero_state == 2) && !CheckTouchingGround()) { cState.onGround = false; SetState((ActorStates)3); } else { SetState((ActorStates)8); } fsm_thornCounter.SendEvent("THORN COUNTER"); } } } else if ((int)hero_state != 7) { LookForInput(); if (cState.recoiling) { cState.recoiling = false; AffectedByGravity(gravityApplies: true); } if (cState.attacking && !cState.dashing) { attack_time += Time.deltaTime; if (attack_time >= attackDuration) { ResetAttacks(); animCtrl.StopAttack(); } } if (cState.bouncing) { if (bounceTimer < BOUNCE_TIME) { bounceTimer += Time.deltaTime; } else { CancelBounce(); rb2d.velocity = new Vector2(rb2d.velocity.x, 0f); } } if (cState.shroomBouncing && current_velocity.y <= 0f) { cState.shroomBouncing = false; } if ((int)hero_state == 1) { if (!controlReqlinquished && !gm.isPaused) { if (((OneAxisInputControl)inputHandler.inputActions.Up).IsPressed || ((OneAxisInputControl)inputHandler.inputActions.RsUp).IsPressed) { cState.lookingDown = false; cState.lookingDownAnim = false; if (lookDelayTimer >= LOOK_DELAY || (((OneAxisInputControl)inputHandler.inputActions.RsUp).IsPressed && !cState.jumping && !cState.dashing)) { cState.lookingUp = true; } else { lookDelayTimer += Time.deltaTime; } if (lookDelayTimer >= LOOK_ANIM_DELAY || ((OneAxisInputControl)inputHandler.inputActions.RsUp).IsPressed) { cState.lookingUpAnim = true; } else { cState.lookingUpAnim = false; } } else if (((OneAxisInputControl)inputHandler.inputActions.Down).IsPressed || ((OneAxisInputControl)inputHandler.inputActions.RsDown).IsPressed) { cState.lookingUp = false; cState.lookingUpAnim = false; if (lookDelayTimer >= LOOK_DELAY || (((OneAxisInputControl)inputHandler.inputActions.RsDown).IsPressed && !cState.jumping && !cState.dashing)) { cState.lookingDown = true; } else { lookDelayTimer += Time.deltaTime; } if (lookDelayTimer >= LOOK_ANIM_DELAY || ((OneAxisInputControl)inputHandler.inputActions.RsDown).IsPressed) { cState.lookingDownAnim = true; } else { cState.lookingDownAnim = false; } } else { ResetLook(); } } runPuffTimer = 0f; } } LookForQueueInput(); if (drainMP) { drainMP_timer += Time.deltaTime; drainMP_seconds += Time.deltaTime; while (drainMP_timer >= drainMP_time) { MP_drained += 1f; drainMP_timer -= drainMP_time; TakeMP(1); gm.soulOrb_fsm.SendEvent("MP DRAIN"); if (MP_drained == focusMP_amount) { MP_drained -= drainMP_time; proxyFSM.SendEvent("HeroCtrl-FocusCompleted"); } } } if (cState.wallSliding) { if (airDashed) { airDashed = false; } if (doubleJumped) { doubleJumped = false; } if (cState.onGround) { FlipSprite(); CancelWallsliding(); } if (!cState.touchingWall) { FlipSprite(); CancelWallsliding(); } if (!CanWallSlide()) { CancelWallsliding(); } if (!playedMantisClawClip) { audioSource.PlayOneShot(mantisClawClip, 1f); playedMantisClawClip = true; } if (!playingWallslideClip) { if (wallslideClipTimer <= WALLSLIDE_CLIP_DELAY) { wallslideClipTimer += Time.deltaTime; } else { wallslideClipTimer = 0f; audioCtrl.PlaySound((HeroSounds)9); playingWallslideClip = true; } } } else if (playedMantisClawClip) { playedMantisClawClip = false; } if (!cState.wallSliding && playingWallslideClip) { audioCtrl.StopSound((HeroSounds)9); playingWallslideClip = false; } if (!cState.wallSliding && wallslideClipTimer > 0f) { wallslideClipTimer = 0f; } if (wallSlashing && !cState.wallSliding) { CancelAttack(); } if (attack_cooldown > 0f) { attack_cooldown -= Time.deltaTime; } if (dashCooldownTimer > 0f) { dashCooldownTimer -= Time.deltaTime; } if (shadowDashTimer > 0f) { shadowDashTimer -= Time.deltaTime; if (shadowDashTimer <= 0f) { spriteFlash.FlashShadowRecharge(); } } preventCastByDialogueEndTimer -= Time.deltaTime; if (!gm.isPaused) { if (((OneAxisInputControl)inputHandler.inputActions.Attack).IsPressed && CanNailCharge()) { cState.nailCharging = true; nailChargeTimer += Time.deltaTime; } else if (cState.nailCharging || nailChargeTimer != 0f) { artChargeEffect.SetActive(false); cState.nailCharging = false; audioCtrl.StopSound((HeroSounds)10); } if (cState.nailCharging && nailChargeTimer > 0.5f && !artChargeEffect.activeSelf && nailChargeTimer < nailChargeTime) { artChargeEffect.SetActive(true); audioCtrl.PlaySound((HeroSounds)10); } if (artChargeEffect.activeSelf && (!cState.nailCharging || nailChargeTimer > nailChargeTime)) { artChargeEffect.SetActive(false); audioCtrl.StopSound((HeroSounds)10); } if (!artChargedEffect.activeSelf && nailChargeTimer >= nailChargeTime) { artChargedEffect.SetActive(true); artChargedFlash.SetActive(true); artChargedEffectAnim.PlayFromFrame(0); GameCameras.instance.cameraShakeFSM.SendEvent("EnemyKillShake"); audioSource.PlayOneShot(nailArtChargeComplete, 1f); audioCtrl.PlaySound((HeroSounds)11); cState.nailCharging = true; } if (artChargedEffect.activeSelf && (nailChargeTimer < nailChargeTime || !cState.nailCharging)) { artChargedEffect.SetActive(false); audioCtrl.StopSound((HeroSounds)11); } } if (gm.isPaused && !((OneAxisInputControl)inputHandler.inputActions.Attack).IsPressed) { cState.nailCharging = false; nailChargeTimer = 0f; } if (cState.swimming && !CanSwim()) { cState.swimming = false; } if (parryInvulnTimer > 0f) { parryInvulnTimer -= Time.deltaTime; } } private void FixedUpdate() { //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Invalid comparison between Unknown and I4 //IL_005c: 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_0083: Invalid comparison between Unknown and I4 //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Invalid comparison between Unknown and I4 //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Invalid comparison between Unknown and I4 //IL_067e: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Invalid comparison between Unknown and I4 //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Invalid comparison between Unknown and I4 //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Invalid comparison between Unknown and I4 //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Invalid comparison between Unknown and I4 //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: 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_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_06cc: Unknown result type (might be due to invalid IL or missing references) //IL_06e2: Unknown result type (might be due to invalid IL or missing references) //IL_076a: Unknown result type (might be due to invalid IL or missing references) //IL_099f: Unknown result type (might be due to invalid IL or missing references) //IL_09af: Unknown result type (might be due to invalid IL or missing references) //IL_09c0: Unknown result type (might be due to invalid IL or missing references) //IL_09c5: Unknown result type (might be due to invalid IL or missing references) //IL_09d5: Unknown result type (might be due to invalid IL or missing references) //IL_0801: Unknown result type (might be due to invalid IL or missing references) //IL_0788: Unknown result type (might be due to invalid IL or missing references) //IL_0798: Unknown result type (might be due to invalid IL or missing references) //IL_07a9: Unknown result type (might be due to invalid IL or missing references) //IL_07ae: Unknown result type (might be due to invalid IL or missing references) //IL_07be: Unknown result type (might be due to invalid IL or missing references) //IL_02f1: Unknown result type (might be due to invalid IL or missing references) //IL_09f3: Unknown result type (might be due to invalid IL or missing references) //IL_0a03: Unknown result type (might be due to invalid IL or missing references) //IL_0a08: Unknown result type (might be due to invalid IL or missing references) //IL_096d: Unknown result type (might be due to invalid IL or missing references) //IL_0977: Unknown result type (might be due to invalid IL or missing references) //IL_097c: Unknown result type (might be due to invalid IL or missing references) //IL_08dd: Unknown result type (might be due to invalid IL or missing references) //IL_08e7: Unknown result type (might be due to invalid IL or missing references) //IL_08ec: Unknown result type (might be due to invalid IL or missing references) //IL_081f: Unknown result type (might be due to invalid IL or missing references) //IL_082f: Unknown result type (might be due to invalid IL or missing references) //IL_0840: Unknown result type (might be due to invalid IL or missing references) //IL_0845: Unknown result type (might be due to invalid IL or missing references) //IL_0855: Unknown result type (might be due to invalid IL or missing references) //IL_07dc: Unknown result type (might be due to invalid IL or missing references) //IL_07ec: Unknown result type (might be due to invalid IL or missing references) //IL_07f1: Unknown result type (might be due to invalid IL or missing references) //IL_04e6: Unknown result type (might be due to invalid IL or missing references) //IL_04f6: Unknown result type (might be due to invalid IL or missing references) //IL_04c3: Unknown result type (might be due to invalid IL or missing references) //IL_0389: Unknown result type (might be due to invalid IL or missing references) //IL_0339: Unknown result type (might be due to invalid IL or missing references) //IL_034b: Unknown result type (might be due to invalid IL or missing references) //IL_0355: Unknown result type (might be due to invalid IL or missing references) //IL_0317: Unknown result type (might be due to invalid IL or missing references) //IL_0321: Unknown result type (might be due to invalid IL or missing references) //IL_0a3c: Unknown result type (might be due to invalid IL or missing references) //IL_0a41: Unknown result type (might be due to invalid IL or missing references) //IL_0941: Unknown result type (might be due to invalid IL or missing references) //IL_094b: Unknown result type (might be due to invalid IL or missing references) //IL_0950: Unknown result type (might be due to invalid IL or missing references) //IL_0873: Unknown result type (might be due to invalid IL or missing references) //IL_0883: Unknown result type (might be due to invalid IL or missing references) //IL_0888: Unknown result type (might be due to invalid IL or missing references) //IL_04b1: Unknown result type (might be due to invalid IL or missing references) //IL_0494: Unknown result type (might be due to invalid IL or missing references) //IL_03c5: Unknown result type (might be due to invalid IL or missing references) //IL_03d7: Unknown result type (might be due to invalid IL or missing references) //IL_03e1: Unknown result type (might be due to invalid IL or missing references) //IL_03a3: Unknown result type (might be due to invalid IL or missing references) //IL_03ad: Unknown result type (might be due to invalid IL or missing references) //IL_0a76: Unknown result type (might be due to invalid IL or missing references) //IL_0a7c: Invalid comparison between Unknown and I4 //IL_0531: Unknown result type (might be due to invalid IL or missing references) //IL_053b: Unknown result type (might be due to invalid IL or missing references) //IL_0b8e: Unknown result type (might be due to invalid IL or missing references) //IL_0b25: Unknown result type (might be due to invalid IL or missing references) //IL_0b2a: Unknown result type (might be due to invalid IL or missing references) //IL_0b0d: Unknown result type (might be due to invalid IL or missing references) //IL_0b13: Invalid comparison between Unknown and I4 //IL_0567: Unknown result type (might be due to invalid IL or missing references) //IL_0571: Unknown result type (might be due to invalid IL or missing references) //IL_0bb0: Unknown result type (might be due to invalid IL or missing references) //IL_0bba: Unknown result type (might be due to invalid IL or missing references) //IL_0b40: Unknown result type (might be due to invalid IL or missing references) //IL_0b57: Unknown result type (might be due to invalid IL or missing references) //IL_0b61: Unknown result type (might be due to invalid IL or missing references) //IL_0aac: Unknown result type (might be due to invalid IL or missing references) //IL_0ab1: Unknown result type (might be due to invalid IL or missing references) //IL_0a8c: Unknown result type (might be due to invalid IL or missing references) //IL_0a92: Invalid comparison between Unknown and I4 //IL_0ac7: Unknown result type (might be due to invalid IL or missing references) //IL_0ade: Unknown result type (might be due to invalid IL or missing references) //IL_0ae8: Unknown result type (might be due to invalid IL or missing references) //IL_0c2e: Unknown result type (might be due to invalid IL or missing references) //IL_0c33: Unknown result type (might be due to invalid IL or missing references) //IL_0c45: Unknown result type (might be due to invalid IL or missing references) //IL_0c4a: Unknown result type (might be due to invalid IL or missing references) //IL_0c4f: Unknown result type (might be due to invalid IL or missing references) if (cState.recoilingLeft || cState.recoilingRight) { if ((float)recoilSteps <= RECOIL_HOR_STEPS) { recoilSteps++; } else { CancelRecoilHorizontal(); } } if (cState.dead) { rb2d.velocity = new Vector2(0f, 0f); } if (((int)hero_state == 5 && !cState.onConveyor) || (int)hero_state == 6) { ResetMotion(); } else if ((int)hero_state == 7) { if (cState.transitioning) { if ((int)transitionState == 1) { AffectedByGravity(gravityApplies: false); if (!stopWalkingOut) { rb2d.velocity = new Vector2(transition_vel.x, transition_vel.y + rb2d.velocity.y); } } else if ((int)transitionState == 3) { rb2d.velocity = transition_vel; } else if ((int)transitionState == 4) { rb2d.velocity = new Vector2(transition_vel.x, rb2d.velocity.y); } } else if (cState.recoiling) { AffectedByGravity(gravityApplies: false); rb2d.velocity = recoilVector; } } else if ((int)hero_state != 7) { if ((int)hero_state == 2) { if (move_input > 0f) { if (CheckForBump((CollisionSide)2)) { rb2d.velocity = new Vector2(rb2d.velocity.x, BUMP_VELOCITY); } } else if (move_input < 0f && CheckForBump((CollisionSide)1)) { rb2d.velocity = new Vector2(rb2d.velocity.x, BUMP_VELOCITY); } } if (!cState.backDashing && !cState.dashing) { Move(move_input); if ((!cState.attacking || !(attack_time < ATTACK_RECOVERY_TIME)) && !cState.wallSliding && !wallLocked) { if (move_input > 0f && !cState.facingRight) { FlipSprite(); CancelAttack(); } else if (move_input < 0f && cState.facingRight) { FlipSprite(); CancelAttack(); } } if (cState.recoilingLeft) { float num = ((!recoilLarge) ? RECOIL_HOR_VELOCITY : RECOIL_HOR_VELOCITY_LONG); if (rb2d.velocity.x > 0f - num) { rb2d.velocity = new Vector2(0f - num, rb2d.velocity.y); } else { rb2d.velocity = new Vector2(rb2d.velocity.x - num, rb2d.velocity.y); } } if (cState.recoilingRight) { float num2 = ((!recoilLarge) ? RECOIL_HOR_VELOCITY : RECOIL_HOR_VELOCITY_LONG); if (rb2d.velocity.x < num2) { rb2d.velocity = new Vector2(num2, rb2d.velocity.y); } else { rb2d.velocity = new Vector2(rb2d.velocity.x + num2, rb2d.velocity.y); } } } if ((cState.lookingUp || cState.lookingDown) && Mathf.Abs(move_input) > 0.6f) { ResetLook(); } if (cState.jumping) { Jump(); } if (cState.doubleJumping) { DoubleJump(); } if (cState.dashing) { Dash(); } if (cState.casting) { if (cState.castRecoiling) { if (cState.facingRight) { rb2d.velocity = new Vector2(0f - CAST_RECOIL_VELOCITY, 0f); } else { rb2d.velocity = new Vector2(CAST_RECOIL_VELOCITY, 0f); } } else { rb2d.velocity = Vector2.zero; } } if (cState.bouncing) { rb2d.velocity = new Vector2(rb2d.velocity.x, BOUNCE_VELOCITY); } _ = cState.shroomBouncing; if (wallLocked) { if (wallJumpedR) { rb2d.velocity = new Vector2(currentWalljumpSpeed, rb2d.velocity.y); } else if (wallJumpedL) { rb2d.velocity = new Vector2(0f - currentWalljumpSpeed, rb2d.velocity.y); } wallLockSteps++; if (wallLockSteps > WJLOCK_STEPS_LONG) { wallLocked = false; } currentWalljumpSpeed -= walljumpSpeedDecel; } if (cState.wallSliding) { if (wallSlidingL && ((OneAxisInputControl)inputHandler.inputActions.Right).IsPressed) { wallUnstickSteps++; } else if (wallSlidingR && ((OneAxisInputControl)inputHandler.inputActions.Left).IsPressed) { wallUnstickSteps++; } else { wallUnstickSteps = 0; } if (wallUnstickSteps >= WALL_STICKY_STEPS) { CancelWallsliding(); } if (wallSlidingL) { if (!CheckStillTouchingWall((CollisionSide)1)) { FlipSprite(); CancelWallsliding(); } } else if (wallSlidingR && !CheckStillTouchingWall((CollisionSide)2)) { FlipSprite(); CancelWallsliding(); } } } if (rb2d.velocity.y < 0f - MAX_FALL_VELOCITY && !inAcid && !controlReqlinquished && !cState.shadowDashing && !cState.spellQuake) { rb2d.velocity = new Vector2(rb2d.velocity.x, 0f - MAX_FALL_VELOCITY); } if (jumpQueuing) { jumpQueueSteps++; } if (doubleJumpQueuing) { doubleJumpQueueSteps++; } if (dashQueuing) { dashQueueSteps++; } if (attackQueuing) { attackQueueSteps++; } if (cState.wallSliding && !cState.onConveyorV) { if (rb2d.velocity.y > WALLSLIDE_SPEED) { rb2d.velocity = Vector2.op_Implicit(new Vector3(rb2d.velocity.x, rb2d.velocity.y - WALLSLIDE_DECEL)); if (rb2d.velocity.y < WALLSLIDE_SPEED) { rb2d.velocity = Vector2.op_Implicit(new Vector3(rb2d.velocity.x, WALLSLIDE_SPEED)); } } if (rb2d.velocity.y < WALLSLIDE_SPEED) { rb2d.velocity = Vector2.op_Implicit(new Vector3(rb2d.velocity.x, rb2d.velocity.y + WALLSLIDE_DECEL)); if (rb2d.velocity.y < WALLSLIDE_SPEED) { rb2d.velocity = Vector2.op_Implicit(new Vector3(rb2d.velocity.x, WALLSLIDE_SPEED)); } } } if (nailArt_cyclone) { if (((OneAxisInputControl)inputHandler.inputActions.Right).IsPressed && !((OneAxisInputControl)inputHandler.inputActions.Left).IsPressed) { rb2d.velocity = Vector2.op_Implicit(new Vector3(CYCLONE_HORIZONTAL_SPEED, rb2d.velocity.y)); } else if (((OneAxisInputControl)inputHandler.inputActions.Left).IsPressed && !((OneAxisInputControl)inputHandler.inputActions.Right).IsPressed) { rb2d.velocity = Vector2.op_Implicit(new Vector3(0f - CYCLONE_HORIZONTAL_SPEED, rb2d.velocity.y)); } else { rb2d.velocity = Vector2.op_Implicit(new Vector3(0f, rb2d.velocity.y)); } } if (cState.swimming) { rb2d.velocity = Vector2.op_Implicit(new Vector3(rb2d.velocity.x, rb2d.velocity.y + SWIM_ACCEL)); if (rb2d.velocity.y > SWIM_MAX_SPEED) { rb2d.velocity = Vector2.op_Implicit(new Vector3(rb2d.velocity.x, SWIM_MAX_SPEED)); } } if (cState.superDashOnWall && !cState.onConveyorV) { rb2d.velocity = Vector2.op_Implicit(new Vector3(0f, 0f)); } if (cState.onConveyor && ((cState.onGround && !cState.superDashing) || (int)hero_state == 5)) { if (cState.freezeCharge || (int)hero_state == 5 || controlReqlinquished) { rb2d.velocity = Vector2.op_Implicit(new Vector3(0f, 0f)); } rb2d.velocity = new Vector2(rb2d.velocity.x + conveyorSpeed, rb2d.velocity.y); } if (cState.inConveyorZone) { if (cState.freezeCharge || (int)hero_state == 5) { rb2d.velocity = Vector2.op_Implicit(new Vector3(0f, 0f)); } rb2d.velocity = new Vector2(rb2d.velocity.x + conveyorSpeed, rb2d.velocity.y); superDash.SendEvent("SLOPE CANCEL"); } if (cState.slidingLeft && rb2d.velocity.x > -5f) { rb2d.velocity = new Vector2(-5f, rb2d.velocity.y); } if (landingBufferSteps > 0) { landingBufferSteps--; } if (ledgeBufferSteps > 0) { ledgeBufferSteps--; } if (headBumpSteps > 0) { headBumpSteps--; } if (jumpReleaseQueueSteps > 0) { jumpReleaseQueueSteps--; } positionHistory[1] = positionHistory[0]; positionHistory[0] = Vector2.op_Implicit(transform.position); cState.wasOnGround = cState.onGround; } private void Update10() { //IL_004e: Unknown result type (might be due to invalid IL or missing references) if (isGameplayScene) { OutOfBoundsCheck(); } float scaleX = Extensions.GetScaleX(transform); if (scaleX < -1f) { Extensions.SetScaleX(transform, -1f); } if (scaleX > 1f) { Extensions.SetScaleX(transform, 1f); } if (transform.position.z != 0.004f) { Extensions.SetPositionZ(transform, 0.004f); } } private void OnLevelUnload() { if ((Object)(object)transform.parent != (Object)null) { SetHeroParent(null); } } private void OnDisable() { if ((Object)(object)gm != (Object)null) { gm.UnloadingLevel -= OnLevelUnload; } } private void Move(float move_direction) { //IL_0050: 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_0081: 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_013d: 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_0114: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: 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) if (cState.onGround) { SetState((ActorStates)0); } if (acceptingInput && !cState.wallSliding) { if (cState.inWalkZone) { rb2d.velocity = new Vector2(move_direction * WALK_SPEED, rb2d.velocity.y); } else if (inAcid) { rb2d.velocity = new Vector2(move_direction * UNDERWATER_SPEED, rb2d.velocity.y); } else if (playerData.equippedCharm_37 && cState.onGround && playerData.equippedCharm_31) { rb2d.velocity = new Vector2(move_direction * RUN_SPEED_CH_COMBO, rb2d.velocity.y); } else if (playerData.equippedCharm_37 && cState.onGround) { rb2d.velocity = new Vector2(move_direction * RUN_SPEED_CH, rb2d.velocity.y); } else { rb2d.velocity = new Vector2(move_direction * RUN_SPEED, rb2d.velocity.y); } } } private void Jump() { //IL_004a: 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_0022: 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 (jump_steps <= JUMP_STEPS) { if (inAcid) { rb2d.velocity = new Vector2(rb2d.velocity.x, JUMP_SPEED_UNDERWATER); } else { rb2d.velocity = new Vector2(rb2d.velocity.x, JUMP_SPEED); } jump_steps++; jumped_steps++; ledgeBufferSteps = 0; } else { CancelJump(); } } private void DoubleJump() { //IL_0023: 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) if (doubleJump_steps <= DOUBLE_JUMP_STEPS) { if (doubleJump_steps > 3) { rb2d.velocity = new Vector2(rb2d.velocity.x, JUMP_SPEED * 1.1f); } doubleJump_steps++; } else { CancelDoubleJump(); } if (cState.onGround) { CancelDoubleJump(); } } private void Attack(AttackDirection attackDir) { //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_023b: Expected I4, but got Unknown //IL_0851: Unknown result type (might be due to invalid IL or missing references) //IL_0882: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_04b8: Unknown result type (might be due to invalid IL or missing references) //IL_04d8: Unknown result type (might be due to invalid IL or missing references) //IL_0501: Unknown result type (might be due to invalid IL or missing references) //IL_0698: Unknown result type (might be due to invalid IL or missing references) //IL_06b8: Unknown result type (might be due to invalid IL or missing references) //IL_06e1: Unknown result type (might be due to invalid IL or missing references) //IL_08b3: Unknown result type (might be due to invalid IL or missing references) //IL_08b5: Invalid comparison between Unknown and I4 //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_052e: Unknown result type (might be due to invalid IL or missing references) //IL_070e: Unknown result type (might be due to invalid IL or missing references) //IL_08b7: Unknown result type (might be due to invalid IL or missing references) //IL_08b9: Invalid comparison between Unknown and I4 //IL_02ed: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_0329: Unknown result type (might be due to invalid IL or missing references) //IL_030b: Unknown result type (might be due to invalid IL or missing references) //IL_0583: Unknown result type (might be due to invalid IL or missing references) //IL_05a3: Unknown result type (might be due to invalid IL or missing references) //IL_05cc: Unknown result type (might be due to invalid IL or missing references) //IL_0763: Unknown result type (might be due to invalid IL or missing references) //IL_0783: Unknown result type (might be due to invalid IL or missing references) //IL_07ac: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_05fc: Unknown result type (might be due to invalid IL or missing references) //IL_07d9: Unknown result type (might be due to invalid IL or missing references) //IL_03aa: Unknown result type (might be due to invalid IL or missing references) //IL_03e6: Unknown result type (might be due to invalid IL or missing references) //IL_03c8: Unknown result type (might be due to invalid IL or missing references) if (Time.timeSinceLevelLoad - altAttackTime > ALT_ATTACK_RESET) { cState.altAttack = false; } cState.attacking = true; if (playerData.equippedCharm_32) { attackDuration = ATTACK_DURATION_CH; } else { attackDuration = ATTACK_DURATION; } if (cState.wallSliding) { wallSlashing = true; slashComponent = wallSlash; slashFsm = wallSlashFsm; if (playerData.equippedCharm_35) { if ((playerData.health == playerData.CurrentMaxHealth && !playerData.equippedCharm_27) || (joniBeam && playerData.equippedCharm_27)) { if (transform.localScale.x > 0f) { grubberFlyBeam = ObjectPoolExtensions.Spawn(grubberFlyBeamPrefabR, transform.position); } else { grubberFlyBeam = ObjectPoolExtensions.Spawn(grubberFlyBeamPrefabL, transform.position); } if (playerData.equippedCharm_13) { Extensions.SetScaleY(grubberFlyBeam.transform, MANTIS_CHARM_SCALE); } else { Extensions.SetScaleY(grubberFlyBeam.transform, 1f); } } if (playerData.health == 1 && playerData.equippedCharm_6 && playerData.healthBlue < 1) { if (transform.localScale.x > 0f) { grubberFlyBeam = ObjectPoolExtensions.Spawn(grubberFlyBeamPrefabR_fury, transform.position); } else { grubberFlyBeam = ObjectPoolExtensions.Spawn(grubberFlyBeamPrefabL_fury, transform.position); } if (playerData.equippedCharm_13) { Extensions.SetScaleY(grubberFlyBeam.transform, MANTIS_CHARM_SCALE); } else { Extensions.SetScaleY(grubberFlyBeam.transform, 1f); } } } } else { wallSlashing = false; switch ((int)attackDir) { case 0: if (!cState.altAttack) { slashComponent = normalSlash; slashFsm = normalSlashFsm; cState.altAttack = true; } else { slashComponent = alternateSlash; slashFsm = alternateSlashFsm; cState.altAttack = false; } if (!playerData.equippedCharm_35) { break; } if ((playerData.health >= playerData.CurrentMaxHealth && !playerData.equippedCharm_27) || (joniBeam && playerData.equippedCharm_27)) { if (transform.localScale.x < 0f) { grubberFlyBeam = ObjectPoolExtensions.Spawn(grubberFlyBeamPrefabR, transform.position); } else { grubberFlyBeam = ObjectPoolExtensions.Spawn(grubberFlyBeamPrefabL, transform.position); } if (playerData.equippedCharm_13) { Extensions.SetScaleY(grubberFlyBeam.transform, MANTIS_CHARM_SCALE); } else { Extensions.SetScaleY(grubberFlyBeam.transform, 1f); } } if (playerData.health == 1 && playerData.equippedCharm_6 && playerData.healthBlue < 1) { if (transform.localScale.x < 0f) { grubberFlyBeam = ObjectPoolExtensions.Spawn(grubberFlyBeamPrefabR_fury, transform.position); } else { grubberFlyBeam = ObjectPoolExtensions.Spawn(grubberFlyBeamPrefabL_fury, transform.position); } if (playerData.equippedCharm_13) { Extensions.SetScaleY(grubberFlyBeam.transform, MANTIS_CHARM_SCALE); } else { Extensions.SetScaleY(grubberFlyBeam.transform, 1f); } } break; case 1: slashComponent = upSlash; slashFsm = upSlashFsm; cState.upAttacking = true; if (!playerData.equippedCharm_35) { break; } if ((playerData.health >= playerData.CurrentMaxHealth && !playerData.equippedCharm_27) || (joniBeam && playerData.equippedCharm_27)) { grubberFlyBeam = ObjectPoolExtensions.Spawn(grubberFlyBeamPrefabU, transform.position); Extensions.SetScaleY(grubberFlyBeam.transform, transform.localScale.x); grubberFlyBeam.transform.localEulerAngles = new Vector3(0f, 0f, 270f); if (playerData.equippedCharm_13) { Extensions.SetScaleY(grubberFlyBeam.transform, grubberFlyBeam.transform.localScale.y * MANTIS_CHARM_SCALE); } } if (playerData.health == 1 && playerData.equippedCharm_6 && playerData.healthBlue < 1) { grubberFlyBeam = ObjectPoolExtensions.Spawn(grubberFlyBeamPrefabU_fury, transform.position); Extensions.SetScaleY(grubberFlyBeam.transform, transform.localScale.x); grubberFlyBeam.transform.localEulerAngles = new Vector3(0f, 0f, 270f); if (playerData.equippedCharm_13) { Extensions.SetScaleY(grubberFlyBeam.transform, grubberFlyBeam.transform.localScale.y * MANTIS_CHARM_SCALE); } } break; case 2: slashComponent = downSlash; slashFsm = downSlashFsm; cState.downAttacking = true; if (!playerData.equippedCharm_35) { break; } if ((playerData.health >= playerData.CurrentMaxHealth && !playerData.equippedCharm_27) || (joniBeam && playerData.equippedCharm_27)) { grubberFlyBeam = ObjectPoolExtensions.Spawn(grubberFlyBeamPrefabD, transform.position); Extensions.SetScaleY(grubberFlyBeam.transform, transform.localScale.x); grubberFlyBeam.transform.localEulerAngles = new Vector3(0f, 0f, 90f); if (playerData.equippedCharm_13) { Extensions.SetScaleY(grubberFlyBeam.transform, grubberFlyBeam.transform.localScale.y * MANTIS_CHARM_SCALE); } } if (playerData.health == 1 && playerData.equippedCharm_6 && playerData.healthBlue < 1) { grubberFlyBeam = ObjectPoolExtensions.Spawn(grubberFlyBeamPrefabD_fury, transform.position); Extensions.SetScaleY(grubberFlyBeam.transform, transform.localScale.x); grubberFlyBeam.transform.localEulerAngles = new Vector3(0f, 0f, 90f); if (playerData.equippedCharm_13) { Extensions.SetScaleY(grubberFlyBeam.transform, grubberFlyBeam.transform.localScale.y * MANTIS_CHARM_SCALE); } } break; } } if (cState.wallSliding) { if (cState.facingRight) { slashFsm.FsmVariables.GetFsmFloat("direction").Value = 180f; } else { slashFsm.FsmVariables.GetFsmFloat("direction").Value = 0f; } } else if ((int)attackDir == 0 && cState.facingRight) { slashFsm.FsmVariables.GetFsmFloat("direction").Value = 0f; } else if ((int)attackDir == 0 && !cState.facingRight) { slashFsm.FsmVariables.GetFsmFloat("direction").Value = 180f; } else if ((int)attackDir != 1) { if ((int)attackDir == 2) { slashFsm.FsmVariables.GetFsmFloat("direction").Value = 270f; } } else { slashFsm.FsmVariables.GetFsmFloat("direction").Value = 90f; } altAttackTime = Time.timeSinceLevelLoad; slashComponent.StartSlash(); if (playerData.equippedCharm_38) { fsm_orbitShield.SendEvent("SLASH"); } } private void Dash() { //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: 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_00ac: Unknown result type (might be due to invalid IL or missing references) AffectedByGravity(gravityApplies: false); ResetHardLandingTimer(); if (dash_timer > DASH_TIME) { FinishedDashing(); return; } float num = ((!playerData.equippedCharm_16 || !cState.shadowDashing) ? DASH_SPEED : DASH_SPEED_SHARP); if (dashingDown) { rb2d.velocity = new Vector2(0f, 0f - num); } else if (cState.facingRight) { if (CheckForBump((CollisionSide)2)) { rb2d.velocity = new Vector2(num, cState.onGround ? BUMP_VELOCITY : BUMP_VELOCITY_DASH); } else { rb2d.velocity = new Vector2(num, 0f); } } else if (CheckForBump((CollisionSide)1)) { rb2d.velocity = new Vector2(0f - num, cState.onGround ? BUMP_VELOCITY : BUMP_VELOCITY_DASH); } else { rb2d.velocity = new Vector2(0f - num, 0f); } dash_timer += Time.deltaTime; } private void BackDash() { } private void ShadowDash() { } private void SuperDash() { } public void FaceRight() { //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_002a: Unknown result type (might be due to invalid IL or missing references) cState.facingRight = true; Vector3 localScale = transform.localScale; localScale.x = -1f; transform.localScale = localScale; } public void FaceLeft() { //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_002a: Unknown result type (might be due to invalid IL or missing references) cState.facingRight = false; Vector3 localScale = transform.localScale; localScale.x = 1f; transform.localScale = localScale; } public void StartMPDrain(float time) { drainMP = true; drainMP_timer = 0f; MP_drained = 0f; drainMP_time = time; focusMP_amount = playerData.GetInt("focusMP_amount"); } public void StopMPDrain() { drainMP = false; } public void SetBackOnGround() { cState.onGround = true; } public void SetStartWithWallslide() { startWithWallslide = true; } public void SetStartWithJump() { startWithJump = true; } public void SetStartWithFullJump() { startWithFullJump = true; } public void SetStartWithDash() { startWithDash = true; } public void SetStartWithAttack() { startWithAttack = true; } public void SetSuperDashExit() { exitedSuperDashing = true; } public void SetQuakeExit() { exitedQuake = true; } public void SetTakeNoDamage() { takeNoDamage = true; } public void EndTakeNoDamage() { takeNoDamage = false; } public void SetHeroParent(Transform newParent) { transform.parent = newParent; if ((Object)(object)newParent == (Object)null) { Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); } } public void IsSwimming() { cState.swimming = true; } public void NotSwimming() { cState.swimming = false; } public void EnableRenderer() { ((Renderer)renderer).enabled = true; } public void ResetAirMoves() { doubleJumped = false; airDashed = false; } public void SetConveyorSpeed(float speed) { conveyorSpeed = speed; } public void SetConveyorSpeedV(float speed) { conveyorSpeedV = speed; } public void EnterWithoutInput(bool flag) { enterWithoutInput = flag; } public void SetDarkness(int darkness) { if (darkness > 0 && playerData.hasLantern) { wieldingLantern = true; } else { wieldingLantern = false; } } public void CancelHeroJump() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) if (cState.jumping) { CancelJump(); CancelDoubleJump(); if (rb2d.velocity.y > 0f) { rb2d.velocity = new Vector2(rb2d.velocity.x, 0f); } } } public void CharmUpdate() { if (playerData.equippedCharm_26) { nailChargeTime = NAIL_CHARGE_TIME_CHARM; } else { nailChargeTime = NAIL_CHARGE_TIME_DEFAULT; } if (playerData.equippedCharm_23 && !playerData.brokenCharm_23) { playerData.maxHealth = playerData.maxHealthBase + 2; MaxHealth(); } else { playerData.maxHealth = playerData.maxHealthBase; MaxHealth(); } if (playerData.equippedCharm_27) { playerData.joniHealthBlue = (int)((float)playerData.maxHealth * 1.4f); playerData.maxHealth = 1; MaxHealth(); joniBeam = true; } else { playerData.joniHealthBlue = 0; } if (playerData.equippedCharm_40 && playerData.grimmChildLevel == 5) { carefreeShieldEquipped = true; } else { carefreeShieldEquipped = false; } playerData.UpdateBlueHealth(); } public void checkEnvironment() { if (playerData.environmentType == 0) { footStepsRunAudioSource.clip = footstepsRunDust; footStepsWalkAudioSource.clip = footstepsWalkDust; } else if (playerData.environmentType == 1) { footStepsRunAudioSource.clip = footstepsRunGrass; footStepsWalkAudioSource.clip = footstepsWalkGrass; } else if (playerData.environmentType == 2) { footStepsRunAudioSource.clip = footstepsRunBone; footStepsWalkAudioSource.clip = footstepsWalkBone; } else if (playerData.environmentType == 3) { footStepsRunAudioSource.clip = footstepsRunSpa; footStepsWalkAudioSource.clip = footstepsWalkSpa; } else if (playerData.environmentType == 4) { footStepsRunAudioSource.clip = footstepsRunMetal; footStepsWalkAudioSource.clip = footstepsWalkMetal; } else if (playerData.environmentType == 6) { footStepsRunAudioSource.clip = footstepsRunWater; footStepsWalkAudioSource.clip = footstepsRunWater; } else if (playerData.environmentType == 7) { footStepsRunAudioSource.clip = footstepsRunGrass; footStepsWalkAudioSource.clip = footstepsWalkGrass; } } public void SetBenchRespawn(string spawnMarker, string sceneName, int spawnType, bool facingRight) { playerData.SetBenchRespawn(spawnMarker, sceneName, spawnType, facingRight); } public void SetHazardRespawn(Vector3 position, bool facingRight) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) playerData.SetHazardRespawn(position, facingRight); } public bool CanInput() { return acceptingInput; } public bool CanTalk() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Invalid comparison between Unknown and I4 bool result = false; if (CanInput() && (int)hero_state != 7 && !controlReqlinquished && cState.onGround && !cState.attacking && !cState.dashing) { result = true; } return result; } public void FlipSprite() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) cState.facingRight = !cState.facingRight; Vector3 localScale = transform.localScale; localScale.x *= -1f; transform.localScale = localScale; } public void NailParry() { parryInvulnTimer = INVUL_TIME_PARRY; } public void NailParryRecover() { attackDuration = 0f; attack_cooldown = 0f; CancelAttack(); } public void QuakeInvuln() { parryInvulnTimer = INVUL_TIME_QUAKE; } public void CancelParryInvuln() { parryInvulnTimer = 0f; } public void CycloneInvuln() { parryInvulnTimer = INVUL_TIME_CYCLONE; } public void SetWieldingLantern(bool set) { wieldingLantern = set; } public void TakeDamage(GameObject go, CollisionSide damageSide, int damageAmount, int hazardType) { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Invalid comparison between Unknown and I4 //IL_04fd: Unknown result type (might be due to invalid IL or missing references) //IL_0281: Unknown result type (might be due to invalid IL or missing references) //IL_0290: Unknown result type (might be due to invalid IL or missing references) //IL_02b9: Unknown result type (might be due to invalid IL or missing references) //IL_02c8: Unknown result type (might be due to invalid IL or missing references) //IL_0401: Unknown result type (might be due to invalid IL or missing references) //IL_044c: Unknown result type (might be due to invalid IL or missing references) bool spawnDamageEffect = true; if (damageAmount <= 0) { return; } if (BossSceneController.IsBossScene) { switch (BossSceneController.Instance.BossLevel) { case 1: damageAmount *= 2; break; case 2: damageAmount = 9999; break; } } if (CanTakeDamage()) { if (((int)damageMode == 1 && hazardType == 1) || (cState.shadowDashing && hazardType == 1) || (parryInvulnTimer > 0f && hazardType == 1)) { return; } VibrationMixer mixer = VibrationManager.GetMixer(); if (mixer != null) { mixer.StopAllEmissionsWithTag("heroAction"); } bool flag = false; if (carefreeShieldEquipped && hazardType == 1) { if (hitsSinceShielded > 7) { hitsSinceShielded = 7; } switch (hitsSinceShielded) { case 1: if ((float)Random.Range(1, 100) <= 10f) { flag = true; } break; case 2: if ((float)Random.Range(1, 100) <= 20f) { flag = true; } break; case 3: if ((float)Random.Range(1, 100) <= 30f) { flag = true; } break; case 4: if ((float)Random.Range(1, 100) <= 50f) { flag = true; } break; case 5: if ((float)Random.Range(1, 100) <= 70f) { flag = true; } break; case 6: if ((float)Random.Range(1, 100) <= 80f) { flag = true; } break; case 7: if ((float)Random.Range(1, 100) <= 90f) { flag = true; } break; default: flag = false; break; } if (flag) { hitsSinceShielded = 0; carefreeShield.SetActive(true); damageAmount = 0; spawnDamageEffect = false; } else { hitsSinceShielded++; } } if (playerData.equippedCharm_5 && playerData.blockerHits > 0 && hazardType == 1 && cState.focusing && !flag) { proxyFSM.SendEvent("HeroCtrl-TookBlockerHit"); audioSource.PlayOneShot(blockerImpact, 1f); spawnDamageEffect = false; damageAmount = 0; } else { proxyFSM.SendEvent("HeroCtrl-HeroDamaged"); } CancelAttack(); if (cState.wallSliding) { cState.wallSliding = false; wallSlideVibrationPlayer.Stop(); } if (cState.touchingWall) { cState.touchingWall = false; } if (cState.recoilingLeft || cState.recoilingRight) { CancelRecoilHorizontal(); } if (cState.bouncing) { CancelBounce(); rb2d.velocity = new Vector2(rb2d.velocity.x, 0f); } if (cState.shroomBouncing) { CancelBounce(); rb2d.velocity = new Vector2(rb2d.velocity.x, 0f); } if (!flag) { audioCtrl.PlaySound((HeroSounds)8); } if (!takeNoDamage && !playerData.invinciTest) { if (playerData.overcharmed) { playerData.TakeHealth(damageAmount * 2); } else { playerData.TakeHealth(damageAmount); } } if (playerData.equippedCharm_3 && damageAmount > 0) { if (playerData.equippedCharm_35) { AddMPCharge(GRUB_SOUL_MP_COMBO); } else { AddMPCharge(GRUB_SOUL_MP); } } if (joniBeam && damageAmount > 0) { joniBeam = false; } if (cState.nailCharging || nailChargeTimer != 0f) { cState.nailCharging = false; nailChargeTimer = 0f; } if (damageAmount > 0 && this.OnTakenDamage != null) { this.OnTakenDamage(); } if (playerData.health == 0) { ((MonoBehaviour)this).StartCoroutine(Die()); return; } switch (hazardType) { case 2: ((MonoBehaviour)this).StartCoroutine(DieFromHazard((HazardType)2, ((Object)(object)go != (Object)null) ? go.transform.rotation.z : 0f)); break; case 3: ((MonoBehaviour)this).StartCoroutine(DieFromHazard((HazardType)3, 0f)); break; case 4: Debug.Log((object)"Lava death"); break; case 5: ((MonoBehaviour)this).StartCoroutine(DieFromHazard((HazardType)5, 0f)); break; default: ((MonoBehaviour)this).StartCoroutine(StartRecoil(damageSide, spawnDamageEffect, damageAmount)); break; } } else { if (!cState.invulnerable || cState.hazardDeath || playerData.isInvincible) { return; } switch (hazardType) { case 2: if (!takeNoDamage) { playerData.TakeHealth(damageAmount); } proxyFSM.SendEvent("HeroCtrl-HeroDamaged"); if (playerData.health == 0) { ((MonoBehaviour)this).StartCoroutine(Die()); break; } audioCtrl.PlaySound((HeroSounds)8); ((MonoBehaviour)this).StartCoroutine(DieFromHazard((HazardType)2, ((Object)(object)go != (Object)null) ? go.transform.rotation.z : 0f)); break; case 3: playerData.TakeHealth(damageAmount); proxyFSM.SendEvent("HeroCtrl-HeroDamaged"); if (playerData.health == 0) { ((MonoBehaviour)this).StartCoroutine(Die()); } else { ((MonoBehaviour)this).StartCoroutine(DieFromHazard((HazardType)3, 0f)); } break; case 4: Debug.Log((object)"Lava damage"); break; } } } public string GetEntryGateName() { if ((Object)(object)sceneEntryGate != (Object)null) { return ((Object)sceneEntryGate).name; } return ""; } public void AddMPCharge(int amount) { int mPReserve = playerData.MPReserve; playerData.AddMPCharge(amount); GameCameras.instance.soulOrbFSM.SendEvent("MP GAIN"); if (playerData.MPReserve != mPReserve && Object.op_Implicit((Object)(object)gm) && Object.op_Implicit((Object)(object)gm.soulVessel_fsm)) { gm.soulVessel_fsm.SendEvent("MP RESERVE UP"); } } public void SoulGain() { int num; if (playerData.MPCharge < playerData.maxMP) { num = 11; if (playerData.equippedCharm_20) { num += 3; } if (playerData.equippedCharm_21) { num += 8; } } else { num = 6; if (playerData.equippedCharm_20) { num += 2; } if (playerData.equippedCharm_21) { num += 6; } } int mPReserve = playerData.MPReserve; playerData.AddMPCharge(num); GameCameras.instance.soulOrbFSM.SendEvent("MP GAIN"); if (playerData.MPReserve != mPReserve) { gm.soulVessel_fsm.SendEvent("MP RESERVE UP"); } } public void AddMPChargeSpa(int amount) { TryAddMPChargeSpa(amount); } public bool TryAddMPChargeSpa(int amount) { int mPReserve = playerData.MPReserve; bool result = playerData.AddMPCharge(amount); gm.soulOrb_fsm.SendEvent("MP GAIN SPA"); if (playerData.MPReserve != mPReserve) { gm.soulVessel_fsm.SendEvent("MP RESERVE UP"); } return result; } public void SetMPCharge(int amount) { playerData.MPCharge = amount; GameCameras.instance.soulOrbFSM.SendEvent("MP SET"); } public void TakeMP(int amount) { if (playerData.MPCharge > 0) { playerData.TakeMP(amount); if (amount > 1) { GameCameras.instance.soulOrbFSM.SendEvent("MP LOSE"); } } } public void TakeMPQuick(int amount) { if (playerData.MPCharge > 0) { playerData.TakeMP(amount); if (amount > 1) { GameCameras.instance.soulOrbFSM.SendEvent("MP DRAIN"); } } } public void TakeReserveMP(int amount) { playerData.TakeReserveMP(amount); gm.soulVessel_fsm.SendEvent("MP RESERVE DOWN"); } public void AddHealth(int amount) { playerData.AddHealth(amount); proxyFSM.SendEvent("HeroCtrl-Healed"); } public void TakeHealth(int amount) { playerData.TakeHealth(amount); proxyFSM.SendEvent("HeroCtrl-HeroDamaged"); } public void MaxHealth() { proxyFSM.SendEvent("HeroCtrl-MaxHealth"); playerData.MaxHealth(); } public void MaxHealthKeepBlue() { int healthBlue = playerData.healthBlue; playerData.MaxHealth(); playerData.healthBlue = healthBlue; proxyFSM.SendEvent("HeroCtrl-Healed"); } public void AddToMaxHealth(int amount) { playerData.AddToMaxHealth(amount); gm.AwardAchievement("PROTECTED"); if (playerData.maxHealthBase == playerData.maxHealthCap) { gm.AwardAchievement("MASKED"); } } public void ClearMP() { playerData.ClearMP(); } public void ClearMPSendEvents() { ClearMP(); GameManager.instance.soulOrb_fsm.SendEvent("MP LOSE"); GameManager.instance.soulVessel_fsm.SendEvent("MP RESERVE DOWN"); } public void AddToMaxMPReserve(int amount) { playerData.AddToMaxMPReserve(amount); gm.AwardAchievement("SOULFUL"); if (playerData.MPReserveMax == playerData.MPReserveCap) { gm.AwardAchievement("WORLDSOUL"); } } public void Bounce() { if (!cState.bouncing && !cState.shroomBouncing && !controlReqlinquished) { doubleJumped = false; airDashed = false; cState.bouncing = true; } } public void BounceHigh() { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) if (!cState.bouncing && !controlReqlinquished) { doubleJumped = false; airDashed = false; cState.bouncing = true; bounceTimer = -0.03f; rb2d.velocity = new Vector2(rb2d.velocity.x, BOUNCE_VELOCITY); } } public void ShroomBounce() { //IL_0032: 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) doubleJumped = false; airDashed = false; cState.bouncing = false; cState.shroomBouncing = true; rb2d.velocity = new Vector2(rb2d.velocity.x, SHROOM_BOUNCE_VELOCITY); } public void RecoilLeft() { //IL_0073: 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) if (!cState.recoilingLeft && !cState.recoilingRight && !playerData.equippedCharm_14 && !controlReqlinquished) { CancelDash(); recoilSteps = 0; cState.recoilingLeft = true; cState.recoilingRight = false; recoilLarge = false; rb2d.velocity = new Vector2(0f - RECOIL_HOR_VELOCITY, rb2d.velocity.y); } } public void RecoilRight() { //IL_006d: 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) if (!cState.recoilingLeft && !cState.recoilingRight && !playerData.equippedCharm_14 && !controlReqlinquished) { CancelDash(); recoilSteps = 0; cState.recoilingRight = true; cState.recoilingLeft = false; recoilLarge = false; rb2d.velocity = new Vector2(RECOIL_HOR_VELOCITY, rb2d.velocity.y); } } public void RecoilRightLong() { //IL_0066: 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) if (!cState.recoilingLeft && !cState.recoilingRight && !controlReqlinquished) { CancelDash(); ResetAttacks(); recoilSteps = 0; cState.recoilingRight = true; cState.recoilingLeft = false; recoilLarge = true; rb2d.velocity = new Vector2(RECOIL_HOR_VELOCITY_LONG, rb2d.velocity.y); } } public void RecoilLeftLong() { //IL_006c: 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) if (!cState.recoilingLeft && !cState.recoilingRight && !controlReqlinquished) { CancelDash(); ResetAttacks(); recoilSteps = 0; cState.recoilingRight = false; cState.recoilingLeft = true; recoilLarge = true; rb2d.velocity = new Vector2(0f - RECOIL_HOR_VELOCITY_LONG, rb2d.velocity.y); } } public void RecoilDown() { //IL_000c: 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_0042: Unknown result type (might be due to invalid IL or missing references) CancelJump(); if (rb2d.velocity.y > RECOIL_DOWN_VELOCITY && !controlReqlinquished) { rb2d.velocity = new Vector2(rb2d.velocity.x, RECOIL_DOWN_VELOCITY); } } public void ForceHardLanding() { if (!cState.onGround) { cState.willHardLand = true; } } public void EnterSceneDreamGate() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) IgnoreInputWithoutReset(); ResetMotion(); airDashed = false; doubleJumped = false; ResetHardLandingTimer(); ResetAttacksDash(); AffectedByGravity(gravityApplies: false); sceneEntryGate = null; SetState((ActorStates)7); transitionState = (HeroTransitionState)2; vignetteFSM.SendEvent("RESET"); if (this.heroInPosition != null) { this.heroInPosition(forceDirect: false); } FinishedEnteringScene(); } public IEnumerator EnterScene(TransitionPoint enterGate, float delayBeforeEnter) { IgnoreInputWithoutReset(); ResetMotion(); airDashed = false; doubleJumped = false; ResetHardLandingTimer(); ResetAttacksDash(); AffectedByGravity(gravityApplies: false); sceneEntryGate = enterGate; SetState((ActorStates)7); transitionState = (HeroTransitionState)2; vignetteFSM.SendEvent("RESET"); if (!cState.transitioning) { cState.transitioning = true; } gatePosition = enterGate.GetGatePosition(); if ((int)gatePosition == 0) { cState.onGround = false; enteringVertically = true; exitedSuperDashing = false; ((Renderer)renderer).enabled = false; float num = ((Component)enterGate).transform.position.x + enterGate.entryOffset.x; float num2 = ((Component)enterGate).transform.position.y + enterGate.entryOffset.y; Extensions.SetPosition2D(transform, num, num2); if (this.heroInPosition != null) { this.heroInPosition(forceDirect: false); } yield return (object)new WaitForSeconds(0.165f); if (!enterGate.customFade) { gm.FadeSceneIn(); } if (delayBeforeEnter > 0f) { yield return (object)new WaitForSeconds(delayBeforeEnter); } if (enterGate.entryDelay > 0f) { yield return (object)new WaitForSeconds(enterGate.entryDelay); } ((Renderer)renderer).enabled = true; if (exitedQuake) { IgnoreInput(); proxyFSM.SendEvent("HeroCtrl-EnterQuake"); yield return (object)new WaitForSeconds(0.25f); FinishedEnteringScene(); yield break; } rb2d.velocity = new Vector2(0f, SPEED_TO_ENTER_SCENE_DOWN); transitionState = (HeroTransitionState)3; transitionState = (HeroTransitionState)4; AffectedByGravity(gravityApplies: true); if (enterGate.hardLandOnExit) { cState.willHardLand = true; } yield return (object)new WaitForSeconds(0.33f); transitionState = (HeroTransitionState)3; if ((int)transitionState != 0) { FinishedEnteringScene(); } } else if ((int)gatePosition == 3) { cState.onGround = false; enteringVertically = true; exitedSuperDashing = false; if (enterGate.alwaysEnterRight) { FaceRight(); } if (enterGate.alwaysEnterLeft) { FaceLeft(); } float x2 = ((Component)enterGate).transform.position.x + enterGate.entryOffset.x; float y2 = ((Component)enterGate).transform.position.y + enterGate.entryOffset.y + 3f; Extensions.SetPosition2D(transform, x2, y2); if (this.heroInPosition != null) { this.heroInPosition(forceDirect: false); } yield return (object)new WaitForSeconds(0.165f); if (delayBeforeEnter > 0f) { yield return (object)new WaitForSeconds(delayBeforeEnter); } if (enterGate.entryDelay > 0f) { yield return (object)new WaitForSeconds(enterGate.entryDelay); } if (!enterGate.customFade) { gm.FadeSceneIn(); } if (cState.facingRight) { transition_vel = new Vector2(SPEED_TO_ENTER_SCENE_HOR, SPEED_TO_ENTER_SCENE_UP); } else { transition_vel = new Vector2(0f - SPEED_TO_ENTER_SCENE_HOR, SPEED_TO_ENTER_SCENE_UP); } transitionState = (HeroTransitionState)3; Extensions.SetPosition2D(transform, x2, y2); yield return (object)new WaitForSeconds(TIME_TO_ENTER_SCENE_BOT); transition_vel = new Vector2(rb2d.velocity.x, 0f); AffectedByGravity(gravityApplies: true); transitionState = (HeroTransitionState)4; } else if ((int)gatePosition == 2) { cState.onGround = true; enteringVertically = false; SetState((ActorStates)7); float num3 = ((Component)enterGate).transform.position.x + enterGate.entryOffset.x; float num4 = FindGroundPointY(num3 + 2f, ((Component)enterGate).transform.position.y); Extensions.SetPosition2D(transform, num3, num4); if (this.heroInPosition != null) { this.heroInPosition(forceDirect: true); } FaceRight(); yield return (object)new WaitForSeconds(0.165f); if (!enterGate.customFade) { gm.FadeSceneIn(); } if (delayBeforeEnter > 0f) { yield return (object)new WaitForSeconds(delayBeforeEnter); } if (enterGate.entryDelay > 0f) { yield return (object)new WaitForSeconds(enterGate.entryDelay); } if (exitedSuperDashing) { IgnoreInput(); proxyFSM.SendEvent("HeroCtrl-EnterSuperDash"); yield return (object)new WaitForSeconds(0.25f); FinishedEnteringScene(); } else { transition_vel = new Vector2(RUN_SPEED, 0f); transitionState = (HeroTransitionState)3; yield return (object)new WaitForSeconds(0.33f); FinishedEnteringScene(setHazardMarker: true, preventRunBob: true); } } else if ((int)gatePosition == 1) { cState.onGround = true; enteringVertically = false; SetState((ActorStates)7); float num5 = ((Component)enterGate).transform.position.x + enterGate.entryOffset.x; float num6 = FindGroundPointY(num5 - 2f, ((Component)enterGate).transform.position.y); Extensions.SetPosition2D(transform, num5, num6); if (this.heroInPosition != null) { this.heroInPosition(forceDirect: true); } FaceLeft(); yield return (object)new WaitForSeconds(0.165f); if (!enterGate.customFade) { gm.FadeSceneIn(); } if (delayBeforeEnter > 0f) { yield return (object)new WaitForSeconds(delayBeforeEnter); } if (enterGate.entryDelay > 0f) { yield return (object)new WaitForSeconds(enterGate.entryDelay); } if (exitedSuperDashing) { IgnoreInput(); proxyFSM.SendEvent("HeroCtrl-EnterSuperDash"); yield return (object)new WaitForSeconds(0.25f); FinishedEnteringScene(); } else { transition_vel = new Vector2(0f - RUN_SPEED, 0f); transitionState = (HeroTransitionState)3; yield return (object)new WaitForSeconds(0.33f); FinishedEnteringScene(setHazardMarker: true, preventRunBob: true); } } else { if ((int)gatePosition != 4) { yield break; } if (enterGate.alwaysEnterRight) { FaceRight(); } if (enterGate.alwaysEnterLeft) { FaceLeft(); } cState.onGround = true; enteringVertically = false; SetState((ActorStates)1); SetState((ActorStates)7); exitedSuperDashing = false; animCtrl.PlayClip("Idle"); Extensions.SetPosition2D(transform, Vector2.op_Implicit(FindGroundPoint(Vector2.op_Implicit(((Component)enterGate).transform.position)))); if (this.heroInPosition != null) { this.heroInPosition(forceDirect: false); } yield return (object)new WaitForEndOfFrame(); if (delayBeforeEnter > 0f) { yield return (object)new WaitForSeconds(delayBeforeEnter); } if (enterGate.entryDelay > 0f) { yield return (object)new WaitForSeconds(enterGate.entryDelay); } if (!enterGate.customFade) { gm.FadeSceneIn(); } _ = Time.realtimeSinceStartup; if (enterGate.dontWalkOutOfDoor) { yield return (object)new WaitForSeconds(0.33f); } else { float clipDuration = animCtrl.GetClipDuration("Exit Door To Idle"); animCtrl.PlayClip("Exit Door To Idle"); if (clipDuration > 0f) { yield return (object)new WaitForSeconds(clipDuration); } else { yield return (object)new WaitForSeconds(0.33f); } } FinishedEnteringScene(); } } public void LeaveScene(GatePosition? gate = null) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Expected I4, but got Unknown //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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_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) isHeroInPosition = false; IgnoreInputWithoutReset(); ResetHardLandingTimer(); SetState((ActorStates)7); SetDamageMode((DamageMode)2); transitionState = (HeroTransitionState)1; CancelFallEffects(); tilemapTestActive = false; SetHeroParent(null); StopTilemapTest(); if (gate.HasValue) { GatePosition value = gate.Value; switch ((int)value) { case 0: transition_vel = new Vector2(0f, MIN_JUMP_SPEED); cState.onGround = false; break; case 1: transition_vel = new Vector2(RUN_SPEED, 0f); break; case 3: transition_vel = Vector2.zero; cState.onGround = false; break; case 2: transition_vel = new Vector2(0f - RUN_SPEED, 0f); break; } } cState.transitioning = true; } public IEnumerator BetaLeave(EndBeta betaEndTrigger) { if (!playerData.betaEnd) { endBeta = betaEndTrigger; IgnoreInput(); playerData.disablePause = true; SetState((ActorStates)7); ResetInput(); tilemapTestActive = false; yield return (object)new WaitForSeconds(0.66f); GameObject.Find("Beta Ender").GetComponent().FadeIn(); ResetMotion(); yield return (object)new WaitForSeconds(1.25f); playerData.betaEnd = true; } } public IEnumerator BetaReturn() { rb2d.velocity = new Vector2(RUN_SPEED, 0f); if (!cState.facingRight) { FlipSprite(); } GameObject.Find("Beta Ender").GetComponent().FadeOut(); animCtrl.PlayClip("Run"); yield return (object)new WaitForSeconds(1.4f); SetState((ActorStates)0); SetStartingMotionState(); AcceptInput(); playerData.betaEnd = false; playerData.disablePause = false; tilemapTestActive = true; if ((Object)(object)endBeta != (Object)null) { endBeta.Reactivate(); } } public IEnumerator Respawn() { playerData = PlayerData.instance; playerData.disablePause = true; ((Component)this).gameObject.layer = 9; ((Renderer)renderer).enabled = true; rb2d.isKinematic = false; cState.dead = false; cState.onGround = true; cState.hazardDeath = false; cState.recoiling = false; enteringVertically = false; airDashed = false; doubleJumped = false; CharmUpdate(); MaxHealth(); ClearMP(); ResetMotion(); ResetHardLandingTimer(); ResetAttacks(); ResetInput(); CharmUpdate(); Transform spawnPoint = LocateSpawnPoint(); if ((Object)(object)spawnPoint != (Object)null) { Extensions.SetPosition2D(transform, Vector2.op_Implicit(FindGroundPoint(Vector2.op_Implicit(((Component)spawnPoint).transform.position)))); PlayMakerFSM component = ((Component)spawnPoint).GetComponent(); if ((Object)(object)component != (Object)null) { FSMUtility.GetVector3(component, "Adjust Vector"); } else if (verboseMode) { Debug.Log((object)"Could not find Bench Control FSM on respawn point. Ignoring Adjustment offset."); } } else { Debug.LogError((object)("Couldn't find the respawn point named " + playerData.respawnMarkerName + " within objects tagged with RespawnPoint")); } if (verboseMode) { Debug.Log((object)("HC Respawn Type: " + playerData.respawnType)); } GameCameras.instance.cameraFadeFSM.SendEvent("RESPAWN"); PlayMakerFSM benchFSM = FSMUtility.LocateFSM(((Component)spawnPoint).gameObject, "Bench Control"); if (playerData.respawnType == 1 && (Object)(object)benchFSM != (Object)null) { AffectedByGravity(gravityApplies: false); benchFSM.FsmVariables.GetFsmBool("RespawnResting").Value = true; yield return (object)new WaitForEndOfFrame(); if (this.heroInPosition != null) { this.heroInPosition(forceDirect: false); } proxyFSM.SendEvent("HeroCtrl-Respawned"); FinishedEnteringScene(); benchFSM.SendEvent("RESPAWN"); } else { yield return (object)new WaitForEndOfFrame(); IgnoreInput(); RespawnMarker component2 = ((Component)spawnPoint).GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { if (component2.respawnFacingRight) { FaceRight(); } else { FaceLeft(); } } else { Debug.LogError((object)"Spawn point does not contain a RespawnMarker"); } if (this.heroInPosition != null) { this.heroInPosition(forceDirect: false); } if (gm.GetSceneNameString() != "GG_Atrium" && (!Object.op_Implicit((Object)(object)component2) || !component2.customWakeUp)) { float clipDuration = animCtrl.GetClipDuration("Wake Up Ground"); animCtrl.PlayClip("Wake Up Ground"); StopAnimationControl(); controlReqlinquished = true; yield return (object)new WaitForSeconds(clipDuration); StartAnimationControl(); controlReqlinquished = false; } proxyFSM.SendEvent("HeroCtrl-Respawned"); FinishedEnteringScene(); } playerData.disablePause = false; playerData.isInvincible = false; } public IEnumerator HazardRespawn() { cState.hazardDeath = false; cState.onGround = true; cState.hazardRespawning = true; ResetMotion(); ResetHardLandingTimer(); ResetAttacks(); ResetInput(); cState.recoiling = false; enteringVertically = false; airDashed = false; doubleJumped = false; Extensions.SetPosition2D(transform, Vector2.op_Implicit(FindGroundPoint(Vector2.op_Implicit(playerData.hazardRespawnLocation), useExtended: true))); ((Component)this).gameObject.layer = 9; ((Renderer)renderer).enabled = true; yield return (object)new WaitForEndOfFrame(); if (playerData.hazardRespawnFacingRight) { FaceRight(); } else { FaceLeft(); } if (this.heroInPosition != null) { this.heroInPosition(forceDirect: false); } ((MonoBehaviour)this).StartCoroutine(Invulnerable(INVUL_TIME * 2f)); this.OnHazardRespawn?.Invoke(); GameCameras.instance.cameraFadeFSM.SendEvent("RESPAWN"); float clipDuration = animCtrl.GetClipDuration("Hazard Respawn"); animCtrl.PlayClip("Hazard Respawn"); yield return (object)new WaitForSeconds(clipDuration); cState.hazardRespawning = false; rb2d.interpolation = (RigidbodyInterpolation2D)1; FinishedEnteringScene(setHazardMarker: false); } public void StartCyclone() { nailArt_cyclone = true; } public void EndCyclone() { nailArt_cyclone = false; } public bool GetState(string stateName) { return cState.GetState(stateName); } public bool GetCState(string stateName) { return cState.GetState(stateName); } public void SetCState(string stateName, bool value) { cState.SetState(stateName, value); } public void ResetHardLandingTimer() { cState.willHardLand = false; hardLandingTimer = 0f; fallTimer = 0f; hardLanded = false; } public void CancelSuperDash() { superDash.SendEvent("SLOPE CANCEL"); } public void RelinquishControlNotVelocity() { //IL_000a: Unknown result type (might be due to invalid IL or missing references) if (!controlReqlinquished) { prev_hero_state = (ActorStates)1; ResetInput(); ResetMotionNotVelocity(); SetState((ActorStates)7); IgnoreInput(); controlReqlinquished = true; ResetLook(); ResetAttacks(); touchingWallL = false; touchingWallR = false; } } public void RelinquishControl() { if (!controlReqlinquished && !cState.dead) { ResetInput(); ResetMotion(); IgnoreInput(); controlReqlinquished = true; ResetLook(); ResetAttacks(); touchingWallL = false; touchingWallR = false; } } public void RegainControl() { //IL_0016: 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) enteringVertically = false; doubleJumpQueuing = false; AcceptInput(); hero_state = (ActorStates)1; if (!controlReqlinquished || cState.dead) { return; } AffectedByGravity(gravityApplies: true); SetStartingMotionState(); controlReqlinquished = false; if (startWithWallslide) { wallSlideVibrationPlayer.Play(); cState.wallSliding = true; cState.willHardLand = false; cState.touchingWall = true; airDashed = false; wallslideDustPrefab.enableEmission = true; startWithWallslide = false; if (transform.localScale.x < 0f) { wallSlidingR = true; touchingWallR = true; } else { wallSlidingL = true; touchingWallL = true; } } else if (startWithJump) { HeroJumpNoEffect(); doubleJumpQueuing = false; startWithJump = false; } else if (startWithFullJump) { HeroJump(); doubleJumpQueuing = false; startWithFullJump = false; } else if (startWithDash) { HeroDash(); doubleJumpQueuing = false; startWithDash = false; } else if (startWithAttack) { DoAttack(); doubleJumpQueuing = false; startWithAttack = false; } else { cState.touchingWall = false; touchingWallL = false; touchingWallR = false; } } public void PreventCastByDialogueEnd() { preventCastByDialogueEndTimer = 0.3f; } public bool CanCast() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Invalid comparison between Unknown and I4 if (!gm.isPaused && !cState.dashing && (int)hero_state != 7 && !cState.backDashing && (!cState.attacking || !(attack_time < ATTACK_RECOVERY_TIME)) && !cState.recoiling && !cState.recoilFrozen && !cState.transitioning && !cState.hazardDeath && !cState.hazardRespawning && CanInput() && preventCastByDialogueEndTimer <= 0f) { return true; } return false; } public bool CanFocus() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Invalid comparison between Unknown and I4 if (!gm.isPaused && (int)hero_state != 7 && !cState.dashing && !cState.backDashing && (!cState.attacking || !(attack_time < ATTACK_RECOVERY_TIME)) && !cState.recoiling && cState.onGround && !cState.transitioning && !cState.recoilFrozen && !cState.hazardDeath && !cState.hazardRespawning && CanInput()) { return true; } return false; } public bool CanNailArt() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Invalid comparison between Unknown and I4 if (!cState.transitioning && (int)hero_state != 7 && !cState.attacking && !cState.hazardDeath && !cState.hazardRespawning && nailChargeTimer >= nailChargeTime) { nailChargeTimer = 0f; return true; } nailChargeTimer = 0f; return false; } public bool CanQuickMap() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Invalid comparison between Unknown and I4 if (!gm.isPaused && !controlReqlinquished && (int)hero_state != 7 && !cState.onConveyor && !cState.dashing && !cState.backDashing && (!cState.attacking || !(attack_time < ATTACK_RECOVERY_TIME)) && !cState.recoiling && !cState.transitioning && !cState.hazardDeath && !cState.hazardRespawning && !cState.recoilFrozen && cState.onGround && CanInput()) { return true; } return false; } public bool CanInspect() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Invalid comparison between Unknown and I4 if (!gm.isPaused && !cState.dashing && (int)hero_state != 7 && !cState.backDashing && (!cState.attacking || !(attack_time < ATTACK_RECOVERY_TIME)) && !cState.recoiling && !cState.transitioning && !cState.hazardDeath && !cState.hazardRespawning && !cState.recoilFrozen && cState.onGround && CanInput()) { return true; } return false; } public bool CanBackDash() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Invalid comparison between Unknown and I4 if (!gm.isPaused && !cState.dashing && (int)hero_state != 7 && !cState.backDashing && (!cState.attacking || !(attack_time < ATTACK_RECOVERY_TIME)) && !cState.preventBackDash && !cState.backDashCooldown && !controlReqlinquished && !cState.recoilFrozen && !cState.recoiling && !cState.transitioning && cState.onGround && playerData.canBackDash) { return true; } return false; } public bool CanSuperDash() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Invalid comparison between Unknown and I4 if (!gm.isPaused && (int)hero_state != 7 && !cState.dashing && !cState.hazardDeath && !cState.hazardRespawning && !cState.backDashing && (!cState.attacking || !(attack_time < ATTACK_RECOVERY_TIME)) && !cState.slidingLeft && !cState.slidingRight && !controlReqlinquished && !cState.recoilFrozen && !cState.recoiling && !cState.transitioning && playerData.hasSuperDash && (cState.onGround || cState.wallSliding)) { return true; } return false; } public bool CanDreamNail() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Invalid comparison between Unknown and I4 //IL_0072: Unknown result type (might be due to invalid IL or missing references) if (!gm.isPaused && (int)hero_state != 7 && !cState.dashing && !cState.backDashing && (!cState.attacking || !(attack_time < ATTACK_RECOVERY_TIME)) && !controlReqlinquished && !cState.hazardDeath && rb2d.velocity.y > -0.1f && !cState.hazardRespawning && !cState.recoilFrozen && !cState.recoiling && !cState.transitioning && playerData.hasDreamNail && cState.onGround) { return true; } return false; } public bool CanDreamGate() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Invalid comparison between Unknown and I4 if (!gm.isPaused && (int)hero_state != 7 && !cState.dashing && !cState.backDashing && (!cState.attacking || !(attack_time < ATTACK_RECOVERY_TIME)) && !controlReqlinquished && !cState.hazardDeath && !cState.hazardRespawning && !cState.recoilFrozen && !cState.recoiling && !cState.transitioning && playerData.hasDreamGate && cState.onGround) { return true; } return false; } public bool CanInteract() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Invalid comparison between Unknown and I4 if (CanInput() && (int)hero_state != 7 && !gm.isPaused && !cState.dashing && !cState.backDashing && !cState.attacking && !controlReqlinquished && !cState.hazardDeath && !cState.hazardRespawning && !cState.recoilFrozen && !cState.recoiling && !cState.transitioning && cState.onGround) { return true; } return false; } public bool CanOpenInventory() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Invalid comparison between Unknown and I4 if ((!gm.isPaused && (int)hero_state != 3 && !controlReqlinquished && !cState.recoiling && !cState.transitioning && !cState.hazardDeath && !cState.hazardRespawning && cState.onGround && !playerData.disablePause && !cState.dashing && CanInput()) || playerData.atBench) { return true; } return false; } public void SetDamageMode(int invincibilityType) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) switch (invincibilityType) { case 0: damageMode = (DamageMode)0; break; case 1: damageMode = (DamageMode)1; break; case 2: damageMode = (DamageMode)2; break; } } public void SetDamageModeFSM(int invincibilityType) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) switch (invincibilityType) { case 0: damageMode = (DamageMode)0; break; case 1: damageMode = (DamageMode)1; break; case 2: damageMode = (DamageMode)2; break; } } public void ResetQuakeDamage() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 //IL_000b: Unknown result type (might be due to invalid IL or missing references) if ((int)damageMode == 1) { damageMode = (DamageMode)0; } } public void SetDamageMode(DamageMode newDamageMode) { //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_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Invalid comparison between Unknown and I4 damageMode = newDamageMode; if ((int)newDamageMode == 2) { playerData.isInvincible = true; } else { playerData.isInvincible = false; } } public void StopAnimationControl() { animCtrl.StopControl(); } public void StartAnimationControl() { animCtrl.StartControl(); } public void IgnoreInput() { if (acceptingInput) { acceptingInput = false; ResetInput(); } } public void IgnoreInputWithoutReset() { if (acceptingInput) { acceptingInput = false; } } public void AcceptInput() { acceptingInput = true; } public void Pause() { PauseInput(); PauseAudio(); JumpReleased(); cState.isPaused = true; } public void UnPause() { cState.isPaused = false; UnPauseAudio(); UnPauseInput(); } public void NearBench(bool isNearBench) { cState.nearBench = isNearBench; } public void SetWalkZone(bool inWalkZone) { cState.inWalkZone = inWalkZone; } public void ResetState() { cState.Reset(); } public void StopPlayingAudio() { audioCtrl.StopAllSounds(); } public void PauseAudio() { audioCtrl.PauseAllSounds(); } public void UnPauseAudio() { audioCtrl.UnPauseAllSounds(); } private void PauseInput() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) if (acceptingInput) { acceptingInput = false; } lastInputState = new Vector2(move_input, vertical_input); } private void UnPauseInput() { //IL_000c: 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_0081: Unknown result type (might be due to invalid IL or missing references) if (!controlReqlinquished) { _ = lastInputState; if (((OneAxisInputControl)inputHandler.inputActions.Right).IsPressed) { move_input = lastInputState.x; } else if (((OneAxisInputControl)inputHandler.inputActions.Left).IsPressed) { move_input = lastInputState.x; } else { rb2d.velocity = new Vector2(0f, rb2d.velocity.y); move_input = 0f; } vertical_input = lastInputState.y; acceptingInput = true; } } public void SpawnSoftLandingPrefab() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) ObjectPoolExtensions.Spawn(softLandingEffectPrefab, transform.position); } public void AffectedByGravity(bool gravityApplies) { _ = rb2d.gravityScale; if (rb2d.gravityScale > Mathf.Epsilon && !gravityApplies) { prevGravityScale = rb2d.gravityScale; rb2d.gravityScale = 0f; } else if (rb2d.gravityScale <= Mathf.Epsilon && gravityApplies) { rb2d.gravityScale = prevGravityScale; prevGravityScale = 0f; } } private void LookForInput() { //IL_002f: 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) if (!acceptingInput || gm.isPaused || !isGameplayScene) { return; } move_input = ((TwoAxisInputControl)inputHandler.inputActions.MoveVector).Vector.x; vertical_input = ((TwoAxisInputControl)inputHandler.inputActions.MoveVector).Vector.y; FilterInput(); if (playerData.GetBool("hasWalljump") && CanWallSlide() && !cState.attacking) { if (touchingWallL && ((OneAxisInputControl)inputHandler.inputActions.Left).IsPressed && !cState.wallSliding) { airDashed = false; doubleJumped = false; wallSlideVibrationPlayer.Play(); cState.wallSliding = true; cState.willHardLand = false; wallslideDustPrefab.enableEmission = true; wallSlidingL = true; wallSlidingR = false; FaceLeft(); CancelFallEffects(); } if (touchingWallR && ((OneAxisInputControl)inputHandler.inputActions.Right).IsPressed && !cState.wallSliding) { airDashed = false; doubleJumped = false; wallSlideVibrationPlayer.Play(); cState.wallSliding = true; cState.willHardLand = false; wallslideDustPrefab.enableEmission = true; wallSlidingL = false; wallSlidingR = true; FaceRight(); CancelFallEffects(); } } if (cState.wallSliding && ((OneAxisInputControl)inputHandler.inputActions.Down).WasPressed) { CancelWallsliding(); FlipSprite(); } if (wallLocked && wallJumpedL && ((OneAxisInputControl)inputHandler.inputActions.Right).IsPressed && wallLockSteps >= WJLOCK_STEPS_SHORT) { wallLocked = false; } if (wallLocked && wallJumpedR && ((OneAxisInputControl)inputHandler.inputActions.Left).IsPressed && wallLockSteps >= WJLOCK_STEPS_SHORT) { wallLocked = false; } if (((OneAxisInputControl)inputHandler.inputActions.Jump).WasReleased && jumpReleaseQueueingEnabled) { jumpReleaseQueueSteps = JUMP_RELEASE_QUEUE_STEPS; jumpReleaseQueuing = true; } if (!((OneAxisInputControl)inputHandler.inputActions.Jump).IsPressed) { JumpReleased(); } if (!((OneAxisInputControl)inputHandler.inputActions.Dash).IsPressed) { if (cState.preventDash && !cState.dashCooldown) { cState.preventDash = false; } dashQueuing = false; } if (!((OneAxisInputControl)inputHandler.inputActions.Attack).IsPressed) { attackQueuing = false; } } private void LookForQueueInput() { //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Invalid comparison between Unknown and I4 if (!acceptingInput || gm.isPaused || !isGameplayScene) { return; } if (((OneAxisInputControl)inputHandler.inputActions.Jump).WasPressed) { if (CanWallJump()) { DoWallJump(); } else if (CanJump()) { HeroJump(); } else if (CanDoubleJump()) { DoDoubleJump(); } else if (CanInfiniteAirJump()) { CancelJump(); audioCtrl.PlaySound((HeroSounds)2); ResetLook(); cState.jumping = true; } else { jumpQueueSteps = 0; jumpQueuing = true; doubleJumpQueueSteps = 0; doubleJumpQueuing = true; } } if (((OneAxisInputControl)inputHandler.inputActions.Dash).WasPressed) { if (CanDash()) { HeroDash(); } else { dashQueueSteps = 0; dashQueuing = true; } } if (((OneAxisInputControl)inputHandler.inputActions.Attack).WasPressed) { if (CanAttack()) { DoAttack(); } else { attackQueueSteps = 0; attackQueuing = true; } } if (((OneAxisInputControl)inputHandler.inputActions.Jump).IsPressed) { if (jumpQueueSteps <= JUMP_QUEUE_STEPS && CanJump() && jumpQueuing) { HeroJump(); } else if (doubleJumpQueueSteps <= DOUBLE_JUMP_QUEUE_STEPS && CanDoubleJump() && doubleJumpQueuing) { if (cState.onGround) { HeroJump(); } else { DoDoubleJump(); } } if (CanSwim()) { if ((int)hero_state != 3) { SetState((ActorStates)3); } cState.swimming = true; } } if (((OneAxisInputControl)inputHandler.inputActions.Dash).IsPressed && dashQueueSteps <= DASH_QUEUE_STEPS && CanDash() && dashQueuing) { HeroDash(); } if (((OneAxisInputControl)inputHandler.inputActions.Attack).IsPressed && attackQueueSteps <= ATTACK_QUEUE_STEPS && CanAttack() && attackQueuing) { DoAttack(); } } private void HeroJump() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) ObjectPoolExtensions.Spawn(jumpEffectPrefab, transform.position); audioCtrl.PlaySound((HeroSounds)2); ResetLook(); cState.recoiling = false; cState.jumping = true; jumpQueueSteps = 0; jumped_steps = 0; doubleJumpQueuing = false; } private void HeroJumpNoEffect() { ResetLook(); jump_steps = 5; cState.jumping = true; jumpQueueSteps = 0; jumped_steps = 0; jump_steps = 5; } private void DoWallJump() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) wallPuffPrefab.SetActive(true); audioCtrl.PlaySound((HeroSounds)3); VibrationManager.PlayVibrationClipOneShot(wallJumpVibration, (VibrationTarget?)null, false, "", false); if (touchingWallL) { FaceRight(); wallJumpedR = true; wallJumpedL = false; } else if (touchingWallR) { FaceLeft(); wallJumpedR = false; wallJumpedL = true; } CancelWallsliding(); cState.touchingWall = false; touchingWallL = false; touchingWallR = false; airDashed = false; doubleJumped = false; currentWalljumpSpeed = WJ_KICKOFF_SPEED; walljumpSpeedDecel = (WJ_KICKOFF_SPEED - RUN_SPEED) / (float)WJLOCK_STEPS_LONG; dashBurst.SendEvent("CANCEL"); cState.jumping = true; wallLockSteps = 0; wallLocked = true; jumpQueueSteps = 0; jumped_steps = 0; } private void DoDoubleJump() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) dJumpWingsPrefab.SetActive(true); dJumpFlashPrefab.SetActive(true); dJumpFeathers.Play(); VibrationManager.PlayVibrationClipOneShot(doubleJumpVibration, (VibrationTarget?)null, false, "", false); audioSource.PlayOneShot(doubleJumpClip, 1f); ResetLook(); cState.jumping = false; cState.doubleJumping = true; doubleJump_steps = 0; doubleJumped = true; } private void DoHardLanding() { //IL_0039: Unknown result type (might be due to invalid IL or missing references) AffectedByGravity(gravityApplies: true); ResetInput(); SetState((ActorStates)5); CancelAttack(); hardLanded = true; audioCtrl.PlaySound((HeroSounds)5); ObjectPoolExtensions.Spawn(hardLandingEffectPrefab, transform.position); } private void DoAttack() { //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Invalid comparison between Unknown and I4 //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Invalid comparison between Unknown and I4 ResetLook(); cState.recoiling = false; if (playerData.equippedCharm_32) { attack_cooldown = ATTACK_COOLDOWN_TIME_CH; } else { attack_cooldown = ATTACK_COOLDOWN_TIME; } if (vertical_input > Mathf.Epsilon) { Attack((AttackDirection)1); ((MonoBehaviour)this).StartCoroutine(CheckForTerrainThunk((AttackDirection)1)); } else if (vertical_input < 0f - Mathf.Epsilon) { if ((int)hero_state != 1 && (int)hero_state != 2) { Attack((AttackDirection)2); ((MonoBehaviour)this).StartCoroutine(CheckForTerrainThunk((AttackDirection)2)); } else { Attack((AttackDirection)0); ((MonoBehaviour)this).StartCoroutine(CheckForTerrainThunk((AttackDirection)0)); } } else { Attack((AttackDirection)0); ((MonoBehaviour)this).StartCoroutine(CheckForTerrainThunk((AttackDirection)0)); } } private void HeroDash() { //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_04ca: Unknown result type (might be due to invalid IL or missing references) //IL_02eb: Unknown result type (might be due to invalid IL or missing references) //IL_0277: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02ad: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_03ad: Unknown result type (might be due to invalid IL or missing references) //IL_03c3: Unknown result type (might be due to invalid IL or missing references) //IL_03d9: 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_0413: Unknown result type (might be due to invalid IL or missing references) //IL_0428: Unknown result type (might be due to invalid IL or missing references) //IL_0432: Unknown result type (might be due to invalid IL or missing references) //IL_030c: Unknown result type (might be due to invalid IL or missing references) //IL_0322: Unknown result type (might be due to invalid IL or missing references) //IL_0338: Unknown result type (might be due to invalid IL or missing references) //IL_0348: Unknown result type (might be due to invalid IL or missing references) //IL_0372: Unknown result type (might be due to invalid IL or missing references) //IL_0387: Unknown result type (might be due to invalid IL or missing references) //IL_0391: 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_049b: Unknown result type (might be due to invalid IL or missing references) //IL_050c: Unknown result type (might be due to invalid IL or missing references) //IL_052c: Unknown result type (might be due to invalid IL or missing references) //IL_0542: Unknown result type (might be due to invalid IL or missing references) //IL_0552: Unknown result type (might be due to invalid IL or missing references) //IL_055c: Unknown result type (might be due to invalid IL or missing references) if (!cState.onGround && !inAcid) { airDashed = true; } ResetAttacksDash(); CancelBounce(); audioCtrl.StopSound((HeroSounds)0); audioCtrl.StopSound((HeroSounds)1); audioCtrl.PlaySound((HeroSounds)7); ResetLook(); cState.recoiling = false; if (cState.wallSliding) { FlipSprite(); } else if (((OneAxisInputControl)inputHandler.inputActions.Right).IsPressed) { FaceRight(); } else if (((OneAxisInputControl)inputHandler.inputActions.Left).IsPressed) { FaceLeft(); } cState.dashing = true; dashQueueSteps = 0; HeroActions inputActions = inputHandler.inputActions; if (((OneAxisInputControl)inputActions.Down).IsPressed && !cState.onGround && playerData.equippedCharm_31 && !((OneAxisInputControl)inputActions.Left).IsPressed && !((OneAxisInputControl)inputActions.Right).IsPressed) { ((Component)dashBurst).transform.localPosition = new Vector3(-0.07f, 3.74f, 0.01f); ((Component)dashBurst).transform.localEulerAngles = new Vector3(0f, 0f, 90f); dashingDown = true; } else { ((Component)dashBurst).transform.localPosition = new Vector3(4.11f, -0.55f, 0.001f); ((Component)dashBurst).transform.localEulerAngles = new Vector3(0f, 0f, 0f); dashingDown = false; } if (playerData.equippedCharm_31) { dashCooldownTimer = DASH_COOLDOWN_CH; } else { dashCooldownTimer = DASH_COOLDOWN; } if (playerData.hasShadowDash && shadowDashTimer <= 0f) { shadowDashTimer = SHADOW_DASH_COOLDOWN; cState.shadowDashing = true; if (playerData.equippedCharm_16) { audioSource.PlayOneShot(sharpShadowClip, 1f); sharpShadowPrefab.SetActive(true); } else { audioSource.PlayOneShot(shadowDashClip, 1f); } } if (cState.shadowDashing) { if (dashingDown) { dashEffect = ObjectPoolExtensions.Spawn(shadowdashDownBurstPrefab, new Vector3(transform.position.x, transform.position.y + 3.5f, transform.position.z + 0.00101f)); dashEffect.transform.localEulerAngles = new Vector3(0f, 0f, 90f); } else if (transform.localScale.x > 0f) { dashEffect = ObjectPoolExtensions.Spawn(shadowdashBurstPrefab, new Vector3(transform.position.x + 5.21f, transform.position.y - 0.58f, transform.position.z + 0.00101f)); dashEffect.transform.localScale = new Vector3(1.919591f, dashEffect.transform.localScale.y, dashEffect.transform.localScale.z); } else { dashEffect = ObjectPoolExtensions.Spawn(shadowdashBurstPrefab, new Vector3(transform.position.x - 5.21f, transform.position.y - 0.58f, transform.position.z + 0.00101f)); dashEffect.transform.localScale = new Vector3(-1.919591f, dashEffect.transform.localScale.y, dashEffect.transform.localScale.z); } shadowRechargePrefab.SetActive(true); FSMUtility.LocateFSM(shadowRechargePrefab, "Recharge Effect").SendEvent("RESET"); shadowdashParticlesPrefab.GetComponent().enableEmission = true; VibrationManager.PlayVibrationClipOneShot(shadowDashVibration, (VibrationTarget?)null, false, "", false); ObjectPoolExtensions.Spawn(shadowRingPrefab, transform.position); } else { dashBurst.SendEvent("PLAY"); dashParticlesPrefab.GetComponent().enableEmission = true; VibrationManager.PlayVibrationClipOneShot(dashVibration, (VibrationTarget?)null, false, "", false); } if (cState.onGround && !cState.shadowDashing) { dashEffect = ObjectPoolExtensions.Spawn(backDashPrefab, transform.position); dashEffect.transform.localScale = new Vector3(transform.localScale.x * -1f, transform.localScale.y, transform.localScale.z); } } private void StartFallRumble() { fallRumble = true; audioCtrl.PlaySound((HeroSounds)12); GameCameras.instance.cameraShakeFSM.Fsm.Variables.FindFsmBool("RumblingFall").Value = true; } private void SetState(ActorStates newState) { //IL_0000: 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_0005: Invalid comparison between Unknown and I4 //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: 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_004d: Unknown result type (might be due to invalid IL or missing references) if ((int)newState != 0) { if ((int)newState == 8) { newState = prev_hero_state; } } else { newState = (ActorStates)((!(Mathf.Abs(move_input) > Mathf.Epsilon)) ? 1 : 2); } if (newState != hero_state) { prev_hero_state = hero_state; hero_state = newState; animCtrl.UpdateState(newState); } } private void FinishedEnteringScene(bool setHazardMarker = true, bool preventRunBob = false) { //IL_002b: 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_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) if (isEnteringFirstLevel) { isEnteringFirstLevel = false; } else { playerData.disablePause = false; } cState.transitioning = false; transitionState = (HeroTransitionState)0; stopWalkingOut = false; if (exitedSuperDashing || exitedQuake) { controlReqlinquished = true; IgnoreInput(); } else { SetStartingMotionState(preventRunBob); AffectedByGravity(gravityApplies: true); } if (setHazardMarker) { if (gm.startedOnThisScene || (Object)(object)sceneEntryGate == (Object)null) { playerData.SetHazardRespawn(transform.position, cState.facingRight); } else if (!sceneEntryGate.nonHazardGate) { playerData.SetHazardRespawn(sceneEntryGate.respawnMarker); } } if (exitedQuake) { SetDamageMode((DamageMode)1); } else { SetDamageMode((DamageMode)0); } if (enterWithoutInput || exitedSuperDashing || exitedQuake) { enterWithoutInput = false; } else { AcceptInput(); } gm.FinishedEnteringScene(); if (exitedSuperDashing) { exitedSuperDashing = false; } if (exitedQuake) { exitedQuake = false; } positionHistory[0] = Vector2.op_Implicit(transform.position); positionHistory[1] = Vector2.op_Implicit(transform.position); tilemapTestActive = true; } private IEnumerator Die() { if (this.OnDeath != null) { this.OnDeath(); } if (cState.dead) { yield break; } playerData.disablePause = true; boundsChecking = false; StopTilemapTest(); cState.onConveyor = false; cState.onConveyorV = false; rb2d.velocity = new Vector2(0f, 0f); CancelRecoilHorizontal(); string currentMapZone = gm.GetCurrentMapZone(); if (currentMapZone == "DREAM_WORLD" || currentMapZone == "GODS_GLORY") { RelinquishControl(); StopAnimationControl(); AffectedByGravity(gravityApplies: false); playerData.isInvincible = true; ResetHardLandingTimer(); ((Renderer)renderer).enabled = false; heroDeathPrefab.SetActive(true); yield break; } if (playerData.permadeathMode == 1) { playerData.permadeathMode = 2; } AffectedByGravity(gravityApplies: false); HeroBox.inactive = true; rb2d.isKinematic = true; SetState((ActorStates)7); cState.dead = true; ResetMotion(); ResetHardLandingTimer(); ((Renderer)renderer).enabled = false; ((Component)this).gameObject.layer = 2; heroDeathPrefab.SetActive(true); yield return null; ((MonoBehaviour)this).StartCoroutine(gm.PlayerDead(DEATH_WAIT)); } private IEnumerator DieFromHazard(HazardType hazardType, float angle) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) if (cState.hazardDeath) { yield break; } playerData.disablePause = true; SetHeroParent(null); StopTilemapTest(); SetState((ActorStates)7); cState.hazardDeath = true; ResetMotion(); ResetHardLandingTimer(); AffectedByGravity(gravityApplies: false); ((Renderer)renderer).enabled = false; ((Component)this).gameObject.layer = 2; if ((int)hazardType != 2) { if ((int)hazardType == 3) { GameObject obj = ObjectPoolExtensions.Spawn(acidDeathPrefab); obj.transform.position = transform.position; obj.transform.localScale = transform.localScale; } } else { GameObject obj2 = ObjectPoolExtensions.Spawn(spikeDeathPrefab); obj2.transform.position = transform.position; FSMUtility.SetFloat(obj2.GetComponent(), "Spike Direction", angle * 57.29578f); } yield return null; ((MonoBehaviour)this).StartCoroutine(gm.PlayerDeadFromHazard(0f)); } public IEnumerator StartRecoil(CollisionSide impactSide, bool spawnDamageEffect, int damageAmount) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) if (cState.recoiling) { yield break; } playerData.disablePause = true; ResetMotion(); AffectedByGravity(gravityApplies: false); if ((int)impactSide != 1) { if ((int)impactSide == 2) { recoilVector = new Vector2(0f - RECOIL_VELOCITY, RECOIL_VELOCITY * 0.5f); if (!cState.facingRight) { FlipSprite(); } } else { recoilVector = Vector2.zero; } } else { recoilVector = new Vector2(RECOIL_VELOCITY, RECOIL_VELOCITY * 0.5f); if (cState.facingRight) { FlipSprite(); } } SetState((ActorStates)7); cState.recoilFrozen = true; if (spawnDamageEffect) { damageEffectFSM.SendEvent("DAMAGE"); if (damageAmount > 1) { Object.Instantiate(takeHitDoublePrefab, transform.position, transform.rotation); } } if (playerData.equippedCharm_4) { ((MonoBehaviour)this).StartCoroutine(Invulnerable(INVUL_TIME_STAL)); } else { ((MonoBehaviour)this).StartCoroutine(Invulnerable(INVUL_TIME)); } yield return takeDamageCoroutine = ((MonoBehaviour)this).StartCoroutine(gm.FreezeMoment(DAMAGE_FREEZE_DOWN, DAMAGE_FREEZE_WAIT, DAMAGE_FREEZE_UP, 0.0001f, (Action)null)); cState.recoilFrozen = false; cState.recoiling = true; playerData.disablePause = false; } private IEnumerator Invulnerable(float duration) { cState.invulnerable = true; yield return (object)new WaitForSeconds(DAMAGE_FREEZE_DOWN); invPulse.StartInvulnerablePulse(); yield return (object)new WaitForSeconds(duration); invPulse.StopInvulnerablePulse(); cState.invulnerable = false; cState.recoiling = false; } private IEnumerator FirstFadeIn() { yield return (object)new WaitForSeconds(0.25f); gm.FadeSceneIn(); fadedSceneIn = true; } private void FallCheck() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Invalid comparison between Unknown and I4 //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Invalid comparison between Unknown and I4 if (rb2d.velocity.y <= -1E-06f) { if (CheckTouchingGround()) { return; } cState.falling = true; cState.onGround = false; cState.wallJumping = false; proxyFSM.SendEvent("HeroCtrl-LeftGround"); if ((int)hero_state != 7) { SetState((ActorStates)3); } if (cState.wallSliding) { fallTimer = 0f; } else { fallTimer += Time.deltaTime; } if (fallTimer > BIG_FALL_TIME) { if (!cState.willHardLand) { cState.willHardLand = true; } if (!fallRumble) { StartFallRumble(); } } if (fallCheckFlagged) { fallCheckFlagged = false; } } else { cState.falling = false; fallTimer = 0f; if ((int)transitionState != 3) { cState.willHardLand = false; } if (fallCheckFlagged) { fallCheckFlagged = false; } if (fallRumble) { CancelFallEffects(); } } } private void OutOfBoundsCheck() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_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_0026: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) if (isGameplayScene) { Vector2 val = Vector2.op_Implicit(transform.position); if ((val.y < -60f || val.y > gm.sceneHeight + 60f || val.x < -60f || val.x > gm.sceneWidth + 60f) && !cState.dead) { _ = boundsChecking; } } } private void ConfirmOutOfBounds() { //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_0023: 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_0083: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: 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_0057: Unknown result type (might be due to invalid IL or missing references) if (!boundsChecking) { return; } Debug.Log((object)"Confirming out of bounds"); Vector2 val = Vector2.op_Implicit(transform.position); if (val.y < -60f || val.y > gm.sceneHeight + 60f || val.x < -60f || val.x > gm.sceneWidth + 60f) { if (!cState.dead) { rb2d.velocity = Vector2.zero; Debug.LogFormat("Pos: {0} Transition State: {1}", new object[2] { transform.position, transitionState }); } } else { boundsChecking = false; } } private void FailSafeChecks() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 //IL_00bc: 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_0088: Invalid comparison between Unknown and I4 //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Invalid comparison between Unknown and I4 //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Invalid comparison between Unknown and I4 if ((int)hero_state == 5) { hardLandFailSafeTimer += Time.deltaTime; if (hardLandFailSafeTimer > HARD_LANDING_TIME + 0.3f) { SetState((ActorStates)0); BackOnGround(); hardLandFailSafeTimer = 0f; } } else { hardLandFailSafeTimer = 0f; } if (cState.hazardDeath) { hazardDeathTimer += Time.deltaTime; if (hazardDeathTimer > HAZARD_DEATH_CHECK_TIME && (int)hero_state != 7) { ResetMotion(); AffectedByGravity(gravityApplies: false); SetState((ActorStates)7); hazardDeathTimer = 0f; } } else { hazardDeathTimer = 0f; } if (rb2d.velocity.y != 0f || cState.onGround || cState.falling || cState.jumping || cState.dashing || (int)hero_state == 5 || (int)hero_state == 7) { return; } if (CheckTouchingGround()) { floatingBufferTimer += Time.deltaTime; if (floatingBufferTimer > FLOATING_CHECK_TIME) { if (cState.recoiling) { CancelDamageRecoil(); } BackOnGround(); floatingBufferTimer = 0f; } } else { floatingBufferTimer = 0f; } } public Transform LocateSpawnPoint() { GameObject[] array = GameObject.FindGameObjectsWithTag("RespawnPoint"); for (int i = 0; i < array.Length; i++) { if (((Object)array[i]).name == playerData.respawnMarkerName) { return array[i].transform; } } return null; } private void CancelJump() { cState.jumping = false; jumpReleaseQueuing = false; jump_steps = 0; } private void CancelDoubleJump() { cState.doubleJumping = false; doubleJump_steps = 0; } private void CancelDash() { if (cState.shadowDashing) { cState.shadowDashing = false; } cState.dashing = false; dash_timer = 0f; AffectedByGravity(gravityApplies: true); sharpShadowPrefab.SetActive(false); if (dashParticlesPrefab.GetComponent().enableEmission) { dashParticlesPrefab.GetComponent().enableEmission = false; } if (shadowdashParticlesPrefab.GetComponent().enableEmission) { shadowdashParticlesPrefab.GetComponent().enableEmission = false; } } private void CancelWallsliding() { wallslideDustPrefab.enableEmission = false; wallSlideVibrationPlayer.Stop(); cState.wallSliding = false; wallSlidingL = false; wallSlidingR = false; touchingWallL = false; touchingWallR = false; } private void CancelBackDash() { cState.backDashing = false; back_dash_timer = 0f; } private void CancelDownAttack() { if (cState.downAttacking) { slashComponent.CancelAttack(); ResetAttacks(); } } private void CancelAttack() { if (cState.attacking) { slashComponent.CancelAttack(); ResetAttacks(); } } private void CancelBounce() { cState.bouncing = false; cState.shroomBouncing = false; bounceTimer = 0f; } private void CancelRecoilHorizontal() { cState.recoilingLeft = false; cState.recoilingRight = false; recoilSteps = 0; } private void CancelDamageRecoil() { cState.recoiling = false; recoilTimer = 0f; ResetMotion(); AffectedByGravity(gravityApplies: true); SetDamageMode((DamageMode)0); } private void CancelFallEffects() { fallRumble = false; audioCtrl.StopSound((HeroSounds)12); GameCameras.instance.cameraShakeFSM.Fsm.Variables.FindFsmBool("RumblingFall").Value = false; } private void ResetAttacks() { cState.nailCharging = false; nailChargeTimer = 0f; cState.attacking = false; cState.upAttacking = false; cState.downAttacking = false; attack_time = 0f; } private void ResetAttacksDash() { cState.attacking = false; cState.upAttacking = false; cState.downAttacking = false; attack_time = 0f; } private void ResetMotion() { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) CancelJump(); CancelDoubleJump(); CancelDash(); CancelBackDash(); CancelBounce(); CancelRecoilHorizontal(); CancelWallsliding(); rb2d.velocity = Vector2.zero; transition_vel = Vector2.zero; wallLocked = false; nailChargeTimer = 0f; } private void ResetMotionNotVelocity() { //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) CancelJump(); CancelDoubleJump(); CancelDash(); CancelBackDash(); CancelBounce(); CancelRecoilHorizontal(); CancelWallsliding(); transition_vel = Vector2.zero; wallLocked = false; } private void ResetLook() { cState.lookingUp = false; cState.lookingDown = false; cState.lookingUpAnim = false; cState.lookingDownAnim = false; lookDelayTimer = 0f; } private void ResetInput() { move_input = 0f; vertical_input = 0f; } private void BackOnGround() { //IL_0043: 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) if (landingBufferSteps <= 0) { landingBufferSteps = LANDING_BUFFER_STEPS; if (!cState.onGround && !hardLanded && !cState.superDashing) { ObjectPoolExtensions.Spawn(softLandingEffectPrefab, transform.position); VibrationManager.PlayVibrationClipOneShot(softLandVibration, (VibrationTarget?)null, false, "", false); } } cState.falling = false; fallTimer = 0f; dashLandingTimer = 0f; cState.willHardLand = false; hardLandingTimer = 0f; hardLanded = false; jump_steps = 0; if (cState.doubleJumping) { HeroJump(); } SetState((ActorStates)0); cState.onGround = true; airDashed = false; doubleJumped = false; if (dJumpWingsPrefab.activeSelf) { dJumpWingsPrefab.SetActive(false); } } private void JumpReleased() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: 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_0074: Unknown result type (might be due to invalid IL or missing references) if (rb2d.velocity.y > 0f && jumped_steps >= JUMP_STEPS_MIN && !inAcid && !cState.shroomBouncing) { if (jumpReleaseQueueingEnabled) { if (jumpReleaseQueuing && jumpReleaseQueueSteps <= 0) { rb2d.velocity = new Vector2(rb2d.velocity.x, 0f); CancelJump(); } } else { rb2d.velocity = new Vector2(rb2d.velocity.x, 0f); CancelJump(); } } jumpQueuing = false; doubleJumpQueuing = false; if (cState.swimming) { cState.swimming = false; } } private void FinishedDashing() { CancelDash(); AffectedByGravity(gravityApplies: true); animCtrl.FinishedDash(); proxyFSM.SendEvent("HeroCtrl-DashEnd"); if (cState.touchingWall && !cState.onGround && (playerData.GetBool("hasWalljump") & (touchingWallL || touchingWallR))) { wallslideDustPrefab.enableEmission = true; wallSlideVibrationPlayer.Play(); cState.wallSliding = true; cState.willHardLand = false; if (touchingWallL) { wallSlidingL = true; } if (touchingWallR) { wallSlidingR = true; } if (dashingDown) { FlipSprite(); } } } private void SetStartingMotionState() { SetStartingMotionState(preventRunDip: false); } private void SetStartingMotionState(bool preventRunDip) { //IL_0096: Unknown result type (might be due to invalid IL or missing references) move_input = ((acceptingInput || preventRunDip) ? ((TwoAxisInputControl)inputHandler.inputActions.MoveVector).X : 0f); cState.touchingWall = false; if (CheckTouchingGround()) { cState.onGround = true; SetState((ActorStates)0); ResetAirMoves(); if (enteringVertically) { SpawnSoftLandingPrefab(); animCtrl.playLanding = true; enteringVertically = false; } } else { cState.onGround = false; SetState((ActorStates)3); } animCtrl.UpdateState(hero_state); } [Obsolete("This was used specifically for underwater swimming in acid but is no longer in use.")] private void EnterAcid() { rb2d.gravityScale = UNDERWATER_GRAVITY; inAcid = true; cState.inAcid = true; } [Obsolete("This was used specifically for underwater swimming in acid but is no longer in use.")] private void ExitAcid() { rb2d.gravityScale = DEFAULT_GRAVITY; inAcid = false; cState.inAcid = false; airDashed = false; doubleJumped = false; if (((OneAxisInputControl)inputHandler.inputActions.Jump).IsPressed) { HeroJump(); } } private void TileMapTest() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_003a: 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_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_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_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) if (!tilemapTestActive || cState.jumping) { return; } Vector2 val = Vector2.op_Implicit(transform.position); Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor(positionHistory[0].x - val.x, positionHistory[0].y - val.y); float magnitude = ((Vector2)(ref val2)).magnitude; RaycastHit2D val3 = Physics2D.Raycast(val, val2, magnitude, 256); if ((Object)(object)((RaycastHit2D)(ref val3)).collider != (Object)null) { Debug.LogFormat("TERRAIN INGRESS {0} at {1} Jumping: {2}", new object[3] { gm.GetSceneNameString(), val, cState.jumping }); ResetMotion(); rb2d.velocity = Vector2.zero; if (cState.dashing) { FinishedDashing(); Extensions.SetPosition2D(transform, positionHistory[1]); } if (cState.superDashing) { Extensions.SetPosition2D(transform, ((RaycastHit2D)(ref val3)).point); superDash.SendEvent("HIT WALL"); } if (cState.spellQuake) { spellControl.SendEvent("Hero Landed"); Extensions.SetPosition2D(transform, positionHistory[1]); } tilemapTestActive = false; tilemapTestCoroutine = ((MonoBehaviour)this).StartCoroutine(TilemapTestPause()); } } private IEnumerator TilemapTestPause() { yield return (object)new WaitForSeconds(0.1f); tilemapTestActive = true; } private void StopTilemapTest() { if (tilemapTestCoroutine != null) { ((MonoBehaviour)this).StopCoroutine(tilemapTestCoroutine); tilemapTestActive = false; } } public IEnumerator CheckForTerrainThunk(AttackDirection attackDir) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) bool terrainHit = false; float thunkTimer = NAIL_TERRAIN_CHECK_TIME; Vector2 val = default(Vector2); Vector2 val2 = default(Vector2); Vector2 val3 = default(Vector2); Vector2 val4 = default(Vector2); while (thunkTimer > 0f) { if (!terrainHit) { float num = 0.25f; float num2 = (((int)attackDir != 0) ? 1.5f : 2f); float num3 = 1f; if (playerData.equippedCharm_18) { num3 += 0.2f; } if (playerData.equippedCharm_13) { num3 += 0.3f; } num2 *= num3; ((Vector2)(ref val))..ctor(0.45f, 0.45f); Bounds bounds = col2d.bounds; float x = ((Bounds)(ref bounds)).center.x; bounds = col2d.bounds; ((Vector2)(ref val2))..ctor(x, ((Bounds)(ref bounds)).center.y + num); bounds = col2d.bounds; float x2 = ((Bounds)(ref bounds)).center.x; bounds = col2d.bounds; ((Vector2)(ref val3))..ctor(x2, ((Bounds)(ref bounds)).max.y); bounds = col2d.bounds; float x3 = ((Bounds)(ref bounds)).center.x; bounds = col2d.bounds; ((Vector2)(ref val4))..ctor(x3, ((Bounds)(ref bounds)).min.y); int num4 = 33554688; RaycastHit2D val5 = default(RaycastHit2D); switch ((int)attackDir) { case 0: val5 = (((!cState.facingRight || cState.wallSliding) && (cState.facingRight || !cState.wallSliding)) ? Physics2D.BoxCast(val2, val, 0f, Vector2.left, num2, num4) : Physics2D.BoxCast(val2, val, 0f, Vector2.right, num2, num4)); break; case 1: val5 = Physics2D.BoxCast(val3, val, 0f, Vector2.up, num2, num4); break; case 2: val5 = Physics2D.BoxCast(val4, val, 0f, Vector2.down, num2, num4); break; } if ((Object)(object)((RaycastHit2D)(ref val5)).collider != (Object)null && !((RaycastHit2D)(ref val5)).collider.isTrigger) { NonThunker component = ((Component)((RaycastHit2D)(ref val5)).collider).gameObject.GetComponent(); if (!((Object)(object)component != (Object)null) || !component.active) { terrainHit = true; ObjectPoolExtensions.Spawn(nailTerrainImpactEffectPrefab, Vector2.op_Implicit(((RaycastHit2D)(ref val5)).point), Quaternion.Euler(0f, 0f, Random.Range(0f, 360f))); if ((int)attackDir != 0) { if ((int)attackDir == 1) { RecoilDown(); } } else if (cState.facingRight) { RecoilLeft(); } else { RecoilRight(); } } } thunkTimer -= Time.deltaTime; } yield return null; } } private bool CheckStillTouchingWall(CollisionSide side, bool checkTop = false) { //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_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: 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_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: 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_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Invalid comparison between Unknown and I4 //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Invalid comparison between Unknown and I4 //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: 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_018e: Unknown result type (might be due to invalid IL or missing references) //IL_018f: 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_01a0: 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_01e5: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) Bounds bounds = col2d.bounds; float x = ((Bounds)(ref bounds)).min.x; bounds = col2d.bounds; Vector2 val = default(Vector2); ((Vector2)(ref val))..ctor(x, ((Bounds)(ref bounds)).max.y); bounds = col2d.bounds; float x2 = ((Bounds)(ref bounds)).min.x; bounds = col2d.bounds; Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor(x2, ((Bounds)(ref bounds)).center.y); bounds = col2d.bounds; float x3 = ((Bounds)(ref bounds)).min.x; bounds = col2d.bounds; Vector2 val3 = default(Vector2); ((Vector2)(ref val3))..ctor(x3, ((Bounds)(ref bounds)).min.y); bounds = col2d.bounds; float x4 = ((Bounds)(ref bounds)).max.x; bounds = col2d.bounds; Vector2 val4 = default(Vector2); ((Vector2)(ref val4))..ctor(x4, ((Bounds)(ref bounds)).max.y); bounds = col2d.bounds; float x5 = ((Bounds)(ref bounds)).max.x; bounds = col2d.bounds; Vector2 val5 = default(Vector2); ((Vector2)(ref val5))..ctor(x5, ((Bounds)(ref bounds)).center.y); bounds = col2d.bounds; float x6 = ((Bounds)(ref bounds)).max.x; bounds = col2d.bounds; Vector2 val6 = default(Vector2); ((Vector2)(ref val6))..ctor(x6, ((Bounds)(ref bounds)).min.y); float num = 0.1f; RaycastHit2D val7 = default(RaycastHit2D); RaycastHit2D val8 = default(RaycastHit2D); RaycastHit2D val9 = default(RaycastHit2D); bool flag = false; bool flag2 = false; bool flag3 = false; if ((int)side != 1) { if ((int)side != 2) { Debug.LogError((object)"Invalid CollisionSide specified."); return false; } if (checkTop) { val7 = Physics2D.Raycast(val4, Vector2.right, num, 256); } val8 = Physics2D.Raycast(val5, Vector2.right, num, 256); val9 = Physics2D.Raycast(val6, Vector2.right, num, 256); } else { if (checkTop) { val7 = Physics2D.Raycast(val, Vector2.left, num, 256); } val8 = Physics2D.Raycast(val2, Vector2.left, num, 256); val9 = Physics2D.Raycast(val3, Vector2.left, num, 256); } if ((Object)(object)((RaycastHit2D)(ref val8)).collider != (Object)null) { flag2 = true; if (((RaycastHit2D)(ref val8)).collider.isTrigger) { flag2 = false; } if ((Object)(object)((Component)((RaycastHit2D)(ref val8)).collider).GetComponent() != (Object)null) { flag2 = false; } if ((Object)(object)((Component)((RaycastHit2D)(ref val8)).collider).GetComponent() != (Object)null) { flag2 = false; } if (flag2) { return true; } } if ((Object)(object)((RaycastHit2D)(ref val9)).collider != (Object)null) { flag3 = true; if (((RaycastHit2D)(ref val9)).collider.isTrigger) { flag3 = false; } if ((Object)(object)((Component)((RaycastHit2D)(ref val9)).collider).GetComponent() != (Object)null) { flag3 = false; } if ((Object)(object)((Component)((RaycastHit2D)(ref val9)).collider).GetComponent() != (Object)null) { flag3 = false; } if (flag3) { return true; } } if (checkTop && (Object)(object)((RaycastHit2D)(ref val7)).collider != (Object)null) { flag = true; if (((RaycastHit2D)(ref val7)).collider.isTrigger) { flag = false; } if ((Object)(object)((Component)((RaycastHit2D)(ref val7)).collider).GetComponent() != (Object)null) { flag = false; } if ((Object)(object)((Component)((RaycastHit2D)(ref val7)).collider).GetComponent() != (Object)null) { flag = false; } if (flag) { return true; } } return false; } public bool CheckForBump(CollisionSide side) { //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_001d: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: 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_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_005e: 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_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0092: 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_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_011b: 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_0123: Invalid comparison between Unknown and I4 //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_0189: 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_0196: 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_019d: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Invalid comparison between Unknown and I4 //IL_01b6: 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_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Unknown result type (might be due to invalid IL or missing references) //IL_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: 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) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Unknown result type (might be due to invalid IL or missing references) //IL_0225: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_0229: 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) //IL_023a: 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_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Invalid comparison between Unknown and I4 //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_0292: Unknown result type (might be due to invalid IL or missing references) //IL_0294: 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) //IL_02a5: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02b3: Unknown result type (might be due to invalid IL or missing references) //IL_02b5: Invalid comparison between Unknown and I4 //IL_02c8: Unknown result type (might be due to invalid IL or missing references) //IL_02cd: Unknown result type (might be due to invalid IL or missing references) //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_02d4: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02e5: Unknown result type (might be due to invalid IL or missing references) //IL_02ea: Unknown result type (might be due to invalid IL or missing references) //IL_02fe: Unknown result type (might be due to invalid IL or missing references) //IL_0300: Unknown result type (might be due to invalid IL or missing references) //IL_0307: Unknown result type (might be due to invalid IL or missing references) //IL_030c: Unknown result type (might be due to invalid IL or missing references) //IL_0311: Unknown result type (might be due to invalid IL or missing references) //IL_0331: Unknown result type (might be due to invalid IL or missing references) //IL_0333: Unknown result type (might be due to invalid IL or missing references) //IL_033a: Unknown result type (might be due to invalid IL or missing references) //IL_033f: Unknown result type (might be due to invalid IL or missing references) //IL_0344: Unknown result type (might be due to invalid IL or missing references) //IL_0355: Unknown result type (might be due to invalid IL or missing references) //IL_0361: Unknown result type (might be due to invalid IL or missing references) float num = 0.025f; float num2 = 0.2f; Bounds bounds = col2d.bounds; float num3 = ((Bounds)(ref bounds)).min.x + num2; bounds = col2d.bounds; Vector2 val = default(Vector2); ((Vector2)(ref val))..ctor(num3, ((Bounds)(ref bounds)).min.y + 0.2f); bounds = col2d.bounds; float num4 = ((Bounds)(ref bounds)).min.x + num2; bounds = col2d.bounds; Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor(num4, ((Bounds)(ref bounds)).min.y - num); bounds = col2d.bounds; float num5 = ((Bounds)(ref bounds)).max.x - num2; bounds = col2d.bounds; Vector2 val3 = default(Vector2); ((Vector2)(ref val3))..ctor(num5, ((Bounds)(ref bounds)).min.y + 0.2f); bounds = col2d.bounds; float num6 = ((Bounds)(ref bounds)).max.x - num2; bounds = col2d.bounds; Vector2 val4 = default(Vector2); ((Vector2)(ref val4))..ctor(num6, ((Bounds)(ref bounds)).min.y - num); float num7 = 0.32f + num2; RaycastHit2D val5 = default(RaycastHit2D); RaycastHit2D val6 = default(RaycastHit2D); if ((int)side != 1) { if ((int)side == 2) { Debug.DrawLine(Vector2.op_Implicit(val4), Vector2.op_Implicit(val4 + Vector2.right * num7), Color.cyan, 0.15f); Debug.DrawLine(Vector2.op_Implicit(val3), Vector2.op_Implicit(val3 + Vector2.right * num7), Color.cyan, 0.15f); val6 = Physics2D.Raycast(val4, Vector2.right, num7, 256); val5 = Physics2D.Raycast(val3, Vector2.right, num7, 256); } else { Debug.LogError((object)"Invalid CollisionSide specified."); } } else { Debug.DrawLine(Vector2.op_Implicit(val2), Vector2.op_Implicit(val2 + Vector2.left * num7), Color.cyan, 0.15f); Debug.DrawLine(Vector2.op_Implicit(val), Vector2.op_Implicit(val + Vector2.left * num7), Color.cyan, 0.15f); val6 = Physics2D.Raycast(val2, Vector2.left, num7, 256); val5 = Physics2D.Raycast(val, Vector2.left, num7, 256); } if ((Object)(object)((RaycastHit2D)(ref val6)).collider != (Object)null && (Object)(object)((RaycastHit2D)(ref val5)).collider == (Object)null) { Vector2 val7 = ((RaycastHit2D)(ref val6)).point + new Vector2(((int)side == 2) ? 0.1f : (-0.1f), 1f); RaycastHit2D val8 = Physics2D.Raycast(val7, Vector2.down, 1.5f, 256); Vector2 val9 = ((RaycastHit2D)(ref val6)).point + new Vector2(((int)side == 2) ? (-0.1f) : 0.1f, 1f); RaycastHit2D val10 = Physics2D.Raycast(val9, Vector2.down, 1.5f, 256); if ((Object)(object)((RaycastHit2D)(ref val8)).collider != (Object)null) { Debug.DrawLine(Vector2.op_Implicit(val7), Vector2.op_Implicit(((RaycastHit2D)(ref val8)).point), Color.cyan, 0.15f); if (!((Object)(object)((RaycastHit2D)(ref val10)).collider != (Object)null)) { return true; } Debug.DrawLine(Vector2.op_Implicit(val9), Vector2.op_Implicit(((RaycastHit2D)(ref val10)).point), Color.cyan, 0.15f); float num8 = ((RaycastHit2D)(ref val8)).point.y - ((RaycastHit2D)(ref val10)).point.y; if (num8 > 0f) { Debug.Log((object)("Bump Height: " + num8)); return true; } } } return false; } public bool CheckNearRoof() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: 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_002b: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0044: 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_005e: 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_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_007b: 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_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) Bounds bounds = col2d.bounds; Vector2 val = Vector2.op_Implicit(((Bounds)(ref bounds)).max); bounds = col2d.bounds; float x = ((Bounds)(ref bounds)).min.x; bounds = col2d.bounds; Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor(x, ((Bounds)(ref bounds)).max.y); bounds = col2d.bounds; float x2 = ((Bounds)(ref bounds)).center.x; bounds = col2d.bounds; new Vector2(x2, ((Bounds)(ref bounds)).max.y); bounds = col2d.bounds; float x3 = ((Bounds)(ref bounds)).center.x; bounds = col2d.bounds; float num = x3 + ((Bounds)(ref bounds)).size.x / 4f; bounds = col2d.bounds; Vector2 val3 = default(Vector2); ((Vector2)(ref val3))..ctor(num, ((Bounds)(ref bounds)).max.y); bounds = col2d.bounds; float x4 = ((Bounds)(ref bounds)).center.x; bounds = col2d.bounds; float num2 = x4 - ((Bounds)(ref bounds)).size.x / 4f; bounds = col2d.bounds; Vector2 val4 = new Vector2(num2, ((Bounds)(ref bounds)).max.y); Vector2 val5 = default(Vector2); ((Vector2)(ref val5))..ctor(-0.5f, 1f); Vector2 val6 = default(Vector2); ((Vector2)(ref val6))..ctor(0.5f, 1f); Vector2 up = Vector2.up; RaycastHit2D val7 = Physics2D.Raycast(val2, val5, 2f, 256); RaycastHit2D val8 = Physics2D.Raycast(val, val6, 2f, 256); RaycastHit2D val9 = Physics2D.Raycast(val3, up, 1f, 256); RaycastHit2D val10 = Physics2D.Raycast(val4, up, 1f, 256); if ((Object)(object)((RaycastHit2D)(ref val7)).collider != (Object)null || (Object)(object)((RaycastHit2D)(ref val8)).collider != (Object)null || (Object)(object)((RaycastHit2D)(ref val9)).collider != (Object)null || (Object)(object)((RaycastHit2D)(ref val10)).collider != (Object)null) { return true; } return false; } public bool CheckTouchingGround() { //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_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: 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_005e: 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_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_007b: 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_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: 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_00aa: 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_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: 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_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) Bounds bounds = col2d.bounds; float x = ((Bounds)(ref bounds)).min.x; bounds = col2d.bounds; Vector2 val = default(Vector2); ((Vector2)(ref val))..ctor(x, ((Bounds)(ref bounds)).center.y); bounds = col2d.bounds; Vector2 val2 = Vector2.op_Implicit(((Bounds)(ref bounds)).center); bounds = col2d.bounds; float x2 = ((Bounds)(ref bounds)).max.x; bounds = col2d.bounds; Vector2 val3 = new Vector2(x2, ((Bounds)(ref bounds)).center.y); bounds = col2d.bounds; float num = ((Bounds)(ref bounds)).extents.y + 0.16f; Debug.DrawRay(Vector2.op_Implicit(val), Vector2.op_Implicit(Vector2.down), Color.yellow); Debug.DrawRay(Vector2.op_Implicit(val2), Vector2.op_Implicit(Vector2.down), Color.yellow); Debug.DrawRay(Vector2.op_Implicit(val3), Vector2.op_Implicit(Vector2.down), Color.yellow); RaycastHit2D val4 = Physics2D.Raycast(val, Vector2.down, num, 256); RaycastHit2D val5 = Physics2D.Raycast(val2, Vector2.down, num, 256); RaycastHit2D val6 = Physics2D.Raycast(val3, Vector2.down, num, 256); if ((Object)(object)((RaycastHit2D)(ref val4)).collider != (Object)null || (Object)(object)((RaycastHit2D)(ref val5)).collider != (Object)null || (Object)(object)((RaycastHit2D)(ref val6)).collider != (Object)null) { return true; } return false; } private List CheckTouching(PhysLayers layer) { //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_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0068: 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_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_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0080: 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_0085: 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_008c: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: 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_009c: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: 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_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) List list = new List(4); Bounds bounds = col2d.bounds; Vector3 center = ((Bounds)(ref bounds)).center; bounds = col2d.bounds; float num = ((Bounds)(ref bounds)).extents.x + 0.16f; bounds = col2d.bounds; float num2 = ((Bounds)(ref bounds)).extents.y + 0.16f; RaycastHit2D val = Physics2D.Raycast(Vector2.op_Implicit(center), Vector2.up, num2, 1 << (int)layer); RaycastHit2D val2 = Physics2D.Raycast(Vector2.op_Implicit(center), Vector2.right, num, 1 << (int)layer); RaycastHit2D val3 = Physics2D.Raycast(Vector2.op_Implicit(center), Vector2.down, num2, 1 << (int)layer); RaycastHit2D val4 = Physics2D.Raycast(Vector2.op_Implicit(center), Vector2.left, num, 1 << (int)layer); if ((Object)(object)((RaycastHit2D)(ref val)).collider != (Object)null) { list.Add((CollisionSide)0); } if ((Object)(object)((RaycastHit2D)(ref val2)).collider != (Object)null) { list.Add((CollisionSide)2); } if ((Object)(object)((RaycastHit2D)(ref val3)).collider != (Object)null) { list.Add((CollisionSide)3); } if ((Object)(object)((RaycastHit2D)(ref val4)).collider != (Object)null) { list.Add((CollisionSide)1); } return list; } private List CheckTouchingAdvanced(PhysLayers layer) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0050: 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_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0080: 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_0089: 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_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: 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) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0180: 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_0195: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: 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_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_021a: 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_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_0226: 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_0233: Unknown result type (might be due to invalid IL or missing references) //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_0240: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0250: Unknown result type (might be due to invalid IL or missing references) //IL_0255: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_0265: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_026c: 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_0279: Unknown result type (might be due to invalid IL or missing references) //IL_027c: Unknown result type (might be due to invalid IL or missing references) //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_0283: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_0286: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) //IL_0294: 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) //IL_029b: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02a8: Unknown result type (might be due to invalid IL or missing references) //IL_02ab: Unknown result type (might be due to invalid IL or missing references) //IL_02ad: Unknown result type (might be due to invalid IL or missing references) //IL_02b2: Unknown result type (might be due to invalid IL or missing references) //IL_02b4: Unknown result type (might be due to invalid IL or missing references) //IL_02bf: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_02c4: Unknown result type (might be due to invalid IL or missing references) //IL_02c9: Unknown result type (might be due to invalid IL or missing references) //IL_02cb: Unknown result type (might be due to invalid IL or missing references) //IL_02cc: Unknown result type (might be due to invalid IL or missing references) //IL_02d7: Unknown result type (might be due to invalid IL or missing references) //IL_02da: Unknown result type (might be due to invalid IL or missing references) //IL_02dc: Unknown result type (might be due to invalid IL or missing references) //IL_02e1: Unknown result type (might be due to invalid IL or missing references) List list = new List(); Bounds bounds = col2d.bounds; float x = ((Bounds)(ref bounds)).min.x; bounds = col2d.bounds; Vector2 val = default(Vector2); ((Vector2)(ref val))..ctor(x, ((Bounds)(ref bounds)).max.y); bounds = col2d.bounds; float x2 = ((Bounds)(ref bounds)).center.x; bounds = col2d.bounds; Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor(x2, ((Bounds)(ref bounds)).max.y); bounds = col2d.bounds; float x3 = ((Bounds)(ref bounds)).max.x; bounds = col2d.bounds; Vector2 val3 = default(Vector2); ((Vector2)(ref val3))..ctor(x3, ((Bounds)(ref bounds)).max.y); bounds = col2d.bounds; float x4 = ((Bounds)(ref bounds)).min.x; bounds = col2d.bounds; Vector2 val4 = new Vector2(x4, ((Bounds)(ref bounds)).center.y); bounds = col2d.bounds; float x5 = ((Bounds)(ref bounds)).max.x; bounds = col2d.bounds; Vector2 val5 = default(Vector2); ((Vector2)(ref val5))..ctor(x5, ((Bounds)(ref bounds)).center.y); bounds = col2d.bounds; float x6 = ((Bounds)(ref bounds)).min.x; bounds = col2d.bounds; Vector2 val6 = new Vector2(x6, ((Bounds)(ref bounds)).min.y); bounds = col2d.bounds; float x7 = ((Bounds)(ref bounds)).center.x; bounds = col2d.bounds; Vector2 val7 = new Vector2(x7, ((Bounds)(ref bounds)).min.y); bounds = col2d.bounds; float x8 = ((Bounds)(ref bounds)).max.x; bounds = col2d.bounds; Vector2 val8 = new Vector2(x8, ((Bounds)(ref bounds)).min.y); RaycastHit2D val9 = Physics2D.Raycast(val, Vector2.up, 0.16f, 1 << (int)layer); RaycastHit2D val10 = Physics2D.Raycast(val2, Vector2.up, 0.16f, 1 << (int)layer); RaycastHit2D val11 = Physics2D.Raycast(val3, Vector2.up, 0.16f, 1 << (int)layer); RaycastHit2D val12 = Physics2D.Raycast(val3, Vector2.right, 0.16f, 1 << (int)layer); RaycastHit2D val13 = Physics2D.Raycast(val5, Vector2.right, 0.16f, 1 << (int)layer); RaycastHit2D val14 = Physics2D.Raycast(val8, Vector2.right, 0.16f, 1 << (int)layer); RaycastHit2D val15 = Physics2D.Raycast(val8, Vector2.down, 0.16f, 1 << (int)layer); RaycastHit2D val16 = Physics2D.Raycast(val7, Vector2.down, 0.16f, 1 << (int)layer); RaycastHit2D val17 = Physics2D.Raycast(val6, Vector2.down, 0.16f, 1 << (int)layer); RaycastHit2D val18 = Physics2D.Raycast(val6, Vector2.left, 0.16f, 1 << (int)layer); RaycastHit2D val19 = Physics2D.Raycast(val4, Vector2.left, 0.16f, 1 << (int)layer); RaycastHit2D val20 = Physics2D.Raycast(val, Vector2.left, 0.16f, 1 << (int)layer); if ((Object)(object)((RaycastHit2D)(ref val9)).collider != (Object)null || (Object)(object)((RaycastHit2D)(ref val10)).collider != (Object)null || (Object)(object)((RaycastHit2D)(ref val11)).collider != (Object)null) { list.Add((CollisionSide)0); } if ((Object)(object)((RaycastHit2D)(ref val12)).collider != (Object)null || (Object)(object)((RaycastHit2D)(ref val13)).collider != (Object)null || (Object)(object)((RaycastHit2D)(ref val14)).collider != (Object)null) { list.Add((CollisionSide)2); } if ((Object)(object)((RaycastHit2D)(ref val15)).collider != (Object)null || (Object)(object)((RaycastHit2D)(ref val16)).collider != (Object)null || (Object)(object)((RaycastHit2D)(ref val17)).collider != (Object)null) { list.Add((CollisionSide)3); } if ((Object)(object)((RaycastHit2D)(ref val18)).collider != (Object)null || (Object)(object)((RaycastHit2D)(ref val19)).collider != (Object)null || (Object)(object)((RaycastHit2D)(ref val20)).collider != (Object)null) { list.Add((CollisionSide)1); } return list; } private CollisionSide FindCollisionDirection(Collision2D collision) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) Vector2 normal = Collision2DUtils.GetSafeContact(collision).Normal; float x = normal.x; float y = normal.y; if (!(y >= 0.5f)) { if (!(y <= -0.5f)) { if (!(x < 0f)) { if (!(x > 0f)) { Debug.LogError((object)("ERROR: unable to determine direction of collision - contact points at (" + normal.x + "," + normal.y + ")")); return (CollisionSide)3; } return (CollisionSide)1; } return (CollisionSide)2; } return (CollisionSide)0; } return (CollisionSide)3; } private bool CanJump() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Invalid comparison between Unknown and I4 //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Invalid comparison between Unknown and I4 if ((int)hero_state != 7 && (int)hero_state != 5 && (int)hero_state != 6 && !cState.wallSliding && !cState.dashing && !cState.backDashing && !cState.jumping && !cState.bouncing && !cState.shroomBouncing) { if (cState.onGround) { return true; } if (ledgeBufferSteps > 0 && !cState.dead && !cState.hazardDeath && !controlReqlinquished && headBumpSteps <= 0 && !CheckNearRoof()) { ledgeBufferSteps = 0; return true; } return false; } return false; } private bool CanDoubleJump() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Invalid comparison between Unknown and I4 //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Invalid comparison between Unknown and I4 //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Invalid comparison between Unknown and I4 if (playerData.hasDoubleJump && !controlReqlinquished && !doubleJumped && !inAcid && (int)hero_state != 7 && (int)hero_state != 5 && (int)hero_state != 6 && !cState.dashing && !cState.wallSliding && !cState.backDashing && !cState.attacking && !cState.bouncing && !cState.shroomBouncing && !cState.onGround) { return true; } return false; } private bool CanInfiniteAirJump() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Invalid comparison between Unknown and I4 if (playerData.infiniteAirJump && (int)hero_state != 5 && !cState.onGround) { return true; } return false; } private bool CanSwim() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Invalid comparison between Unknown and I4 //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Invalid comparison between Unknown and I4 if ((int)hero_state != 7 && (int)hero_state != 5 && (int)hero_state != 6 && !cState.attacking && !cState.dashing && !cState.jumping && !cState.bouncing && !cState.shroomBouncing && !cState.onGround && inAcid) { return true; } return false; } private bool CanDash() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Invalid comparison between Unknown and I4 //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Invalid comparison between Unknown and I4 if ((int)hero_state != 7 && (int)hero_state != 5 && (int)hero_state != 6 && dashCooldownTimer <= 0f && !cState.dashing && !cState.backDashing && (!cState.attacking || !(attack_time < ATTACK_RECOVERY_TIME)) && !cState.preventDash && (cState.onGround || !airDashed || cState.wallSliding) && !cState.hazardDeath && playerData.canDash) { return true; } return false; } private bool CanAttack() { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Invalid comparison between Unknown and I4 //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Invalid comparison between Unknown and I4 //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Invalid comparison between Unknown and I4 if (attack_cooldown <= 0f && !cState.attacking && !cState.dashing && !cState.dead && !cState.hazardDeath && !cState.hazardRespawning && !controlReqlinquished && (int)hero_state != 7 && (int)hero_state != 5 && (int)hero_state != 6) { return true; } return false; } private bool CanNailCharge() { if (!cState.attacking && !controlReqlinquished && !cState.recoiling && !cState.recoilingLeft && !cState.recoilingRight && playerData.hasNailArt) { return true; } return false; } private bool CanWallSlide() { if (cState.wallSliding && gm.isPaused) { return true; } if (!cState.touchingNonSlider && !inAcid && !cState.dashing && playerData.GetBool("hasWalljump") && !cState.onGround && !cState.recoiling && !gm.isPaused && !controlReqlinquished && !cState.transitioning && (cState.falling || cState.wallSliding) && !cState.doubleJumping && CanInput()) { return true; } return false; } private bool CanTakeDamage() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 //IL_000a: Unknown result type (might be due to invalid IL or missing references) if ((int)damageMode != 2 && (int)transitionState == 0 && !cState.invulnerable && !cState.recoiling && !playerData.isInvincible && !cState.dead && !cState.hazardDeath && !BossSceneController.IsTransitioning) { return true; } return false; } private bool CanWallJump() { if (playerData.GetBool("hasWalljump")) { if (cState.touchingNonSlider) { return false; } if (cState.wallSliding) { return true; } if (cState.touchingWall && !cState.onGround) { return true; } return false; } return false; } private bool ShouldHardLand(Collision2D collision) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 if (!Object.op_Implicit((Object)(object)collision.gameObject.GetComponent()) && cState.willHardLand && !inAcid && (int)hero_state != 5) { return true; } return false; } private void OnCollisionEnter2D(Collision2D collision) { //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Invalid comparison between Unknown and I4 //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Invalid comparison between Unknown and I4 //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Invalid comparison between Unknown and I4 //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Invalid comparison between Unknown and I4 //IL_01d4: 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_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Invalid comparison between Unknown and I4 if (cState.superDashing && (CheckStillTouchingWall((CollisionSide)1) || CheckStillTouchingWall((CollisionSide)2))) { superDash.SendEvent("HIT WALL"); } if ((collision.gameObject.layer == 8 || collision.gameObject.CompareTag("HeroWalkable")) && CheckTouchingGround()) { proxyFSM.SendEvent("HeroCtrl-Landed"); } if ((int)hero_state != 7) { CollisionSide val = FindCollisionDirection(collision); if (collision.gameObject.layer != 8 && !collision.gameObject.CompareTag("HeroWalkable")) { return; } fallTrailGenerated = false; if ((int)val == 0) { headBumpSteps = HEAD_BUMP_STEPS; if (cState.jumping) { CancelJump(); CancelDoubleJump(); } if (cState.bouncing) { CancelBounce(); rb2d.velocity = new Vector2(rb2d.velocity.x, 0f); } if (cState.shroomBouncing) { CancelBounce(); rb2d.velocity = new Vector2(rb2d.velocity.x, 0f); } } if ((int)val == 3) { if (cState.attacking) { CancelDownAttack(); } if (ShouldHardLand(collision)) { DoHardLanding(); } else if ((Object)(object)collision.gameObject.GetComponent() == (Object)null && (int)hero_state != 5) { BackOnGround(); } if (cState.dashing && dashingDown) { AffectedByGravity(gravityApplies: true); SetState((ActorStates)6); hardLanded = true; } } } else if ((int)hero_state == 7 && (int)transitionState == 4 && ((int)gatePosition == 3 || (int)gatePosition == 0)) { FinishedEnteringScene(); } } private void OnCollisionStay2D(Collision2D collision) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Invalid comparison between Unknown and I4 //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Invalid comparison between Unknown and I4 //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Invalid comparison between Unknown and I4 if (cState.superDashing && (CheckStillTouchingWall((CollisionSide)1) || CheckStillTouchingWall((CollisionSide)2))) { superDash.SendEvent("HIT WALL"); } if ((int)hero_state == 7 || collision.gameObject.layer != 8) { return; } if ((Object)(object)collision.gameObject.GetComponent() == (Object)null) { cState.touchingNonSlider = false; if (CheckStillTouchingWall((CollisionSide)1)) { cState.touchingWall = true; touchingWallL = true; touchingWallR = false; } else if (CheckStillTouchingWall((CollisionSide)2)) { cState.touchingWall = true; touchingWallL = false; touchingWallR = true; } else { cState.touchingWall = false; touchingWallL = false; touchingWallR = false; } if (CheckTouchingGround()) { if (ShouldHardLand(collision)) { DoHardLanding(); } else if ((int)hero_state != 5 && (int)hero_state != 6 && cState.falling) { BackOnGround(); } } else if (cState.jumping || cState.falling) { cState.onGround = false; proxyFSM.SendEvent("HeroCtrl-LeftGround"); SetState((ActorStates)3); } } else { cState.touchingNonSlider = true; } } private void OnCollisionExit2D(Collision2D collision) { //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Invalid comparison between Unknown and I4 if (cState.recoilingLeft || cState.recoilingRight) { cState.touchingWall = false; touchingWallL = false; touchingWallR = false; cState.touchingNonSlider = false; } if (touchingWallL && !CheckStillTouchingWall((CollisionSide)1)) { cState.touchingWall = false; touchingWallL = false; } if (touchingWallR && !CheckStillTouchingWall((CollisionSide)2)) { cState.touchingWall = false; touchingWallR = false; } if ((int)hero_state == 7 || cState.recoiling || collision.gameObject.layer != 8 || CheckTouchingGround()) { return; } if (!cState.jumping && !fallTrailGenerated && cState.onGround) { if (playerData.environmentType != 6) { fsm_fallTrail.SendEvent("PLAY"); } fallTrailGenerated = true; } cState.onGround = false; proxyFSM.SendEvent("HeroCtrl-LeftGround"); SetState((ActorStates)3); if (cState.wasOnGround) { ledgeBufferSteps = LEDGE_BUFFER_STEPS; } } private void SetupGameRefs() { //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) if (cState == null) { cState = new HeroControllerStates(); } gm = GameManager.instance; animCtrl = ((Component)this).GetComponent(); rb2d = ((Component)this).GetComponent(); col2d = ((Component)this).GetComponent(); transform = ((Component)this).GetComponent(); renderer = ((Component)this).GetComponent(); audioCtrl = ((Component)this).GetComponent(); inputHandler = ((Component)gm).GetComponent(); proxyFSM = FSMUtility.LocateFSM(((Component)this).gameObject, "ProxyFSM"); audioSource = ((Component)this).GetComponent(); if (!Object.op_Implicit((Object)(object)footStepsRunAudioSource)) { footStepsRunAudioSource = ((Component)transform.Find("Sounds/FootstepsRun")).GetComponent(); } if (!Object.op_Implicit((Object)(object)footStepsWalkAudioSource)) { footStepsWalkAudioSource = ((Component)transform.Find("Sounds/FootstepsWalk")).GetComponent(); } invPulse = ((Component)this).GetComponent(); spriteFlash = ((Component)this).GetComponent(); gm.UnloadingLevel += OnLevelUnload; prevGravityScale = DEFAULT_GRAVITY; transition_vel = Vector2.zero; current_velocity = Vector2.zero; acceptingInput = true; positionHistory = (Vector2[])(object)new Vector2[2]; if (!Object.op_Implicit((Object)(object)artChargedEffectAnim)) { artChargedEffectAnim = ((Component)transform.Find("Effects").Find("NA Charged")).GetComponent(); } } private void SetupPools() { } private void FilterInput() { if (move_input > 0.3f) { move_input = 1f; } else if (move_input < -0.3f) { move_input = -1f; } else { move_input = 0f; } if (vertical_input > 0.5f) { vertical_input = 1f; } else if (vertical_input < -0.5f) { vertical_input = -1f; } else { vertical_input = 0f; } } public unsafe Vector3 FindGroundPoint(Vector2 startPoint, bool useExtended = false) { //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_001d: 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_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) float num = FIND_GROUND_POINT_DISTANCE; if (useExtended) { num = FIND_GROUND_POINT_DISTANCE_EXT; } RaycastHit2D val = Physics2D.Raycast(startPoint, Vector2.down, num, 256); if ((Object)(object)((RaycastHit2D)(ref val)).collider == (Object)null) { Debug.LogErrorFormat("FindGroundPoint: Could not find ground point below {0}, check reference position is not too high (more than {1} tiles).", new object[2] { ((object)(*(Vector2*)(&startPoint))/*cast due to .constrained prefix*/).ToString(), num }); } float x = ((RaycastHit2D)(ref val)).point.x; float y = ((RaycastHit2D)(ref val)).point.y; Bounds bounds = col2d.bounds; return new Vector3(x, y + ((Bounds)(ref bounds)).extents.y - col2d.offset.y + 0.01f, transform.position.z); } private float FindGroundPointY(float x, float y, bool useExtended = false) { //IL_0013: 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_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_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: 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_008e: Unknown result type (might be due to invalid IL or missing references) float num = FIND_GROUND_POINT_DISTANCE; if (useExtended) { num = FIND_GROUND_POINT_DISTANCE_EXT; } RaycastHit2D val = Physics2D.Raycast(new Vector2(x, y), Vector2.down, num, 256); if ((Object)(object)((RaycastHit2D)(ref val)).collider == (Object)null) { Debug.LogErrorFormat("FindGroundPoint: Could not find ground point below ({0},{1}), check reference position is not too high (more than {2} tiles).", new object[3] { x, y, num }); } float y2 = ((RaycastHit2D)(ref val)).point.y; Bounds bounds = col2d.bounds; return y2 + ((Bounds)(ref bounds)).extents.y - col2d.offset.y + 0.01f; } } [Serializable] public class HeroControllerStates { public bool facingRight; public bool onGround; public bool jumping; public bool wallJumping; public bool doubleJumping; public bool nailCharging; public bool shadowDashing; public bool swimming; public bool falling; public bool dashing; public bool superDashing; public bool superDashOnWall; public bool backDashing; public bool touchingWall; public bool wallSliding; public bool transitioning; public bool attacking; public bool lookingUp; public bool lookingDown; public bool lookingUpAnim; public bool lookingDownAnim; public bool altAttack; public bool upAttacking; public bool downAttacking; public bool bouncing; public bool shroomBouncing; public bool recoilingRight; public bool recoilingLeft; public bool dead; public bool hazardDeath; public bool hazardRespawning; public bool willHardLand; public bool recoilFrozen; public bool recoiling; public bool invulnerable; public bool casting; public bool castRecoiling; public bool preventDash; public bool preventBackDash; public bool dashCooldown; public bool backDashCooldown; public bool nearBench; public bool inWalkZone; public bool isPaused; public bool onConveyor; public bool onConveyorV; public bool inConveyorZone; public bool spellQuake; public bool freezeCharge; public bool focusing; public bool inAcid; public bool slidingLeft; public bool slidingRight; public bool touchingNonSlider; public bool wasOnGround; public HeroControllerStates() { facingRight = false; Reset(); } public bool GetState(string stateName) { FieldInfo field = GetType().GetField(stateName); if (field != null) { return (bool)field.GetValue(HeroController.instance.cState); } Debug.LogError((object)("HeroControllerStates: Could not find bool named" + stateName + "in cState")); return false; } public void SetState(string stateName, bool value) { FieldInfo field = GetType().GetField(stateName); if (field != null) { try { field.SetValue(HeroController.instance.cState, value); return; } catch (Exception ex) { Debug.LogError((object)("Failed to set cState: " + ex)); return; } } Debug.LogError((object)("HeroControllerStates: Could not find bool named" + stateName + "in cState")); } public void Reset() { onGround = false; jumping = false; falling = false; dashing = false; backDashing = false; touchingWall = false; wallSliding = false; transitioning = false; attacking = false; lookingUp = false; lookingDown = false; altAttack = false; upAttacking = false; downAttacking = false; bouncing = false; dead = false; hazardDeath = false; willHardLand = false; recoiling = false; recoilFrozen = false; invulnerable = false; casting = false; castRecoiling = false; preventDash = false; preventBackDash = false; dashCooldown = false; backDashCooldown = false; } } public class NailSlash : MonoBehaviour { public string animName; public Vector3 scale; private HeroController heroCtrl; private PlayMakerFSM slashFsm; private tk2dSpriteAnimator anim; private MeshRenderer mesh; private float slashAngle; private bool struck; private bool longnail; private bool mantis; private bool fury; private bool slashing; private int stepCounter; private PolygonCollider2D poly; private int polyCounter; private bool animCompleted; private AudioSource audio; private PolygonCollider2D clashTinkPoly; private void Awake() { try { heroCtrl = ((Component)((Component)this).transform.root).GetComponent(); } catch (NullReferenceException ex) { Debug.LogError((object)("NailSlash: could not find HeroController on parent: " + ((Object)((Component)this).transform.root).name + " " + ex)); } audio = ((Component)this).GetComponent(); anim = ((Component)this).GetComponent(); slashFsm = ((Component)this).GetComponent(); poly = ((Component)this).GetComponent(); mesh = ((Component)this).GetComponent(); clashTinkPoly = ((Component)((Component)this).transform.Find("Clash Tink")).GetComponent(); ((Behaviour)poly).enabled = false; ((Renderer)mesh).enabled = false; } public void StartSlash() { //IL_00d3: 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_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) audio.Play(); slashAngle = slashFsm.FsmVariables.FindFsmFloat("direction").Value; if (mantis && longnail) { ((Component)this).transform.localScale = new Vector3(scale.x * 1.4f, scale.y * 1.4f, scale.z); anim.Play(animName + " M"); } else if (mantis) { ((Component)this).transform.localScale = new Vector3(scale.x * 1.25f, scale.y * 1.25f, scale.z); anim.Play(animName + " M"); } else if (longnail) { ((Component)this).transform.localScale = new Vector3(scale.x * 1.15f, scale.y * 1.15f, scale.z); anim.Play(animName); } else { ((Component)this).transform.localScale = scale; anim.Play(animName); } if (fury) { anim.Play(animName + " F"); } anim.PlayFromFrame(0); stepCounter = 0; polyCounter = 0; ((Behaviour)poly).enabled = false; ((Behaviour)clashTinkPoly).enabled = false; animCompleted = false; anim.AnimationCompleted = Disable; slashing = true; ((Renderer)mesh).enabled = true; } private void FixedUpdate() { if (slashing) { if (stepCounter == 1) { ((Behaviour)poly).enabled = true; ((Behaviour)clashTinkPoly).enabled = true; } if (stepCounter >= 5 && (float)polyCounter > 0f) { ((Behaviour)poly).enabled = false; ((Behaviour)clashTinkPoly).enabled = false; } if (animCompleted && polyCounter > 1) { CancelAttack(); } if (((Behaviour)poly).enabled) { polyCounter++; } stepCounter++; } } private void OnTriggerEnter2D(Collider2D otherCollider) { //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Invalid comparison between Unknown and I4 //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Invalid comparison between Unknown and I4 //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Invalid comparison between Unknown and I4 if (!((Object)(object)otherCollider != (Object)null)) { return; } if (slashAngle == 0f) { int layer = ((Component)otherCollider).gameObject.layer; if (layer == 11 && ((Object)(object)((Component)otherCollider).gameObject.GetComponent() == (Object)null || !((Component)otherCollider).gameObject.GetComponent().active)) { if ((Object)(object)((Component)otherCollider).gameObject.GetComponent() != (Object)null) { heroCtrl.RecoilLeftLong(); Bounce(otherCollider, useEffects: false); } else { heroCtrl.RecoilLeft(); } } if (layer == 19 && (Object)(object)((Component)otherCollider).gameObject.GetComponent() != (Object)null) { heroCtrl.RecoilLeftLong(); Bounce(otherCollider, useEffects: false); } } else if (slashAngle == 180f) { int layer2 = ((Component)otherCollider).gameObject.layer; if (layer2 == 11 && ((Object)(object)((Component)otherCollider).gameObject.GetComponent() == (Object)null || !((Component)otherCollider).gameObject.GetComponent().active)) { if ((Object)(object)((Component)otherCollider).gameObject.GetComponent() != (Object)null) { heroCtrl.RecoilRightLong(); Bounce(otherCollider, useEffects: false); } else { heroCtrl.RecoilRight(); } } if (layer2 == 19 && (Object)(object)((Component)otherCollider).gameObject.GetComponent() != (Object)null) { heroCtrl.RecoilRightLong(); Bounce(otherCollider, useEffects: false); } } else if (slashAngle == 90f) { int layer3 = ((Component)otherCollider).gameObject.layer; if (layer3 == 11 && ((Object)(object)((Component)otherCollider).gameObject.GetComponent() == (Object)null || !((Component)otherCollider).gameObject.GetComponent().active)) { if ((Object)(object)((Component)otherCollider).gameObject.GetComponent() != (Object)null) { heroCtrl.RecoilDown(); Bounce(otherCollider, useEffects: false); } else { heroCtrl.RecoilDown(); } } if (layer3 == 19 && (Object)(object)((Component)otherCollider).gameObject.GetComponent() != (Object)null) { heroCtrl.RecoilDown(); Bounce(otherCollider, useEffects: false); } } else { if (slashAngle != 270f) { return; } PhysLayers val = (PhysLayers)((Component)otherCollider).gameObject.layer; if (((int)val == 11 || (int)val == 19 || (int)val == 17) && ((Object)(object)((Component)otherCollider).gameObject.GetComponent() == (Object)null || !((Component)otherCollider).gameObject.GetComponent().active)) { if ((Object)(object)((Component)otherCollider).gameObject.GetComponent() != (Object)null) { heroCtrl.BounceHigh(); } else if ((Object)(object)((Component)otherCollider).gameObject.GetComponent() != (Object)null) { heroCtrl.ShroomBounce(); Bounce(otherCollider, useEffects: true); } else { heroCtrl.Bounce(); } } } } private void Bounce(Collider2D otherCollider, bool useEffects) { PlayMakerFSM val = FSMUtility.LocateFSM(((Component)otherCollider).gameObject, "Bounce Shroom"); if (Object.op_Implicit((Object)(object)val)) { val.SendEvent("BOUNCE UPWARD"); return; } BounceShroom component = ((Component)otherCollider).GetComponent(); if (Object.op_Implicit((Object)(object)component)) { component.BounceLarge(useEffects); } } private void OnTriggerStay2D(Collider2D otherCollider) { OnTriggerEnter2D(otherCollider); } private void Disable(tk2dSpriteAnimator sprite, tk2dSpriteAnimationClip clip) { animCompleted = true; } public void SetLongnail(bool set) { longnail = set; } public void SetMantis(bool set) { mantis = set; } public void SetFury(bool set) { fury = set; } public void CancelAttack() { slashing = false; ((Behaviour)poly).enabled = false; ((Behaviour)clashTinkPoly).enabled = false; ((Renderer)mesh).enabled = false; } } [Serializable] public class PlayerData { private enum MapBools { MapDirtmouth, MapCrossroads, MapGreenpath, MapFogCanyon, MapRoyalGardens, MapFungalWastes, MapCity, MapWaterways, MapMines, MapDeepnest, MapCliffs, MapOutskirts, MapRestingGrounds, MapAbyss } public string version; public bool awardAllAchievements; public int profileID; public float playTime; public float completionPercent; public bool openingCreditsPlayed; public int permadeathMode; public int health; public int maxHealth; public int maxHealthBase; public int healthBlue; public int joniHealthBlue; public bool damagedBlue; public int heartPieces; public bool heartPieceCollected; public int maxHealthCap; public bool heartPieceMax; public int prevHealth; public int blockerHits; public bool firstGeo; public int geo; public int maxMP; public int MPCharge; public int MPReserve; public int MPReserveMax; public bool soulLimited; public int vesselFragments; public bool vesselFragmentCollected; public int MPReserveCap; public bool vesselFragmentMax; public int focusMP_amount; public bool atBench; public string respawnScene; public MapZone mapZone; public string respawnMarkerName; public int respawnType; public bool respawnFacingRight; [NonSerialized] public Vector3 hazardRespawnLocation; public bool hazardRespawnFacingRight; public FacingDirection hazardRespawnFacing; public string shadeScene; public string shadeMapZone; public float shadePositionX; public float shadePositionY; public int shadeHealth; public int shadeMP; public int shadeFireballLevel; public int shadeQuakeLevel; public int shadeScreamLevel; public int shadeSpecialType; public Vector3 shadeMapPos; public Vector3 dreamgateMapPos; public int geoPool; public int nailDamage; public int nailRange; public int beamDamage; public bool canDash; public bool canBackDash; public bool canWallJump; public bool canSuperDash; public bool canShadowDash; public bool hasSpell; public int fireballLevel; public int quakeLevel; public int screamLevel; public bool hasNailArt; public bool hasCyclone; public bool hasDashSlash; public bool hasUpwardSlash; public bool hasAllNailArts; public bool hasDreamNail; public bool hasDreamGate; public bool dreamNailUpgraded; public int dreamOrbs; public int dreamOrbsSpent; public string dreamGateScene; public float dreamGateX; public float dreamGateY; public bool hasDash; public bool hasWalljump; public bool hasSuperDash; public bool hasShadowDash; public bool hasAcidArmour; public bool hasDoubleJump; public bool hasLantern; public bool hasTramPass; public bool hasQuill; public bool hasCityKey; public bool hasSlykey; public bool gaveSlykey; public bool hasWhiteKey; public bool usedWhiteKey; public bool hasMenderKey; public bool hasWaterwaysKey; public bool hasSpaKey; public bool hasLoveKey; public bool hasKingsBrand; public bool hasXunFlower; public int ghostCoins; public int ore; public bool foundGhostCoin; public int trinket1; public bool foundTrinket1; public int trinket2; public bool foundTrinket2; public int trinket3; public bool foundTrinket3; public int trinket4; public bool foundTrinket4; public bool noTrinket1; public bool noTrinket2; public bool noTrinket3; public bool noTrinket4; public int soldTrinket1; public int soldTrinket2; public int soldTrinket3; public int soldTrinket4; public int simpleKeys; public int rancidEggs; public bool notchShroomOgres; public bool notchFogCanyon; public bool gotLurkerKey; public float gMap_doorX; public float gMap_doorY; public string gMap_doorScene; public string gMap_doorMapZone; public float gMap_doorOriginOffsetX; public float gMap_doorOriginOffsetY; public float gMap_doorSceneWidth; public float gMap_doorSceneHeight; public int guardiansDefeated; public bool lurienDefeated; public bool hegemolDefeated; public bool monomonDefeated; public bool maskBrokenLurien; public bool maskBrokenHegemol; public bool maskBrokenMonomon; public int maskToBreak; public int elderbug; public bool metElderbug; public bool elderbugReintro; public int elderbugHistory; public bool elderbugHistory1; public bool elderbugHistory2; public bool elderbugHistory3; public bool elderbugSpeechSly; public bool elderbugSpeechStation; public bool elderbugSpeechEggTemple; public bool elderbugSpeechMapShop; public bool elderbugSpeechBretta; public bool elderbugSpeechJiji; public bool elderbugSpeechMinesLift; public bool elderbugSpeechKingsPass; public bool elderbugSpeechInfectedCrossroads; public bool elderbugSpeechFinalBossDoor; public bool elderbugRequestedFlower; public bool elderbugGaveFlower; public bool elderbugFirstCall; public bool metQuirrel; public int quirrelEggTemple; public int quirrelSlugShrine; public int quirrelRuins; public int quirrelMines; public bool quirrelLeftStation; public bool quirrelLeftEggTemple; public bool quirrelCityEncountered; public bool quirrelCityLeft; public bool quirrelMinesEncountered; public bool quirrelMinesLeft; public bool quirrelMantisEncountered; public bool enteredMantisLordArea; public bool visitedDeepnestSpa; public bool quirrelSpaReady; public bool quirrelSpaEncountered; public bool quirrelArchiveEncountered; public bool quirrelEpilogueCompleted; public bool metRelicDealer; public bool metRelicDealerShop; public bool marmOutside; public bool marmOutsideConvo; public bool marmConvo1; public bool marmConvo2; public bool marmConvo3; public bool marmConvoNailsmith; public int cornifer; public bool metCornifer; public bool corniferIntroduced; public bool corniferAtHome; public bool corn_crossroadsEncountered; public bool corn_crossroadsLeft; public bool corn_greenpathEncountered; public bool corn_greenpathLeft; public bool corn_fogCanyonEncountered; public bool corn_fogCanyonLeft; public bool corn_fungalWastesEncountered; public bool corn_fungalWastesLeft; public bool corn_cityEncountered; public bool corn_cityLeft; public bool corn_waterwaysEncountered; public bool corn_waterwaysLeft; public bool corn_minesEncountered; public bool corn_minesLeft; public bool corn_cliffsEncountered; public bool corn_cliffsLeft; public bool corn_deepnestEncountered; public bool corn_deepnestLeft; public bool corn_deepnestMet1; public bool corn_deepnestMet2; public bool corn_outskirtsEncountered; public bool corn_outskirtsLeft; public bool corn_royalGardensEncountered; public bool corn_royalGardensLeft; public bool corn_abyssEncountered; public bool corn_abyssLeft; public bool metIselda; public bool iseldaCorniferHomeConvo; public bool iseldaConvo1; public bool brettaRescued; public int brettaPosition; public int brettaState; public bool brettaSeenBench; public bool brettaSeenBed; public bool brettaSeenBenchDiary; public bool brettaSeenBedDiary; public bool brettaLeftTown; public bool slyRescued; public bool slyBeta; public bool metSlyShop; public bool gotSlyCharm; public bool slyShellFrag1; public bool slyShellFrag2; public bool slyShellFrag3; public bool slyShellFrag4; public bool slyVesselFrag1; public bool slyVesselFrag2; public bool slyVesselFrag3; public bool slyVesselFrag4; public bool slyNotch1; public bool slyNotch2; public bool slySimpleKey; public bool slyRancidEgg; public bool slyConvoNailArt; public bool slyConvoMapper; public bool slyConvoNailHoned; public bool jijiDoorUnlocked; public bool jijiMet; public bool jijiShadeOffered; public bool jijiShadeCharmConvo; public bool metJinn; public bool jinnConvo1; public bool jinnConvo2; public bool jinnConvo3; public bool jinnConvoKingBrand; public bool jinnConvoShadeCharm; public int jinnEggsSold; public int zote; public bool zoteRescuedBuzzer; public bool zoteDead; public int zoteDeathPos; public bool zoteSpokenCity; public bool zoteLeftCity; public bool zoteTrappedDeepnest; public bool zoteRescuedDeepnest; public bool zoteDefeated; public bool zoteSpokenColosseum; public int zotePrecept; public int zoteTownConvo; public int shaman; public bool shamanScreamConvo; public bool shamanQuakeConvo; public bool shamanFireball2Convo; public bool shamanScream2Convo; public bool shamanQuake2Convo; public bool metMiner; public int miner; public int minerEarly; public int hornetGreenpath; public int hornetFung; public bool hornet_f19; public bool hornetFountainEncounter; public bool hornetCityBridge_ready; public bool hornetCityBridge_completed; public bool hornetAbyssEncounter; public bool hornetDenEncounter; public bool metMoth; public bool ignoredMoth; public bool gladeDoorOpened; public bool mothDeparted; public bool completedRGDreamPlant; public bool dreamReward1; public bool dreamReward2; public bool dreamReward3; public bool dreamReward4; public bool dreamReward5; public bool dreamReward5b; public bool dreamReward6; public bool dreamReward7; public bool dreamReward8; public bool dreamReward9; public bool dreamMothConvo1; public bool bankerAccountPurchased; public bool metBanker; public int bankerBalance; public bool bankerDeclined; public bool bankerTheftCheck; public int bankerTheft; public bool bankerSpaMet; public bool metGiraffe; public bool metCharmSlug; public bool salubraNotch1; public bool salubraNotch2; public bool salubraNotch3; public bool salubraNotch4; public bool salubraBlessing; public bool salubraConvoCombo; public bool salubraConvoOvercharm; public bool salubraConvoTruth; public bool cultistTransformed; public bool metNailsmith; public int nailSmithUpgrades; public bool honedNail; public bool nailsmithCliff; public bool nailsmithKilled; public bool nailsmithSpared; public bool nailsmithKillSpeech; public bool nailsmithSheo; public bool nailsmithConvoArt; public bool metNailmasterMato; public bool metNailmasterSheo; public bool metNailmasterOro; public bool matoConvoSheo; public bool matoConvoOro; public bool matoConvoSly; public bool sheoConvoMato; public bool sheoConvoOro; public bool sheoConvoSly; public bool sheoConvoNailsmith; public bool oroConvoSheo; public bool oroConvoMato; public bool oroConvoSly; public bool hunterRoared; public bool metHunter; public bool hunterRewardOffered; public bool huntersMarkOffered; public bool hasHuntersMark; public bool metLegEater; public bool paidLegEater; public bool refusedLegEater; public bool legEaterConvo1; public bool legEaterConvo2; public bool legEaterConvo3; public bool legEaterBrokenConvo; public bool legEaterDungConvo; public bool legEaterInfectedCrossroadConvo; public bool legEaterBoughtConvo; public bool legEaterGoldConvo; public bool legEaterLeft; public bool tukMet; public int tukEggPrice; public bool tukDungEgg; public bool metEmilitia; public bool emilitiaKingsBrandConvo; public bool metCloth; public bool clothEnteredTramRoom; public bool savedCloth; public bool clothEncounteredQueensGarden; public bool clothKilled; public bool clothInTown; public bool clothLeftTown; public bool clothGhostSpoken; public bool bigCatHitTail; public bool bigCatHitTailConvo; public bool bigCatMeet; public bool bigCatTalk1; public bool bigCatTalk2; public bool bigCatTalk3; public bool bigCatKingsBrandConvo; public bool bigCatShadeConvo; public bool tisoEncounteredTown; public bool tisoEncounteredBench; public bool tisoEncounteredLake; public bool tisoEncounteredColosseum; public bool tisoDead; public bool tisoShieldConvo; public int mossCultist; public bool maskmakerMet; public bool maskmakerConvo1; public bool maskmakerConvo2; public bool maskmakerUnmasked1; public bool maskmakerUnmasked2; public bool maskmakerShadowDash; public bool maskmakerKingsBrand; public bool dungDefenderConvo1; public bool dungDefenderConvo2; public bool dungDefenderConvo3; public bool dungDefenderCharmConvo; public bool dungDefenderIsmaConvo; public bool dungDefenderAwoken; public bool dungDefenderLeft; public bool dungDefenderAwakeConvo; public bool midwifeMet; public bool midwifeConvo1; public bool midwifeConvo2; public bool metQueen; public bool queenTalk1; public bool queenTalk2; public bool queenDung1; public bool queenDung2; public bool queenHornet; public bool queenTalkExtra; public bool gotQueenFragment; public bool queenConvo_grimm1; public bool queenConvo_grimm2; public bool gotKingFragment; public bool metXun; public bool xunFailedConvo1; public bool xunFailedConvo2; public bool xunFlowerBroken; public int xunFlowerBrokeTimes; public bool xunFlowerGiven; public bool xunRewardGiven; public int menderState; public bool menderSignBroken; public bool allBelieverTabletsDestroyed; public int mrMushroomState; public bool openedMapperShop; public bool openedSlyShop; public bool metStag; public bool travelling; public int stagPosition; public int stationsOpened; public bool stagConvoTram; public bool stagConvoTiso; public bool stagRemember1; public bool stagRemember2; public bool stagRemember3; public bool stagEggInspected; public bool stagHopeConvo; public string nextScene; public bool littleFoolMet; public bool ranAway; public bool seenColosseumTitle; public bool colosseumBronzeOpened; public bool colosseumBronzeCompleted; public bool colosseumSilverOpened; public bool colosseumSilverCompleted; public bool colosseumGoldOpened; public bool colosseumGoldCompleted; public bool openedTown; public bool openedTownBuilding; public bool openedCrossroads; public bool openedGreenpath; public bool openedRuins1; public bool openedRuins2; public bool openedFungalWastes; public bool openedRoyalGardens; public bool openedRestingGrounds; public bool openedDeepnest; public bool openedStagNest; public bool openedHiddenStation; public string dreamReturnScene; public int charmSlots; public int charmSlotsFilled; public bool hasCharm; public List equippedCharms; public bool charmBenchMsg; public int charmsOwned; public bool canOvercharm; public bool overcharmed; public bool gotCharm_1; public bool equippedCharm_1; public int charmCost_1; public bool newCharm_1; public bool gotCharm_2; public bool equippedCharm_2; public int charmCost_2; public bool newCharm_2; public bool gotCharm_3; public bool equippedCharm_3; public int charmCost_3; public bool newCharm_3; public bool gotCharm_4; public bool equippedCharm_4; public int charmCost_4; public bool newCharm_4; public bool gotCharm_5; public bool equippedCharm_5; public int charmCost_5; public bool newCharm_5; public bool gotCharm_6; public bool equippedCharm_6; public int charmCost_6; public bool newCharm_6; public bool gotCharm_7; public bool equippedCharm_7; public int charmCost_7; public bool newCharm_7; public bool gotCharm_8; public bool equippedCharm_8; public int charmCost_8; public bool newCharm_8; public bool gotCharm_9; public bool equippedCharm_9; public int charmCost_9; public bool newCharm_9; public bool gotCharm_10; public bool equippedCharm_10; public int charmCost_10; public bool newCharm_10; public bool gotCharm_11; public bool equippedCharm_11; public int charmCost_11; public bool newCharm_11; public bool gotCharm_12; public bool equippedCharm_12; public int charmCost_12; public bool newCharm_12; public bool gotCharm_13; public bool equippedCharm_13; public int charmCost_13; public bool newCharm_13; public bool gotCharm_14; public bool equippedCharm_14; public int charmCost_14; public bool newCharm_14; public bool gotCharm_15; public bool equippedCharm_15; public int charmCost_15; public bool newCharm_15; public bool gotCharm_16; public bool equippedCharm_16; public int charmCost_16; public bool newCharm_16; public bool gotCharm_17; public bool equippedCharm_17; public int charmCost_17; public bool newCharm_17; public bool gotCharm_18; public bool equippedCharm_18; public int charmCost_18; public bool newCharm_18; public bool gotCharm_19; public bool equippedCharm_19; public int charmCost_19; public bool newCharm_19; public bool gotCharm_20; public bool equippedCharm_20; public int charmCost_20; public bool newCharm_20; public bool gotCharm_21; public bool equippedCharm_21; public int charmCost_21; public bool newCharm_21; public bool gotCharm_22; public bool equippedCharm_22; public int charmCost_22; public bool newCharm_22; public bool gotCharm_23; public bool equippedCharm_23; public bool brokenCharm_23; public int charmCost_23; public bool newCharm_23; public bool gotCharm_24; public bool equippedCharm_24; public bool brokenCharm_24; public int charmCost_24; public bool newCharm_24; public bool gotCharm_25; public bool equippedCharm_25; public bool brokenCharm_25; public int charmCost_25; public bool newCharm_25; public bool gotCharm_26; public bool equippedCharm_26; public int charmCost_26; public bool newCharm_26; public bool gotCharm_27; public bool equippedCharm_27; public int charmCost_27; public bool newCharm_27; public bool gotCharm_28; public bool equippedCharm_28; public int charmCost_28; public bool newCharm_28; public bool gotCharm_29; public bool equippedCharm_29; public int charmCost_29; public bool newCharm_29; public bool gotCharm_30; public bool equippedCharm_30; public int charmCost_30; public bool newCharm_30; public bool gotCharm_31; public bool equippedCharm_31; public int charmCost_31; public bool newCharm_31; public bool gotCharm_32; public bool equippedCharm_32; public int charmCost_32; public bool newCharm_32; public bool gotCharm_33; public bool equippedCharm_33; public int charmCost_33; public bool newCharm_33; public bool gotCharm_34; public bool equippedCharm_34; public int charmCost_34; public bool newCharm_34; public bool gotCharm_35; public bool equippedCharm_35; public int charmCost_35; public bool newCharm_35; public bool gotCharm_36; public bool equippedCharm_36; public int charmCost_36; public bool newCharm_36; public bool gotCharm_37; public bool equippedCharm_37; public int charmCost_37; public bool newCharm_37; public bool gotCharm_38; public bool equippedCharm_38; public int charmCost_38; public bool newCharm_38; public bool gotCharm_39; public bool equippedCharm_39; public int charmCost_39; public bool newCharm_39; public bool gotCharm_40; public bool equippedCharm_40; public int charmCost_40; public bool newCharm_40; public bool fragileHealth_unbreakable; public bool fragileGreed_unbreakable; public bool fragileStrength_unbreakable; public int royalCharmState; public bool hasJournal; public int lastJournalItem; public bool killedDummy; public int killsDummy; public bool newDataDummy; public bool seenJournalMsg; public bool seenHunterMsg; public bool fillJournal; public int journalEntriesCompleted; public int journalNotesCompleted; public int journalEntriesTotal; public bool killedCrawler; public int killsCrawler; public bool newDataCrawler; public bool killedBuzzer; public int killsBuzzer; public bool newDataBuzzer; public bool killedBouncer; public int killsBouncer; public bool newDataBouncer; public bool killedClimber; public int killsClimber; public bool newDataClimber; public bool killedHopper; public int killsHopper; public bool newDataHopper; public bool killedWorm; public int killsWorm; public bool newDataWorm; public bool killedSpitter; public int killsSpitter; public bool newDataSpitter; public bool killedHatcher; public int killsHatcher; public bool newDataHatcher; public bool killedHatchling; public int killsHatchling; public bool newDataHatchling; public bool killedZombieRunner; public int killsZombieRunner; public bool newDataZombieRunner; public bool killedZombieHornhead; public int killsZombieHornhead; public bool newDataZombieHornhead; public bool killedZombieLeaper; public int killsZombieLeaper; public bool newDataZombieLeaper; public bool killedZombieBarger; public int killsZombieBarger; public bool newDataZombieBarger; public bool killedZombieShield; public int killsZombieShield; public bool newDataZombieShield; public bool killedZombieGuard; public int killsZombieGuard; public bool newDataZombieGuard; public bool killedBigBuzzer; public int killsBigBuzzer; public bool newDataBigBuzzer; public bool killedBigFly; public int killsBigFly; public bool newDataBigFly; public bool killedMawlek; public int killsMawlek; public bool newDataMawlek; public bool killedFalseKnight; public int killsFalseKnight; public bool newDataFalseKnight; public bool killedRoller; public int killsRoller; public bool newDataRoller; public bool killedBlocker; public int killsBlocker; public bool newDataBlocker; public bool killedPrayerSlug; public int killsPrayerSlug; public bool newDataPrayerSlug; public bool killedMenderBug; public int killsMenderBug; public bool newDataMenderBug; public bool killedMossmanRunner; public int killsMossmanRunner; public bool newDataMossmanRunner; public bool killedMossmanShaker; public int killsMossmanShaker; public bool newDataMossmanShaker; public bool killedMosquito; public int killsMosquito; public bool newDataMosquito; public bool killedBlobFlyer; public int killsBlobFlyer; public bool newDataBlobFlyer; public bool killedFungifiedZombie; public int killsFungifiedZombie; public bool newDataFungifiedZombie; public bool killedPlantShooter; public int killsPlantShooter; public bool newDataPlantShooter; public bool killedMossCharger; public int killsMossCharger; public bool newDataMossCharger; public bool killedMegaMossCharger; public int killsMegaMossCharger; public bool newDataMegaMossCharger; public bool killedSnapperTrap; public int killsSnapperTrap; public bool newDataSnapperTrap; public bool killedMossKnight; public int killsMossKnight; public bool newDataMossKnight; public bool killedGrassHopper; public int killsGrassHopper; public bool newDataGrassHopper; public bool killedAcidFlyer; public int killsAcidFlyer; public bool newDataAcidFlyer; public bool killedAcidWalker; public int killsAcidWalker; public bool newDataAcidWalker; public bool killedMossFlyer; public int killsMossFlyer; public bool newDataMossFlyer; public bool killedMossKnightFat; public int killsMossKnightFat; public bool newDataMossKnightFat; public bool killedMossWalker; public int killsMossWalker; public bool newDataMossWalker; public bool killedInfectedKnight; public int killsInfectedKnight; public bool newDataInfectedKnight; public bool killedLazyFlyer; public int killsLazyFlyer; public bool newDataLazyFlyer; public bool killedZapBug; public int killsZapBug; public bool newDataZapBug; public bool killedJellyfish; public int killsJellyfish; public bool newDataJellyfish; public bool killedJellyCrawler; public int killsJellyCrawler; public bool newDataJellyCrawler; public bool killedMegaJellyfish; public int killsMegaJellyfish; public bool newDataMegaJellyfish; public bool killedFungoonBaby; public int killsFungoonBaby; public bool newDataFungoonBaby; public bool killedMushroomTurret; public int killsMushroomTurret; public bool newDataMushroomTurret; public bool killedMantis; public int killsMantis; public bool newDataMantis; public bool killedMushroomRoller; public int killsMushroomRoller; public bool newDataMushroomRoller; public bool killedMushroomBrawler; public int killsMushroomBrawler; public bool newDataMushroomBrawler; public bool killedMushroomBaby; public int killsMushroomBaby; public bool newDataMushroomBaby; public bool killedMantisFlyerChild; public int killsMantisFlyerChild; public bool newDataMantisFlyerChild; public bool killedFungusFlyer; public int killsFungusFlyer; public bool newDataFungusFlyer; public bool killedFungCrawler; public int killsFungCrawler; public bool newDataFungCrawler; public bool killedMantisLord; public int killsMantisLord; public bool newDataMantisLord; public bool killedBlackKnight; public int killsBlackKnight; public bool newDataBlackKnight; public bool killedElectricMage; public int killsElectricMage; public bool newDataElectricMage; public bool killedMage; public int killsMage; public bool newDataMage; public bool killedMageKnight; public int killsMageKnight; public bool newDataMageKnight; public bool killedRoyalDandy; public int killsRoyalDandy; public bool newDataRoyalDandy; public bool killedRoyalCoward; public int killsRoyalCoward; public bool newDataRoyalCoward; public bool killedRoyalPlumper; public int killsRoyalPlumper; public bool newDataRoyalPlumper; public bool killedFlyingSentrySword; public int killsFlyingSentrySword; public bool newDataFlyingSentrySword; public bool killedFlyingSentryJavelin; public int killsFlyingSentryJavelin; public bool newDataFlyingSentryJavelin; public bool killedSentry; public int killsSentry; public bool newDataSentry; public bool killedSentryFat; public int killsSentryFat; public bool newDataSentryFat; public bool killedMageBlob; public int killsMageBlob; public bool newDataMageBlob; public bool killedGreatShieldZombie; public int killsGreatShieldZombie; public bool newDataGreatShieldZombie; public bool killedJarCollector; public int killsJarCollector; public bool newDataJarCollector; public bool killedMageBalloon; public int killsMageBalloon; public bool newDataMageBalloon; public bool killedMageLord; public int killsMageLord; public bool newDataMageLord; public bool killedGorgeousHusk; public int killsGorgeousHusk; public bool newDataGorgeousHusk; public bool killedFlipHopper; public int killsFlipHopper; public bool newDataFlipHopper; public bool killedFlukeman; public int killsFlukeman; public bool newDataFlukeman; public bool killedInflater; public int killsInflater; public bool newDataInflater; public bool killedFlukefly; public int killsFlukefly; public bool newDataFlukefly; public bool killedFlukeMother; public int killsFlukeMother; public bool newDataFlukeMother; public bool killedDungDefender; public int killsDungDefender; public bool newDataDungDefender; public bool killedCrystalCrawler; public int killsCrystalCrawler; public bool newDataCrystalCrawler; public bool killedCrystalFlyer; public int killsCrystalFlyer; public bool newDataCrystalFlyer; public bool killedLaserBug; public int killsLaserBug; public bool newDataLaserBug; public bool killedBeamMiner; public int killsBeamMiner; public bool newDataBeamMiner; public bool killedZombieMiner; public int killsZombieMiner; public bool newDataZombieMiner; public bool killedMegaBeamMiner; public int killsMegaBeamMiner; public bool newDataMegaBeamMiner; public bool killedMinesCrawler; public int killsMinesCrawler; public bool newDataMinesCrawler; public bool killedAngryBuzzer; public int killsAngryBuzzer; public bool newDataAngryBuzzer; public bool killedBurstingBouncer; public int killsBurstingBouncer; public bool newDataBurstingBouncer; public bool killedBurstingZombie; public int killsBurstingZombie; public bool newDataBurstingZombie; public bool killedSpittingZombie; public int killsSpittingZombie; public bool newDataSpittingZombie; public bool killedBabyCentipede; public int killsBabyCentipede; public bool newDataBabyCentipede; public bool killedBigCentipede; public int killsBigCentipede; public bool newDataBigCentipede; public bool killedCentipedeHatcher; public int killsCentipedeHatcher; public bool newDataCentipedeHatcher; public bool killedLesserMawlek; public int killsLesserMawlek; public bool newDataLesserMawlek; public bool killedSlashSpider; public int killsSlashSpider; public bool newDataSlashSpider; public bool killedSpiderCorpse; public int killsSpiderCorpse; public bool newDataSpiderCorpse; public bool killedShootSpider; public int killsShootSpider; public bool newDataShootSpider; public bool killedMiniSpider; public int killsMiniSpider; public bool newDataMiniSpider; public bool killedSpiderFlyer; public int killsSpiderFlyer; public bool newDataSpiderFlyer; public bool killedMimicSpider; public int killsMimicSpider; public bool newDataMimicSpider; public bool killedBeeHatchling; public int killsBeeHatchling; public bool newDataBeeHatchling; public bool killedBeeStinger; public int killsBeeStinger; public bool newDataBeeStinger; public bool killedBigBee; public int killsBigBee; public bool newDataBigBee; public bool killedHiveKnight; public int killsHiveKnight; public bool newDataHiveKnight; public bool killedBlowFly; public int killsBlowFly; public bool newDataBlowFly; public bool killedCeilingDropper; public int killsCeilingDropper; public bool newDataCeilingDropper; public bool killedGiantHopper; public int killsGiantHopper; public bool newDataGiantHopper; public bool killedGrubMimic; public int killsGrubMimic; public bool newDataGrubMimic; public bool killedMawlekTurret; public int killsMawlekTurret; public bool newDataMawlekTurret; public bool killedOrangeScuttler; public int killsOrangeScuttler; public bool newDataOrangeScuttler; public bool killedHealthScuttler; public int killsHealthScuttler; public bool newDataHealthScuttler; public bool killedPigeon; public int killsPigeon; public bool newDataPigeon; public bool killedZombieHive; public int killsZombieHive; public bool newDataZombieHive; public bool killedDreamGuard; public int killsDreamGuard; public bool newDataDreamGuard; public bool killedHornet; public int killsHornet; public bool newDataHornet; public bool killedAbyssCrawler; public int killsAbyssCrawler; public bool newDataAbyssCrawler; public bool killedSuperSpitter; public int killsSuperSpitter; public bool newDataSuperSpitter; public bool killedSibling; public int killsSibling; public bool newDataSibling; public bool killedPalaceFly; public int killsPalaceFly; public bool newDataPalaceFly; public bool killedEggSac; public int killsEggSac; public bool newDataEggSac; public bool killedMummy; public int killsMummy; public bool newDataMummy; public bool killedOrangeBalloon; public int killsOrangeBalloon; public bool newDataOrangeBalloon; public bool killedAbyssTendril; public int killsAbyssTendril; public bool newDataAbyssTendril; public bool killedHeavyMantis; public int killsHeavyMantis; public bool newDataHeavyMantis; public bool killedTraitorLord; public int killsTraitorLord; public bool newDataTraitorLord; public bool killedMantisHeavyFlyer; public int killsMantisHeavyFlyer; public bool newDataMantisHeavyFlyer; public bool killedGardenZombie; public int killsGardenZombie; public bool newDataGardenZombie; public bool killedRoyalGuard; public int killsRoyalGuard; public bool newDataRoyalGuard; public bool killedWhiteRoyal; public int killsWhiteRoyal; public bool newDataWhiteRoyal; public bool openedPalaceGrounds; public bool killedOblobble; public int killsOblobble; public bool newDataOblobble; public bool killedZote; public int killsZote; public bool newDataZote; public bool killedBlobble; public int killsBlobble; public bool newDataBlobble; public bool killedColMosquito; public int killsColMosquito; public bool newDataColMosquito; public bool killedColRoller; public int killsColRoller; public bool newDataColRoller; public bool killedColFlyingSentry; public int killsColFlyingSentry; public bool newDataColFlyingSentry; public bool killedColMiner; public int killsColMiner; public bool newDataColMiner; public bool killedColShield; public int killsColShield; public bool newDataColShield; public bool killedColWorm; public int killsColWorm; public bool newDataColWorm; public bool killedColHopper; public int killsColHopper; public bool newDataColHopper; public bool killedLobsterLancer; public int killsLobsterLancer; public bool newDataLobsterLancer; public bool killedGhostAladar; public int killsGhostAladar; public bool newDataGhostAladar; public bool killedGhostXero; public int killsGhostXero; public bool newDataGhostXero; public bool killedGhostHu; public int killsGhostHu; public bool newDataGhostHu; public bool killedGhostMarmu; public int killsGhostMarmu; public bool newDataGhostMarmu; public bool killedGhostNoEyes; public int killsGhostNoEyes; public bool newDataGhostNoEyes; public bool killedGhostMarkoth; public int killsGhostMarkoth; public bool newDataGhostMarkoth; public bool killedGhostGalien; public int killsGhostGalien; public bool newDataGhostGalien; public bool killedWhiteDefender; public int killsWhiteDefender; public bool newDataWhiteDefender; public bool killedGreyPrince; public int killsGreyPrince; public bool newDataGreyPrince; public bool killedZotelingBalloon; public int killsZotelingBalloon; public bool newDataZotelingBalloon; public bool killedZotelingHopper; public int killsZotelingHopper; public bool newDataZotelingHopper; public bool killedZotelingBuzzer; public int killsZotelingBuzzer; public bool newDataZotelingBuzzer; public bool killedHollowKnight; public int killsHollowKnight; public bool newDataHollowKnight; public bool killedFinalBoss; public int killsFinalBoss; public bool newDataFinalBoss; public bool killedHunterMark; public int killsHunterMark; public bool newDataHunterMark; public bool killedFlameBearerSmall; public int killsFlameBearerSmall; public bool newDataFlameBearerSmall; public bool killedFlameBearerMed; public int killsFlameBearerMed; public bool newDataFlameBearerMed; public bool killedFlameBearerLarge; public int killsFlameBearerLarge; public bool newDataFlameBearerLarge; public bool killedGrimm; public int killsGrimm; public bool newDataGrimm; public bool killedNightmareGrimm; public int killsNightmareGrimm; public bool newDataNightmareGrimm; public bool killedBindingSeal; public int killsBindingSeal; public bool newDataBindingSeal; public bool killedFatFluke; public int killsFatFluke; public bool newDataFatFluke; public bool killedPaleLurker; public int killsPaleLurker; public bool newDataPaleLurker; public bool killedNailBros; public int killsNailBros; public bool newDataNailBros; public bool killedPaintmaster; public int killsPaintmaster; public bool newDataPaintmaster; public bool killedNailsage; public int killsNailsage; public bool newDataNailsage; public bool killedHollowKnightPrime; public int killsHollowKnightPrime; public bool newDataHollowKnightPrime; public bool killedGodseekerMask; public int killsGodseekerMask; public bool newDataGodseekerMask; public bool killedVoidIdol_1; public int killsVoidIdol_1; public bool newDataVoidIdol_1; public bool killedVoidIdol_2; public int killsVoidIdol_2; public bool newDataVoidIdol_2; public bool killedVoidIdol_3; public int killsVoidIdol_3; public bool newDataVoidIdol_3; public int grubsCollected; public int grubRewards; public bool finalGrubRewardCollected; public bool fatGrubKing; public bool falseKnightDefeated; public bool falseKnightDreamDefeated; public bool falseKnightOrbsCollected; public bool mawlekDefeated; public bool giantBuzzerDefeated; public bool giantFlyDefeated; public bool blocker1Defeated; public bool blocker2Defeated; public bool hornet1Defeated; public bool collectorDefeated; public bool hornetOutskirtsDefeated; public bool mageLordDreamDefeated; public bool mageLordOrbsCollected; public bool infectedKnightDreamDefeated; public bool infectedKnightOrbsCollected; public bool whiteDefenderDefeated; public bool whiteDefenderOrbsCollected; public int whiteDefenderDefeats; public int greyPrinceDefeats; public bool greyPrinceDefeated; public bool greyPrinceOrbsCollected; public int aladarSlugDefeated; public int xeroDefeated; public int elderHuDefeated; public int mumCaterpillarDefeated; public int noEyesDefeated; public int markothDefeated; public int galienDefeated; public bool XERO_encountered; public bool ALADAR_encountered; public bool HU_encountered; public bool MUMCAT_encountered; public bool NOEYES_encountered; public bool MARKOTH_encountered; public bool GALIEN_encountered; public bool xeroPinned; public bool aladarPinned; public bool huPinned; public bool mumCaterpillarPinned; public bool noEyesPinned; public bool markothPinned; public bool galienPinned; public int currentInvPane; public bool showGeoUI; public bool showHealthUI; public bool promptFocus; public bool seenFocusTablet; public bool seenDreamNailPrompt; public bool isFirstGame; public bool enteredTutorialFirstTime; public bool isInvincible; public bool infiniteAirJump; public bool invinciTest; public int currentArea; public bool visitedDirtmouth; public bool visitedCrossroads; public bool visitedGreenpath; public bool visitedFungus; public bool visitedHive; public bool visitedCrossroadsInfected; public bool visitedRuins; public bool visitedMines; public bool visitedRoyalGardens; public bool visitedFogCanyon; public bool visitedDeepnest; public bool visitedRestingGrounds; public bool visitedWaterways; public bool visitedAbyss; public bool visitedOutskirts; public bool visitedWhitePalace; public bool visitedCliffs; public bool visitedAbyssLower; public bool visitedGodhome; public bool visitedMines10; public List scenesVisited; public List scenesMapped; public List scenesEncounteredBench; public List scenesGrubRescued; public List scenesFlameCollected; public List scenesEncounteredCocoon; public List scenesEncounteredDreamPlant; public List scenesEncounteredDreamPlantC; public bool hasMap; public bool mapAllRooms; public bool atMapPrompt; public bool mapDirtmouth; public bool mapCrossroads; public bool mapGreenpath; public bool mapFogCanyon; public bool mapRoyalGardens; public bool mapFungalWastes; public bool mapCity; public bool mapWaterways; public bool mapMines; public bool mapDeepnest; public bool mapCliffs; public bool mapOutskirts; public bool mapRestingGrounds; public bool mapAbyss; private Dictionary mapZoneBools; public bool hasPin; public bool hasPinBench; public bool hasPinCocoon; public bool hasPinDreamPlant; public bool hasPinGuardian; public bool hasPinBlackEgg; public bool hasPinShop; public bool hasPinSpa; public bool hasPinStag; public bool hasPinTram; public bool hasPinGhost; public bool hasPinGrub; public bool hasMarker; public bool hasMarker_r; public bool hasMarker_b; public bool hasMarker_y; public bool hasMarker_w; public int spareMarkers_r; public int spareMarkers_b; public int spareMarkers_y; public int spareMarkers_w; public List placedMarkers_r; public List placedMarkers_b; public List placedMarkers_y; public List placedMarkers_w; public int environmentType; public int environmentTypeDefault; public int previousDarkness; public bool openedTramLower; public bool openedTramRestingGrounds; public int tramLowerPosition; public int tramRestingGroundsPosition; public bool mineLiftOpened; public bool menderDoorOpened; public bool vesselFragStagNest; public bool shamanPillar; public bool crossroadsMawlekWall; public bool eggTempleVisited; public bool crossroadsInfected; public bool falseKnightFirstPlop; public bool falseKnightWallRepaired; public bool falseKnightWallBroken; public bool falseKnightGhostDeparted; public bool spaBugsEncountered; public bool hornheadVinePlat; public bool infectedKnightEncountered; public bool megaMossChargerEncountered; public bool megaMossChargerDefeated; public bool dreamerScene1; public bool slugEncounterComplete; public bool defeatedDoubleBlockers; public bool oneWayArchive; public bool defeatedMegaJelly; public bool summonedMonomon; public bool sawWoundedQuirrel; public bool encounteredMegaJelly; public bool defeatedMantisLords; public bool encounteredGatekeeper; public bool deepnestWall; public bool queensStationNonDisplay; public bool cityBridge1; public bool cityBridge2; public bool cityLift1; public bool cityLift1_isUp; public bool liftArrival; public bool openedMageDoor; public bool openedMageDoor_v2; public bool brokenMageWindow; public bool brokenMageWindowGlass; public bool mageLordEncountered; public bool mageLordEncountered_2; public bool mageLordDefeated; public bool ruins1_5_tripleDoor; public bool openedCityGate; public bool cityGateClosed; public bool bathHouseOpened; public bool bathHouseWall; public bool cityLift2; public bool cityLift2_isUp; public bool city2_sewerDoor; public bool openedLoveDoor; public bool watcherChandelier; public bool completedQuakeArea; public bool kingsStationNonDisplay; public bool tollBenchCity; public bool waterwaysGate; public bool defeatedDungDefender; public bool dungDefenderEncounterReady; public bool flukeMotherEncountered; public bool flukeMotherDefeated; public bool openedWaterwaysManhole; public bool waterwaysAcidDrained; public bool dungDefenderWallBroken; public bool dungDefenderSleeping; public bool defeatedMegaBeamMiner; public bool defeatedMegaBeamMiner2; public bool brokeMinersWall; public bool encounteredMimicSpider; public bool steppedBeyondBridge; public bool deepnestBridgeCollapsed; public bool spiderCapture; public bool deepnest26b_switch; public bool openedRestingGrounds02; public bool restingGroundsCryptWall; public bool dreamNailConvo; public int gladeGhostsKilled; public bool openedGardensStagStation; public bool extendedGramophone; public bool tollBenchQueensGardens; public bool blizzardEnded; public bool encounteredHornet; public bool savedByHornet; public bool outskirtsWall; public bool abyssGateOpened; public bool abyssLighthouse; public bool blueVineDoor; public bool gotShadeCharm; public bool tollBenchAbyss; public int fountainGeo; public bool fountainVesselSummoned; public bool openedBlackEggPath; public bool enteredDreamWorld; public bool duskKnightDefeated; public bool whitePalaceOrb_1; public bool whitePalaceOrb_2; public bool whitePalaceOrb_3; public bool whitePalace05_lever; public bool whitePalaceMidWarp; public bool whitePalaceSecretRoomVisited; public bool tramOpenedDeepnest; public bool tramOpenedCrossroads; public bool openedBlackEggDoor; public bool unchainedHollowKnight; public int flamesCollected; public int flamesRequired; public bool nightmareLanternAppeared; public bool nightmareLanternLit; public bool troupeInTown; public bool divineInTown; public int grimmChildLevel; public bool elderbugConvoGrimm; public bool slyConvoGrimm; public bool iseldaConvoGrimm; public bool midwifeWeaverlingConvo; public bool metGrimm; public bool foughtGrimm; public bool metBrum; public bool defeatedNightmareGrimm; public bool grimmchildAwoken; public bool gotBrummsFlame; public bool brummBrokeBrazier; public bool destroyedNightmareLantern; public bool gotGrimmNotch; public bool nymmInTown; public bool nymmSpoken; public bool nymmCharmConvo; public bool nymmFinalConvo; public bool elderbugNymmConvo; public bool slyNymmConvo; public bool iseldaNymmConvo; public bool nymmMissedEggOpen; public bool elderbugTroupeLeftConvo; public bool elderbugBrettaLeft; public bool jijiGrimmConvo; public bool metDivine; public bool divineFinalConvo; public bool gaveFragileHeart; public bool gaveFragileGreed; public bool gaveFragileStrength; public int divineEatenConvos; public bool pooedFragileHeart; public bool pooedFragileGreed; public bool pooedFragileStrength; public float completionPercentage; public bool disablePause; public bool backerCredits; public bool unlockedCompletionRate; public int mapKeyPref; public List playerStory; public string playerStoryOutput; public bool betaEnd; public bool newDatTraitorLord; public string bossReturnEntryGate; public Completion bossDoorStateTier1; public Completion bossDoorStateTier2; public Completion bossDoorStateTier3; public Completion bossDoorStateTier4; public Completion bossDoorStateTier5; public int bossStatueTargetLevel; public string currentBossStatueCompletionKey; public Completion statueStateGruzMother; public Completion statueStateVengefly; public Completion statueStateBroodingMawlek; public Completion statueStateFalseKnight; public Completion statueStateFailedChampion; public Completion statueStateHornet1; public Completion statueStateHornet2; public Completion statueStateMegaMossCharger; public Completion statueStateMantisLords; public Completion statueStateOblobbles; public Completion statueStateGreyPrince; public Completion statueStateBrokenVessel; public Completion statueStateLostKin; public Completion statueStateNosk; public Completion statueStateFlukemarm; public Completion statueStateCollector; public Completion statueStateWatcherKnights; public Completion statueStateSoulMaster; public Completion statueStateSoulTyrant; public Completion statueStateGodTamer; public Completion statueStateCrystalGuardian1; public Completion statueStateCrystalGuardian2; public Completion statueStateUumuu; public Completion statueStateDungDefender; public Completion statueStateWhiteDefender; public Completion statueStateHiveKnight; public Completion statueStateTraitorLord; public Completion statueStateGrimm; public Completion statueStateNightmareGrimm; public Completion statueStateHollowKnight; public Completion statueStateElderHu; public Completion statueStateGalien; public Completion statueStateMarkoth; public Completion statueStateMarmu; public Completion statueStateNoEyes; public Completion statueStateXero; public Completion statueStateGorb; public Completion statueStateRadiance; public Completion statueStateSly; public Completion statueStateNailmasters; public Completion statueStateMageKnight; public Completion statueStatePaintmaster; public Completion statueStateZote; public Completion statueStateNoskHornet; public Completion statueStateMantisLordsExtra; public bool godseekerUnlocked; public BossSequenceData currentBossSequence; public bool bossRushMode; public bool bossDoorCageUnlocked; public bool blueRoomDoorUnlocked; public bool blueRoomActivated; public bool finalBossDoorUnlocked; public bool hasGodfinder; public bool unlockedNewBossStatue; public bool scaredFlukeHermitEncountered; public bool scaredFlukeHermitReturned; public bool enteredGGAtrium; public bool extraFlowerAppear; public bool givenGodseekerFlower; public bool givenOroFlower; public bool givenWhiteLadyFlower; public bool givenEmilitiaFlower; public List unlockedBossScenes; public bool queuedGodfinderIcon; public bool godseekerSpokenAwake; public bool nailsmithCorpseAppeared; public int godseekerWaterwaysSeenState; public bool godseekerWaterwaysSpoken1; public bool godseekerWaterwaysSpoken2; public bool godseekerWaterwaysSpoken3; public int bossDoorEntranceTextSeen; public bool seenDoor4Finale; public bool zoteStatueWallBroken; public bool seenGGWastes; public bool ordealAchieved; private static PlayerData _instance; public int CurrentMaxHealth { get { if (BossSequenceController.BoundShell) { return Mathf.Min(maxHealth, BossSequenceController.BoundMaxHealth); } return maxHealth; } } public static PlayerData instance { get { if (_instance == null) { _instance = new PlayerData(); } return _instance; } set { _instance = value; } } private Dictionary InitMapBools() { return new Dictionary { { "Town", MapBools.MapDirtmouth }, { "Tutorial_01", MapBools.MapDirtmouth }, { "Abyss_03", MapBools.MapAbyss }, { "Abyss_04", MapBools.MapAbyss }, { "Abyss_05", MapBools.MapAbyss }, { "Abyss_06_Core", MapBools.MapAbyss }, { "Abyss_06_Core_b", MapBools.MapAbyss }, { "Abyss_08", MapBools.MapAbyss }, { "Abyss_09", MapBools.MapAbyss }, { "Abyss_10", MapBools.MapAbyss }, { "Abyss_12", MapBools.MapAbyss }, { "Abyss_16", MapBools.MapAbyss }, { "Abyss_17", MapBools.MapAbyss }, { "Abyss_18", MapBools.MapAbyss }, { "Abyss_18_b", MapBools.MapAbyss }, { "Abyss_19", MapBools.MapAbyss }, { "Abyss_20", MapBools.MapAbyss }, { "Abyss_21", MapBools.MapAbyss }, { "Abyss_22", MapBools.MapAbyss }, { "Crossroads_49b", MapBools.MapCity }, { "Ruins1_01", MapBools.MapCity }, { "Ruins1_02", MapBools.MapCity }, { "Ruins1_03", MapBools.MapCity }, { "Ruins1_04", MapBools.MapCity }, { "Ruins1_05", MapBools.MapCity }, { "Ruins1_05b", MapBools.MapCity }, { "Ruins1_05c", MapBools.MapCity }, { "Ruins1_06", MapBools.MapCity }, { "Ruins1_09", MapBools.MapCity }, { "Ruins1_17", MapBools.MapCity }, { "Ruins1_18", MapBools.MapCity }, { "Ruins1_18_b", MapBools.MapCity }, { "Ruins1_23", MapBools.MapCity }, { "Ruins1_24", MapBools.MapCity }, { "Ruins1_25", MapBools.MapCity }, { "Ruins1_27", MapBools.MapCity }, { "Ruins1_28", MapBools.MapCity }, { "Ruins1_29", MapBools.MapCity }, { "Ruins1_30", MapBools.MapCity }, { "Ruins1_31", MapBools.MapCity }, { "Ruins1_31b", MapBools.MapCity }, { "Ruins1_31_top", MapBools.MapCity }, { "Ruins1_31_top_2", MapBools.MapCity }, { "Ruins1_32", MapBools.MapCity }, { "Ruins2_01", MapBools.MapCity }, { "Ruins2_01_b", MapBools.MapCity }, { "Ruins2_03", MapBools.MapCity }, { "Ruins2_03b", MapBools.MapCity }, { "Ruins2_04", MapBools.MapCity }, { "Ruins2_05", MapBools.MapCity }, { "Ruins2_06", MapBools.MapCity }, { "Ruins2_07", MapBools.MapCity }, { "Ruins2_07_left", MapBools.MapCity }, { "Ruins2_07_right", MapBools.MapCity }, { "Ruins2_08", MapBools.MapCity }, { "Ruins2_09", MapBools.MapCity }, { "Ruins2_10_b", MapBools.MapCity }, { "Ruins2_11", MapBools.MapCity }, { "Ruins2_11_b", MapBools.MapCity }, { "Ruins2_Watcher_Room", MapBools.MapCity }, { "Ruins_Bathhouse", MapBools.MapCity }, { "Ruins_Elevator", MapBools.MapCity }, { "Cliffs_01", MapBools.MapCliffs }, { "Cliffs_01_b", MapBools.MapCliffs }, { "Cliffs_02", MapBools.MapCliffs }, { "Cliffs_02_b", MapBools.MapCliffs }, { "Cliffs_04", MapBools.MapCliffs }, { "Cliffs_05", MapBools.MapCliffs }, { "Cliffs_06", MapBools.MapCliffs }, { "Cliffs_06_b", MapBools.MapCliffs }, { "Fungus1_28", MapBools.MapCliffs }, { "Fungus1_28_b", MapBools.MapCliffs }, { "Crossroads_01", MapBools.MapCrossroads }, { "Crossroads_02", MapBools.MapCrossroads }, { "Crossroads_03", MapBools.MapCrossroads }, { "Crossroads_04", MapBools.MapCrossroads }, { "Crossroads_05", MapBools.MapCrossroads }, { "Crossroads_06", MapBools.MapCrossroads }, { "Crossroads_07", MapBools.MapCrossroads }, { "Crossroads_08", MapBools.MapCrossroads }, { "Crossroads_09", MapBools.MapCrossroads }, { "Crossroads_10", MapBools.MapCrossroads }, { "Crossroads_11_alt", MapBools.MapCrossroads }, { "Crossroads_12", MapBools.MapCrossroads }, { "Crossroads_13", MapBools.MapCrossroads }, { "Crossroads_14", MapBools.MapCrossroads }, { "Crossroads_15", MapBools.MapCrossroads }, { "Crossroads_16", MapBools.MapCrossroads }, { "Crossroads_18", MapBools.MapCrossroads }, { "Crossroads_19", MapBools.MapCrossroads }, { "Crossroads_21", MapBools.MapCrossroads }, { "Crossroads_22", MapBools.MapCrossroads }, { "Crossroads_25", MapBools.MapCrossroads }, { "Crossroads_27", MapBools.MapCrossroads }, { "Crossroads_30", MapBools.MapCrossroads }, { "Crossroads_31", MapBools.MapCrossroads }, { "Crossroads_33", MapBools.MapCrossroads }, { "Crossroads_35", MapBools.MapCrossroads }, { "Crossroads_36", MapBools.MapCrossroads }, { "Crossroads_37", MapBools.MapCrossroads }, { "Crossroads_38", MapBools.MapCrossroads }, { "Crossroads_39", MapBools.MapCrossroads }, { "Crossroads_40", MapBools.MapCrossroads }, { "Crossroads_42", MapBools.MapCrossroads }, { "Crossroads_43", MapBools.MapCrossroads }, { "Crossroads_45", MapBools.MapCrossroads }, { "Crossroads_46", MapBools.MapCrossroads }, { "Crossroads_47", MapBools.MapCrossroads }, { "Crossroads_48", MapBools.MapCrossroads }, { "Crossroads_49", MapBools.MapCrossroads }, { "Crossroads_52", MapBools.MapCrossroads }, { "Mines_01", MapBools.MapMines }, { "Mines_02", MapBools.MapMines }, { "Mines_03", MapBools.MapMines }, { "Mines_04", MapBools.MapMines }, { "Mines_05", MapBools.MapMines }, { "Mines_06", MapBools.MapMines }, { "Mines_07", MapBools.MapMines }, { "Mines_10", MapBools.MapMines }, { "Mines_11", MapBools.MapMines }, { "Mines_13", MapBools.MapMines }, { "Mines_16", MapBools.MapMines }, { "Mines_17", MapBools.MapMines }, { "Mines_18", MapBools.MapMines }, { "Mines_19", MapBools.MapMines }, { "Mines_20", MapBools.MapMines }, { "Mines_20_b", MapBools.MapMines }, { "Mines_23", MapBools.MapMines }, { "Mines_24", MapBools.MapMines }, { "Mines_25", MapBools.MapMines }, { "Mines_28", MapBools.MapMines }, { "Mines_28_b", MapBools.MapMines }, { "Mines_29", MapBools.MapMines }, { "Mines_30", MapBools.MapMines }, { "Mines_31", MapBools.MapMines }, { "Mines_32", MapBools.MapMines }, { "Mines_34", MapBools.MapMines }, { "Mines_36", MapBools.MapMines }, { "Mines_37", MapBools.MapMines }, { "Abyss_03_b", MapBools.MapDeepnest }, { "Deepnest_01b", MapBools.MapDeepnest }, { "Deepnest_02", MapBools.MapDeepnest }, { "Deepnest_03", MapBools.MapDeepnest }, { "Deepnest_09", MapBools.MapDeepnest }, { "Deepnest_10", MapBools.MapDeepnest }, { "Deepnest_14", MapBools.MapDeepnest }, { "Deepnest_16", MapBools.MapDeepnest }, { "Deepnest_17", MapBools.MapDeepnest }, { "Deepnest_26", MapBools.MapDeepnest }, { "Deepnest_26b", MapBools.MapDeepnest }, { "Deepnest_30", MapBools.MapDeepnest }, { "Deepnest_30_b", MapBools.MapDeepnest }, { "Deepnest_31", MapBools.MapDeepnest }, { "Deepnest_32", MapBools.MapDeepnest }, { "Deepnest_33", MapBools.MapDeepnest }, { "Deepnest_34", MapBools.MapDeepnest }, { "Deepnest_35", MapBools.MapDeepnest }, { "Deepnest_36", MapBools.MapDeepnest }, { "Deepnest_37", MapBools.MapDeepnest }, { "Deepnest_38", MapBools.MapDeepnest }, { "Deepnest_39", MapBools.MapDeepnest }, { "Deepnest_40", MapBools.MapDeepnest }, { "Deepnest_41", MapBools.MapDeepnest }, { "Deepnest_41_b", MapBools.MapDeepnest }, { "Deepnest_42", MapBools.MapDeepnest }, { "Deepnest_44", MapBools.MapDeepnest }, { "Deepnest_44_b", MapBools.MapDeepnest }, { "Fungus2_25", MapBools.MapDeepnest }, { "Room_Mask_maker", MapBools.MapDeepnest }, { "Fungus3_01", MapBools.MapFogCanyon }, { "Fungus3_02", MapBools.MapFogCanyon }, { "Fungus3_03", MapBools.MapFogCanyon }, { "Fungus3_24", MapBools.MapFogCanyon }, { "Fungus3_25", MapBools.MapFogCanyon }, { "Fungus3_25b", MapBools.MapFogCanyon }, { "Fungus3_26", MapBools.MapFogCanyon }, { "Fungus3_27", MapBools.MapFogCanyon }, { "Fungus3_28", MapBools.MapFogCanyon }, { "Fungus3_30", MapBools.MapFogCanyon }, { "Fungus3_35", MapBools.MapFogCanyon }, { "Fungus3_44", MapBools.MapFogCanyon }, { "Fungus3_47", MapBools.MapFogCanyon }, { "Deepnest_01", MapBools.MapFungalWastes }, { "Fungus2_01", MapBools.MapFungalWastes }, { "Fungus2_02", MapBools.MapFungalWastes }, { "Fungus2_03", MapBools.MapFungalWastes }, { "Fungus2_04", MapBools.MapFungalWastes }, { "Fungus2_05", MapBools.MapFungalWastes }, { "Fungus2_06", MapBools.MapFungalWastes }, { "Fungus2_07", MapBools.MapFungalWastes }, { "Fungus2_08", MapBools.MapFungalWastes }, { "Fungus2_09", MapBools.MapFungalWastes }, { "Fungus2_10", MapBools.MapFungalWastes }, { "Fungus2_11", MapBools.MapFungalWastes }, { "Fungus2_12", MapBools.MapFungalWastes }, { "Fungus2_13", MapBools.MapFungalWastes }, { "Fungus2_14", MapBools.MapFungalWastes }, { "Fungus2_14_b", MapBools.MapFungalWastes }, { "Fungus2_14_c", MapBools.MapFungalWastes }, { "Fungus2_15", MapBools.MapFungalWastes }, { "Fungus2_17", MapBools.MapFungalWastes }, { "Fungus2_18", MapBools.MapFungalWastes }, { "Fungus2_19", MapBools.MapFungalWastes }, { "Fungus2_20", MapBools.MapFungalWastes }, { "Fungus2_21", MapBools.MapFungalWastes }, { "Fungus2_23", MapBools.MapFungalWastes }, { "Fungus2_26", MapBools.MapFungalWastes }, { "Fungus2_28", MapBools.MapFungalWastes }, { "Fungus2_29", MapBools.MapFungalWastes }, { "Fungus2_30", MapBools.MapFungalWastes }, { "Fungus2_31", MapBools.MapFungalWastes }, { "Fungus2_32", MapBools.MapFungalWastes }, { "Fungus2_29_b", MapBools.MapFungalWastes }, { "Fungus2_33", MapBools.MapFungalWastes }, { "Fungus2_34", MapBools.MapFungalWastes }, { "Fungus1_01", MapBools.MapGreenpath }, { "Fungus1_01b", MapBools.MapGreenpath }, { "Fungus1_02", MapBools.MapGreenpath }, { "Fungus1_03", MapBools.MapGreenpath }, { "Fungus1_04", MapBools.MapGreenpath }, { "Fungus1_05", MapBools.MapGreenpath }, { "Fungus1_06", MapBools.MapGreenpath }, { "Fungus1_07", MapBools.MapGreenpath }, { "Fungus1_08", MapBools.MapGreenpath }, { "Fungus1_09", MapBools.MapGreenpath }, { "Fungus1_09_b", MapBools.MapGreenpath }, { "Fungus1_10", MapBools.MapGreenpath }, { "Fungus1_11", MapBools.MapGreenpath }, { "Fungus1_12", MapBools.MapGreenpath }, { "Fungus1_13", MapBools.MapGreenpath }, { "Fungus1_14", MapBools.MapGreenpath }, { "Fungus1_14_b", MapBools.MapGreenpath }, { "Fungus1_15", MapBools.MapGreenpath }, { "Fungus1_16_alt", MapBools.MapGreenpath }, { "Fungus1_17", MapBools.MapGreenpath }, { "Fungus1_19", MapBools.MapGreenpath }, { "Fungus1_20_v02", MapBools.MapGreenpath }, { "Fungus1_21", MapBools.MapGreenpath }, { "Fungus1_22", MapBools.MapGreenpath }, { "Fungus1_25", MapBools.MapGreenpath }, { "Fungus1_26", MapBools.MapGreenpath }, { "Fungus1_29", MapBools.MapGreenpath }, { "Fungus1_30", MapBools.MapGreenpath }, { "Fungus1_31", MapBools.MapGreenpath }, { "Fungus1_32", MapBools.MapGreenpath }, { "Fungus1_34", MapBools.MapGreenpath }, { "Fungus1_37", MapBools.MapGreenpath }, { "Fungus1_Slug", MapBools.MapGreenpath }, { "Abyss_03_c", MapBools.MapOutskirts }, { "Deepnest_East_01", MapBools.MapOutskirts }, { "Deepnest_East_02", MapBools.MapOutskirts }, { "Deepnest_East_02b", MapBools.MapOutskirts }, { "Deepnest_East_03", MapBools.MapOutskirts }, { "Deepnest_East_04", MapBools.MapOutskirts }, { "Deepnest_East_06", MapBools.MapOutskirts }, { "Deepnest_East_07", MapBools.MapOutskirts }, { "Deepnest_East_08", MapBools.MapOutskirts }, { "Deepnest_East_09", MapBools.MapOutskirts }, { "Deepnest_East_09_b", MapBools.MapOutskirts }, { "Deepnest_East_10", MapBools.MapOutskirts }, { "Deepnest_East_11", MapBools.MapOutskirts }, { "Deepnest_East_12", MapBools.MapOutskirts }, { "Deepnest_East_13", MapBools.MapOutskirts }, { "Deepnest_East_14", MapBools.MapOutskirts }, { "Deepnest_East_15", MapBools.MapOutskirts }, { "Deepnest_East_16", MapBools.MapOutskirts }, { "Deepnest_East_18", MapBools.MapOutskirts }, { "Deepnest_East_Hornet", MapBools.MapOutskirts }, { "Deepnest_East_Hornet_b", MapBools.MapOutskirts }, { "Hive_01", MapBools.MapOutskirts }, { "Hive_02", MapBools.MapOutskirts }, { "Hive_03", MapBools.MapOutskirts }, { "Hive_03_b", MapBools.MapOutskirts }, { "Hive_03_c", MapBools.MapOutskirts }, { "Hive_04", MapBools.MapOutskirts }, { "Hive_04_b", MapBools.MapOutskirts }, { "Hive_05", MapBools.MapOutskirts }, { "Deepnest_43", MapBools.MapRoyalGardens }, { "Deepnest_43_b", MapBools.MapRoyalGardens }, { "Fungus1_23", MapBools.MapRoyalGardens }, { "Fungus1_24", MapBools.MapRoyalGardens }, { "Fungus3_04", MapBools.MapRoyalGardens }, { "Fungus3_05", MapBools.MapRoyalGardens }, { "Fungus3_08", MapBools.MapRoyalGardens }, { "Fungus3_10", MapBools.MapRoyalGardens }, { "Fungus3_11", MapBools.MapRoyalGardens }, { "Fungus3_13", MapBools.MapRoyalGardens }, { "Fungus3_21", MapBools.MapRoyalGardens }, { "Fungus3_22", MapBools.MapRoyalGardens }, { "Fungus3_22_b", MapBools.MapRoyalGardens }, { "Fungus3_23", MapBools.MapRoyalGardens }, { "Fungus3_23_b", MapBools.MapRoyalGardens }, { "Fungus3_34", MapBools.MapRoyalGardens }, { "Fungus3_39", MapBools.MapRoyalGardens }, { "Fungus3_40", MapBools.MapRoyalGardens }, { "Fungus3_48", MapBools.MapRoyalGardens }, { "Fungus3_48_bot", MapBools.MapRoyalGardens }, { "Fungus3_48_left", MapBools.MapRoyalGardens }, { "Fungus3_48_top", MapBools.MapRoyalGardens }, { "Fungus3_49", MapBools.MapRoyalGardens }, { "Fungus3_50", MapBools.MapRoyalGardens }, { "Crossroads_46b", MapBools.MapRestingGrounds }, { "Crossroads_50", MapBools.MapRestingGrounds }, { "RestingGrounds_02", MapBools.MapRestingGrounds }, { "RestingGrounds_04", MapBools.MapRestingGrounds }, { "RestingGrounds_05", MapBools.MapRestingGrounds }, { "RestingGrounds_06", MapBools.MapRestingGrounds }, { "RestingGrounds_08", MapBools.MapRestingGrounds }, { "RestingGrounds_09", MapBools.MapRestingGrounds }, { "RestingGrounds_10_b", MapBools.MapRestingGrounds }, { "RestingGrounds_10_c", MapBools.MapRestingGrounds }, { "RestingGrounds_10_d", MapBools.MapRestingGrounds }, { "RestingGrounds_12", MapBools.MapRestingGrounds }, { "RestingGrounds_17", MapBools.MapRestingGrounds }, { "Ruins2_10", MapBools.MapRestingGrounds }, { "RestingGrounds_10", MapBools.MapRestingGrounds }, { "Abyss_01", MapBools.MapWaterways }, { "Abyss_02", MapBools.MapWaterways }, { "Waterways_01", MapBools.MapWaterways }, { "Waterways_02", MapBools.MapWaterways }, { "Waterways_02b", MapBools.MapWaterways }, { "Waterways_03", MapBools.MapWaterways }, { "Waterways_04", MapBools.MapWaterways }, { "Waterways_04_part_b", MapBools.MapWaterways }, { "Waterways_04b", MapBools.MapWaterways }, { "Waterways_05", MapBools.MapWaterways }, { "Waterways_06", MapBools.MapWaterways }, { "Waterways_07", MapBools.MapWaterways }, { "Waterways_08", MapBools.MapWaterways }, { "Waterways_09", MapBools.MapWaterways }, { "Waterways_12", MapBools.MapWaterways }, { "Waterways_13", MapBools.MapWaterways }, { "Waterways_14", MapBools.MapWaterways }, { "Waterways_15", MapBools.MapWaterways } }; } private bool HasMapForScene(string sceneName) { if (mapZoneBools == null) { mapZoneBools = InitMapBools(); } if (mapZoneBools.ContainsKey(sceneName)) { return mapZoneBools[sceneName] switch { MapBools.MapDirtmouth => mapDirtmouth, MapBools.MapCrossroads => mapCrossroads, MapBools.MapGreenpath => mapGreenpath, MapBools.MapFogCanyon => mapFogCanyon, MapBools.MapRoyalGardens => mapRoyalGardens, MapBools.MapFungalWastes => mapFungalWastes, MapBools.MapCity => mapCity, MapBools.MapWaterways => mapWaterways, MapBools.MapMines => mapMines, MapBools.MapDeepnest => mapDeepnest, MapBools.MapCliffs => mapCliffs, MapBools.MapOutskirts => mapOutskirts, MapBools.MapRestingGrounds => mapRestingGrounds, MapBools.MapAbyss => mapAbyss, _ => false, }; } return true; } protected PlayerData() { SetupNewPlayerData(); } public void PrintStory() { Debug.Log((object)"combining player story"); playerStoryOutput = string.Join(",", playerStory.ToArray()); } public void Reset() { SetupNewPlayerData(); } public bool UpdateGameMap() { bool result = false; if (hasQuill) { foreach (string item in scenesVisited) { if (!scenesMapped.Contains(item) && HasMapForScene(item)) { scenesMapped.Add(item); result = true; } } } return result; } public void CheckAllMaps() { if (mapCrossroads && mapGreenpath && mapFogCanyon && mapRoyalGardens && mapFungalWastes && mapCity && mapWaterways && mapMines && mapDeepnest && mapCliffs && mapOutskirts && mapRestingGrounds && mapAbyss) { corniferAtHome = true; } } public void SetBool(string boolName, bool value) { FieldInfo field = GetType().GetField(boolName); if (field != null) { field.SetValue(instance, value); } else { Debug.Log((object)("PlayerData: Could not find field named " + boolName + ", check variable name exists and FSM variable string is correct.")); } } public void SetInt(string intName, int value) { FieldInfo field = GetType().GetField(intName); if (field != null) { field.SetValue(instance, value); } else { Debug.Log((object)("PlayerData: Could not find field named " + intName + ", check variable name exists and FSM variable string is correct.")); } } public void IncrementInt(string intName) { FieldInfo field = GetType().GetField(intName); if (field != null) { int num = (int)field.GetValue(instance); field.SetValue(instance, num + 1); } else { Debug.Log((object)("PlayerData: Could not find field named " + intName + ", check variable name exists and FSM variable string is correct.")); } } public void IntAdd(string intName, int amount) { FieldInfo field = GetType().GetField(intName); if (field != null) { int num = (int)field.GetValue(instance); field.SetValue(instance, num + amount); } else { Debug.Log((object)("PlayerData: Could not find field named " + intName + ", check variable name exists and FSM variable string is correct.")); } } public void SetFloat(string floatName, float value) { FieldInfo field = GetType().GetField(floatName); if (field != null) { field.SetValue(instance, value); } else { Debug.Log((object)("PlayerData: Could not find field named " + floatName + ", check variable name exists and FSM variable string is correct.")); } } public void DecrementInt(string intName) { FieldInfo field = GetType().GetField(intName); if (field != null) { int num = (int)field.GetValue(instance); field.SetValue(instance, num - 1); } } public bool GetBool(string boolName) { if (string.IsNullOrEmpty(boolName)) { return false; } FieldInfo field = GetType().GetField(boolName); if (field != null) { return (bool)field.GetValue(instance); } Debug.Log((object)("PlayerData: Could not find bool named " + boolName + " in PlayerData")); return false; } public int GetInt(string intName) { if (string.IsNullOrEmpty(intName)) { Debug.LogError((object)"PlayerData: Int with an EMPTY name requested."); return -9999; } FieldInfo field = GetType().GetField(intName); if (field != null) { return (int)field.GetValue(instance); } Debug.LogError((object)("PlayerData: Could not find int named " + intName + " in PlayerData")); return -9999; } public float GetFloat(string floatName) { if (string.IsNullOrEmpty(floatName)) { Debug.LogError((object)"PlayerData: Float with an EMPTY name requested."); return -9999f; } FieldInfo field = GetType().GetField(floatName); if (field != null) { return (float)field.GetValue(instance); } Debug.LogError((object)("PlayerData: Could not find int named " + floatName + " in PlayerData")); return -9999f; } public string GetString(string stringName) { if (string.IsNullOrEmpty(stringName)) { Debug.LogError((object)"PlayerData: String with an EMPTY name requested."); return " "; } FieldInfo field = GetType().GetField(stringName); if (field != null) { return (string)field.GetValue(instance); } Debug.LogError((object)("PlayerData: Could not find string named " + stringName + " in PlayerData")); return " "; } public void SetString(string stringName, string value) { FieldInfo field = GetType().GetField(stringName); if (field != null) { field.SetValue(instance, value); } else { Debug.Log((object)("PlayerData: Could not find field named " + stringName + ", check variable name exists and FSM variable string is correct.")); } } public void SetVector3(string vectorName, Vector3 value) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) FieldInfo field = GetType().GetField(vectorName); if (field != null) { field.SetValue(instance, value); } else { Debug.Log((object)("PlayerData: Could not find field named " + vectorName + ", check variable name exists and FSM variable string is correct.")); } } public Vector3 GetVector3(string vectorName) { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) FieldInfo field = GetType().GetField(vectorName); if (field != null) { return (Vector3)field.GetValue(instance); } Debug.LogError((object)("PlayerData: Could not find string named " + vectorName + " in PlayerData")); return Vector3.zero; } public void SetVariable(string fieldName, T value) { FieldInfo field = GetType().GetField(fieldName); if (field != null) { if (field.FieldType == typeof(T)) { field.SetValue(this, value); } else { Debug.LogError((object)$"PlayerData field: {fieldName}, type {field.FieldType} does not match type: {typeof(T).ToString()}"); } } else { Debug.LogError((object)("PlayerData field: " + fieldName + " does not exist!")); } } public T GetVariable(string fieldName) { FieldInfo field = GetType().GetField(fieldName); if (field != null) { if (field.FieldType == typeof(T)) { return (T)field.GetValue(this); } Debug.LogError((object)$"PlayerData field: {fieldName}, type {field.FieldType} does not match type: {typeof(T).ToString()}"); } else { Debug.LogError((object)("PlayerData field: " + fieldName + " does not exist!")); } return default(T); } public void AddHealth(int amount) { if (health + amount >= maxHealth) { health = maxHealth; } else { health += amount; } if (health >= CurrentMaxHealth) { health = maxHealth; } } public void TakeHealth(int amount) { if (amount > 0 && health == maxHealth && health != CurrentMaxHealth) { health = CurrentMaxHealth; } if (healthBlue > 0) { int num = amount - healthBlue; damagedBlue = true; healthBlue -= amount; if (healthBlue < 0) { healthBlue = 0; } if (num > 0) { TakeHealth(num); } } else { damagedBlue = false; if (health - amount <= 0) { health = 0; } else { health -= amount; } } } public void MaxHealth() { prevHealth = health; health = CurrentMaxHealth; blockerHits = 4; UpdateBlueHealth(); } public void ActivateTestingCheats() { rancidEggs += 3; simpleKeys += 3; ore += 6; AddGeo(50000); openedTownBuilding = true; openedCrossroads = true; openedGreenpath = true; openedFungalWastes = true; openedRuins1 = true; openedRuins2 = true; openedRoyalGardens = true; openedRestingGrounds = true; openedDeepnest = true; openedStagNest = true; openedHiddenStation = true; dreamOrbs = 9999; } public void GetAllPowerups() { canDash = true; hasDash = true; hasWalljump = true; canWallJump = true; hasSuperDash = true; hasDreamNail = true; hasShadowDash = true; canShadowDash = true; dreamNailUpgraded = true; hasDoubleJump = true; hasLantern = true; hasAcidArmour = true; hasTramPass = true; hasSpell = true; if (fireballLevel == 0) { fireballLevel = 1; } if (quakeLevel == 0) { quakeLevel = 1; } if (screamLevel == 0) { screamLevel = 1; } hasLoveKey = true; hasWhiteKey = true; hasKingsBrand = true; hasNailArt = true; hasDashSlash = true; hasCyclone = true; hasUpwardSlash = true; hasCharm = true; gotCharm_1 = true; gotCharm_2 = true; gotCharm_3 = true; gotCharm_4 = true; gotCharm_5 = true; gotCharm_6 = true; gotCharm_7 = true; gotCharm_8 = true; gotCharm_9 = true; gotCharm_10 = true; gotCharm_11 = true; gotCharm_12 = true; gotCharm_13 = true; gotCharm_14 = true; gotCharm_15 = true; gotCharm_16 = true; gotCharm_17 = true; gotCharm_18 = true; gotCharm_19 = true; gotCharm_20 = true; gotCharm_21 = true; gotCharm_22 = true; gotCharm_23 = true; gotCharm_24 = true; gotCharm_25 = true; gotCharm_26 = true; gotCharm_27 = true; gotCharm_28 = true; gotCharm_29 = true; gotCharm_30 = true; gotCharm_31 = true; gotCharm_32 = true; gotCharm_33 = true; gotCharm_34 = true; gotCharm_35 = true; gotCharm_37 = true; gotCharm_38 = true; gotCharm_39 = true; charmSlots = 11; } public void AddToMaxHealth(int amount) { maxHealthBase += amount; if (!equippedCharm_27) { maxHealth += amount; } prevHealth = health; health = maxHealth; if (maxHealthBase == maxHealthCap) { heartPieceMax = true; } } public void UpdateBlueHealth() { healthBlue = 0; if (equippedCharm_8) { healthBlue += 2; } if (equippedCharm_9) { healthBlue += 4; } } public void AddGeo(int amount) { geo += amount; if (geo > 9999999) { geo = 9999999; } } public void TakeGeo(int amount) { geo -= amount; } public bool WouldDie(int damage) { if (health - damage <= 0) { return true; } return false; } public bool AddMPCharge(int amount) { bool result = false; if (soulLimited && maxMP != 66) { maxMP = 66; } if (!soulLimited && maxMP != 99) { maxMP = 99; } if (BossSequenceController.BoundSoul && maxMP != 33) { maxMP = 33; } if (MPCharge + amount > maxMP) { if (MPReserve < MPReserveMax && !BossSequenceController.BoundSoul) { MPReserve += amount - (maxMP - MPCharge); result = true; if (MPReserve > MPReserveMax) { MPReserve = MPReserveMax; } } MPCharge = maxMP; } else { MPCharge += amount; result = true; } return result; } public void TakeMP(int amount) { if (amount <= MPCharge) { MPCharge -= amount; if (MPCharge < 0) { MPCharge = 0; } } else { MPCharge = 0; } } public void TakeReserveMP(int amount) { MPReserve -= amount; if (MPReserve < 0) { MPReserve = 0; } } public void ClearMP() { MPCharge = 0; MPReserve = 0; } public void AddToMaxMPReserve(int amount) { MPReserveMax += amount; if (MPReserveMax == MPReserveCap) { vesselFragmentMax = true; } } public void StartSoulLimiter() { soulLimited = true; maxMP = 66; } public void EndSoulLimiter() { soulLimited = false; maxMP = 99; } public void EquipCharm(int charmNum) { equippedCharms.Add(charmNum); } public void UnequipCharm(int charmNum) { equippedCharms.Remove(charmNum); } public void CalculateNotchesUsed() { int num = 0; if (equippedCharm_1) { num += charmCost_1; } if (equippedCharm_2) { num += charmCost_2; } if (equippedCharm_3) { num += charmCost_3; } if (equippedCharm_4) { num += charmCost_4; } if (equippedCharm_5) { num += charmCost_5; } if (equippedCharm_6) { num += charmCost_6; } if (equippedCharm_7) { num += charmCost_7; } if (equippedCharm_8) { num += charmCost_8; } if (equippedCharm_9) { num += charmCost_9; } if (equippedCharm_10) { num += charmCost_10; } if (equippedCharm_11) { num += charmCost_11; } if (equippedCharm_12) { num += charmCost_12; } if (equippedCharm_13) { num += charmCost_13; } if (equippedCharm_14) { num += charmCost_14; } if (equippedCharm_15) { num += charmCost_15; } if (equippedCharm_16) { num += charmCost_16; } if (equippedCharm_17) { num += charmCost_17; } if (equippedCharm_18) { num += charmCost_18; } if (equippedCharm_19) { num += charmCost_19; } if (equippedCharm_20) { num += charmCost_20; } if (equippedCharm_21) { num += charmCost_21; } if (equippedCharm_22) { num += charmCost_22; } if (equippedCharm_23) { num += charmCost_23; } if (equippedCharm_24) { num += charmCost_24; } if (equippedCharm_25) { num += charmCost_25; } if (equippedCharm_26) { num += charmCost_26; } if (equippedCharm_27) { num += charmCost_27; } if (equippedCharm_28) { num += charmCost_28; } if (equippedCharm_29) { num += charmCost_29; } if (equippedCharm_30) { num += charmCost_30; } if (equippedCharm_31) { num += charmCost_31; } if (equippedCharm_32) { num += charmCost_32; } if (equippedCharm_33) { num += charmCost_33; } if (equippedCharm_34) { num += charmCost_34; } if (equippedCharm_35) { num += charmCost_35; } if (equippedCharm_36) { num += charmCost_36; } if (equippedCharm_37) { num += charmCost_37; } if (equippedCharm_38) { num += charmCost_38; } if (equippedCharm_39) { num += charmCost_39; } if (equippedCharm_40) { num += charmCost_40; } charmSlotsFilled = num; } public void SetBenchRespawn(RespawnMarker spawnMarker, string sceneName, int spawnType) { respawnMarkerName = ((Object)spawnMarker).name; respawnScene = sceneName; respawnType = spawnType; respawnFacingRight = spawnMarker.respawnFacingRight; GameManager.instance.SetCurrentMapZoneAsRespawn(); } public void SetBenchRespawn(string spawnMarker, string sceneName, bool facingRight) { respawnMarkerName = spawnMarker; respawnScene = sceneName; respawnFacingRight = facingRight; GameManager.instance.SetCurrentMapZoneAsRespawn(); } public void SetBenchRespawn(string spawnMarker, string sceneName, int spawnType, bool facingRight) { respawnMarkerName = spawnMarker; respawnScene = sceneName; respawnType = spawnType; respawnFacingRight = facingRight; GameManager.instance.SetCurrentMapZoneAsRespawn(); } public void SetHazardRespawn(HazardRespawnMarker location) { //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_0013: 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) hazardRespawnLocation = ((Component)location).transform.position; hazardRespawnFacing = location.RespawnFacingDirection; } public void SetHazardRespawn(Vector3 position, bool facingRight) { //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_0016: Unknown result type (might be due to invalid IL or missing references) hazardRespawnLocation = position; hazardRespawnFacingRight = facingRight; hazardRespawnFacing = (FacingDirection)((!facingRight) ? 1 : 2); } public void CountGameCompletion() { completionPercentage = 0f; CountCharms(); completionPercentage += charmsOwned; if (killedFalseKnight) { completionPercentage += 1f; } if (hornet1Defeated) { completionPercentage += 1f; } if (hornetOutskirtsDefeated) { completionPercentage += 1f; } if (killedMantisLord) { completionPercentage += 1f; } if (killedMageLord) { completionPercentage += 1f; } if (killedDungDefender) { completionPercentage += 1f; } if (killedBlackKnight) { completionPercentage += 1f; } if (killedInfectedKnight) { completionPercentage += 1f; } if (killedMimicSpider) { completionPercentage += 1f; } if (killedMegaJellyfish) { completionPercentage += 1f; } if (killedTraitorLord) { completionPercentage += 1f; } if (killedJarCollector) { completionPercentage += 1f; } if (killedBigFly) { completionPercentage += 1f; } if (killedMawlek) { completionPercentage += 1f; } if (killedHiveKnight) { completionPercentage += 1f; } if (colosseumBronzeCompleted) { completionPercentage += 1f; } if (colosseumSilverCompleted) { completionPercentage += 1f; } if (colosseumGoldCompleted) { completionPercentage += 1f; } if (killedGhostAladar) { completionPercentage += 1f; } if (killedGhostHu) { completionPercentage += 1f; } if (killedGhostXero) { completionPercentage += 1f; } if (killedGhostMarkoth) { completionPercentage += 1f; } if (killedGhostNoEyes) { completionPercentage += 1f; } if (killedGhostMarmu) { completionPercentage += 1f; } if (killedGhostGalien) { completionPercentage += 1f; } completionPercentage += fireballLevel; completionPercentage += quakeLevel; completionPercentage += screamLevel; if (hasCyclone) { completionPercentage += 1f; } if (hasDashSlash) { completionPercentage += 1f; } if (hasUpwardSlash) { completionPercentage += 1f; } if (hasDash) { completionPercentage += 2f; } if (hasWalljump) { completionPercentage += 2f; } if (hasDoubleJump) { completionPercentage += 2f; } if (hasAcidArmour) { completionPercentage += 2f; } if (hasSuperDash) { completionPercentage += 2f; } if (hasShadowDash) { completionPercentage += 2f; } if (hasKingsBrand) { completionPercentage += 2f; } if (lurienDefeated) { completionPercentage += 1f; } if (hegemolDefeated) { completionPercentage += 1f; } if (monomonDefeated) { completionPercentage += 1f; } if (hasDreamNail) { completionPercentage += 1f; } if (dreamNailUpgraded) { completionPercentage += 1f; } if (mothDeparted) { completionPercentage += 1f; } completionPercentage += nailSmithUpgrades; completionPercentage += maxHealthBase - 5; switch (MPReserveMax) { case 33: completionPercentage += 1f; break; case 66: completionPercentage += 2f; break; case 99: completionPercentage += 3f; break; } if (killedGrimm) { completionPercentage += 1f; } if (killedNightmareGrimm || destroyedNightmareLantern) { completionPercentage += 1f; } if (hasGodfinder) { completionPercentage += 1f; } if (bossDoorStateTier1.completed) { completionPercentage += 1f; } if (bossDoorStateTier2.completed) { completionPercentage += 1f; } if (bossDoorStateTier3.completed) { completionPercentage += 1f; } if (bossDoorStateTier4.completed) { completionPercentage += 1f; } } public void CountCharms() { charmsOwned = 0; if (gotCharm_1) { charmsOwned++; } if (gotCharm_2) { charmsOwned++; } if (gotCharm_3) { charmsOwned++; } if (gotCharm_4) { charmsOwned++; } if (gotCharm_5) { charmsOwned++; } if (gotCharm_6) { charmsOwned++; } if (gotCharm_7) { charmsOwned++; } if (gotCharm_8) { charmsOwned++; } if (gotCharm_9) { charmsOwned++; } if (gotCharm_10) { charmsOwned++; } if (gotCharm_11) { charmsOwned++; } if (gotCharm_12) { charmsOwned++; } if (gotCharm_13) { charmsOwned++; } if (gotCharm_14) { charmsOwned++; } if (gotCharm_15) { charmsOwned++; } if (gotCharm_16) { charmsOwned++; } if (gotCharm_17) { charmsOwned++; } if (gotCharm_18) { charmsOwned++; } if (gotCharm_19) { charmsOwned++; } if (gotCharm_20) { charmsOwned++; } if (gotCharm_21) { charmsOwned++; } if (gotCharm_22) { charmsOwned++; } if (gotCharm_23) { charmsOwned++; } if (gotCharm_24) { charmsOwned++; } if (gotCharm_25) { charmsOwned++; } if (gotCharm_26) { charmsOwned++; } if (gotCharm_27) { charmsOwned++; } if (gotCharm_28) { charmsOwned++; } if (gotCharm_29) { charmsOwned++; } if (gotCharm_30) { charmsOwned++; } if (gotCharm_31) { charmsOwned++; } if (gotCharm_32) { charmsOwned++; } if (gotCharm_33) { charmsOwned++; } if (gotCharm_34) { charmsOwned++; } if (gotCharm_35) { charmsOwned++; } if (royalCharmState > 2) { charmsOwned++; } if (gotCharm_37) { charmsOwned++; } if (gotCharm_38) { charmsOwned++; } if (gotCharm_39) { charmsOwned++; } if (gotCharm_40) { charmsOwned++; } } public void CountJournalEntries() { journalEntriesCompleted = 0; journalNotesCompleted = 0; journalEntriesTotal = 146; if (killedCrawler) { journalEntriesCompleted += 2; } if (killedBuzzer) { journalEntriesCompleted++; } if (killedBouncer) { journalEntriesCompleted++; } if (killedClimber) { journalEntriesCompleted++; } if (killedHopper) { journalEntriesCompleted++; } if (killedWorm) { journalEntriesCompleted++; } if (killedSpitter) { journalEntriesCompleted++; } if (killedHatcher) { journalEntriesCompleted++; } if (killedHatchling) { journalEntriesCompleted++; } if (killedZombieRunner) { journalEntriesCompleted++; } if (killedZombieHornhead) { journalEntriesCompleted++; } if (killedZombieLeaper) { journalEntriesCompleted++; } if (killedZombieBarger) { journalEntriesCompleted++; } if (killedZombieShield) { journalEntriesCompleted++; } if (killedZombieGuard) { journalEntriesCompleted++; } if (killedBigBuzzer) { journalEntriesCompleted++; } if (killedBigFly) { journalEntriesCompleted++; } if (killedMawlek) { journalEntriesCompleted++; } if (killedFalseKnight) { journalEntriesCompleted++; } if (killedRoller) { journalEntriesCompleted++; } if (killedBlocker) { journalEntriesCompleted++; } if (killedPrayerSlug) { journalEntriesCompleted++; } if (killedMenderBug) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedMossmanRunner) { journalEntriesCompleted++; } if (killedMossmanShaker) { journalEntriesCompleted++; } if (killedMosquito) { journalEntriesCompleted++; } if (killedBlobFlyer) { journalEntriesCompleted++; } if (killedFungifiedZombie) { journalEntriesCompleted++; } if (killedPlantShooter) { journalEntriesCompleted++; } if (killedMossCharger) { journalEntriesCompleted++; } if (killedMegaMossCharger) { journalEntriesCompleted++; } if (killedSnapperTrap) { journalEntriesCompleted++; } if (killedMossKnight) { journalEntriesCompleted++; } if (killedGrassHopper) { journalEntriesCompleted++; } if (killedAcidFlyer) { journalEntriesCompleted++; } if (killedAcidWalker) { journalEntriesCompleted++; } if (killedMossFlyer) { journalEntriesCompleted++; } if (killedMossKnightFat) { journalEntriesCompleted++; } if (killedMossWalker) { journalEntriesCompleted++; } if (killedInfectedKnight) { journalEntriesCompleted++; } if (killedLazyFlyer) { journalEntriesCompleted++; } if (killedZapBug) { journalEntriesCompleted++; } if (killedJellyfish) { journalEntriesCompleted++; } if (killedJellyCrawler) { journalEntriesCompleted++; } if (killedMegaJellyfish) { journalEntriesCompleted++; } if (killedFungoonBaby) { journalEntriesCompleted++; } if (killedMushroomTurret) { journalEntriesCompleted++; } if (killedMantis) { journalEntriesCompleted++; } if (killedMushroomRoller) { journalEntriesCompleted++; } if (killedMushroomBrawler) { journalEntriesCompleted++; } if (killedMushroomBaby) { journalEntriesCompleted++; } if (killedMantisFlyerChild) { journalEntriesCompleted++; } if (killedFungusFlyer) { journalEntriesCompleted++; } if (killedFungCrawler) { journalEntriesCompleted++; } if (killedMantisLord) { journalEntriesCompleted++; } if (killedBlackKnight) { journalEntriesCompleted++; } if (killedMage) { journalEntriesCompleted++; } if (killedMageKnight) { journalEntriesCompleted++; } if (killedRoyalDandy) { journalEntriesCompleted++; } if (killedRoyalCoward) { journalEntriesCompleted++; } if (killedRoyalPlumper) { journalEntriesCompleted++; } if (killedFlyingSentrySword) { journalEntriesCompleted++; } if (killedFlyingSentryJavelin) { journalEntriesCompleted++; } if (killedSentry) { journalEntriesCompleted++; } if (killedSentryFat) { journalEntriesCompleted++; } if (killedMageBlob) { journalEntriesCompleted++; } if (killedGreatShieldZombie) { journalEntriesCompleted++; } if (killedJarCollector) { journalEntriesCompleted++; } if (killedMageBalloon) { journalEntriesCompleted++; } if (killedMageLord) { journalEntriesCompleted++; } if (killedGorgeousHusk) { journalEntriesCompleted++; } if (killedFlipHopper) { journalEntriesCompleted++; } if (killedFlukeman) { journalEntriesCompleted++; } if (killedInflater) { journalEntriesCompleted++; } if (killedFlukefly) { journalEntriesCompleted++; } if (killedFlukeMother) { journalEntriesCompleted++; } if (killedDungDefender) { journalEntriesCompleted++; } if (killedCrystalCrawler) { journalEntriesCompleted++; } if (killedCrystalFlyer) { journalEntriesCompleted++; } if (killedLaserBug) { journalEntriesCompleted++; } if (killedBeamMiner) { journalEntriesCompleted++; } if (killedZombieMiner) { journalEntriesCompleted++; } if (killedMegaBeamMiner) { journalEntriesCompleted++; } if (killedMinesCrawler) { journalEntriesCompleted++; } if (killedAngryBuzzer) { journalEntriesCompleted++; } if (killedBurstingBouncer) { journalEntriesCompleted++; } if (killedBurstingZombie) { journalEntriesCompleted++; } if (killedSpittingZombie) { journalEntriesCompleted++; } if (killedBabyCentipede) { journalEntriesCompleted++; } if (killedBigCentipede) { journalEntriesCompleted++; } if (killedCentipedeHatcher) { journalEntriesCompleted++; } if (killedLesserMawlek) { journalEntriesCompleted++; } if (killedSlashSpider) { journalEntriesCompleted++; } if (killedSpiderCorpse) { journalEntriesCompleted++; } if (killedShootSpider) { journalEntriesCompleted++; } if (killedMiniSpider) { journalEntriesCompleted++; } if (killedSpiderFlyer) { journalEntriesCompleted++; } if (killedMimicSpider) { journalEntriesCompleted++; } if (killedBeeHatchling) { journalEntriesCompleted++; } if (killedBeeStinger) { journalEntriesCompleted++; } if (killedBigBee) { journalEntriesCompleted++; } if (killedHiveKnight) { journalEntriesCompleted++; } if (killedBlowFly) { journalEntriesCompleted++; } if (killedCeilingDropper) { journalEntriesCompleted++; } if (killedGiantHopper) { journalEntriesCompleted++; } if (killedGrubMimic) { journalEntriesCompleted++; } if (killedMawlekTurret) { journalEntriesCompleted++; } if (killedOrangeScuttler) { journalEntriesCompleted++; } if (killedHealthScuttler) { journalEntriesCompleted++; } if (killedPigeon) { journalEntriesCompleted++; } if (killedZombieHive) { journalEntriesCompleted++; } if (killedHornet) { journalEntriesCompleted++; } if (killedAbyssCrawler) { journalEntriesCompleted++; } if (killedSuperSpitter) { journalEntriesCompleted++; } if (killedSibling) { journalEntriesCompleted++; } if (killedAbyssTendril) { journalEntriesCompleted++; } if (killedPalaceFly) { journalEntriesCompleted++; } if (killedEggSac) { journalEntriesCompleted++; } if (killedMummy) { journalEntriesCompleted++; } if (killedOrangeBalloon) { journalEntriesCompleted++; } if (killedHeavyMantis) { journalEntriesCompleted++; } if (killedTraitorLord) { journalEntriesCompleted++; } if (killedMantisHeavyFlyer) { journalEntriesCompleted++; } if (killedGardenZombie) { journalEntriesCompleted++; } if (killedRoyalGuard) { journalEntriesCompleted++; } if (killedWhiteRoyal) { journalEntriesCompleted++; } if (killedOblobble) { journalEntriesCompleted++; } if (killedZote) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedBlobble) { journalEntriesCompleted++; } if (killedColMosquito) { journalEntriesCompleted++; } if (killedColRoller) { journalEntriesCompleted++; } if (killedColFlyingSentry) { journalEntriesCompleted++; } if (killedColMiner) { journalEntriesCompleted++; } if (killedColShield) { journalEntriesCompleted++; } if (killedColWorm) { journalEntriesCompleted++; } if (killedColHopper) { journalEntriesCompleted++; } if (killedElectricMage) { journalEntriesCompleted++; } if (killedLobsterLancer) { journalEntriesCompleted++; } if (killedGhostAladar) { journalEntriesCompleted++; } if (killedGhostXero) { journalEntriesCompleted++; } if (killedGhostHu) { journalEntriesCompleted++; } if (killedGhostMarmu) { journalEntriesCompleted++; } if (killedGhostNoEyes) { journalEntriesCompleted++; } if (killedGhostMarkoth) { journalEntriesCompleted++; } if (killedGhostGalien) { journalEntriesCompleted++; } if (killedWhiteDefender) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedGreyPrince) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedZotelingBuzzer) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedZotelingHopper) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedZotelingBalloon) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedHollowKnight) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedFinalBoss) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedFlameBearerSmall) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedFlameBearerMed) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedFlameBearerLarge) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedGrimm) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedNightmareGrimm) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedFatFluke) { journalEntriesCompleted++; } if (killedPaleLurker) { journalEntriesCompleted++; } if (killedNailBros) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedPaintmaster) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedNailsage) { journalEntriesCompleted++; journalEntriesTotal++; } if (killedHollowKnightPrime) { journalEntriesCompleted++; journalEntriesTotal++; } if (killsCrawler == 0) { journalNotesCompleted += 2; } if (killsBuzzer == 0) { journalNotesCompleted++; } if (killsBouncer == 0) { journalNotesCompleted++; } if (killsClimber == 0) { journalNotesCompleted++; } if (killsHopper == 0) { journalNotesCompleted++; } if (killsWorm == 0) { journalNotesCompleted++; } if (killsSpitter == 0) { journalNotesCompleted++; } if (killsHatcher == 0) { journalNotesCompleted++; } if (killsHatchling == 0) { journalNotesCompleted++; } if (killsZombieRunner == 0) { journalNotesCompleted++; } if (killsZombieHornhead == 0) { journalNotesCompleted++; } if (killsZombieLeaper == 0) { journalNotesCompleted++; } if (killsZombieBarger == 0) { journalNotesCompleted++; } if (killsZombieShield == 0) { journalNotesCompleted++; } if (killsZombieGuard == 0) { journalNotesCompleted++; } if (killsBigBuzzer == 0) { journalNotesCompleted++; } if (killsBigFly == 0) { journalNotesCompleted++; } if (killsMawlek == 0) { journalNotesCompleted++; } if (killsFalseKnight == 0) { journalNotesCompleted++; } if (killsRoller == 0) { journalNotesCompleted++; } if (killsBlocker == 0) { journalNotesCompleted++; } if (killsPrayerSlug == 0) { journalNotesCompleted++; } if (killsMenderBug == 0) { journalNotesCompleted++; } if (killsMossmanRunner == 0) { journalNotesCompleted++; } if (killsMossmanShaker == 0) { journalNotesCompleted++; } if (killsMosquito == 0) { journalNotesCompleted++; } if (killsBlobFlyer == 0) { journalNotesCompleted++; } if (killsFungifiedZombie == 0) { journalNotesCompleted++; } if (killsPlantShooter == 0) { journalNotesCompleted++; } if (killsMossCharger == 0) { journalNotesCompleted++; } if (killsMegaMossCharger == 0) { journalNotesCompleted++; } if (killsSnapperTrap == 0) { journalNotesCompleted++; } if (killsMossKnight == 0) { journalNotesCompleted++; } if (killsGrassHopper == 0) { journalNotesCompleted++; } if (killsAcidFlyer == 0) { journalNotesCompleted++; } if (killsAcidWalker == 0) { journalNotesCompleted++; } if (killsMossFlyer == 0) { journalNotesCompleted++; } if (killsMossKnightFat == 0) { journalNotesCompleted++; } if (killsMossWalker == 0) { journalNotesCompleted++; } if (killsInfectedKnight == 0) { journalNotesCompleted++; } if (killsLazyFlyer == 0) { journalNotesCompleted++; } if (killsZapBug == 0) { journalNotesCompleted++; } if (killsJellyfish == 0) { journalNotesCompleted++; } if (killsJellyCrawler == 0) { journalNotesCompleted++; } if (killsMegaJellyfish == 0) { journalNotesCompleted++; } if (killsFungoonBaby == 0) { journalNotesCompleted++; } if (killsMushroomTurret == 0) { journalNotesCompleted++; } if (killsMantis == 0) { journalNotesCompleted++; } if (killsMushroomRoller == 0) { journalNotesCompleted++; } if (killsMushroomBrawler == 0) { journalNotesCompleted++; } if (killsMushroomBaby == 0) { journalNotesCompleted++; } if (killsMantisFlyerChild == 0) { journalNotesCompleted++; } if (killsFungusFlyer == 0) { journalNotesCompleted++; } if (killsFungCrawler == 0) { journalNotesCompleted++; } if (killsMantisLord == 0) { journalNotesCompleted++; } if (killsBlackKnight == 0) { journalNotesCompleted++; } if (killsMage == 0) { journalNotesCompleted++; } if (killsMageKnight == 0) { journalNotesCompleted++; } if (killsRoyalDandy == 0) { journalNotesCompleted++; } if (killsRoyalCoward == 0) { journalNotesCompleted++; } if (killsRoyalPlumper == 0) { journalNotesCompleted++; } if (killsFlyingSentrySword == 0) { journalNotesCompleted++; } if (killsFlyingSentryJavelin == 0) { journalNotesCompleted++; } if (killsSentry == 0) { journalNotesCompleted++; } if (killsSentryFat == 0) { journalNotesCompleted++; } if (killsMageBlob == 0) { journalNotesCompleted++; } if (killsGreatShieldZombie == 0) { journalNotesCompleted++; } if (killsJarCollector == 0) { journalNotesCompleted++; } if (killsMageBalloon == 0) { journalNotesCompleted++; } if (killsMageLord == 0) { journalNotesCompleted++; } if (killsGorgeousHusk == 0) { journalNotesCompleted++; } if (killsFlipHopper == 0) { journalNotesCompleted++; } if (killsFlukeman == 0) { journalNotesCompleted++; } if (killsInflater == 0) { journalNotesCompleted++; } if (killsFlukefly == 0) { journalNotesCompleted++; } if (killsFlukeMother == 0) { journalNotesCompleted++; } if (killsDungDefender == 0) { journalNotesCompleted++; } if (killsCrystalCrawler == 0) { journalNotesCompleted++; } if (killsCrystalFlyer == 0) { journalNotesCompleted++; } if (killsLaserBug == 0) { journalNotesCompleted++; } if (killsBeamMiner == 0) { journalNotesCompleted++; } if (killsZombieMiner == 0) { journalNotesCompleted++; } if (killsMegaBeamMiner == 0) { journalNotesCompleted++; } if (killsMinesCrawler == 0) { journalNotesCompleted++; } if (killsAngryBuzzer == 0) { journalNotesCompleted++; } if (killsBurstingBouncer == 0) { journalNotesCompleted++; } if (killsBurstingZombie == 0) { journalNotesCompleted++; } if (killsSpittingZombie == 0) { journalNotesCompleted++; } if (killsBabyCentipede == 0) { journalNotesCompleted++; } if (killsBigCentipede == 0) { journalNotesCompleted++; } if (killsCentipedeHatcher == 0) { journalNotesCompleted++; } if (killsLesserMawlek == 0) { journalNotesCompleted++; } if (killsSlashSpider == 0) { journalNotesCompleted++; } if (killsSpiderCorpse == 0) { journalNotesCompleted++; } if (killsShootSpider == 0) { journalNotesCompleted++; } if (killsMiniSpider == 0) { journalNotesCompleted++; } if (killsSpiderFlyer == 0) { journalNotesCompleted++; } if (killsMimicSpider == 0) { journalNotesCompleted++; } if (killsBeeHatchling == 0) { journalNotesCompleted++; } if (killsBeeStinger == 0) { journalNotesCompleted++; } if (killsBigBee == 0) { journalNotesCompleted++; } if (killsHiveKnight == 0) { journalNotesCompleted++; } if (killsBlowFly == 0) { journalNotesCompleted++; } if (killsCeilingDropper == 0) { journalNotesCompleted++; } if (killsGiantHopper == 0) { journalNotesCompleted++; } if (killsGrubMimic == 0) { journalNotesCompleted++; } if (killsMawlekTurret == 0) { journalNotesCompleted++; } if (killsOrangeScuttler == 0) { journalNotesCompleted++; } if (killsHealthScuttler == 0) { journalNotesCompleted++; } if (killsPigeon == 0) { journalNotesCompleted++; } if (killsZombieHive == 0) { journalNotesCompleted++; } if (killsHornet == 0) { journalNotesCompleted++; } if (killsAbyssCrawler == 0) { journalNotesCompleted++; } if (killsSuperSpitter == 0) { journalNotesCompleted++; } if (killsSibling == 0) { journalNotesCompleted++; } if (killsAbyssTendril == 0) { journalNotesCompleted++; } if (killsPalaceFly == 0) { journalNotesCompleted++; } if (killsEggSac == 0) { journalNotesCompleted++; } if (killsMummy == 0) { journalNotesCompleted++; } if (killsOrangeBalloon == 0) { journalNotesCompleted++; } if (killsHeavyMantis == 0) { journalNotesCompleted++; } if (killsTraitorLord == 0) { journalNotesCompleted++; } if (killsMantisHeavyFlyer == 0) { journalNotesCompleted++; } if (killsGardenZombie == 0) { journalNotesCompleted++; } if (killsRoyalGuard == 0) { journalNotesCompleted++; } if (killsWhiteRoyal == 0) { journalNotesCompleted++; } if (killsOblobble == 0) { journalNotesCompleted++; } if (killsZote == 0) { journalNotesCompleted++; } if (killsBlobble == 0) { journalNotesCompleted++; } if (killsColMosquito == 0) { journalNotesCompleted++; } if (killsColRoller == 0) { journalNotesCompleted++; } if (killsColFlyingSentry == 0) { journalNotesCompleted++; } if (killsColMiner == 0) { journalNotesCompleted++; } if (killsColShield == 0) { journalNotesCompleted++; } if (killsColWorm == 0) { journalNotesCompleted++; } if (killsColHopper == 0) { journalNotesCompleted++; } if (killsElectricMage == 0) { journalNotesCompleted++; } if (killsLobsterLancer == 0) { journalNotesCompleted++; } if (killsGhostAladar == 0) { journalNotesCompleted++; } if (killsGhostXero == 0) { journalNotesCompleted++; } if (killsGhostHu == 0) { journalNotesCompleted++; } if (killsGhostMarmu == 0) { journalNotesCompleted++; } if (killsGhostNoEyes == 0) { journalNotesCompleted++; } if (killsGhostMarkoth == 0) { journalNotesCompleted++; } if (killsGhostGalien == 0) { journalNotesCompleted++; } if (killedWhiteDefender) { journalNotesCompleted++; } if (killedGreyPrince) { journalNotesCompleted++; } if (killedZotelingBuzzer) { journalNotesCompleted++; } if (killedZotelingHopper) { journalNotesCompleted++; } if (killedZotelingBalloon) { journalNotesCompleted++; } if (killsHollowKnight == 0) { journalNotesCompleted++; } if (killsFinalBoss == 0) { journalNotesCompleted++; } if (killedFlameBearerSmall) { journalNotesCompleted++; } if (killedFlameBearerMed) { journalNotesCompleted++; } if (killedFlameBearerLarge) { journalNotesCompleted++; } if (killedGrimm) { journalNotesCompleted++; } if (killedNightmareGrimm) { journalNotesCompleted++; } if (killedFatFluke) { journalNotesCompleted++; } if (killedPaleLurker) { journalNotesCompleted++; } if (killedNailBros) { journalNotesCompleted++; } if (killedPaintmaster) { journalNotesCompleted++; } if (killedNailsage) { journalNotesCompleted++; } if (killedHollowKnightPrime) { journalNotesCompleted++; } } private void SetupNewPlayerData() { //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_0187: 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_01a1: 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_2202: Unknown result type (might be due to invalid IL or missing references) //IL_2207: Unknown result type (might be due to invalid IL or missing references) //IL_2d92: Unknown result type (might be due to invalid IL or missing references) //IL_2d97: Unknown result type (might be due to invalid IL or missing references) //IL_2d9d: Unknown result type (might be due to invalid IL or missing references) //IL_2da2: Unknown result type (might be due to invalid IL or missing references) //IL_2da8: Unknown result type (might be due to invalid IL or missing references) //IL_2dad: Unknown result type (might be due to invalid IL or missing references) //IL_2db3: Unknown result type (might be due to invalid IL or missing references) //IL_2db8: Unknown result type (might be due to invalid IL or missing references) //IL_2dbe: Unknown result type (might be due to invalid IL or missing references) //IL_2dc3: Unknown result type (might be due to invalid IL or missing references) //IL_2ddb: Unknown result type (might be due to invalid IL or missing references) //IL_2de0: Unknown result type (might be due to invalid IL or missing references) //IL_2de6: Unknown result type (might be due to invalid IL or missing references) //IL_2deb: Unknown result type (might be due to invalid IL or missing references) //IL_2df1: Unknown result type (might be due to invalid IL or missing references) //IL_2df6: Unknown result type (might be due to invalid IL or missing references) //IL_2dfc: Unknown result type (might be due to invalid IL or missing references) //IL_2e01: Unknown result type (might be due to invalid IL or missing references) //IL_2e07: Unknown result type (might be due to invalid IL or missing references) //IL_2e0c: Unknown result type (might be due to invalid IL or missing references) //IL_2e12: Unknown result type (might be due to invalid IL or missing references) //IL_2e17: Unknown result type (might be due to invalid IL or missing references) //IL_2e1d: Unknown result type (might be due to invalid IL or missing references) //IL_2e22: Unknown result type (might be due to invalid IL or missing references) //IL_2e28: Unknown result type (might be due to invalid IL or missing references) //IL_2e2d: Unknown result type (might be due to invalid IL or missing references) //IL_2e33: Unknown result type (might be due to invalid IL or missing references) //IL_2e38: Unknown result type (might be due to invalid IL or missing references) //IL_2e3e: Unknown result type (might be due to invalid IL or missing references) //IL_2e43: Unknown result type (might be due to invalid IL or missing references) //IL_2e49: Unknown result type (might be due to invalid IL or missing references) //IL_2e4e: Unknown result type (might be due to invalid IL or missing references) //IL_2e54: Unknown result type (might be due to invalid IL or missing references) //IL_2e59: Unknown result type (might be due to invalid IL or missing references) //IL_2e5f: Unknown result type (might be due to invalid IL or missing references) //IL_2e64: Unknown result type (might be due to invalid IL or missing references) //IL_2e6a: Unknown result type (might be due to invalid IL or missing references) //IL_2e6f: Unknown result type (might be due to invalid IL or missing references) //IL_2e75: Unknown result type (might be due to invalid IL or missing references) //IL_2e7a: Unknown result type (might be due to invalid IL or missing references) //IL_2e80: Unknown result type (might be due to invalid IL or missing references) //IL_2e85: Unknown result type (might be due to invalid IL or missing references) //IL_2e8b: Unknown result type (might be due to invalid IL or missing references) //IL_2e90: Unknown result type (might be due to invalid IL or missing references) //IL_2e96: Unknown result type (might be due to invalid IL or missing references) //IL_2e9b: Unknown result type (might be due to invalid IL or missing references) //IL_2ea1: Unknown result type (might be due to invalid IL or missing references) //IL_2ea6: Unknown result type (might be due to invalid IL or missing references) //IL_2eac: Unknown result type (might be due to invalid IL or missing references) //IL_2eb1: Unknown result type (might be due to invalid IL or missing references) //IL_2eb7: Unknown result type (might be due to invalid IL or missing references) //IL_2ebc: Unknown result type (might be due to invalid IL or missing references) //IL_2ec2: Unknown result type (might be due to invalid IL or missing references) //IL_2ec7: Unknown result type (might be due to invalid IL or missing references) //IL_2ecd: Unknown result type (might be due to invalid IL or missing references) //IL_2ed2: Unknown result type (might be due to invalid IL or missing references) //IL_2ed8: Unknown result type (might be due to invalid IL or missing references) //IL_2edd: Unknown result type (might be due to invalid IL or missing references) //IL_2ee3: Unknown result type (might be due to invalid IL or missing references) //IL_2ee8: Unknown result type (might be due to invalid IL or missing references) //IL_2eee: Unknown result type (might be due to invalid IL or missing references) //IL_2ef3: Unknown result type (might be due to invalid IL or missing references) //IL_2ef9: Unknown result type (might be due to invalid IL or missing references) //IL_2efe: Unknown result type (might be due to invalid IL or missing references) //IL_2f04: Unknown result type (might be due to invalid IL or missing references) //IL_2f09: Unknown result type (might be due to invalid IL or missing references) //IL_2f0f: Unknown result type (might be due to invalid IL or missing references) //IL_2f14: Unknown result type (might be due to invalid IL or missing references) //IL_2f1a: Unknown result type (might be due to invalid IL or missing references) //IL_2f1f: Unknown result type (might be due to invalid IL or missing references) //IL_2f25: Unknown result type (might be due to invalid IL or missing references) //IL_2f2a: Unknown result type (might be due to invalid IL or missing references) //IL_2f30: Unknown result type (might be due to invalid IL or missing references) //IL_2f35: Unknown result type (might be due to invalid IL or missing references) //IL_2f3b: Unknown result type (might be due to invalid IL or missing references) //IL_2f40: Unknown result type (might be due to invalid IL or missing references) //IL_2f46: Unknown result type (might be due to invalid IL or missing references) //IL_2f4b: Unknown result type (might be due to invalid IL or missing references) //IL_2f51: Unknown result type (might be due to invalid IL or missing references) //IL_2f56: Unknown result type (might be due to invalid IL or missing references) //IL_2f5c: Unknown result type (might be due to invalid IL or missing references) //IL_2f61: Unknown result type (might be due to invalid IL or missing references) //IL_2f67: Unknown result type (might be due to invalid IL or missing references) //IL_2f6c: Unknown result type (might be due to invalid IL or missing references) //IL_2f74: Unknown result type (might be due to invalid IL or missing references) //IL_2f82: Unknown result type (might be due to invalid IL or missing references) //IL_2f83: Unknown result type (might be due to invalid IL or missing references) //IL_2f89: Unknown result type (might be due to invalid IL or missing references) //IL_2f8e: Unknown result type (might be due to invalid IL or missing references) //IL_2f94: Unknown result type (might be due to invalid IL or missing references) //IL_2f99: Unknown result type (might be due to invalid IL or missing references) //IL_2f9f: Unknown result type (might be due to invalid IL or missing references) //IL_2fa4: Unknown result type (might be due to invalid IL or missing references) //IL_2faa: Unknown result type (might be due to invalid IL or missing references) //IL_2faf: Unknown result type (might be due to invalid IL or missing references) //IL_2fb5: Unknown result type (might be due to invalid IL or missing references) //IL_2fba: Unknown result type (might be due to invalid IL or missing references) //IL_2fc0: Unknown result type (might be due to invalid IL or missing references) //IL_2fc5: Unknown result type (might be due to invalid IL or missing references) //IL_2fcb: Unknown result type (might be due to invalid IL or missing references) //IL_2fd0: Unknown result type (might be due to invalid IL or missing references) openingCreditsPlayed = false; playTime = 0f; completionPercent = 0f; permadeathMode = 0; version = "1.5.78.11833"; awardAllAchievements = false; health = 5; maxHealth = 5; maxHealthBase = 5; healthBlue = 0; joniHealthBlue = 0; damagedBlue = false; heartPieces = 0; heartPieceCollected = false; maxHealthCap = 9; heartPieceMax = false; prevHealth = health; blockerHits = 4; firstGeo = false; geo = 0; maxMP = 99; MPCharge = 0; MPReserve = 0; MPReserveMax = 0; soulLimited = false; focusMP_amount = 33; vesselFragments = 0; vesselFragmentCollected = false; MPReserveCap = 99; vesselFragmentMax = false; atBench = false; respawnScene = "Tutorial_01"; respawnMarkerName = "Death Respawn Marker"; mapZone = (MapZone)13; respawnType = 0; respawnFacingRight = false; hazardRespawnFacingRight = false; shadeScene = "None"; shadeMapZone = ""; shadePositionX = -999f; shadePositionY = -999f; shadeHealth = 0; shadeMP = 0; shadeFireballLevel = 0; shadeQuakeLevel = 0; shadeScreamLevel = 0; shadeSpecialType = 0; shadeMapPos = new Vector3(0f, 0f, 0f); dreamgateMapPos = new Vector3(0f, 0f, 0f); geoPool = 0; nailDamage = 5; nailRange = 0; beamDamage = 0; canDash = false; canBackDash = false; canWallJump = false; canSuperDash = false; canShadowDash = false; hasSpell = false; fireballLevel = 0; quakeLevel = 0; screamLevel = 0; hasNailArt = false; hasCyclone = false; hasDashSlash = false; hasUpwardSlash = false; hasAllNailArts = false; hasDreamNail = false; hasDreamGate = false; dreamNailUpgraded = false; dreamOrbs = 0; dreamOrbsSpent = 0; dreamGateScene = ""; dreamGateX = 0f; dreamGateY = 0f; hasDash = false; hasWalljump = false; hasSuperDash = false; hasShadowDash = false; hasAcidArmour = false; hasDoubleJump = false; hasLantern = false; hasTramPass = false; hasQuill = false; hasCityKey = false; hasSlykey = false; gaveSlykey = false; hasWhiteKey = false; usedWhiteKey = false; hasMenderKey = false; hasWaterwaysKey = false; hasSpaKey = false; hasLoveKey = false; hasKingsBrand = false; hasXunFlower = false; ghostCoins = 0; ore = 0; foundGhostCoin = false; trinket1 = 0; foundTrinket1 = false; trinket2 = 0; foundTrinket2 = false; trinket3 = 0; foundTrinket3 = false; trinket4 = 0; foundTrinket4 = false; noTrinket1 = false; noTrinket2 = false; noTrinket3 = false; noTrinket4 = false; soldTrinket1 = 0; soldTrinket2 = 0; soldTrinket3 = 0; soldTrinket4 = 0; simpleKeys = 0; rancidEggs = 0; notchShroomOgres = false; notchFogCanyon = false; gotLurkerKey = false; gMap_doorX = 0f; gMap_doorY = 0f; gMap_doorScene = ""; gMap_doorMapZone = ""; gMap_doorOriginOffsetX = 0f; gMap_doorOriginOffsetY = 0f; gMap_doorSceneWidth = 0f; gMap_doorSceneHeight = 0f; guardiansDefeated = 0; lurienDefeated = false; hegemolDefeated = false; monomonDefeated = false; maskBrokenLurien = false; maskBrokenHegemol = false; maskBrokenMonomon = false; maskToBreak = 0; elderbug = 0; metElderbug = false; elderbugReintro = false; elderbugHistory = 0; elderbugHistory1 = false; elderbugHistory2 = false; elderbugHistory3 = false; elderbugSpeechSly = false; elderbugSpeechStation = false; elderbugSpeechEggTemple = false; elderbugSpeechMapShop = false; elderbugSpeechBretta = false; elderbugSpeechJiji = false; elderbugSpeechMinesLift = false; elderbugSpeechKingsPass = false; elderbugSpeechInfectedCrossroads = false; elderbugSpeechFinalBossDoor = false; elderbugRequestedFlower = false; elderbugGaveFlower = false; elderbugFirstCall = false; metQuirrel = false; quirrelEggTemple = 0; quirrelLeftEggTemple = false; quirrelSlugShrine = 0; quirrelRuins = 0; quirrelMines = 0; quirrelLeftStation = false; quirrelCityEncountered = false; quirrelCityLeft = false; quirrelMinesEncountered = false; quirrelMinesLeft = false; visitedDeepnestSpa = false; quirrelSpaReady = false; quirrelSpaEncountered = false; quirrelArchiveEncountered = false; quirrelEpilogueCompleted = false; quirrelMantisEncountered = false; enteredMantisLordArea = false; metRelicDealer = false; metRelicDealerShop = false; marmOutside = false; marmOutsideConvo = false; marmConvo1 = false; marmConvo2 = false; marmConvo3 = false; marmConvoNailsmith = false; cornifer = 0; metCornifer = false; corniferIntroduced = false; corniferAtHome = false; corn_crossroadsEncountered = false; corn_crossroadsLeft = false; corn_greenpathEncountered = false; corn_greenpathLeft = false; corn_fogCanyonEncountered = false; corn_fogCanyonLeft = false; corn_fungalWastesEncountered = false; corn_fungalWastesLeft = false; corn_cityEncountered = false; corn_cityLeft = false; corn_waterwaysEncountered = false; corn_waterwaysLeft = false; corn_minesEncountered = false; corn_minesLeft = false; corn_cliffsEncountered = false; corn_cliffsLeft = false; corn_deepnestEncountered = false; corn_deepnestLeft = false; corn_deepnestMet1 = false; corn_deepnestMet2 = false; corn_outskirtsEncountered = false; corn_outskirtsLeft = false; corn_royalGardensEncountered = false; corn_royalGardensLeft = false; corn_abyssEncountered = false; corn_abyssLeft = false; metIselda = false; iseldaCorniferHomeConvo = false; iseldaConvo1 = false; brettaRescued = false; brettaPosition = 0; brettaState = 0; brettaSeenBench = false; brettaSeenBed = false; brettaSeenBenchDiary = false; brettaSeenBedDiary = false; brettaLeftTown = false; slyRescued = false; slyBeta = false; metSlyShop = false; gotSlyCharm = false; slyShellFrag1 = false; slyShellFrag2 = false; slyShellFrag3 = false; slyShellFrag4 = false; slyVesselFrag1 = false; slyVesselFrag2 = false; slyVesselFrag3 = false; slyVesselFrag4 = false; slyNotch1 = false; slyNotch2 = false; slySimpleKey = false; slyRancidEgg = false; slyConvoNailArt = false; slyConvoMapper = false; slyConvoNailHoned = false; jijiDoorUnlocked = false; jijiMet = false; jijiShadeOffered = false; jijiShadeCharmConvo = false; metJinn = false; jinnConvo1 = false; jinnConvo2 = false; jinnConvo3 = false; jinnConvoKingBrand = false; jinnConvoShadeCharm = false; jinnEggsSold = 0; zote = 0; zoteDead = false; zoteDeathPos = 0; zoteRescuedBuzzer = false; zoteSpokenCity = false; zoteLeftCity = false; zoteRescuedDeepnest = false; zoteDefeated = false; zoteTrappedDeepnest = false; zoteSpokenColosseum = false; zotePrecept = 1; zoteTownConvo = 0; shaman = 0; shamanScreamConvo = false; shamanQuakeConvo = false; shamanFireball2Convo = false; shamanScream2Convo = false; shamanQuake2Convo = false; metMiner = false; miner = 0; minerEarly = 0; hornetGreenpath = 0; hornetFung = 0; hornet_f19 = false; hornetFountainEncounter = false; hornetCityBridge_ready = false; hornetCityBridge_completed = false; hornetAbyssEncounter = false; hornetDenEncounter = false; metMoth = false; ignoredMoth = false; gladeDoorOpened = false; mothDeparted = false; completedRGDreamPlant = false; dreamReward1 = false; dreamReward2 = false; dreamReward3 = false; dreamReward4 = false; dreamReward5 = false; dreamReward5b = false; dreamReward6 = false; dreamReward7 = false; dreamReward8 = false; dreamReward9 = false; dreamMothConvo1 = false; bankerAccountPurchased = false; metBanker = false; bankerBalance = 0; bankerDeclined = false; bankerTheftCheck = false; bankerTheft = 0; bankerSpaMet = false; metGiraffe = false; metCharmSlug = false; salubraNotch1 = false; salubraNotch2 = false; salubraNotch3 = false; salubraNotch4 = false; salubraBlessing = false; salubraConvoCombo = false; salubraConvoOvercharm = false; salubraConvoTruth = false; cultistTransformed = false; metNailsmith = false; honedNail = false; nailSmithUpgrades = 0; nailsmithCliff = false; nailsmithKilled = false; nailsmithSpared = false; nailsmithKillSpeech = false; nailsmithSheo = false; nailsmithConvoArt = false; metNailmasterMato = false; metNailmasterSheo = false; metNailmasterOro = false; matoConvoSheo = false; matoConvoOro = false; matoConvoSly = false; sheoConvoMato = false; sheoConvoOro = false; sheoConvoSly = false; sheoConvoNailsmith = false; oroConvoSheo = false; oroConvoMato = false; oroConvoSly = false; hunterRoared = false; metHunter = false; hunterRewardOffered = false; huntersMarkOffered = false; hasHuntersMark = false; metLegEater = false; paidLegEater = false; refusedLegEater = false; legEaterBrokenConvo = false; legEaterDungConvo = false; legEaterInfectedCrossroadConvo = false; legEaterBoughtConvo = false; legEaterConvo1 = false; legEaterConvo2 = false; legEaterConvo3 = false; legEaterGoldConvo = false; legEaterLeft = false; tukMet = false; tukEggPrice = 0; tukDungEgg = false; metEmilitia = false; emilitiaKingsBrandConvo = false; metCloth = false; clothEnteredTramRoom = false; savedCloth = false; clothEncounteredQueensGarden = false; clothKilled = false; clothInTown = false; clothLeftTown = false; clothGhostSpoken = false; bigCatHitTail = false; bigCatHitTailConvo = false; bigCatMeet = false; bigCatTalk1 = false; bigCatTalk2 = false; bigCatTalk3 = false; bigCatKingsBrandConvo = false; bigCatShadeConvo = false; tisoEncounteredTown = false; tisoEncounteredBench = false; tisoEncounteredLake = false; tisoEncounteredColosseum = false; tisoShieldConvo = false; tisoDead = false; mossCultist = 0; maskmakerMet = false; maskmakerConvo1 = false; maskmakerConvo2 = false; maskmakerUnmasked1 = false; maskmakerUnmasked2 = false; maskmakerShadowDash = false; maskmakerKingsBrand = false; dungDefenderConvo1 = false; dungDefenderConvo2 = false; dungDefenderConvo3 = false; dungDefenderCharmConvo = false; dungDefenderIsmaConvo = false; dungDefenderAwakeConvo = false; dungDefenderAwoken = false; dungDefenderLeft = false; midwifeMet = false; midwifeConvo1 = false; midwifeConvo2 = false; metQueen = false; queenTalk1 = false; queenTalk2 = false; queenDung1 = false; queenDung2 = false; queenHornet = false; queenTalkExtra = false; gotQueenFragment = false; gotKingFragment = false; metXun = false; xunFlowerBroken = false; xunFlowerBrokeTimes = 0; xunFlowerGiven = false; xunRewardGiven = false; xunFailedConvo1 = false; xunFailedConvo2 = true; menderState = 0; menderSignBroken = false; allBelieverTabletsDestroyed = false; mrMushroomState = 0; openedMapperShop = false; openedSlyShop = false; metStag = false; travelling = false; stagPosition = -1; stationsOpened = 0; stagConvoTram = false; stagConvoTiso = false; stagRemember1 = false; stagRemember2 = false; stagRemember3 = false; stagEggInspected = false; stagHopeConvo = false; nextScene = ""; littleFoolMet = false; ranAway = false; seenColosseumTitle = false; colosseumBronzeOpened = false; colosseumBronzeCompleted = false; colosseumSilverOpened = false; colosseumSilverCompleted = false; colosseumGoldOpened = false; colosseumGoldCompleted = false; openedTown = true; openedTownBuilding = false; openedCrossroads = false; openedGreenpath = false; openedFungalWastes = false; openedRuins1 = false; openedRuins2 = false; openedRoyalGardens = false; openedRestingGrounds = false; openedDeepnest = false; openedStagNest = false; openedHiddenStation = false; dreamReturnScene = "Dream_NailCollection"; charmSlots = 3; charmSlotsFilled = 0; hasCharm = false; equippedCharms = new List(); charmBenchMsg = false; charmsOwned = 0; canOvercharm = false; overcharmed = false; gotCharm_1 = false; equippedCharm_1 = false; charmCost_1 = 1; newCharm_1 = true; gotCharm_2 = false; equippedCharm_2 = false; charmCost_2 = 1; newCharm_2 = true; gotCharm_3 = false; equippedCharm_3 = false; charmCost_3 = 1; newCharm_3 = true; gotCharm_4 = false; equippedCharm_4 = false; charmCost_4 = 2; newCharm_4 = true; gotCharm_5 = false; equippedCharm_5 = false; charmCost_5 = 2; newCharm_5 = true; gotCharm_6 = false; equippedCharm_6 = false; charmCost_6 = 2; newCharm_6 = true; gotCharm_7 = false; equippedCharm_7 = false; charmCost_7 = 3; newCharm_7 = true; gotCharm_8 = false; equippedCharm_8 = false; charmCost_8 = 2; newCharm_8 = true; gotCharm_9 = false; equippedCharm_9 = false; charmCost_9 = 3; newCharm_9 = true; gotCharm_10 = false; equippedCharm_10 = false; charmCost_10 = 1; newCharm_10 = true; gotCharm_11 = false; equippedCharm_11 = false; charmCost_11 = 3; newCharm_11 = true; gotCharm_12 = false; equippedCharm_12 = false; charmCost_12 = 1; newCharm_12 = true; gotCharm_13 = false; equippedCharm_13 = false; charmCost_13 = 3; newCharm_13 = true; gotCharm_14 = false; equippedCharm_14 = false; charmCost_14 = 1; newCharm_14 = true; gotCharm_15 = false; equippedCharm_15 = false; charmCost_15 = 2; newCharm_15 = true; gotCharm_16 = false; equippedCharm_16 = false; charmCost_16 = 2; newCharm_16 = true; gotCharm_17 = false; equippedCharm_17 = false; charmCost_17 = 1; newCharm_17 = true; gotCharm_18 = false; equippedCharm_18 = false; charmCost_18 = 2; newCharm_18 = true; gotCharm_19 = false; equippedCharm_19 = false; charmCost_19 = 3; newCharm_19 = true; gotCharm_20 = false; equippedCharm_20 = false; charmCost_20 = 2; newCharm_20 = true; gotCharm_21 = false; equippedCharm_21 = false; charmCost_21 = 4; newCharm_21 = true; gotCharm_22 = false; equippedCharm_22 = false; charmCost_22 = 2; newCharm_22 = true; gotCharm_23 = false; equippedCharm_23 = false; brokenCharm_23 = false; charmCost_23 = 2; newCharm_23 = true; gotCharm_24 = false; equippedCharm_24 = false; brokenCharm_24 = false; charmCost_24 = 2; newCharm_24 = true; gotCharm_25 = false; equippedCharm_25 = false; brokenCharm_25 = false; charmCost_25 = 3; newCharm_25 = true; gotCharm_26 = false; equippedCharm_26 = false; charmCost_26 = 1; newCharm_26 = true; gotCharm_27 = false; equippedCharm_27 = false; charmCost_27 = 4; newCharm_27 = true; gotCharm_28 = false; equippedCharm_28 = false; charmCost_28 = 2; newCharm_28 = true; gotCharm_29 = false; equippedCharm_29 = false; charmCost_29 = 4; newCharm_29 = true; gotCharm_30 = false; equippedCharm_30 = false; charmCost_30 = 1; newCharm_30 = true; gotCharm_31 = false; equippedCharm_31 = false; charmCost_31 = 2; newCharm_31 = true; gotCharm_32 = false; equippedCharm_32 = false; charmCost_32 = 3; newCharm_32 = true; gotCharm_33 = false; equippedCharm_33 = false; charmCost_33 = 2; newCharm_33 = true; gotCharm_34 = false; equippedCharm_34 = false; charmCost_34 = 4; newCharm_34 = true; gotCharm_35 = false; equippedCharm_35 = false; charmCost_35 = 3; newCharm_35 = true; gotCharm_36 = false; equippedCharm_36 = false; charmCost_36 = 5; newCharm_36 = true; gotCharm_37 = false; equippedCharm_37 = false; charmCost_37 = 1; newCharm_37 = false; gotCharm_38 = false; equippedCharm_38 = false; charmCost_38 = 3; newCharm_38 = false; gotCharm_39 = false; equippedCharm_39 = false; charmCost_39 = 2; newCharm_39 = false; gotCharm_40 = false; equippedCharm_40 = false; charmCost_40 = 2; newCharm_40 = false; fragileHealth_unbreakable = false; fragileGreed_unbreakable = false; fragileStrength_unbreakable = false; royalCharmState = 0; hasJournal = false; lastJournalItem = 0; killedDummy = false; killsDummy = 0; newDataDummy = false; seenJournalMsg = false; seenHunterMsg = false; fillJournal = false; journalEntriesCompleted = 0; journalNotesCompleted = 0; journalEntriesTotal = 0; killedCrawler = true; killsCrawler = 0; newDataCrawler = false; killedBuzzer = false; killsBuzzer = 45; newDataBuzzer = false; killedBouncer = false; killsBouncer = 25; newDataBouncer = false; killedClimber = false; killsClimber = 30; newDataClimber = false; killedHopper = false; killsHopper = 25; newDataHopper = false; killedWorm = false; killsWorm = 10; newDataWorm = false; killedSpitter = false; killsSpitter = 20; newDataSpitter = false; killedHatcher = false; killsHatcher = 15; newDataHatcher = false; killedHatchling = false; killsHatchling = 30; newDataHatchling = false; killedZombieRunner = false; killsZombieRunner = 35; newDataZombieRunner = false; killedZombieHornhead = false; killsZombieHornhead = 35; newDataZombieHornhead = false; killedZombieLeaper = false; killsZombieLeaper = 35; newDataZombieLeaper = false; killedZombieBarger = false; killsZombieBarger = 35; newDataZombieBarger = false; killedZombieShield = false; killsZombieShield = 10; newDataZombieShield = false; killedZombieGuard = false; killsZombieGuard = 6; newDataZombieGuard = false; killedBigBuzzer = false; killsBigBuzzer = 2; newDataBigBuzzer = false; killedBigFly = false; killsBigFly = 3; newDataBigFly = false; killedMawlek = false; killsMawlek = 1; newDataMawlek = false; killedFalseKnight = false; killsFalseKnight = 1; newDataFalseKnight = false; killedRoller = false; killsRoller = 20; newDataRoller = false; killedBlocker = false; killsBlocker = 1; newDataBlocker = false; killedPrayerSlug = false; killsPrayerSlug = 2; newDataPrayerSlug = false; killedMenderBug = false; killsMenderBug = 1; newDataMenderBug = false; killedMossmanRunner = false; killsMossmanRunner = 25; newDataMossmanRunner = false; killedMossmanShaker = false; killsMossmanShaker = 25; newDataMossmanShaker = false; killedMosquito = false; killsMosquito = 25; newDataMosquito = false; killedBlobFlyer = false; killsBlobFlyer = 20; newDataBlobFlyer = false; killedFungifiedZombie = false; killsFungifiedZombie = 10; newDataFungifiedZombie = false; killedPlantShooter = false; killsPlantShooter = 15; newDataPlantShooter = false; killedMossCharger = false; killsMossCharger = 15; newDataMossCharger = false; killedMegaMossCharger = false; killsMegaMossCharger = 1; newDataMegaMossCharger = false; killedSnapperTrap = false; killsSnapperTrap = 15; newDataSnapperTrap = false; killedMossKnight = false; killsMossKnight = 8; newDataMossKnight = false; killedGrassHopper = false; killsGrassHopper = 15; newDataGrassHopper = false; killedAcidFlyer = false; killsAcidFlyer = 8; newDataAcidFlyer = false; killedAcidWalker = false; killsAcidWalker = 8; newDataAcidWalker = false; killedMossFlyer = false; killsMossFlyer = 25; newDataMossFlyer = false; killedMossKnightFat = false; killsMossKnightFat = 10; newDataMossKnightFat = false; killedMossWalker = false; killsMossWalker = 30; newDataMossWalker = false; killedInfectedKnight = false; killsInfectedKnight = 1; newDataInfectedKnight = false; killedLazyFlyer = false; killsLazyFlyer = 1; newDataLazyFlyer = false; killedZapBug = false; killsZapBug = 1; newDataZapBug = false; killedJellyfish = false; killsJellyfish = 12; newDataJellyfish = false; killedJellyCrawler = false; killsJellyCrawler = 20; newDataJellyCrawler = false; killedMegaJellyfish = false; killsMegaJellyfish = 1; newDataMegaJellyfish = false; killedFungoonBaby = false; killsFungoonBaby = 30; newDataFungoonBaby = false; killedMushroomTurret = false; killsMushroomTurret = 20; newDataMushroomTurret = false; killedMantis = false; killsMantis = 25; newDataMantis = false; killedMushroomRoller = false; killsMushroomRoller = 20; newDataMushroomRoller = false; killedMushroomBrawler = false; killsMushroomBrawler = 8; newDataMushroomBrawler = false; killedMushroomBaby = false; killsMushroomBaby = 20; newDataMushroomBaby = false; killedMantisFlyerChild = false; killsMantisFlyerChild = 25; newDataMantisFlyerChild = false; killedFungusFlyer = false; killsFungusFlyer = 20; newDataFungusFlyer = false; killedFungCrawler = false; killsFungCrawler = 15; newDataFungCrawler = false; killedMantisLord = false; killsMantisLord = 1; newDataMantisLord = false; killedBlackKnight = false; killsBlackKnight = 10; newDataBlackKnight = false; killedElectricMage = false; killsElectricMage = 6; newDataElectricMage = false; killedMage = false; killsMage = 20; newDataMage = false; killedMageKnight = false; killsMageKnight = 2; newDataMageKnight = false; killedRoyalDandy = false; killsRoyalDandy = 25; newDataRoyalDandy = false; killedRoyalCoward = false; killsRoyalCoward = 25; newDataRoyalCoward = false; killedRoyalPlumper = false; killsRoyalPlumper = 25; newDataRoyalPlumper = false; killedFlyingSentrySword = false; killsFlyingSentrySword = 30; newDataFlyingSentrySword = false; killedFlyingSentryJavelin = false; killsFlyingSentryJavelin = 25; newDataFlyingSentryJavelin = false; killedSentry = false; killsSentry = 25; newDataSentry = false; killedSentryFat = false; killsSentryFat = 20; newDataSentryFat = false; killedMageBlob = false; killsMageBlob = 25; newDataMageBlob = false; killedGreatShieldZombie = false; killsGreatShieldZombie = 10; newDataGreatShieldZombie = false; killedJarCollector = false; killsJarCollector = 1; newDataJarCollector = false; killedMageBalloon = false; killsMageBalloon = 15; newDataMageBalloon = false; killedMageLord = false; killsMageLord = 1; newDataMageLord = false; killedGorgeousHusk = false; killsGorgeousHusk = 1; newDataGorgeousHusk = false; killedFlipHopper = false; killsFlipHopper = 20; newDataFlipHopper = false; killedFlukeman = false; killsFlukeman = 20; newDataFlukeman = false; killedInflater = false; killsInflater = 20; newDataInflater = false; killedFlukefly = false; killsFlukefly = 15; newDataFlukefly = false; killedFlukeMother = false; killsFlukeMother = 1; newDataFlukeMother = false; killedDungDefender = false; killsDungDefender = 1; newDataDungDefender = false; killedCrystalCrawler = false; killsCrystalCrawler = 15; newDataCrystalCrawler = false; killedCrystalFlyer = false; killsCrystalFlyer = 20; newDataCrystalFlyer = false; killedLaserBug = false; killsLaserBug = 15; newDataLaserBug = false; killedBeamMiner = false; killsBeamMiner = 15; newDataBeamMiner = false; killedZombieMiner = false; killsZombieMiner = 20; newDataZombieMiner = false; killedMegaBeamMiner = false; killsMegaBeamMiner = 2; newDataMegaBeamMiner = false; killedMinesCrawler = false; killsMinesCrawler = 15; newDataMinesCrawler = false; killedAngryBuzzer = false; killsAngryBuzzer = 15; newDataAngryBuzzer = false; killedBurstingBouncer = false; killsBurstingBouncer = 15; newDataBurstingBouncer = false; killedBurstingZombie = false; killsBurstingZombie = 15; newDataBurstingZombie = false; killedSpittingZombie = false; killsSpittingZombie = 15; newDataSpittingZombie = false; killedBabyCentipede = false; killsBabyCentipede = 35; newDataBabyCentipede = false; killedBigCentipede = false; killsBigCentipede = 10; newDataBigCentipede = false; killedCentipedeHatcher = false; killsCentipedeHatcher = 15; newDataCentipedeHatcher = false; killedLesserMawlek = false; killsLesserMawlek = 10; newDataLesserMawlek = false; killedSlashSpider = false; killsSlashSpider = 15; newDataSlashSpider = false; killedSpiderCorpse = false; killsSpiderCorpse = 15; newDataSpiderCorpse = false; killedShootSpider = false; killsShootSpider = 20; newDataShootSpider = false; killedMiniSpider = false; killsMiniSpider = 25; newDataMiniSpider = false; killedSpiderFlyer = false; killsSpiderFlyer = 20; newDataSpiderFlyer = false; killedMimicSpider = false; killsMimicSpider = 1; newDataMimicSpider = false; killedBeeHatchling = false; killsBeeHatchling = 30; newDataBeeHatchling = false; killedBeeStinger = false; killsBeeStinger = 15; newDataBeeStinger = false; killedBigBee = false; killsBigBee = 12; newDataBigBee = false; killedHiveKnight = false; killsHiveKnight = 1; newDataHiveKnight = false; killedBlowFly = false; killsBlowFly = 20; newDataBlowFly = false; killedCeilingDropper = false; killsCeilingDropper = 15; newDataCeilingDropper = false; killedGiantHopper = false; killsGiantHopper = 10; newDataGiantHopper = false; killedGrubMimic = false; killsGrubMimic = 5; newDataGrubMimic = false; killedMawlekTurret = false; killsMawlekTurret = 10; newDataMawlekTurret = false; killedOrangeScuttler = false; killsOrangeScuttler = 20; newDataOrangeScuttler = false; killedHealthScuttler = false; killsHealthScuttler = 10; newDataHealthScuttler = false; killedPigeon = false; killsPigeon = 15; newDataPigeon = false; killedZombieHive = false; killsZombieHive = 10; newDataZombieHive = false; killedDreamGuard = false; killsDreamGuard = 20; newDataDreamGuard = false; killedHornet = false; killsHornet = 2; newDataHornet = false; killedAbyssCrawler = false; killsAbyssCrawler = 20; newDataAbyssCrawler = false; killedSuperSpitter = false; killsSuperSpitter = 25; newDataSuperSpitter = false; killedSibling = false; killsSibling = 25; newDataSibling = false; killedPalaceFly = false; killsPalaceFly = 10; newDataPalaceFly = false; killedEggSac = false; killsEggSac = 5; newDataEggSac = false; killedMummy = false; killsMummy = 10; newDataMummy = false; killedOrangeBalloon = false; killsOrangeBalloon = 10; newDataOrangeBalloon = false; killedAbyssTendril = false; killsAbyssTendril = 10; newDataAbyssTendril = false; killedHeavyMantis = false; killsHeavyMantis = 15; newDataHeavyMantis = false; killedTraitorLord = false; killsTraitorLord = 1; newDataTraitorLord = false; killedMantisHeavyFlyer = false; killsMantisHeavyFlyer = 16; newDataMantisHeavyFlyer = false; killedGardenZombie = false; killsGardenZombie = 20; newDataGardenZombie = false; killedRoyalGuard = false; killsRoyalGuard = 2; newDataRoyalGuard = false; killedWhiteRoyal = false; killsWhiteRoyal = 10; newDataWhiteRoyal = false; killedOblobble = false; killsOblobble = 3; newDataOblobble = false; killedZote = false; killsZote = 1; newDataZote = false; killedBlobble = false; killsBlobble = 15; newDataBlobble = false; killedColMosquito = false; killsColMosquito = 15; newDataColMosquito = false; killedColRoller = false; killsColRoller = 20; newDataColRoller = false; killedColFlyingSentry = false; killsColFlyingSentry = 25; newDataColFlyingSentry = false; killedColMiner = false; killsColMiner = 25; newDataColMiner = false; killedColShield = false; killsColShield = 25; newDataColShield = false; killedColWorm = false; killsColWorm = 20; newDataColWorm = false; killedColHopper = false; killsColHopper = 15; newDataColHopper = false; killedLobsterLancer = false; killsLobsterLancer = 1; newDataLobsterLancer = false; killedGhostAladar = false; killsGhostAladar = 1; newDataGhostAladar = false; killedGhostXero = false; killsGhostXero = 1; newDataGhostXero = false; killedGhostHu = false; killsGhostHu = 1; newDataGhostHu = false; killedGhostMarmu = false; killsGhostMarmu = 1; newDataGhostMarmu = false; killedGhostNoEyes = false; killsGhostNoEyes = 1; newDataGhostNoEyes = false; killedGhostMarkoth = false; killsGhostMarkoth = 1; newDataGhostMarkoth = false; killedGhostGalien = false; killsGhostGalien = 1; newDataGhostGalien = false; killedWhiteDefender = false; killsWhiteDefender = 1; newDataWhiteDefender = false; killedGreyPrince = false; killsGreyPrince = 1; newDataGreyPrince = false; killedZotelingBalloon = false; killsZotelingBalloon = 1; newDataZotelingBalloon = false; killedZotelingHopper = false; killsZotelingHopper = 1; newDataZotelingHopper = false; killedZotelingBuzzer = false; killsZotelingBuzzer = 1; newDataZotelingBuzzer = false; killedHollowKnight = false; killsHollowKnight = 1; newDataHollowKnight = false; killedFinalBoss = false; killsFinalBoss = 1; newDataFinalBoss = false; killedHunterMark = false; killsHunterMark = 1; newDataHunterMark = false; killedFlameBearerSmall = false; killsFlameBearerSmall = 3; newDataFlameBearerSmall = false; killedFlameBearerMed = false; killsFlameBearerMed = 4; newDataFlameBearerMed = false; killedFlameBearerLarge = false; killsFlameBearerLarge = 5; newDataFlameBearerLarge = false; killedGrimm = false; killsGrimm = 1; newDataGrimm = false; killedNightmareGrimm = false; killsNightmareGrimm = 1; newDataNightmareGrimm = false; killedBindingSeal = false; killsBindingSeal = 1; newDataBindingSeal = false; killedFatFluke = false; killsFatFluke = 8; newDataFatFluke = false; killedPaleLurker = false; killsPaleLurker = 1; newDataPaleLurker = false; killedNailBros = false; killsNailBros = 1; newDataNailBros = false; killedPaintmaster = false; killsPaintmaster = 1; newDataPaintmaster = false; killedNailsage = false; killsNailsage = 1; newDataNailsage = false; killedHollowKnightPrime = false; killsHollowKnightPrime = 1; newDataHollowKnightPrime = false; killedGodseekerMask = false; killsGodseekerMask = 1; newDataGodseekerMask = false; killedVoidIdol_1 = false; killsVoidIdol_1 = 1; newDataVoidIdol_1 = false; killedVoidIdol_2 = false; killsVoidIdol_2 = 1; newDataVoidIdol_2 = false; killedVoidIdol_3 = false; killsVoidIdol_3 = 1; newDataVoidIdol_3 = false; grubsCollected = 0; grubRewards = 0; finalGrubRewardCollected = false; fatGrubKing = false; falseKnightDefeated = false; falseKnightDreamDefeated = false; falseKnightOrbsCollected = false; mawlekDefeated = false; giantBuzzerDefeated = false; giantFlyDefeated = false; blocker1Defeated = false; blocker2Defeated = false; hornet1Defeated = false; collectorDefeated = false; hornetOutskirtsDefeated = false; mageLordDreamDefeated = false; mageLordOrbsCollected = false; infectedKnightDreamDefeated = false; infectedKnightOrbsCollected = false; whiteDefenderDefeated = false; whiteDefenderOrbsCollected = false; whiteDefenderDefeats = 0; greyPrinceDefeats = 0; greyPrinceDefeated = false; greyPrinceOrbsCollected = false; aladarSlugDefeated = 0; xeroDefeated = 0; elderHuDefeated = 0; mumCaterpillarDefeated = 0; noEyesDefeated = 0; markothDefeated = 0; galienDefeated = 0; XERO_encountered = false; ALADAR_encountered = false; HU_encountered = false; MUMCAT_encountered = false; NOEYES_encountered = false; MARKOTH_encountered = false; GALIEN_encountered = false; xeroPinned = false; aladarPinned = false; huPinned = false; mumCaterpillarPinned = false; noEyesPinned = false; markothPinned = false; galienPinned = false; currentInvPane = 0; showGeoUI = false; showHealthUI = false; promptFocus = false; seenFocusTablet = false; seenDreamNailPrompt = false; isFirstGame = true; enteredTutorialFirstTime = false; isInvincible = false; infiniteAirJump = false; invinciTest = false; hazardRespawnLocation = Vector3.zero; currentArea = 0; visitedDirtmouth = false; visitedCrossroads = false; visitedGreenpath = false; visitedFungus = false; visitedHive = false; visitedCrossroadsInfected = false; visitedRuins = false; visitedMines = false; visitedRoyalGardens = false; visitedFogCanyon = false; visitedDeepnest = false; visitedRestingGrounds = false; visitedWaterways = false; visitedAbyss = false; visitedOutskirts = false; visitedWhitePalace = false; visitedCliffs = false; visitedAbyssLower = false; visitedGodhome = false; visitedMines10 = false; scenesVisited = new List(); scenesMapped = new List(); scenesMapped.Add("Cinematic_Stag_travel"); scenesMapped.Add("Room_Town_Stag_Station"); scenesMapped.Add("Room_Charm_Shop"); scenesMapped.Add("Room_Mender_House"); scenesMapped.Add("Room_mapper"); scenesMapped.Add("Room_nailmaster"); scenesMapped.Add("Room_nailmaster_02"); scenesMapped.Add("Room_nailmaster_03"); scenesMapped.Add("Room_shop"); scenesMapped.Add("Room_nailsmith"); scenesMapped.Add("Room_temple"); scenesMapped.Add("Room_ruinhouse"); scenesMapped.Add("Room_Mansion"); scenesMapped.Add("Room_Tram"); scenesMapped.Add("Room_Tram_RG"); scenesMapped.Add("Room_Bretta"); scenesMapped.Add("Room_Fungus_Shaman"); scenesMapped.Add("Room_Ouiji"); scenesMapped.Add("Room_Jinn"); scenesMapped.Add("Room_Colosseum_01"); scenesMapped.Add("Room_Colosseum_02"); scenesMapped.Add("Room_Colosseum_03"); scenesMapped.Add("Room_Colosseum_Bronze"); scenesMapped.Add("Room_Colosseum_Silver"); scenesMapped.Add("Room_Colosseum_Gold"); scenesMapped.Add("Room_Slug_Shrine"); scenesMapped.Add("Crossroads_ShamanTemple"); scenesMapped.Add("Ruins_House_01"); scenesMapped.Add("Ruins_House_02"); scenesMapped.Add("Ruins_House_03"); scenesMapped.Add("Fungus1_35"); scenesMapped.Add("Fungus1_36"); scenesMapped.Add("Fungus3_archive"); scenesMapped.Add("Fungus3_archive_02"); scenesMapped.Add("Cliffs_03"); scenesMapped.Add("RestingGrounds_07"); scenesMapped.Add("Deepnest_45_v02"); scenesMapped.Add("Deepnest_Spider_Town"); scenesMapped.Add("Room_spider_small"); scenesMapped.Add("Room_Wyrm"); scenesMapped.Add("Abyss_Lighthouse_room"); scenesMapped.Add("Room_Queen"); scenesMapped.Add("White_Palace_01"); scenesMapped.Add("White_Palace_02"); scenesMapped.Add("White_Palace_03_hub"); scenesMapped.Add("White_Palace_04"); scenesMapped.Add("White_Palace_05"); scenesMapped.Add("White_Palace_06"); scenesMapped.Add("White_Palace_07"); scenesMapped.Add("White_Palace_08"); scenesMapped.Add("White_Palace_09"); scenesMapped.Add("White_Palace_11"); scenesMapped.Add("White_Palace_12"); scenesMapped.Add("White_Palace_13"); scenesMapped.Add("White_Palace_14"); scenesMapped.Add("White_Palace_15"); scenesMapped.Add("White_Palace_16"); scenesMapped.Add("Dream_Nailcollection"); scenesMapped.Add("Dream_01_False_Knight"); scenesMapped.Add("Dream_03_Infected_Knight"); scenesMapped.Add("Dream_02_Mage_Lord"); scenesMapped.Add("Dream_Guardian"); scenesMapped.Add("Dream_Guardian_Hegemol"); scenesMapped.Add("Dream_Guardian_Lurien"); scenesMapped.Add("Dream_Guardian_Monomon"); scenesMapped.Add("Cutscene_Boss_Door"); scenesMapped.Add("Dream_Backer_Shrine"); scenesMapped.Add("Dream_Room_Believer_Shrine"); scenesMapped.Add("Dream_Abyss"); scenesMapped.Add("Dream_Final_Boss"); scenesMapped.Add("Room_Final_Boss_Atrium"); scenesMapped.Add("Room_Final_Boss_Core"); scenesMapped.Add("Cinematic_Ending_A"); scenesMapped.Add("Cinematic_Ending_B"); scenesMapped.Add("Cinematic_Ending_C"); scenesMapped.Add("Cinematic_Ending_D"); scenesMapped.Add("Cinematic_Ending_E"); scenesMapped.Add("End_Credits"); scenesMapped.Add("Cinematic_MrMushroom"); scenesMapped.Add("End_Game_Completion"); scenesMapped.Add("PermaDeath"); scenesMapped.Add("PermaDeath_Unlock"); scenesMapped.Add("Deepnest_East_17"); scenesEncounteredBench = new List(); scenesEncounteredCocoon = new List(); scenesGrubRescued = new List(); scenesFlameCollected = new List(); scenesEncounteredDreamPlant = new List(); scenesEncounteredDreamPlantC = new List(); hasMap = false; mapAllRooms = false; atMapPrompt = false; mapDirtmouth = true; mapCrossroads = false; mapGreenpath = false; mapFogCanyon = false; mapRoyalGardens = false; mapFungalWastes = false; mapCity = false; mapWaterways = false; mapMines = false; mapDeepnest = false; mapCliffs = false; mapOutskirts = false; mapRestingGrounds = false; mapAbyss = false; hasPin = false; hasPinBench = false; hasPinCocoon = false; hasPinDreamPlant = false; hasPinGuardian = false; hasPinBlackEgg = false; hasPinShop = false; hasPinSpa = false; hasPinStag = false; hasPinTram = false; hasPinGhost = false; hasPinGrub = false; hasMarker = false; hasMarker_r = false; hasMarker_b = false; hasMarker_y = false; hasMarker_w = false; spareMarkers_r = 6; spareMarkers_b = 6; spareMarkers_y = 6; spareMarkers_w = 6; placedMarkers_r = new List(); placedMarkers_b = new List(); placedMarkers_y = new List(); placedMarkers_w = new List(); environmentType = 0; previousDarkness = 0; openedTramLower = false; openedTramRestingGrounds = false; tramLowerPosition = 0; tramRestingGroundsPosition = 0; mineLiftOpened = false; menderDoorOpened = false; vesselFragStagNest = false; shamanPillar = false; crossroadsMawlekWall = false; eggTempleVisited = false; crossroadsInfected = false; falseKnightFirstPlop = false; falseKnightWallRepaired = false; falseKnightWallBroken = false; falseKnightGhostDeparted = false; spaBugsEncountered = false; hornheadVinePlat = false; infectedKnightEncountered = false; megaMossChargerEncountered = false; megaMossChargerDefeated = false; dreamerScene1 = false; slugEncounterComplete = false; defeatedDoubleBlockers = false; oneWayArchive = false; defeatedMegaJelly = false; summonedMonomon = false; sawWoundedQuirrel = false; encounteredMegaJelly = false; defeatedMantisLords = false; encounteredGatekeeper = false; deepnestWall = false; queensStationNonDisplay = false; cityBridge1 = false; cityBridge2 = false; cityLift1 = false; cityLift1_isUp = false; liftArrival = false; openedMageDoor_v2 = false; brokenMageWindow = false; brokenMageWindowGlass = false; mageLordEncountered = false; mageLordEncountered_2 = false; mageLordDefeated = false; ruins1_5_tripleDoor = false; openedWaterwaysManhole = false; openedCityGate = false; cityGateClosed = false; bathHouseOpened = false; bathHouseWall = false; cityLift2 = true; cityLift2_isUp = false; city2_sewerDoor = false; openedLoveDoor = false; watcherChandelier = false; completedQuakeArea = false; kingsStationNonDisplay = false; tollBenchCity = false; waterwaysGate = false; defeatedDungDefender = false; dungDefenderEncounterReady = false; flukeMotherEncountered = false; flukeMotherDefeated = false; waterwaysAcidDrained = false; dungDefenderWallBroken = false; dungDefenderSleeping = false; defeatedMegaBeamMiner = false; defeatedMegaBeamMiner2 = false; brokeMinersWall = false; encounteredMimicSpider = false; steppedBeyondBridge = false; deepnestBridgeCollapsed = false; spiderCapture = false; deepnest26b_switch = false; openedRestingGrounds02 = false; restingGroundsCryptWall = false; dreamNailConvo = false; gladeGhostsKilled = 0; openedGardensStagStation = false; extendedGramophone = false; tollBenchQueensGardens = false; blizzardEnded = false; encounteredHornet = false; savedByHornet = false; outskirtsWall = false; abyssGateOpened = false; abyssLighthouse = false; blueVineDoor = false; gotShadeCharm = false; tollBenchAbyss = false; fountainGeo = 0; fountainVesselSummoned = false; openedBlackEggPath = false; enteredDreamWorld = false; duskKnightDefeated = false; whitePalaceOrb_1 = false; whitePalaceOrb_2 = false; whitePalaceOrb_3 = false; whitePalace05_lever = false; whitePalaceMidWarp = false; whitePalaceSecretRoomVisited = false; tramOpenedDeepnest = false; tramOpenedCrossroads = false; openedBlackEggDoor = false; unchainedHollowKnight = false; flamesCollected = 0; flamesRequired = 3; nightmareLanternAppeared = false; nightmareLanternLit = false; troupeInTown = false; divineInTown = false; grimmChildLevel = 1; elderbugConvoGrimm = false; slyConvoGrimm = false; iseldaConvoGrimm = false; midwifeWeaverlingConvo = false; metGrimm = false; foughtGrimm = false; metBrum = false; defeatedNightmareGrimm = false; grimmchildAwoken = false; gotBrummsFlame = false; brummBrokeBrazier = false; destroyedNightmareLantern = false; gotGrimmNotch = false; nymmInTown = false; nymmSpoken = false; elderbugNymmConvo = false; slyNymmConvo = false; iseldaNymmConvo = false; elderbugTroupeLeftConvo = false; jijiGrimmConvo = false; nymmMissedEggOpen = false; elderbugBrettaLeft = false; metDivine = false; divineFinalConvo = false; gaveFragileHeart = false; gaveFragileGreed = false; gaveFragileStrength = false; pooedFragileHeart = false; pooedFragileGreed = false; pooedFragileStrength = false; divineEatenConvos = 0; completionPercentage = 0f; unlockedCompletionRate = false; disablePause = false; backerCredits = false; mapKeyPref = 0; playerStory = new List(); betaEnd = false; bossReturnEntryGate = ""; bossDoorStateTier1 = Completion.None; bossDoorStateTier2 = Completion.None; bossDoorStateTier3 = Completion.None; bossDoorStateTier4 = Completion.None; bossDoorStateTier5 = Completion.None; bossStatueTargetLevel = -1; currentBossStatueCompletionKey = ""; statueStateGruzMother = Completion.None; statueStateVengefly = Completion.None; statueStateBroodingMawlek = Completion.None; statueStateFalseKnight = Completion.None; statueStateFailedChampion = Completion.None; statueStateHornet1 = Completion.None; statueStateHornet2 = Completion.None; statueStateMegaMossCharger = Completion.None; statueStateMantisLords = Completion.None; statueStateOblobbles = Completion.None; statueStateGreyPrince = Completion.None; statueStateBrokenVessel = Completion.None; statueStateLostKin = Completion.None; statueStateNosk = Completion.None; statueStateFlukemarm = Completion.None; statueStateCollector = Completion.None; statueStateWatcherKnights = Completion.None; statueStateSoulMaster = Completion.None; statueStateSoulTyrant = Completion.None; statueStateGodTamer = Completion.None; statueStateCrystalGuardian1 = Completion.None; statueStateCrystalGuardian2 = Completion.None; statueStateUumuu = Completion.None; statueStateDungDefender = Completion.None; statueStateWhiteDefender = Completion.None; statueStateHiveKnight = Completion.None; statueStateTraitorLord = Completion.None; statueStateGrimm = Completion.None; statueStateNightmareGrimm = Completion.None; statueStateHollowKnight = Completion.None; statueStateElderHu = Completion.None; statueStateGalien = Completion.None; statueStateMarkoth = Completion.None; statueStateMarmu = Completion.None; statueStateNoEyes = Completion.None; statueStateXero = Completion.None; statueStateGorb = Completion.None; statueStateRadiance = new Completion { hasBeenSeen = true }; statueStateSly = Completion.None; statueStateNailmasters = Completion.None; statueStateMageKnight = Completion.None; statueStatePaintmaster = Completion.None; statueStateZote = Completion.None; statueStateNoskHornet = Completion.None; statueStateMantisLordsExtra = Completion.None; godseekerUnlocked = false; currentBossSequence = null; bossRushMode = false; bossDoorCageUnlocked = false; blueRoomDoorUnlocked = false; blueRoomActivated = false; finalBossDoorUnlocked = false; hasGodfinder = false; unlockedNewBossStatue = true; scaredFlukeHermitEncountered = false; scaredFlukeHermitReturned = false; enteredGGAtrium = false; extraFlowerAppear = false; givenGodseekerFlower = false; givenOroFlower = false; givenWhiteLadyFlower = false; givenEmilitiaFlower = false; unlockedBossScenes = new List(); queuedGodfinderIcon = false; godseekerSpokenAwake = false; nailsmithCorpseAppeared = false; godseekerWaterwaysSeenState = -1; godseekerWaterwaysSpoken1 = false; godseekerWaterwaysSpoken2 = false; godseekerWaterwaysSpoken3 = false; bossDoorEntranceTextSeen = -1; seenDoor4Finale = false; zoteStatueWallBroken = false; seenGGWastes = false; ordealAchieved = false; } public void AddGGPlayerDataOverrides() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) bossRushMode = true; atBench = false; respawnScene = "GG_Entrance_Cutscene"; respawnMarkerName = "Death Respawn Marker"; mapZone = (MapZone)37; respawnType = 0; respawnFacingRight = true; hazardRespawnFacingRight = true; maxHealthBase = maxHealthCap; MPReserveMax = MPReserveCap; heartPieceMax = true; nailDamage = 21; honedNail = true; nailSmithUpgrades = 4; canDash = true; canShadowDash = true; hasDash = true; hasShadowDash = true; hasWalljump = true; hasDoubleJump = true; hasSuperDash = true; hasDreamNail = true; hasDreamGate = true; dreamOrbs = 1; hasNailArt = true; hasDashSlash = true; hasCyclone = true; hasUpwardSlash = true; hasSpell = true; shadeFireballLevel = 2; shadeQuakeLevel = 2; shadeScreamLevel = 2; fireballLevel = 2; quakeLevel = 2; screamLevel = 2; grimmChildLevel = 4; hasAcidArmour = true; hasLantern = true; hasCharm = true; charmSlots = 11; equippedCharm_36 = true; if (!equippedCharms.Contains(36)) { equippedCharms.Add(36); } charmCost_36 = 0; fragileGreed_unbreakable = true; fragileHealth_unbreakable = true; fragileStrength_unbreakable = true; gotShadeCharm = true; hasGodfinder = true; greyPrinceDefeats = 1; greyPrinceDefeated = true; seenDoor4Finale = true; FieldInfo[] fields = GetType().GetFields(); foreach (FieldInfo fieldInfo in fields) { if (fieldInfo.FieldType == typeof(Completion)) { Completion val = (Completion)fieldInfo.GetValue(this); val.unlocked = true; fieldInfo.SetValue(this, val); } else if (fieldInfo.FieldType == typeof(Completion)) { if (!Extensions.IsAny(fieldInfo.Name, new string[1] { "statueStateRadiance" })) { Completion val2 = (Completion)fieldInfo.GetValue(this); val2.isUnlocked = true; val2.hasBeenSeen = true; fieldInfo.SetValue(this, val2); } } else { string text = fieldInfo.Name.Split('_')[0]; if (text == "gotCharm") { fieldInfo.SetValue(this, true); } else if (text == "newCharm") { fieldInfo.SetValue(this, false); } } } } } }