Fix acrobatics (#5088)

This commit is contained in:
Ineusia 2024-09-19 21:39:56 -04:00 committed by GitHub
parent 2fd86e870f
commit 1c08cac2f8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -76,7 +76,12 @@ public class Roll extends AcrobaticsSubSkill {
// no-op - fall was fatal or otherwise did not get processed // no-op - fall was fatal or otherwise did not get processed
return false; return false;
} }
entityDamageEvent.setDamage(rollResult.getModifiedDamage());
// Clear out the damage from falling so that way our modified damage doesn't get re-reduced by protection/feather falling
entityDamageEvent.setDamage(0);
// Send the damage is MAGIC so that it cuts through all resistances
// This is fine because we considered protection/featherfalling in the rollCheck method
entityDamageEvent.setDamage(EntityDamageEvent.DamageModifier.MAGIC, rollResult.getModifiedDamage());
if (entityDamageEvent.getFinalDamage() == 0) { if (entityDamageEvent.getFinalDamage() == 0) {
entityDamageEvent.setCancelled(true); entityDamageEvent.setCancelled(true);
@ -216,7 +221,7 @@ public class Roll extends AcrobaticsSubSkill {
*/ */
@VisibleForTesting @VisibleForTesting
public RollResult rollCheck(McMMOPlayer mmoPlayer, EntityDamageEvent entityDamageEvent) { public RollResult rollCheck(McMMOPlayer mmoPlayer, EntityDamageEvent entityDamageEvent) {
double baseDamage = entityDamageEvent.getDamage(); double baseDamage = entityDamageEvent.getFinalDamage();
final boolean isGraceful = mmoPlayer.getPlayer().isSneaking(); final boolean isGraceful = mmoPlayer.getPlayer().isSneaking();
final RollResult.Builder rollResultBuilder final RollResult.Builder rollResultBuilder
= new RollResult.Builder(entityDamageEvent, isGraceful); = new RollResult.Builder(entityDamageEvent, isGraceful);