/* У нас есть гипотетический представитель чата "Мне вас искренне жаль" под именем Ним. Ним наследует способ передвижения от хомяков (Cricetinae). Он обитает в солнечной долине без хищников и с возможностью выкопать разного рода пищу из под земли. Каждый день ему с небес падает ананас. Когда он ест, у него есть шанс подавиться и умереть, который варьируется в зависимости от его показателей здоровья. Если Ним чувствует себя плохо, то он может потерять немного рассудка или не развиться. Когда Ним совсем ленится и перестает двигаться то при следующей трапезе он подавится и умрет.
Чем дольше он живет и ест, тем лучше становятся его когнитивные способности, следственно, он добывает больше (ест дополнительно, выкапывая еду из почвы), но если он станет слишком умен то добудет больше еды чем нужно, подавится, и умрет.
С набором веса на Нима накладываются дебафы к здоровью, следственно, шанс развить рассудок меньше, и шанс впоследствии умереть выше.
В этом скрипте расписан процесс жизнедеятельности Нима. 1 рейт в FixedUpdate это 1 день его жизни. С самим объектом Нима в сцене ничего не происходит кроме как отключения в момент смерти. Вы можете проявить себя и сделать механику падения ананаса, если хотите */
using UnityEngine;
public class NimSimulator : MonoBehaviour {
[SerializeField] private int LifeScore = 0;
[SerializeField] private bool _navigationState = true;
[SerializeField] private bool _mindHealthState = true;
[SerializeField] private int calories = 1;
[SerializeField] private int Subject_IQ = 25;
[SerializeField] private string DeathReason = "того, что вы забыли включить его :facepalm:";
private int _duplicationEffeciency = 1;
public GameObject NimRod; //❗️указать
private void FixedUpdate() {
if (NimRod.activeSelf == false) //проверка жив ли Ним, если нет то сеанс завершается
Debug.LogError($"Ним прожил {LifeScore} дней, набрал {calories} килограмм и поумнел до {Subject_IQ} IQ. Его настигла трагическая смерть из-за {DeathReason}.");
if (calories > 125) //наложение дебафов к здоровью при избыточном весе
_navigationState = false;
else if (calories > 75)
_mindHealthState = false;
Subject_IQ += Pineapples(UnityEngine.Random.Range(1, 100)); //Процесс поиска еды, в котором Ним может развить IQ. После он находит ананас и ест его. У него есть шанс 1% умереть от падения ананаса на голову и шанс 25% удвоить полученный опыт (как в плюс так и в минус)
if (Subject_IQ >= 250) { //если Ним умен, то он выкапывает еду
DeathReason = "избыточной самооценки";
Eat(false); //💀
}
else if (Subject_IQ >= 50)
Eat(true); //🤙
LifeScore++; //новый день, новый я
Debug.Log($"День {LifeScore}: вес {calories} кг, {Subject_IQ} IQ");
}
private int Pineapples(int ananasPossibility) { //Ним ищет еду
_duplicationEffeciency = 1;
if (ananasPossibility == 1) {
DeathReason = "летального падения ананаса на голову";
Eat(false); //💀
}
if (_mindHealthState == false && _navigationState == false) {
DeathReason = "избыточного веса";
Eat(false); //💀
}
if (ananasPossibility >= 75)
_duplicationEffeciency = 2; //сегодня опыт удвоится 👍
else if (_mindHealthState == false && _navigationState) {
Eat(true); //🤔 Ним менее эффективен из-за дебафа
ananasPossibility = UnityEngine.Random.Range(-1, 1); //может потерять или прибавить интеллекта
}
else { //дебафов на здоровье нет
Eat(true); //🤙
ananasPossibility = UnityEngine.Random.Range(0, 1); //может прибавить интеллекта
}
return ananasPossibility * _duplicationEffeciency;
}
private void Eat(bool deathPossibility) { //трапеза 🤩
NimRod.SetActive(deathPossibility); //момент, когда он может умереть
if (deathPossibility)
calories += 1; //добавляет к бокам, пока живой 🤙
}
}
#ОпенСоус