Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
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());
        }