From c76e6f0778f4843e0de55b5878decca00bfeb0ce Mon Sep 17 00:00:00 2001 From: Noe Caratini <caratinin@gmail.com> Date: Fri, 29 Apr 2022 19:09:49 +0100 Subject: [PATCH] fix(effect): Fixed HP/MP/CP not updating when receiving a MaxHp/MaxMP/MaxCp effect The MaxHp/MaxMp/MaxCp effect are calling L2Character#addStatFunc which does not broadcast a status update packet. Changed the call to L2Character#addStatFuncs which does handle broadcast. --- .../datapack/handlers/effecthandlers/pump/MaxCp.java | 10 ++++------ .../datapack/handlers/effecthandlers/pump/MaxHp.java | 11 ++++------- .../datapack/handlers/effecthandlers/pump/MaxMp.java | 10 ++++------ 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/pump/MaxCp.java b/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/pump/MaxCp.java index bb6a5f228f..a57ce4a71f 100644 --- a/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/pump/MaxCp.java +++ b/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/pump/MaxCp.java @@ -68,21 +68,19 @@ public final class MaxCp extends AbstractEffect { synchronized (charStat) { switch (_type) { - case DIFF: { - charStat.getActiveChar().addStatFunc(new FuncAdd(Stats.MAX_CP, 1, this, _power, null)); + case DIFF -> { + charStat.getActiveChar().addStatFuncs(new FuncAdd(Stats.MAX_CP, 1, this, _power, null)); if (_heal) { effected.setCurrentCp((currentCp + _power)); } - break; } - case PER: { + case PER -> { final double maxCp = effected.getMaxCp(); - charStat.getActiveChar().addStatFunc(new FuncMul(Stats.MAX_CP, 1, this, _power, null)); + charStat.getActiveChar().addStatFuncs(new FuncMul(Stats.MAX_CP, 1, this, _power, null)); if (_heal) { amount = (_power - 1) * maxCp; effected.setCurrentCp(currentCp + amount); } - break; } } } diff --git a/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/pump/MaxHp.java b/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/pump/MaxHp.java index e6e050cc19..4b325a87cf 100644 --- a/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/pump/MaxHp.java +++ b/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/pump/MaxHp.java @@ -68,22 +68,19 @@ public final class MaxHp extends AbstractEffect { synchronized (charStat) { switch (_type) { - case DIFF: { - - charStat.getActiveChar().addStatFunc(new FuncAdd(Stats.MAX_HP, 1, this, _power, null)); + case DIFF -> { + charStat.getActiveChar().addStatFuncs(new FuncAdd(Stats.MAX_HP, 1, this, _power, null)); if (_heal) { effected.setCurrentHp((currentHp + _power)); } - break; } - case PER: { + case PER -> { final double maxHp = effected.getMaxHp(); - charStat.getActiveChar().addStatFunc(new FuncMul(Stats.MAX_HP, 1, this, _power, null)); + charStat.getActiveChar().addStatFuncs(new FuncMul(Stats.MAX_HP, 1, this, _power, null)); if (_heal) { amount = (_power - 1) * maxHp; effected.setCurrentHp(currentHp + amount); } - break; } } } diff --git a/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/pump/MaxMp.java b/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/pump/MaxMp.java index 4b4bd0756b..fa02b091c3 100644 --- a/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/pump/MaxMp.java +++ b/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/pump/MaxMp.java @@ -70,21 +70,19 @@ public final class MaxMp extends AbstractEffect { synchronized (charStat) { switch (_type) { - case DIFF: { - charStat.getActiveChar().addStatFunc(new FuncAdd(Stats.MAX_MP, 1, this, _power, null)); + case DIFF -> { + charStat.getActiveChar().addStatFuncs(new FuncAdd(Stats.MAX_MP, 1, this, _power, null)); if (_heal) { effected.setCurrentMp((currentMp + _power)); } - break; } - case PER: { + case PER -> { final double maxMp = effected.getMaxMp(); - charStat.getActiveChar().addStatFunc(new FuncMul(Stats.MAX_MP, 1, this, _power, null)); + charStat.getActiveChar().addStatFuncs(new FuncMul(Stats.MAX_MP, 1, this, _power, null)); if (_heal) { amount = (_power - 1) * maxMp; effected.setCurrentMp(currentMp + amount); } - break; } } } -- GitLab