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