Botania (Fabric/Quilt)

Botania (Fabric/Quilt)

5M Downloads

Gaia Guardian's damage ceiling bypassed by Clarent sword from Mahou Tsukai

TsumiYaku opened this issue ยท 2 comments

commented

Version Information

Forge version: 36.1.25
Botania version: Botania-1.16.5-416

Further Information

Steps to reproduce:

  1. Obtain the Clarent sword from Mahou Tsukai through the mod's procedure. This sword has the ability to block damage received and store it so you can unleash it on the next attack
  2. Start the Gaia Guardian fight as usual and block the attacks from the Guardian (both purple puddles and pixies' lasers will do the trick) until the Clarent is charged to at least 320 (Guardian's max HP, may actually need a bit more than 320 though). The damage accumulation of Clarent can be done even before starting the battle through any other mean
  3. Attack the Guardian once with the charged Clarent

What I expected to happen:
The Guardian receives only part of the damage (up to the damage ceiling) and doesn't get one-shotted, like any other sword from other mods with huge damage

What happened instead:
The Guardian dies instantly with one swing of the sword, skipping the summoning phase as well.
Here a short clip with a full fight using the Clarent (I sped up the middle boring part a little): https://www.youtube.com/watch?v=e58ZkSDEGg8

commented

We can't prevent other mods from doing broken unbalanced things like setting health directly, so this isn't a Botania issue.

Of course, we could always get in an arms race of trying to outsmart each other's shields/attacks, but I don't really care.

Furthermore, Mahou Tsukai is closed source, so I can't investigate this even if I wanted to.

commented

@williewillus Changing the damage via LivingHurtEvent is a fairly normal thing isn't it? That's all I'm doing with this sword. It seems like Botania's Gaia Guardian damage cap would be incompatible with any mod changing damage via LivingHurtEvent which is an API provided by Forge and defaults to allowing mods to change the damage in it, so it seems like if you wanted to implement a damage cap, you would do so after this event has been called and not before.

To be clear, this event is fired in the super call of attackEntityFrom(), which you're calling after you apply the damage cap in https://github.com/Vazkii/Botania/blob/master/src/main/java/vazkii/botania/common/entity/EntityDoppleganger.java, meaning that any damage applied in events (both LivingAttackEvent and LivingHurtEvent) would bypass the damage cap you apply.