TKVM Damage System

Quick rating

Community listing page, reviews here may not be monitored by the author.

TKVM Damage System

No reviews yet

Adds damage types for weapons and resistances/vulnerabilities to entities via datapacking

Mod Loaders
Minecraft

About

Description

Hello, this is a damage system mod intended for my modpack!

Wounding Types

Currently, there are 4 hard-value wounding types.

Blunt, Pierce, Slash, and Chop

These are just descriptors of the weapon. It's extremely recommended to avoid using multiple wounding types on one weapon, but nothing is stopping you. (Balancing multiple multipliers is quite difficult and nonsensical, imagine a weapon that is both piercing and blunt, and a mob has -50% blunt and +50% pierce. They will negate each other.)

Filepath is data/tkvm_damage_system/tkvm_damage_system/weapon_tags/YOUR_FILE_NAME.JSON

You can name it anything, I recommend naming it to whatever namespace of weapons you are datapacking.

Example:

{
  "tkvm_weapons:wooden_dagger": [
    "pierce"
  ],
  "tkvm_weapons:stone_dagger": [
    "pierce"
  ],
  "tkvm_weapons:golden_dagger": [
    "pierce",
    "holy"
  ],
  "tkvm_weapons:iron_dagger": [
    "pierce"
  ]
}

That's all you need to datapack a weapon to be a type.

Alongside the wounding types, you can put, whatever you want basically. If you want to put "spaghetti" alongside it, you could. What you need to follow up with is next;

{
  "tkvm_weapons:wooden_dagger": [
    "pierce",
    "spaghetti"
  ]
}

I promise the spaghetti example will make sense.

Entity_tags

This is where the multipliers are defined and basically, how the mob will take damage from the wounding types.

filepath: data/tkvm_damage_system/tkvm_damage_system/entity_tags/YOUR_FILENAME.JSON

Once again it doesnt matter what the filename is.

in vanilla.json (example)

{  
  "minecraft:zombie": {  
    "vulnerable": {  
      "slash": 5.0,  
      "pierce": 5.0,  
      "chop": 5.0,  
      "spaghetti": 5.0  
    }  
  }
}

Every 1.0 means 10%. so in this example this zombie is vulnerable to every type, and, if a weapon is also a spaghetti type, it will deal an extra 50% addition of its base damage.

Just to reiterate : the base 4 wounding types are a separate calculation apart from any other additional / elemental type.

So if you have a slash, spaghetti sword, with a base of 10, the slash will add 50%, so that will do 15 on its own, and then the spaghetti will also add another 5, because its adding a ```base damage bonus x vulnerability multiplier (50%) = 5

So the total will be 20.

total = (BASE × wounding_multiplier) + (BASE × additional_attribute_multiplier)

This creates an edge case where you would think to make something resistant to a, say, spaghetti sword, but in reality, that won't do anything. It never goes negative.

Think of the additional attribues as additive damage you would like entities to be vulnerable to, not something to take away.

The spaghettiness of the sword doesnt negate the fact that its a sword, only inflicts that extra damage to those susceptible.

The reason for the spaghetti example was just to show you can put anything, and as long as the entity has the matching vulnerability the bonus will be applied.

Resistant

You can of course also make any entity resistant to wounding type. Or the additional tag, but as I already explained, that wouldn't do anything.

{  
  "minecraft:zombie": {  
    "resistant": {  
      "slash": 5.0,  
      "pierce": 5.0,  
      "chop": 5.0,  
      "spaghetti": 5.0  
    }  
  }
}

And of course, you can make an entity both vulnerable and resistant to whatever.

  "minecraft:skeleton": {
    "vulnerable": {
      "blunt": 5.0,
      "chop": 2.5
    },
    "resistant": {
      "pierce": 5.0,
      "slash":  5.0
    }
  },

Armor

How does armor work then?

Armor works as normal. Nothing has been changed about armor mechanics.

Compat

Currently, only my mods have built in compatibility. Mobs:

Weapons: