private void PlayerEntity_OnExhausted(DaggerfallEntity entity) { const int youDropToTheGround1 = 1071; const int youDropToTheGround2 = 1072; bool enemiesNearby = GameManager.Instance.AreEnemiesNearby(); ITextProvider textProvider = DaggerfallUnity.Instance.TextProvider; TextFile.Token[] tokens; GameManager.Instance.PlayerMotor.CancelMovement = true; DaggerfallMessageBox messageBox = new DaggerfallMessageBox(DaggerfallUI.UIManager); if (GameManager.Instance.PlayerEnterExit.IsPlayerSwimming) { messageBox.SetText(HardStrings.exhaustedInWater); } else { if (!enemiesNearby) { tokens = textProvider.GetRSCTokens(youDropToTheGround1); } else { tokens = textProvider.GetRSCTokens(youDropToTheGround2); } if (tokens != null && tokens.Length > 0) { messageBox.SetTextTokens(tokens); } } messageBox.ClickAnywhereToClose = true; messageBox.ParentPanel.BackgroundColor = Color.clear; messageBox.Show(); if (!enemiesNearby && !GameManager.Instance.PlayerEnterExit.IsPlayerSwimming) { // TODO: Duplicates rest code in rest window. Should be unified. DaggerfallUnity.Instance.WorldTime.Now.RaiseTime(1 * DaggerfallDateTime.SecondsPerHour); int healthRecoveryRate = FormulaHelper.CalculateHealthRecoveryRate(this); int fatigueRecoveryRate = FormulaHelper.CalculateFatigueRecoveryRate(MaxFatigue); int spellPointRecoveryRate = FormulaHelper.CalculateSpellPointRecoveryRate(MaxMagicka); CurrentHealth += healthRecoveryRate; CurrentFatigue += fatigueRecoveryRate; CurrentMagicka += spellPointRecoveryRate; TallySkill(DFCareer.Skills.Medical, 1); } else { SetHealth(0); } }
bool TickVitals() { int healthRecoveryRate = FormulaHelper.CalculateHealthRecoveryRate(playerEntity); int fatigueRecoveryRate = FormulaHelper.CalculateFatigueRecoveryRate(playerEntity.MaxFatigue); int spellPointRecoveryRate = FormulaHelper.CalculateSpellPointRecoveryRate(playerEntity); playerEntity.CurrentHealth += healthRecoveryRate; playerEntity.CurrentFatigue += fatigueRecoveryRate; playerEntity.CurrentMagicka += spellPointRecoveryRate; playerEntity.TallySkill((short)Skills.Medical, 1); return(IsPlayerFullyHealed()); }