Skip to content

Commit a83d198

Browse files
committed
Make sure divinity damages done via Fabled actually get scaled properly
1 parent 30d1b9c commit a83d198

File tree

3 files changed

+36
-1
lines changed

3 files changed

+36
-1
lines changed

src/main/java/studio/magemonkey/divinity/api/event/DivinityDamageEvent.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,27 @@ public Start(
217217
}
218218
}
219219

220+
public static class BeforeScale extends DivinityDamageEvent {
221+
222+
public BeforeScale(
223+
@NotNull LivingEntity zertva,
224+
@Nullable LivingEntity damager,
225+
@Nullable Projectile projectile,
226+
@NotNull Map<DamageAttribute, Double> damageMap,
227+
@NotNull Map<DefenseAttribute, Double> defenseMap,
228+
@NotNull Map<SimpleStat.Type, Double> statsMap,
229+
@NotNull EntityDamageEvent eventOrig,
230+
@NotNull DamageMeta meta,
231+
boolean exempt
232+
) {
233+
super(zertva, damager, projectile, eventOrig, meta);
234+
this.damageMap = damageMap;
235+
this.defenseMap = defenseMap;
236+
this.damagerItemStatsMap = statsMap;
237+
this.exempt = exempt;
238+
}
239+
}
240+
220241
/**
221242
* Called at the start of Damage Event, before damage calculations.
222243
* This is the second QuantumDamageEvent instance.

src/main/java/studio/magemonkey/divinity/manager/damage/DamageManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,7 @@ public boolean dealDamage(@NotNull LivingEntity entity,
550550
final boolean[] success = {false};
551551
Listener listener = new Listener() {
552552
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
553-
public void onDamage(DivinityDamageEvent.Start event) {
553+
public void onDamage(DivinityDamageEvent.BeforeScale event) {
554554
if (event.getOriginalEvent().getEntity() != entity) return;
555555
Map<DamageAttribute, Double> damageMap = event.getDamageMap();
556556
damageMap.clear();

src/main/java/studio/magemonkey/divinity/manager/listener/object/VanillaWrapperListener.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,20 @@ public void onVanillaDamage(EntityDamageEvent e) {
338338
.forEach((dmgAtt) -> damages.compute(dmgAtt,
339339
(dmgKey, dmgVal) -> (dmgVal != null ? dmgVal : 0) + damageStart2));
340340

341+
DivinityDamageEvent.BeforeScale beforeScale = new DivinityDamageEvent.BeforeScale(victim,
342+
damager,
343+
projectile,
344+
damages,
345+
defenses,
346+
stats,
347+
e,
348+
meta,
349+
skillShouldIgnore);
350+
plugin.getPluginManager().callEvent(beforeScale);
351+
if (beforeScale.isCancelled()) {
352+
return;
353+
}
354+
341355
scaleValuesWithCore(damager, projectile, damages, defenses, victim);
342356

343357
DivinityDamageEvent.Start eventStart = new DivinityDamageEvent.Start(victim,

0 commit comments

Comments
 (0)