From cbac8b47ca2be1d5569ae7d554f15042e5af821a Mon Sep 17 00:00:00 2001 From: Zoey76 <zoey_76@msn.com> Date: Tue, 21 Jan 2014 03:17:34 +0000 Subject: [PATCH] BETA: HP/MP Heal effect fixes. * HP Heal shouldn't heal through invulnerability state. * Reported by: Tavo22 * MP Heal shouldn't heal through invulnerability state. * Using proper effect `ManaHealByLevel` for Sweeper (42) second enchant route. * Removing custom/duplicated `MpByLevel` effect. --- .../scripts/handlers/EffectMasterHandler.java | 1 - .../scripts/handlers/effecthandlers/Heal.java | 2 +- .../handlers/effecthandlers/ManaHeal.java | 2 +- .../effecthandlers/ManaHealByLevel.java | 8 +-- .../handlers/effecthandlers/MpByLevel.java | 70 ------------------- .../game/data/stats/skills/00000-00099.xml | 2 +- 6 files changed, 5 insertions(+), 80 deletions(-) delete mode 100644 L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/MpByLevel.java diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/EffectMasterHandler.java index b1c86eda7e..05d5790889 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/EffectMasterHandler.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/EffectMasterHandler.java @@ -117,7 +117,6 @@ public final class EffectMasterHandler ManaHealByLevel.class, ManaHealOverTime.class, ManaHealPercent.class, - MpByLevel.class, MpConsumePerLevel.class, Mute.class, NoblesseBless.class, diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Heal.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Heal.java index 27b7792182..d7d657deaa 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Heal.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Heal.java @@ -60,7 +60,7 @@ public final class Heal extends AbstractEffect { L2Character target = info.getEffected(); L2Character activeChar = info.getEffector(); - if ((target == null) || target.isDead() || target.isDoor()) + if ((target == null) || target.isDead() || target.isDoor() || target.isInvul()) { return; } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHeal.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHeal.java index 308782d79a..397e5dd7f0 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHeal.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHeal.java @@ -55,7 +55,7 @@ public final class ManaHeal extends AbstractEffect public void onStart(BuffInfo info) { L2Character target = info.getEffected(); - if ((target == null) || target.isDead() || target.isDoor()) + if ((target == null) || target.isDead() || target.isDoor() || target.isInvul()) { return; } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHealByLevel.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHealByLevel.java index 03f24c31b9..af53abac8f 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHealByLevel.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHealByLevel.java @@ -117,16 +117,12 @@ public final class ManaHealByLevel extends AbstractEffect { target.setCurrentMp(amount + target.getCurrentMp()); } - SystemMessage sm; + + final SystemMessage sm = SystemMessage.getSystemMessage(info.getEffector().getObjectId() != target.getObjectId() ? SystemMessageId.S2_MP_RESTORED_BY_C1 : SystemMessageId.S1_MP_RESTORED); if (info.getEffector().getObjectId() != target.getObjectId()) { - sm = SystemMessage.getSystemMessage(SystemMessageId.S2_MP_RESTORED_BY_C1); sm.addCharName(info.getEffector()); } - else - { - sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MP_RESTORED); - } sm.addNumber((int) amount); target.sendPacket(sm); } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/MpByLevel.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/MpByLevel.java deleted file mode 100644 index da25320fa6..0000000000 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/MpByLevel.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2004-2013 L2J DataPack - * - * This file is part of L2J DataPack. - * - * L2J DataPack is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * L2J DataPack is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package handlers.effecthandlers; - -import com.l2jserver.gameserver.model.StatsSet; -import com.l2jserver.gameserver.model.conditions.Condition; -import com.l2jserver.gameserver.model.effects.AbstractEffect; -import com.l2jserver.gameserver.model.effects.L2EffectType; -import com.l2jserver.gameserver.model.skills.BuffInfo; -import com.l2jserver.gameserver.network.SystemMessageId; -import com.l2jserver.gameserver.network.serverpackets.SystemMessage; - -/** - * Mp By Level effect implementation. - * @author Zoey76 - */ -public final class MpByLevel extends AbstractEffect -{ - public MpByLevel(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params) - { - super(attachCond, applyCond, set, params); - } - - @Override - public L2EffectType getEffectType() - { - return L2EffectType.BUFF; - } - - @Override - public boolean isInstant() - { - return true; - } - - @Override - public void onStart(BuffInfo info) - { - if ((info.getEffector() == null) || (info.getEffected() == null)) - { - return; - } - - // Calculation - final int abs = (int) getValue(); - final double absorb = ((info.getEffected().getCurrentMp() + abs) > info.getEffected().getMaxMp() ? info.getEffected().getMaxMp() : (info.getEffected().getCurrentMp() + abs)); - final int restored = (int) (absorb - info.getEffected().getCurrentMp()); - info.getEffected().setCurrentMp(absorb); - // System message - final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MP_RESTORED); - sm.addNumber(restored); - info.getEffected().sendPacket(sm); - } -} diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/00000-00099.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/00000-00099.xml index 443543bc80..a4e698fd25 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/00000-00099.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/00000-00099.xml @@ -1273,7 +1273,7 @@ </enchant1for> <enchant1for> <effect name="Sweeper" /> - <effect name="MpByLevel" val="#ench2DrainMp" /> + <effect name="ManaHealByLevel" val="#ench2DrainMp" /> <effect name="ConsumeBody" /> </enchant1for> </skill> -- GitLab