// Token: 0x06001382 RID: 4994 private void CastSoulFlame() { if (this.ChargingSound) { this.ChargingSound.StopAndFadeOut(0.1f); } this.m_sein.Energy.Spend(this.SoulFlameCost); this.m_cooldownRemaining = 1f; this.m_holdDownTime = 0f; if (this.m_sein.PlayerAbilities.Regroup.HasAbility) { this.m_sein.Mortality.Health.GainHealth(4); } if (this.m_sein.PlayerAbilities.UltraSoulFlame.HasAbility) { this.m_sein.Mortality.Health.GainHealth(4); } this.m_sceneCheckpoint = new MoonGuid(Scenes.Manager.CurrentScene.SceneMoonGuid); if (this.m_checkpointMarkerGameObject) { this.m_checkpointMarkerGameObject.GetComponent <SoulFlame>().Disappear(); } this.SpawnSoulFlame(Characters.Sein.Position); RandomizerBonusSkill.LastSoulLink = Characters.Sein.Position; RandomizerStatsManager.OnSave(); SeinSoulFlame.OnSoulFlameCast(); SaveSlotBackupsManager.CreateCurrentBackup(); GameController.Instance.CreateCheckpoint(); GameController.Instance.SaveGameController.PerformSave(); this.m_numberOfSoulFlamesCast++; if (this.m_numberOfSoulFlamesCast == 50) { AchievementsController.AwardAchievement(AchievementsLogic.Instance.SoulLinkManyTimesAchievementAsset); } if (this.CheckpointSequence) { this.CheckpointSequence.Perform(null); } }
// Token: 0x06001381 RID: 4993 RVA: 0x0006E5C0 File Offset: 0x0006C7C0 public override void UpdateCharacterState() { if (this.m_sein.Controller.IsBashing) { return; } this.HandleDelayOnGround(); this.HandleCooldown(); this.HandleCheckpointMarkerVisibility(); this.HandleNagging(); this.HandleSkillTreeHint(); this.HandleCharging(); if (this.m_sein.Energy.Max == 0f) { this.m_cooldownRemaining = 1f; } if (!UI.Fader.IsFadingInOrStay()) { if (Core.Input.SoulFlame.OnPressed && !Core.Input.SoulFlame.Used && !Core.Input.Cancel.Used) { this.m_isCasting = true; if (this.InsideCheckpointMarker) { this.m_tapRemainingTime = 0.3f; } else if (!this.CanAffordSoulFlame) { this.HideOtherMessages(); UI.SeinUI.ShakeEnergyOrbBar(); this.m_sein.Energy.NotifyOutOfEnergy(); } else if (this.m_cooldownRemaining != 0f) { this.HideOtherMessages(); this.m_notReadyHint = UI.Hints.Show(this.NotReadyMessage, HintLayer.SoulFlame, 1f); Sound.Play(this.NotReadySound.GetSound(null), base.transform.position, null); } else if (this.IsSafeToCastSoulFlame != SeinSoulFlame.SoulFlamePlacementSafety.Safe) { this.HideOtherMessages(); switch (this.IsSafeToCastSoulFlame) { case SeinSoulFlame.SoulFlamePlacementSafety.UnsafeEnemies: this.m_notSafeHint = UI.Hints.Show(this.NotSafeEnemiesMessage, HintLayer.SoulFlame, 1f); break; case SeinSoulFlame.SoulFlamePlacementSafety.UnsafeGround: this.m_notSafeHint = UI.Hints.Show(this.NotSafeGroundMessage, HintLayer.SoulFlame, 1f); break; case SeinSoulFlame.SoulFlamePlacementSafety.UnsafeZone: this.m_notSafeHint = UI.Hints.Show(this.NotSafeZoneMessage, HintLayer.SoulFlame, 1f); break; case SeinSoulFlame.SoulFlamePlacementSafety.SavePedestal: this.m_notSafeHint = UI.Hints.Show(this.SavePedestalZoneMessage, HintLayer.SoulFlame, 1f); break; } Sound.Play(this.NotSafeSound.GetSound(null), base.transform.position, null); } } if (this.m_isCasting && this.m_sein.IsOnGround && this.m_delayOnGround == 0f && this.m_tapRemainingTime > 0f) { this.m_tapRemainingTime -= Time.deltaTime; if (this.m_tapRemainingTime < 0f && this.InsideCheckpointMarker && Characters.Sein.PlayerAbilities.Rekindle.HasAbility && this.IsSafeToCastSoulFlame == SeinSoulFlame.SoulFlamePlacementSafety.Safe) { SeinSoulFlame.OnSoulFlameCast(); Vector3 position = Characters.Sein.Position; Characters.Sein.Position = this.m_soulFlame.Position; SaveSlotBackupsManager.CreateCurrentBackup(); GameController.Instance.CreateCheckpoint(); Characters.Sein.Position = position; GameController.Instance.SaveGameController.PerformSave(); this.m_soulFlame.OnRekindle(); GameController.Instance.PerformSaveGameSequence(); } } if (Core.Input.SoulFlame.Released) { this.m_isCasting = false; if (this.m_tapRemainingTime > 0f) { this.m_tapRemainingTime = 0f; if (this.AllowedToAccessSkillTree && this.InsideCheckpointMarker) { if (this.m_skillTreeHint) { this.m_skillTreeHint.Visibility.HideImmediately(); } Core.Input.Start.Used = true; UI.Menu.ShowSkillTree(); } } } } else { this.m_tapRemainingTime = 0f; } if (this.m_holdDownTime == 1f && this.m_sein.IsOnGround && this.m_delayOnGround == 0f) { this.CastSoulFlame(); } }