Overhauled Damage
Полная переработка нескольких механик, связанных с уроном. Включая стихийный урон и парирование щитом.
- Загрузчики
- Fabric
- Скачиваний на Modrinth
- 7,5 тыс.
- Подписчиков на Modrinth
- 28
- версий
- 19
- Обновлён
- 6 мая 20266 мая
- Опубликован
- в 2024
Коротко о моде
Нужен и в игре, и на сервере
Overhauled Damage
Полная переработка нескольких механик, связанных с уроном. Вдохновлена такими играми, как Dark Souls и Valheim, и призвана углубить боевую систему Minecraft.
Накопление эффектов
Накопление эффектов — это ресурс (как здоровье), по умолчанию равный нулю. Определённые события (например, получение урона) увеличивают или уменьшают эти ресурсы. Накопление также медленно снижается со временем.
Если накопление достигает определённого порога, применяется соответствующий статусный эффект, а накопление снова сбрасывается до нуля.
На данный момент существуют следующие накопления эффектов:
- Кровотечение
- Горение
- Заморозка
- Отравление
- Электрошок
- Оглушение
Накопление эффектов отображается в HUD.
Почти все аспекты этой системы настраиваются через атрибуты сущностей, файлы конфигурации и/или датапаки.
Статусные эффекты
Overhauled Damage добавляет несколько статусных эффектов, которые используются накоплением эффектов. Их можно настроить в конфигурации сервера.
Некоторые из этих эффектов на данный момент не имеют игрового эффекта, так как необходимые сторонние API ещё не обновлены.
Накопление эффектов также можно настроить на использование других эффектов.
Статусные эффекты, добавленные Overhauled Damage:
- "overhauleddamage:bleeding" — наносит урон в размере процента от максимального здоровья сущности. Урон удваивается, когда сущность движется.
- "overhauleddamage:burning" — наносит урон. Этот эффект пытается воссоздать захардкоженный флаг сущности "on_fire" в виде статусного эффекта.
- "overhauleddamage:chilled" — снижает скорость атаки и передвижения.
- "overhauleddamage:frozen" — на данный момент не имеет игрового эффекта. Планируется обездвиживать сущность и запрещать любые действия. Сейчас ожидается обновление сторонних модов.
- "overhauleddamage:poison" — настраиваемая версия ванильного статусного эффекта. В отличие от ванильного аналога, этот эффект может убить.
- "overhauleddamage:shocked" — на данный момент не имеет игрового эффекта. Планируется увеличивать урон, наносимый сущности. Сейчас ожидается обновление сторонних модов.
- "overhauleddamage:staggered" — на данный момент не имеет игрового эффекта. Планируется обездвиживать сущность и запрещать любые действия. Сейчас ожидается обновление сторонних модов.
- "overhauleddamage:hit_stun" — снижает скорость атаки и передвижения.
Переработанный расчёт урона
Каждый случай урона, наносимого сущности в Minecraft, имеет "тип урона". Он определяет сообщение о смерти и такие механики, как сопротивления.
Overhauled Damage расширяет эту систему. Каждая включённая переработка, естественно, отключает соответствующую ванильную реализацию.
Когда сущность получает урон, это больше не просто уменьшает здоровье. В зависимости от типа урона может быть множество эффектов. Это по-прежнему может включать уменьшение здоровья, но также может быть увеличение накопления эффектов и даже изменение маны/выносливости.
Что именно происходит, определяется типом урона или, точнее, к какой категории (или типу атаки) относится тип урона.
Типы атак
Каждый "тип урона" принадлежит к одной или нескольким категориям (называемым "типами атак"). Это определяется списком значений с плавающей точкой (называемых множителями), по одному для каждого типа атаки.
Типы атак:
- Generic
- Bashing
- Piercing
- Slashing
- Poison
- Fire
- Frost
- Lightning
По умолчанию каждый тип урона имеет множитель 1.0 для Generic и 0.0 для остальных. Исключения из этого определяются в конфигурации сервера.
Первый шаг нового расчёта урона — определить количество каждого типа атаки, используя количество урона, нанесённого сущности.
attack_type_amount = damage_amount * attack_type_multiplier
Истинный урон
Типы урона в теге типов урона "overhauleddamage:is_true_damage" игнорируют пользовательский расчёт урона. На них не влияют блокирование щитом, броня или сопротивление. Они не применяют накопление эффектов. Они просто наносят урон здоровью (и/или мане/выносливости, если применимо).
Блокированный урон
Эта часть расчёта выполняется только если:
- атакуемая сущность в данный момент блокирует щитом
- тип урона может быть заблокирован экипированным щитом (определяется компонентом данных "minecraft:blocks_attacks")
- установлен мод "Blocking Overhaul"
- в конфиге сервера включена версия "Blocking Overhaul" для Overhauled Damage
- если установлен "Stamina Attributes", у сущности также должно быть хотя бы одно очко выносливости (или параметр конфига сервера "blocking_requires_stamina" должен быть установлен в false)
Парирование
Парирование заменяет обычное блокирование и увеличивает parry_multiplier, если выполнены определённые условия:
- сущность входит в тег типов сущностей "blockingoverhaul:can_parry"
- время блокирования (количество тиков с момента начала блокирования) меньше или равно атрибуту "blockingoverhaul:parry_window" сущности
- атака исходит от LivingEntity
- предмет, используемый для блокирования, имеет компонент данных "blockingoverhaul:parries_attacks"
parry_multiplier = (если парирование) ? (атрибут "blockingoverhaul:parry_multiplier") : 1
Применение затрат выносливости
Если установлен Stamina Attributes, применяется затрата выносливости на блокирование/парирование атаки. Если после этого выносливость сущности становится ниже нуля, попытка заблокировать/спарировать атаку проваливается, и количество урона не снижается.
Расчёт блокированного урона
Количество блокированного урона больше не определяется компонентом данных "minecraft:blocks_attacks", а теперь зависит от damage_type атаки (точнее, от её attack_types) и от нескольких атрибутов сущности. Есть 2 разных режима: фиксированное снижение урона и снижение урона в процентах.
- Режим фиксированного значения:
blocked_attack_type_amount = blocked_attack_type_damage_attribute * parry_multiplier
- Режим на основе процентов:
blocked_attack_type_amount = attack_type_amount * blocked_attack_type_damage_attribute * parry_multiplier / 100
Применение оглушения
Сумма всех attack_type_stagger_amount затем применяется к накоплению оглушения атакованной сущности. Если сущность оглушается от этого, попытка блокирования/парирования проваливается, и урон не блокируется.
attack_type_stagger_amount = (attack_type_amount - blocked_attack_type_amount) * attack_type_stagger_multiplier
Снижение урона
Если попытка блокирования/парирования была успешной, то количество атаки снижается.
new_attack_type_amount = old_attack_type_amount - blocked_attack_type_amount
Дополнительные эффекты
Если у атаки был атакующий, то блокирование/парирование имеет дополнительные последствия. Если атака была спарирована, атакующий мгновенно оглушается.
Если атака была заблокирована обычным образом, то либо атакующая, либо защищающаяся сущность отбрасывается на переменную величину.
additional_attack_type_knockback = old_attack_type_amount * attack_type_negative_block_force_multiplier
applied_knock_back = ((атрибут "blockingoverhaul:block_force" защищающегося) * parry_multiplier) - (атрибут "minecraft:attack_knockback" атакующего) + (сумма всех additional_attack_type_knockback) * total_applied_blocking_knockback_multiplier_config_option
Если applied_knock_back больше нуля, он применяется к атакующей сущности.
Если applied_knock_back меньше нуля, его абсолютное значение применяется к блокирующей сущности.
Снижение урона бронёй
Оставшиеся значения типов атак снижаются бронёй по следующей формуле:
effective_armor = armor_attribute * armor_toughness_attribute (Это можно отключить в конфиге сервера)
attack_type_armor_damage = attack_type_amount * effective_armor * attack_type_armor_multiplier / 100;
attack_type_amount = attack_type_amount - attack_type_armor_damage
Сумма всех attack_type_armor_damage затем используется для повреждения брони сущности.
Снижение урона сопротивлениями
Каждому типу атаки соответствует свой атрибут сопротивления. Оставшиеся значения типов атак снижаются сопротивлением по следующей формуле:
attack_type_amount = attack_type_amount - (attack_type_amount * attack_type_resistance_attribute) / 100;
Эффекты атаки
Оставшиеся значения типов атак применяют свои эффекты к атакованной сущности.
Накопление кровотечения
Если тип урона входит в тег типов урона "overhauleddamage:applies_bleeding", атака может накапливать кровотечение. Количество рассчитывается умножением значения каждого типа атаки на настраиваемый множитель и сложением результатов.
Накопление горения
Применяемое накопление горения — это просто fire_amount.
Эффект Chilled и накопление заморозки
Урон от холода накладывает эффект Chilled. Длительность эффекта — это frost_amount * настраиваемый множитель.
Применяемое накопление заморозки — это просто frost_amount.
Накопление оглушения
Если не было попытки заблокировать/парировать атаку щитом, то теперь применяется накопление оглушения. Количество рассчитывается умножением значения каждого типа атаки на настраиваемый множитель и сложением результатов.
Накопление отравления
Применяемое накопление отравления — это просто poison_amount.
Накопление разряда
Применяемое накопление разряда — это просто lightning_amount.
Отбрасывание
Если не было попытки заблокировать/парировать атаку щитом и включён Knockback Overhaul, то теперь применяется отбрасывание от атаки. Количество рассчитывается умножением значения каждого типа атаки на настраиваемый множитель и умножением суммы на настраиваемый глобальный множитель.
Урон, применяемый к здоровью/мане/выносливости
Количество "применяемого урона" рассчитывается умножением каждого оставшегося значения типа атаки на настраиваемый множитель и сложением результатов.
Если установлены Mana Attributes и/или Stamina Attributes, часть "применяемого урона" может быть взята из маны/выносливости. Оставшееся количество "применяемого урона" затем вычитается из здоровья сущности.
Интеграция Overhauled Damage в ванильный Minecraft и модпаки
То, как именно Overhauled Damage следует интегрировать в геймплей и баланс модпака, — вопрос крайне субъективный, поэтому большинство функций можно широко настраивать и/или конфигурировать через дата-паки.
У большинства функций есть значения по умолчанию, которые более-менее разумны и могут использоваться как основа для кастомизации.
Если у вас возникнут вопросы или проблемы при настройке Overhauled Damage, вы можете связаться со мной на GitHub или в Discord.
API
Overhauled Damage предоставляет Java API, позволяющий любой сущности-мобу наносить урон с пользовательским типом урона.
Реализуйте интерфейс "UsesCustomDamageType" и переопределите метод "overhauleddamage$getCustomDamageType()".
Встроенные дата-паки
Overhauled Damage также поставляется с несколькими встроенными дата-паками, которые дополнительно интегрируют существующий или добавляют новый контент.
Overhauled Damage Enchantments
Этот дата-пак добавляет несколько новых зачарований:
- Bleeding Protection
- Frost Aspect
- Frost Protection
- Lightning Aspect
- Lightning Protection
- Poison Aspect
- Poison Protection
Vanilla Enchantments Overhaul
Этот дата-пак перерабатывает некоторые ванильные зачарования, чтобы использовать механики, введённые Overhauled Damage.
В том числе:
- Blast Protection
- Fire Aspect
- Fire Protection
- Projectile Protection
- Protection
Частые вопросы
Как установить Overhauled Damage?
Установите Fabric под свою версию Minecraft, скачайте Overhauled Damage под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Overhauled Damage?
У Overhauled Damage есть сборки для Minecraft 1.20.1, 1.21–1.21.1, 26.1–26.1.2.
Нужен ли Overhauled Damage на сервере?
Нужен и в игре, и на сервере