Distinct Damage Descriptions

Distinct Damage Descriptions

7.9k Downloads

[Thoughts] Lets talk a bit

Xarmat-GitHub opened this issue ยท 7 comments

commented

This is not an "I wish Feature A" - List. Create a suggestion as usual and don't put it in here.

First: I love how things get in shape in this mod. And my creativity gets running like a train! Thanks for the nice work.

Just a Ticket to shear thoughts

Until yet there is no Discord or other tool to communicate (can be a good choice, less distraction). So I want to create this ticket to allow some "thought" spam and hopefully will enhance the development process and don`t steal time. So when riding here, try to describe things clear and help Yeelp to understand it properly.

**Yeelp should not be forced to react on massages, so its more an one way of communication, more like an support tool for him to understand his users.
Note: Yeelp should be free to copy and DELETE parts of your massage and create new Issues when useful.

PS: Yeelp, when you don't like it, then close it, feel free. ;)

commented

Damage Calculation Thought's

I read the Tickets:

  • #24 Handling Custom Damage (Enable Armor to be part of the damage handling)
  • #26 Blocked Damage by Shields (Enable Shield to be part of the damage handling)

And there are many thinks that cam new in my mind.
Because there are more "global" I decided to write them down here.

The "Meath" behind the Damage Output:
As far I can see (and I am sure I will miss a lot) there is a lot to balance when all features will be used in a calculation.

Splitting Up Damage Calculation Behaviour:

  • Attack (Mod Attacking)
    -- Attacking with s,p,b = split the Damage into 3 categories
    -- Attacking with custom damage = Adds extra damage when mob get inflicted by it | Adds on top of the s,p,b calculation - proportional
  • Shield
    -- Shield Blocking = blocks instantly % damage of s, p, b
    -- Shield Blocking custom damage = blocks % of the custom damage
  • Armor
    -- Armor Performance when attacked by s, p, b = [Iron Armor] 36% dmg reduction when s, p, b are each "1"
    -- Armor Performance custom damage = At the moment it will reduce the bonus added from the "Attack" based on s, p, b
  • Mob (Defender)
    -- Entity Resistance = Modify the Damage based on Resistance

Lets get deeper in each point:

  • Attacking with s,p,b
    -- Mobs have a own s,p,b typ
    -- Weapons have there own s,p,b typ
    --- Suggestion: Config: Set s,p,b typ to the item the mob has in his hand (default, intuitive) | both separate calculation | only mob (counter intuitive)
  • Attacking with custom damage
    -- Extra Damage proportional to s,p,b
    -- Suggestion: Config: Damage Call has its own calc [Example: Mace (10 damage) with 0,0,1 and holy 0,8 VS Ghost 0,0,b - holy 1; this entity would be immune to holy damage because its immune to "b" damage - not anymore, the extra damage based on the weapon damage get trough it and damage the mob by 8 Damage (holy = 0,8)] | Default: how it works now s,p,b based
    -- Suggestion 2 (SugCC): Custom Damage Config: Enable the option to set a custom damage type as direct damage, ignoring the s,p,b calculation and inflict the weapon damage (with the damage value of the weapon/mob) to the attack directly
  • Shield Blocking =s,p,b based damage reduction % wise (max 100%) -> end value go to armor calculation
    -- Shield Blocking custom damage = reduction from DMG based on % (in this step the s,p,b get ignored and the custum damage get reduced; [Example: Mace (10 Damage) 0,0,1 with holy 1 (10 holy damage) - get Blocked with Shield 0,0,5 and holy 0.8 -> 5 Weapon Damage left + 2 holy damage left])
    -- Question: What if the Mace Damage get Blocked by 100% -> Normally the Entity don't get hit, so the damage will not get inflicted
    -- Shield Knockback: Config: Ignore it and let Vanilla do it zero knockback when blocked) | % damage get through it (chance for issues with other mods that change it)
  • Armor Performance when attacked by s, p, b - works good for that (can have values over 1, so it can give the player more armor then the item actually has, that's good to use)
    -- Armor Performance custom damage: Armor reduce the damage s,p,b wise OR when custom damage directly is true, it will reduce the damage (left after blocking too)
    -- Entity Resistance = All fine

DamageCalc

Before hitting code in stone, there must be a stable and USEFUL outcome of the damage calculating part.
To many config options are not useful but set the wrong things in stone can be reduce the quality of the mod.
It must be intuitive and easy to understand for the user.

Things like "inflicts holy damage 100%"[direct enabled = true] is easer to understand then "inflects holy damage based on how much regular damage dealt 100%"[direct enabled = false].

commented

We kind of have a game loop, so to speak. All the magic happens in the DamageHandler class (which is a mess kind of), in particular, the method

which uses this method of the same name in the API to distribute physical damage. the method in the DamageHandler then handles the rest of the damage and armor calculations. I've been slowly working on refactoring it to be easy to read.

Additional thoughts:
External enchantments/potion effects aren't a problem, as they are (most reasonably) applied on a LivingAttackEvent, which will boost damage before a LivingHurtEvent fires which is where DDD does all its calculations.

Bauble integration could allow a player to gain additional resistance to a damage type of their choice, or imbue their attacks with a custom damage type of choice. Although I'd have to make baubles for that probably. Chances are, I'll write a small addon mod that adds DDD based baubles. The code base will probably be in DDD itself but the addon mod will have the baubles and additional features related to Bauble integration (think how Quark Oddities is done).

I'll keep this issue open until I set up a community server, in which case I'll close this issue, since discussion channels will duplicate this feature.

commented

I added some more thoughts to my comment, maybe it is useful for you to handle with it.
Because I will be on a vacation for some days, I will not have time to make this done before next week. :/

commented

I'm going to stick with how #24 suggests to handle custom damage. That is, a weapon that inflicts custom damage no longer inflicts physical damage. If custom damage and physical damage were applied, the weapon would be useless basically. One thing I don't want to do is increase the base damage of any weapon. For example, a Wooden Sword should always inflict 4 damage before resistances, regardless if it inflicts custom damage or not. The more damage types a weapon has, the more finely distributed the damage is, and the less effective it is overall. So it's better that Slashing, Piercing and Bludgeoning calculations are always ignored when inflicting custom damage. This also means weapons that inflict custom damage are valuable, as they can bypass physical resistances. The only drawback is they can't take advantage of their physical damage distribution anymore, which means physical weaknesses are also avoided. It's a trade off, and there's no real way to have a de facto 'best' weapon. There might be a physical damage type that performs well in most situations, and there might be a custom damage type that performs well in certain situations, but in no way should there be one weapon that does the job.

So now it's beneficial to carry multiple weapons/tools with you. Custom damage weapons and physical damage weapons. And that's kind of the point of DDD - bring the right weapon to the fight. Don't bring a knife to a gun fight basically. Or in DDD's case, don't bring a Diamond Sword to a Slime fight (with default settings of course ๐Ÿ˜›).

Capping armor resistance at 100% effectiveness might be what I stick with. Again, I don't want to boost item effectiveness with this mod. If a Diamond Chestplate has 8 armor points, then it should only be able to use at most 8 armor points per damage type. Armor distributions don't have to add to 1, unlike damage distributions, so a diamond chestplate can block more damage with this mod installed than without, just keep in mind it takes more durability damage. I'm going to give armor the ability to block custom damage types (while hopefully preserving backwards compatibility, but I might not be able to); this is another reason I'm going for the description #24 gives for custom damage types. Imagine a diamond chestplate with (0.75, 0.75, 0.75) distributions for physical damage (So 6 armor points against every physical damage type). Let's add custom damage resistance to necrotic damage too, and let's say it's 50% effective (so 4 armor points) against necrotic damage. A wooden sword with the default 50% bludgeoning and 50% slashing distribution with necrotic damage means it's inflicting 1 slashing, 1 bludgeoning and 2 necrotic (cut the 4 damage in half, half of it goes to necrotic, other half goes to physical distribution). We have:

1 slashing damage vs 6 armor,
1 bludgeoning damage vs 6 armor,
2 necrotic damage vs 4 armor.

This one piece of armor is going to almost nullify all the damage from the sword (and we haven't even accounted for armor toughness, which makes things look even worse for the sword). We haven't even considered other armor pieces or enchantments either.

I'm debating whether shields and armor must have a physical effectiveness, and may optionally have a custom damage effectiveness or if shields and armor can have either physical effectiveness, custom effectiveness, or both.

Potion effects are interesting. one that makes resistances less effective and one that makes resistances more effective are something worth considering I can open a separate issue for that though.

commented

Feedback:

  1. The mod will be used from modpack makers to make well balanced game play. Don't get me wrong, your intention with the mod is important and the one that's counting. But giving the modpack makers options to make ideas done is a important part. As Game Designer there is a therm for it in the games industry [Players Game >(before) Designers Game]
  2. One thing I don't want to do is increase the base damage of any weapon. For example, a Wooden Sword should always inflict 4 damage before resistances...
    ...(cut the 4 damage in half, half of it goes to necrotic, other half goes to physical distribution)

  • Modpacker Freedom: At the moment, modpack makers are able to add more damage to a weapon when it is effective against the target. This make thinks possible like "holy: makes extra damage against undeath"
  • Creating "Needs" to give a motivation: Or Zombie makes necrotic damage, player has to protect against the extra damage thats added to the attack. This create a need for the player to get Items that defend them against this damage
  • Creating "Needs": In future there is also the "Bauble" Integration that can add resistant mechanics and create a "need" for them
  • Player Feedback: Players can work better with informations that are absolute "Tooltip on Item: Smite: Adds 4 damage of holy damage" (100% Holy Damage to Wooden Sword)
  • Mechanic Suggestion: So creating an option if a damage type can be inflicted directly or will added as a new component to the s,p,b system is important and lead to more creative freedom for the modpack makers

(At the moment, I using this mod exactly for adding extra damage types to create differed regions / DIM that need other equipment - without erasing the base use of normal s,p,b damage - Extra: But I search for an option to reduce the damage of normal weapons without reducing the extra damage added to them by custom damage.

Some Practical Uses:

  • Ghost: 0.1,0.1,0.1 - holy 1
    Immune to physical damage - but get full holy damage from holy weapons)
  • Fire Sword: 1,0,0 - fire 0.2 (or elemental swords any kind)
    A Sword that adds fire damage after enchanting it with blaze powder and thaumcraft ignis crystals / essentia
    Will make a big list of mobs that can be damaged by this extra damage
  • Daemon: 0.2,0.2,0.2 - cold 1, magic 0.5 | Attacking: 0.9,0.1,0.0 - fire 2
    A Mob that has a high resistance against physical damage, but low on cold and get damaged by magical weapons (In Baldus Gate its like the "+1" on the items)
    It does slashing damage mainly and adds huge fire damage to his target
    The player will use early a magical damage until he unlock the cold enchantment and can go deeper into the dimension. Also He will need to enchant his armor against fire damage to survive
  • Future Talking: Dragon X X X | Attack: X, X, X - Dragon Fire 2
    The Player must protect himself from this attack by using a "Tower Shield" from Spartan Weaponry that blocks 95% of the damage
    Meanwhile the other players poke the dragon down with "Ballista" placed around the boss)

Hopefully I can give you an inside of how I use this mod for my modpack.
Lastly its the question how will modpack makers use this mod to create a nice immerse gameplay.

commented

Keep in mind the best forms of creativity is usually born from a set of restrictions in place. I'm going to keep the description as outlined in #24, because at some point, I have to nail down some fundamentals of "how DDD works". While freedom and creativity is nice, there has to be some basic set of fundamentals that players can rely on to always be true. The system #24 suggests is still a pretty dynamic system, and doesn't require too much complicated implementation.

commented

Well, the Discord server is up, so this issue is no longer needed.