From b291b80284465e088c89a78f633898a3714231fa Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Fri, 18 Feb 2022 10:40:19 +0000 Subject: [PATCH] Support for StatAddForStat PER mode. --- .../handlers/effecthandlers/StatAddForStat.java | 12 +++++++++++- .../handlers/effecthandlers/StatAddForStat.java | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/StatAddForStat.java b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/StatAddForStat.java index 728d8cfa53..49f8bddc68 100644 --- a/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/StatAddForStat.java +++ b/L2J_Mobius_10.0_MasterClass/dist/game/data/scripts/handlers/effecthandlers/StatAddForStat.java @@ -16,6 +16,7 @@ */ package handlers.effecthandlers; +import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.effects.AbstractEffect; @@ -31,6 +32,7 @@ public class StatAddForStat extends AbstractEffect private final int _min; private final int _max; private final double _amount; + private final StatModifierType _mode; public StatAddForStat(StatSet params) { @@ -38,6 +40,7 @@ public class StatAddForStat extends AbstractEffect _min = params.getInt("min", 0); _max = params.getInt("max", 0); _amount = params.getDouble("amount", 0); + _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); } @Override @@ -46,7 +49,14 @@ public class StatAddForStat extends AbstractEffect final int currentValue = (int) effected.getStat().getValue(_stat); if ((currentValue >= _min) && (currentValue <= _max)) { - effected.getStat().mergeAdd(_stat, _amount); + if (_mode == StatModifierType.DIFF) + { + effected.getStat().mergeAdd(_stat, _amount); + } + else // Add PER difference. + { + effected.getStat().mergeAdd(_stat, (currentValue * ((_amount / 100) + 1)) - currentValue); + } } } } diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/StatAddForStat.java b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/StatAddForStat.java index 728d8cfa53..49f8bddc68 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/StatAddForStat.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/StatAddForStat.java @@ -16,6 +16,7 @@ */ package handlers.effecthandlers; +import org.l2jmobius.gameserver.enums.StatModifierType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.effects.AbstractEffect; @@ -31,6 +32,7 @@ public class StatAddForStat extends AbstractEffect private final int _min; private final int _max; private final double _amount; + private final StatModifierType _mode; public StatAddForStat(StatSet params) { @@ -38,6 +40,7 @@ public class StatAddForStat extends AbstractEffect _min = params.getInt("min", 0); _max = params.getInt("max", 0); _amount = params.getDouble("amount", 0); + _mode = params.getEnum("mode", StatModifierType.class, StatModifierType.DIFF); } @Override @@ -46,7 +49,14 @@ public class StatAddForStat extends AbstractEffect final int currentValue = (int) effected.getStat().getValue(_stat); if ((currentValue >= _min) && (currentValue <= _max)) { - effected.getStat().mergeAdd(_stat, _amount); + if (_mode == StatModifierType.DIFF) + { + effected.getStat().mergeAdd(_stat, _amount); + } + else // Add PER difference. + { + effected.getStat().mergeAdd(_stat, (currentValue * ((_amount / 100) + 1)) - currentValue); + } } } }