作者:rebot | 分类:模组
Minecraft 版本: 26.1 26.1.1 26.1.2
平台: fabric
标签: adventure game-mechanics library
A complete overhaul to several mechanics revolving around damage. It is inspired by games like Dark Souls and Valheim and aims to deepen Minecraft's combat.
Effect Build-Ups are a resource (like health) and are zero by default. Certain events (like taking damage) increase or reduce these resources. Build-Ups are also slowly reduced over time.
If a build-up reaches a certain threshold, the corresponding status effect is applied and the build-up is set to zero again.
Currently, there are the following effect build-ups:
Effect Build-ups are displayed in the HUD.
Almost all aspects of this system are configurable via entity attributes, config files and/or data packs.
Overhauled Damage adds several status effects that are used by the effect build-ups. They can be configured in the server config.
Some of these effects currently don't have a gameplay effect, since the required third-party APIs are not updated yet.
The Effect Build-Ups can also be configured to use other effects.
The status effects added by Overhauled Damage are:
Every instance of damage that is dealt to an entity in Minecraft has a "damage type". This defines the death message and mechanics like resistances.
Overhauled Damage expands this system. Each enabled overhaul naturally disables the corresponding vanilla implementation.
When an entity is damaged, this no longer just reduces health. Depending on the damage type, there can be a variety of effects. This can still include health reduction, but it can also be effect build-up increases and even mana/stamina can be modified.
What exactly happens, is determined by the damage type or more precisely, to which category (or attack type) the damage type belongs.
Each "damage type" belongs to one or more categories (called "attack types"). This is defined by a list of float values (called multipliers), one for each attack type.
The attack types are:
By default, every damage type has a multiplier of 1.0 for Generic and 0.0 for the rest. Exceptions to this are defined in the server config.
The first step of the new damage calculation is to determine the amount of each attack type, using the damage amount that was dealt to the entity.
attack_type_amount = damage_amount * attack_type_multiplier
Damage types in the "overhauleddamage:is_true_damage" damage type tag will ignore the custom damage calculation. They are not affected by shield blocking, armor or resistance. They don't apply Effect Build-Ups. They just deal damage to health (and/or mana/stamina, if applicable).
This part of the calculation only happens if:
Parrying replaces normal blocking and increases the parry_multiplier if certain conditions are met:
parry_multiplier = (if parrying) ? ("blockingoverhaul:parry_multiplier" attribute) : 1
If Stamina Attributes is installed, the stamina cost for blocking/parrying an attack is applied. If the entity's stamina is lower than zero after that, the attempt to block/parry the attack fails and the damage amount is not reduced.
The amount of blocked damage is no longer determined by the "minecraft:blocks_attacks" data component, but is now depending on the damage_type (more specifically on its attack_types) of the attack and on several entity attributes. There are 2 different modes, flat damage reduction and percentage based damage reduction.
Flat Value Mode:
blocked_attack_type_amount = blocked_attack_type_damage_attribute * parry_multiplier
Percentage Based Mode:
blocked_attack_type_amount = attack_type_amount blocked_attack_type_damage_attribute parry_multiplier / 100
The sum of all attack_type_stagger_amount is then applied to the stagger build-up of the attacked entity. If the entity gets staggered by this, then the block/parry attempt fails and no damage is blocked.
attack_type_stagger_amount = (attack_type_amount - blocked_attack_type_amount) * attack_type_stagger_multiplier
If the blocking/parrying attempt was successful, then the attack amount is reduced.
new_attack_type_amount = old_attack_type_amount - blocked_attack_type_amount
If the attack had an attacker, then blocking/parrying has additional consequences. If the attack was parried, then the attacker gets staggered instantly.
If the attack was blocked normally, then either the attacking or the defending entity are knocked back by a variable amount.
additional_attack_type_knockback = old_attack_type_amount * attack_type_negative_block_force_multiplier
applied_knock_back = ((defender's "blockingoverhaul:block_force" attribute) parry_multiplier) - (attacker's "minecraft:attack_knockback" attribute) + (sum of all additional_attack_type_knockback) total_applied_blocking_knockback_multiplier_config_option
If applied_knock_back is greater zero, it is applied to the attacking entity.
If applied_knock_back is lesser zero, its absolute value is applied to the blocking entity.
The remaining attack type amounts are reduced by armor, using the following formula:
effective_armor = armor_attribute * armor_toughness_attribute (This can be disabled in the server config)
attack_type_armor_damage = attack_type_amount effective_armor attack_type_armor_multiplier / 100;
attack_type_amount = attack_type_amount - attack_type_armor_damage
The sum of all attack_type_armor_damage is then used to damage the entities armor.
Each attack type has a corresponding resistance attribute. The remaining attack type amounts are reduced by resistance using the following formula:
attack_type_amount = attack_type_amount - (attack_type_amount * attack_type_resistance_attribute) / 100;
The remaining attack type amounts apply their effects to the attacked entity.
If the damage type is in the "overhauleddamage:applies_bleeding" damage type tag, the attack can apply bleeding build-up. The amount is calculated by multiplying each attack type amount with a configurable multiplier and adding up the results.
The applied burn build-up is simply the fire_amount.
Frost damage applies the Chilled effect. The effect duration is the frost_amount * a configurable multiplier.
The applied freeze build-up is simply the frost_amount.
If no attempt was made to block/parry the attack with a shield, then stagger build-up is applied now. The amount is calculated by multiplying each attack type amount with a configurable multiplier and adding up the results.
The applied poison build-up is simply the poison_amount.
The applied shock build-up is simply the lightning_amount.
If no attempt was made to block/parry the attack with a shield and the Knockback Overhaul is enabled, then the attack knockback is applied now. The amount is calculated by multiplying each attack type amount with a configurable multiplier and multiplying the sum with a configurable global multiplier .
The amount of "applied damage" is calculated by multiplying each remaining attack type amount with a configurable multiplier and adding up the results.
If Mana Attributes and/or Stamina Attributes is installed, a portion of "applied damage" can be taken from mana/stamina. The remaining amount of "applied damage" is then taken from the entity's health.
How exactly Overhauled Damage should be integrated into the gameplay and balance of a mod pack is highly subjective, which is why most features can be configured extensively and/or use data driven methods for configuration.
Most features have default values that are somewhat reasonable and could be used as a baseline for customisations.
If you have any questions or problems when configuring Overhauled Damage, you can contact me on GitHub or Discord.
Overhauled Damage provides a Java API that allows any Mob entity to deal damage with a custom damage type.
Implement the "UsesCustomDamageType" interface and override the "overhauleddamage$getCustomDamageType()" method.
Overhauled Damage also comes with several built-in data packs, which further integrate existing or add new content.
This data pack adds several new enchantments:
This data pack reworks some vanilla enchantments to use mechanics introduced by Overhauled Damage.
This includes:
请登录后举报
暂无评论,抢个沙发吧~