📌
Важно знать
Ошибка игрока или ложный вывод Монте-Карло — распространённое ошибочное понимание случайности событий. Связана с тем, что, как правило, человек не осознаёт на интуитивном уровне того факта, что вероятность каждого последующего исхода не зависит от предыдущих исходов случайного события.
🎲 Теория вероятностей рассматривает каждое событие по отдельности как независимое от предыдущих.
📈 Простой пример с монеткой:
Представьте, что вы подбрасываете монетку, и 5 раз подряд выпадает "орёл". Возникает ощущение, что в следующий раз с большей вероятностью выпадет "решка", ведь «решка» уже давно не выпадала. Но на самом деле шанс выпадения орла или решки остаётся одинаковым и составляет 50% при каждом новом броске.
Причина в том, что каждый бросок монетки независим от предыдущих. Прошлые результаты не влияют на вероятность следующего броска, но наш мозг склонен думать иначе.
Полезная информация:
Как читать формулы?
📜 Формула Расчета при Размене Ударами
// Каждый размен ударами игроков состоит из двух действий
// 1. Игрок действует по Противнику
// 2. Противник действует по Игроку
// В данной формуле рассматривается только одно действие т.к. второе выполняется аналогичным образом.
УвеличениеУсталости = 0,
УвеличениеУсталости_Противнику = 0,
🟢Есть_Уворот_Противника = 📜 Формула Расчета Шанса на Уворот Противника(),
🟢Есть_КритУдар = 📜 Формула Расчета Шанса на Критический Удар(),
🟢Есть_Блок_Противника = 📜 Формула Проверки на попадание в блок Противнику(),
🟢Есть_Пробитие = 📜 Формула Расчета Шанса на пробив блока(➡️ Есть_КритУдар),
// 08.11.2024 - Шанс на приземление уворота противника от критического удара (1 к 3)
Если(🟢Есть_КритУдар и 🟢Есть_Уворот_Противника) 🟢Есть_Уворот_Противника = 🎲(1, 3) >= 2,
Если(🟢Есть_Уворот_Противника)
{
// Противник увернулся
УвеличениеУсталости += 0.65,
УвеличениеУсталости_Противнику += 🟢Есть_Блок_Противника ? 0.7 : 1.25,
}
⛓️
Если(🟢Есть_Блок_Противника и 🔴Нет_Пробития)
{
// Противник заблокировал удар и нет пробития блока
УвеличениеУсталости += 0.65,
УвеличениеУсталости_Противнику += 0.65,
}
⛓️
{
// Если мы оказались здесь, то будет нанесения урона по противнику
Урон = 📜 Формула Расчета Урона(➡️ Есть_КритУдар),
Если(🟢Есть_Блок_Противника и 🟢Есть_Пробитие)
{
// Eсть пробитие блока противнику, то режем урон, в самом конце расчетов!
Урон = Урон / 2,
УвеличениеУсталости += 1.25,
УвеличениеУсталости_Противнику += 1,
}
⛓️
{
// Удар без пробитие блока
УвеличениеУсталости += 0.9,
УвеличениеУсталости_Противнику += 0.8,
}
// Дополнительная усталость при нанесении урона, если Cила от суммы Сила + Ловкость + Удача игрока больше, чем ... %
Если(Cила% >= 45)
{
СписокШтрафов = [
45 = 0.15, 46 = 0.30, 47 = 0.35, 48 = 0.40, 49 = 0.45,
50 = 0.50, 51 = 0.55, 52 = 0.65, 53 = 0.75, 54 = 0.85,
55 = 0.95, 56 = 1.00, 57 = 1.10, 58 = 1.20, 59 = 1.30,
60 = 1.40
],
// Поиск процента силы в списке штрафов, если нет, то 1.50
Штраф = поиск(СписокШтрафов[Cила%]) ? СписокШтрафов[Cила%] : 1.50,
УвеличениеУсталости += Штраф,
}
// Бонус увеличение Урона от кол-ва отсутствующих блоков, в самом конце расчетов!
Урон += ((15 * Колво_Отсутствующих_Блоков) * Урон / 100),
}
УвеличениеУсталости += 0.5 * Колво_Отсутствующих_Блоков,
📜 Формула Расчета Шанса Походовой Травмы(➡️ Есть_Пробитие, ➡️ Есть_КритУдар),
📜 Формула Расчета МФов в Статы
// Переводим проценты модификаторов в дополнительные статы
мфСтат_Сила = (мфСила% / 5),
мфСтат_АнтиСила = (мфАнтиСила% / 5),
мфСтат_Уворот = (мфУворот% / 3.0),
мфСтат_АнтиУворот = (мфАнтиУворот% / 3.0),
мфСтат_Крит = (мфКрит% / 3.0),
мфСтат_АнтиКрит = (мфАнтиКрит% / 3.0),
📜 Формула Расчета Урона
Минимальный_Урон = Минимальный_Базовый_Урон,
Максимальный_Урон = Максимальный_Базовый_Урон,
Минимальный_Урон += (Сила / 1),
Максимальный_Урон += (Сила / 1),
// Бросаем кубик на Урон от мин. до макс.
Урон = 🎲((Минимальный_Урон), (Максимальный_Урон)) / 1,
// Влияем на Урон
Урон += мфСтат_Сила,
Урон += Мастерство * 2.5,
Урон -= Мастерство_Противника * 1.5,
// Увеличиваем Урон в случае крита
Если(🟢Есть_КритУдар) Урон = 📜 Формула Расчета Критического Урона(➡️ Урон),
// Складываем защиту противника
Защита_Противника = Общая_Защита_Противника + ТочкаУдара_Защита_Противника,
// Штраф на урон, если Cила от суммы Сила + Ловкость + Удача игрока больше, чем ... %
Если(Cила% >= 46) Урон -= (Сила - НаименьшийСтат) / 6,
Урон -= Защита_Противника,
// Влияние усталости на Урон
Урон -= (Урон * Усталость / 100) / 1.3,
// В итоге урон вышел завышенный, поэтому приходится срезать
Если(Уровень == 4) Урон -= Урон * 0.3,
⛓️
Если(Уровень == 5) Урон -= Урон * 0.3,
⛓️
Если(Уровень == 6) Урон -= Урон * 0.25,
⛓️
Если(Уровень == 7) Урон -= Урон * 0.25,
⛓️
Если(Уровень == 8) Урон -= Урон * 0.25,
⛓️
Если(Уровень == 9) Урон -= Урон * 0.15,
⛓️
Если(Уровень == 10) Урон -= Урон * 0.1,
⛓️
Если(Уровень == 11) Урон -= Урон * 0.05,
⛓️
Если(Уровень == 12) Урон -= Урон * 0.05,
⬅️ (Урон),
📜 Формула Расчета Критического Урона
// Критический Урон
Урон = Урон * 1.25,
// Компенсация, если Удача > Сила
Если(Компенсатор)
{
Компенсация = Удача - Сила,
Урон += Компенсация * 1.25,
}
// Влияние усталости на Урон
Урон -= (Урон * Усталость / 100) / 2,
// Штраф на мутанта с Удачей
Если(Удача > Сила + Ловкость)
{
Урон -= (Удача - (Сила + Ловкость)) / 3,
}
⬅️ Урон,
📜 Формула Расчета Шанса на Критический Удар
Влияние_Удачи = Удача * 1.0 - (Удача_Противника),
Влияние_Мф = (мфСтат_Крит - мфСтат_АнтиКрит_Противника) + (Влияние_Удачи),
кэф = Удача + Влияние_Мф,
// Сумма статов игрока и противника = общая сумма (Сила + Ловкость + Удача) игрока и противника, без учета МФ
Вероятность_Крита = (кэф * 100 / Сумма_Статов_Игрока_и_Противника),
// Влияние усталости на Вероятность
Вероятность_Крита -= (Усталость) / 2,
Если(Усталость > Усталость_Противника) Вероятность_Крита -= (Усталость - Усталость_Противника) / 2,
Если(Усталость < Усталость_Противника) Вероятность_Крита += (Усталость_Противника - Усталость) / 4,
⬅️ (Вероятность_Крита) >= 🎲(1, 100),
📜 Формула Расчета Шанса на Уворот Противника
Влияние_Ловкости = Ловкость_Противника * 1.0 - (Ловкость),
Влияние_Мф = (мфСтат_Уворот_Противника - мфСтат_АнтиУворот) + Влияние_Ловкости,
кэф = Ловкость_Противника + Влияние_Мф,
// Сумма статов игрока и противника = общая сумма (Сила + Ловкость + Удача) игрока и противника, без учета МФ
Вероятность_Уворота_Противника = (кэф * 100 / Сумма_Статов_Игрока_и_Противника),
// Влияние усталости на Вероятность
Вероятность_Уворота_Противника -= (Усталость_Противника) / 2,
Если(Усталость_Противника > Усталость) Вероятность_Уворота_Противника -= (Усталость_Противника - Усталость) / 2,
Если(Усталость_Противника < Усталость) Вероятность_Уворота_Противника += (Усталость - Усталость_Противника) / 4,
⬅️ (Вероятность_Уворота_Противника) >= 🎲(1, 100),
📜 Формула Расчета Шанса Походовой Травмы
Если(🟢Есть_Пробитие и 🟢Есть_КритУдар)
{
// Крит + Пробитие
⬅️ 🎲(1, 2) == 1,
}
⛓️
Если(🟢Есть_КритУдар)
{
// Только крит
⬅️ 🎲(1, 4) == 1,
}
⛓️
Если(🟢Есть_Пробитие)
{
// Только пробитие
⬅️ 🎲(1, 6) == 1,
}
📜 Формула Расчета Шанса на пробив блока
Шанс = 10,
Если(Усталость < Усталость_Противника)
{
Шанс += (Усталость_Противника - Усталость),
}
Если(Шанс > 25) Шанс = 25,
Если(🟢Есть_КритУдар) Шанс = 50,
⬅️ Шанс >= 🎲(1, 100),