Exemple #1
0
    public virtual void ProcessOneHour()
    {
        if (!IsInShelter)
        {
            return;
        }

        if (IsDead)
        {
            return;
        }

        IsSufferingByHunger = Hunger >= 100;
        IsSufferingByThirst = Thirst >= 100;

        UpdateThirst();

        if (Hunger > 50)
        {
            if (Quest.Instance.Status.Resources.Food.Value > 0)
            {
                Quest.Instance.Status.Resources.Food.Update(-1);
                Hunger -= 50;
            }
        }

        if (Hunger < 100 && Hunger + 3 >= 100)
        {
            Quest.Instance.AddStory(Name + " страдает от голода.", null);
        }

        Hunger += 3;

        if (Hunger >= 100)
        {
            Health -= 1;
        }

        if (Health <= 0)
        {
            IsDead = true;

            if (Hunger >= 100)
            {
                DeathReason = QuestCharacterDeathReason.Starvation;
            }
            else if (Thirst >= 100)
            {
                DeathReason = QuestCharacterDeathReason.Thirst;
            }

            OnDeath.InvokeIfNotNull(this);
        }
    }