diff --git a/dist/game/data/scripts/handlers/EffectMasterHandler.java b/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 3bbd46cb87bbcdc8cc29af2cd982784db96b9af2..f960541c39c59cbe4c13cdf49b229b3a5f832e13 100644
--- a/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -115,12 +115,12 @@ public final class EffectMasterHandler
 		MagicalAttackMp.class,
 		MagicalSoulAttack.class,
 		ManaDamOverTime.class,
-		ManaHeal.class,
 		ManaHealByLevel.class,
 		ManaHealOverTime.class,
 		ManaHealPercent.class,
 		MaxCp.class,
 		MaxHp.class,
+		Mp.class,
 		MpConsumePerLevel.class,
 		Mute.class,
 		NoblesseBless.class,
diff --git a/dist/game/data/scripts/handlers/effecthandlers/Hp.java b/dist/game/data/scripts/handlers/effecthandlers/Hp.java
index beeddf008444db961aa126106535e9636a35c4a0..4483636604df35a3e46f3b2692e074ea0e998734 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/Hp.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/Hp.java
@@ -63,7 +63,7 @@ public final class Hp extends AbstractEffect
 	{
 		final L2Character target = info.getEffected();
 		final L2Character activeChar = info.getEffector();
-		if ((target == null) || target.isDead() || target.isDoor() || target.isInvul())
+		if ((target == null) || target.isDead() || target.isDoor() || target.isInvul() || target.isHpBlocked())
 		{
 			return;
 		}
diff --git a/dist/game/data/scripts/handlers/effecthandlers/ManaHeal.java b/dist/game/data/scripts/handlers/effecthandlers/ManaHeal.java
deleted file mode 100644
index 62edd0db0c8484f270c9d3b0fdd36a3c18c3cc33..0000000000000000000000000000000000000000
--- a/dist/game/data/scripts/handlers/effecthandlers/ManaHeal.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2004-2018 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.actor.L2Character;
-import com.l2jserver.gameserver.model.conditions.Condition;
-import com.l2jserver.gameserver.model.effects.AbstractEffect;
-import com.l2jserver.gameserver.model.skills.BuffInfo;
-import com.l2jserver.gameserver.model.stats.Stats;
-import com.l2jserver.gameserver.network.SystemMessageId;
-import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
-
-/**
- * Mana Heal effect implementation.
- * @author UnAfraid
- */
-public final class ManaHeal extends AbstractEffect
-{
-	private final double _power;
-	
-	public ManaHeal(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
-	{
-		super(attachCond, applyCond, set, params);
-		
-		_power = params.getDouble("power", 0);
-	}
-	
-	@Override
-	public boolean isInstant()
-	{
-		return true;
-	}
-	
-	@Override
-	public void onStart(BuffInfo info)
-	{
-		L2Character target = info.getEffected();
-		if ((target == null) || target.isDead() || target.isDoor() || target.isInvul() || target.isMpBlocked())
-		{
-			return;
-		}
-		
-		double amount = _power;
-		
-		if (!info.getSkill().isStatic())
-		{
-			amount = target.calcStat(Stats.MANA_CHARGE, amount, null, null);
-		}
-		
-		// Prevents overheal and negative amount
-		amount = Math.max(Math.min(amount, target.getMaxRecoverableMp() - target.getCurrentMp()), 0);
-		if (amount != 0)
-		{
-			target.setCurrentMp(amount + target.getCurrentMp());
-		}
-		SystemMessage sm;
-		if (info.getEffector().getObjectId() != target.getObjectId())
-		{
-			sm = SystemMessage.getSystemMessage(SystemMessageId.S2_MP_HAS_BEEN_RESTORED_BY_C1);
-			sm.addCharName(info.getEffector());
-		}
-		else
-		{
-			sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MP_HAS_BEEN_RESTORED);
-		}
-		sm.addInt((int) amount);
-		target.sendPacket(sm);
-	}
-}
diff --git a/dist/game/data/scripts/handlers/effecthandlers/ManaHealByLevel.java b/dist/game/data/scripts/handlers/effecthandlers/ManaHealByLevel.java
index e04a9153bfaf0e8b262737a62ec355eb44193901..6b9bc5e079127f6f8b8bcc6378a800963e75f7fc 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/ManaHealByLevel.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/ManaHealByLevel.java
@@ -122,7 +122,7 @@ public final class ManaHealByLevel extends AbstractEffect
 			target.setCurrentMp(amount + target.getCurrentMp());
 		}
 		
-		final SystemMessage sm = SystemMessage.getSystemMessage(info.getEffector().getObjectId() != target.getObjectId() ? SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1 : SystemMessageId.S1_MP_HAS_BEEN_RESTORED);
+		final SystemMessage sm = SystemMessage.getSystemMessage(info.getEffector().getObjectId() != target.getObjectId() ? SystemMessageId.S2_MP_HAS_BEEN_RESTORED_BY_C1 : SystemMessageId.S1_MP_HAS_BEEN_RESTORED);
 		if (info.getEffector().getObjectId() != target.getObjectId())
 		{
 			sm.addCharName(info.getEffector());
diff --git a/dist/game/data/scripts/handlers/effecthandlers/ManaHealPercent.java b/dist/game/data/scripts/handlers/effecthandlers/ManaHealPercent.java
index f686c1c546ff147a3ae7c00f0a24fe918dd7ee07..bdd0f0b022efa7fff95acfe54d5ee388220f21a4 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/ManaHealPercent.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/ManaHealPercent.java
@@ -77,7 +77,7 @@ public final class ManaHealPercent extends AbstractEffect
 		SystemMessage sm;
 		if (info.getEffector().getObjectId() != target.getObjectId())
 		{
-			sm = SystemMessage.getSystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
+			sm = SystemMessage.getSystemMessage(SystemMessageId.S2_MP_HAS_BEEN_RESTORED_BY_C1);
 			sm.addCharName(info.getEffector());
 		}
 		else
diff --git a/dist/game/data/scripts/handlers/effecthandlers/Mp.java b/dist/game/data/scripts/handlers/effecthandlers/Mp.java
new file mode 100644
index 0000000000000000000000000000000000000000..eeee8be88132f387ba562aafcecb8a166d4ae9bb
--- /dev/null
+++ b/dist/game/data/scripts/handlers/effecthandlers/Mp.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2004-2018 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.enums.EffectCalculationType;
+import com.l2jserver.gameserver.model.StatsSet;
+import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.conditions.Condition;
+import com.l2jserver.gameserver.model.effects.AbstractEffect;
+import com.l2jserver.gameserver.model.skills.BuffInfo;
+import com.l2jserver.gameserver.model.skills.Skill;
+import com.l2jserver.gameserver.model.stats.Stats;
+import com.l2jserver.gameserver.network.SystemMessageId;
+import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
+
+/**
+ * Mp effect implementation.
+ * @author Adry_85
+ * @since 2.6.0.0
+ */
+public final class Mp extends AbstractEffect
+{
+	private final double _amount;
+	private final EffectCalculationType _mode;
+	
+	public Mp(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
+	{
+		super(attachCond, applyCond, set, params);
+		
+		_amount = params.getDouble("amount", 0);
+		_mode = params.getEnum("mode", EffectCalculationType.class, EffectCalculationType.DIFF);
+	}
+	
+	@Override
+	public boolean isInstant()
+	{
+		return true;
+	}
+	
+	@Override
+	public void onStart(BuffInfo info)
+	{
+		final L2Character target = info.getEffected();
+		final L2Character activeChar = info.getEffector();
+		if ((target == null) || target.isDead() || target.isDoor() || target.isInvul() || target.isMpBlocked())
+		{
+			return;
+		}
+		
+		double amount = 0;
+		switch (_mode)
+		{
+			case DIFF:
+			{
+				if (_amount < 0)
+				{
+					amount = _amount;
+				}
+				else
+				{
+					final Skill skill = info.getSkill();
+					if (!skill.isStatic())
+					{
+						amount = target.calcStat(Stats.MANA_CHARGE, _amount, null, null);
+					}
+					
+					amount = Math.min(skill.isStatic() ? _amount : amount, target.getMaxRecoverableMp() - target.getCurrentMp());
+				}
+				break;
+			}
+			case PER:
+			{
+				if (_amount < 0)
+				{
+					amount = (target.getCurrentMp() * _amount) / 100;
+				}
+				else
+				{
+					amount = Math.min((target.getMaxMp() * _amount) / 100.0, target.getMaxRecoverableMp() - target.getCurrentMp());
+				}
+				break;
+			}
+		}
+		
+		if (amount >= 0)
+		{
+			if (amount != 0)
+			{
+				target.setCurrentMp(amount + target.getCurrentMp());
+			}
+			
+			SystemMessage sm;
+			if ((activeChar != null) && (activeChar != target))
+			{
+				sm = SystemMessage.getSystemMessage(SystemMessageId.S2_MP_HAS_BEEN_RESTORED_BY_C1);
+				sm.addCharName(info.getEffector());
+				sm.addInt((int) amount);
+				target.sendPacket(sm);
+			}
+			else
+			{
+				target.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_MP_HAS_BEEN_RESTORED).addInt((int) amount));
+			}
+		}
+		else
+		{
+			target.reduceCurrentMp(Math.abs(amount));
+		}
+	}
+}
diff --git a/dist/game/data/stats/skills/00400-00499.xml b/dist/game/data/stats/skills/00400-00499.xml
index 17ac3d4e73e6344801abc34c41763fadd02a8fa0..8ee3054460d019a1486872e9ba0e379e71dc750f 100644
--- a/dist/game/data/stats/skills/00400-00499.xml
+++ b/dist/game/data/stats/skills/00400-00499.xml
@@ -954,13 +954,15 @@
 		<set name="rideState" val="NONE" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="ManaHeal">
-				<param power="#amount" />
+			<effect name="Mp">
+				<param amount="#amount" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 		<enchant1Effects>
-			<effect name="ManaHeal">
-				<param power="#ench1amount" />
+			<effect name="Mp">
+				<param amount="#ench1amount" />
+				<param mode="DIFF" />
 			</effect>
 		</enchant1Effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/00700-00799.xml b/dist/game/data/stats/skills/00700-00799.xml
index c7d63baa2bf8749bd46a3cdd3bd1ab7f145d004d..455eb6e902aeb088564bf567fb1df5fd34c352c6 100644
--- a/dist/game/data/stats/skills/00700-00799.xml
+++ b/dist/game/data/stats/skills/00700-00799.xml
@@ -434,6 +434,7 @@
 	</skill>
 	<skill id="715" levels="4" name="Zaken Energy Drain">
 		<!-- Confirmed CT2.5 -->
+		<table name="#amount"> -274 -348 -422 -496 </table>
 		<table name="#effectPoints"> -307 -323 -335 -342 </table>
 		<table name="#magicLvl"> 65 70 75 80 </table>
 		<table name="#mpConsume2"> 60 65 69 72 </table>
@@ -459,6 +460,10 @@
 				<param power="#power" />
 				<param drain="0.4" />
 			</effect>
+			<effect name="Mp">
+				<param amount="#amount" />
+				<param mode="DIFF" />
+ 			</effect>
 		</effects>
 	</skill>
 	<skill id="716" levels="4" name="Zaken Hold">
diff --git a/dist/game/data/stats/skills/01100-01199.xml b/dist/game/data/stats/skills/01100-01199.xml
index b55f86aa00e9bbc542dd951b8f6bd08ad9462eea..3927947868f13037f2a1137fbd32add77fa4c486 100644
--- a/dist/game/data/stats/skills/01100-01199.xml
+++ b/dist/game/data/stats/skills/01100-01199.xml
@@ -913,13 +913,15 @@
 		<set name="targetType" val="SELF" />
 		<enchant2 name="hpConsume" val="#ench2hpConsume" />
 		<effects>
-			<effect name="ManaHeal">
-				<param power="#amount" />
+			<effect name="Mp">
+				<param amount="#amount" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 		<enchant1Effects>
-			<effect name="ManaHeal">
-				<param power="#ench1amount" />
+			<effect name="Mp">
+				<param amount="#ench1amount" />
+				<param mode="DIFF" />
 			</effect>
 		</enchant1Effects>
 		<enchant3Effects>
@@ -927,8 +929,9 @@
 				<param amount="#ench3Bravery" />
 				<param mode="DIFF" />
 			</effect>
-			<effect name="ManaHeal">
-				<param power="61" />
+			<effect name="Mp">
+				<param amount="61" />
+				<param mode="DIFF" />
 			</effect>
 		</enchant3Effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/01500-01599.xml b/dist/game/data/stats/skills/01500-01599.xml
index 4e7b976b473dae67940f6dc864cdeba8f79fea08..4922b9ab5d7fcf0f6c3bd2300e578b1d738ee6f0 100644
--- a/dist/game/data/stats/skills/01500-01599.xml
+++ b/dist/game/data/stats/skills/01500-01599.xml
@@ -1846,8 +1846,9 @@
 			</effect>
 		</pveEffects>
 		<selfEffects>
-			<effect name="ManaHeal">
-				<param power="29" />
+			<effect name="Mp">
+				<param amount="29" />
+				<param mode="DIFF" />
 			</effect>
 		</selfEffects>
 	</skill>
@@ -1877,8 +1878,9 @@
 			</effect>
 		</pveEffects>
 		<selfEffects>
-			<effect name="ManaHeal">
-				<param power="25" />
+			<effect name="Mp">
+				<param amount="25" />
+				<param mode="DIFF" />
 			</effect>
 		</selfEffects>
 	</skill>
diff --git a/dist/game/data/stats/skills/02200-02299.xml b/dist/game/data/stats/skills/02200-02299.xml
index de1586187b51d583915377d9726df4a69a2d2e49..2f6a35fd16f93a94c795945ed62d351ef72fd14e 100644
--- a/dist/game/data/stats/skills/02200-02299.xml
+++ b/dist/game/data/stats/skills/02200-02299.xml
@@ -1019,8 +1019,9 @@
 			<player flyMounted="false" />
 		</cond>
 		<effects>
-			<effect name="ManaHeal">
-				<param power="20" />
+			<effect name="Mp">
+				<param amount="20" />
+				<param mode="DIFF" />
 			</effect>
 			<effect name="ManaHealPercent">
 				<param power="4" />
@@ -1948,8 +1949,9 @@
 			<player levelRange="#levelRange" />
 		</cond>
 		<effects>
-			<effect name="ManaHeal">
-				<param power="#amount" />
+			<effect name="Mp">
+				<param amount="#amount" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/02400-02499.xml b/dist/game/data/stats/skills/02400-02499.xml
index 992ed42cf75a59b26bde4729efdd9ed5f714953c..93f15a2895908984497391827004caf281fb4c93 100644
--- a/dist/game/data/stats/skills/02400-02499.xml
+++ b/dist/game/data/stats/skills/02400-02499.xml
@@ -34,8 +34,9 @@
 			<player level="52" />
 		</cond>
 		<effects>
-			<effect name="ManaHeal">
-				<param power="360" />
+			<effect name="Mp">
+				<param amount="360" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/02800-02899.xml b/dist/game/data/stats/skills/02800-02899.xml
index 894657d2cae5bac92beba3d558adfbe7395baf7f..ce7b76d6ed7bd347c1f5bf0ea2acb85e382473f0 100644
--- a/dist/game/data/stats/skills/02800-02899.xml
+++ b/dist/game/data/stats/skills/02800-02899.xml
@@ -1440,8 +1440,9 @@
 			<player levelRange="#levelRange" />
 		</cond>
 		<effects>
-			<effect name="ManaHeal">
-				<param power="#amount" />
+			<effect name="Mp">
+				<param amount="#amount" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/02900-02999.xml b/dist/game/data/stats/skills/02900-02999.xml
index fc3e38f843395bd59b99817de42f5490fda88d95..47642a0e6eebb2bd2de57f0c3ddb191b5a913eed 100644
--- a/dist/game/data/stats/skills/02900-02999.xml
+++ b/dist/game/data/stats/skills/02900-02999.xml
@@ -159,8 +159,9 @@
 			<player levelRange="61;75" />
 		</cond>
 		<effects>
-			<effect name="ManaHeal">
-				<param power="360" />
+			<effect name="Mp">
+				<param amount="360" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/04000-04099.xml b/dist/game/data/stats/skills/04000-04099.xml
index 8a039f6b7bc3ef26c0bf373b28351412024240c9..1fd3097da4c7a6683d1065db8e335c8037e4b883 100644
--- a/dist/game/data/stats/skills/04000-04099.xml
+++ b/dist/game/data/stats/skills/04000-04099.xml
@@ -688,9 +688,9 @@
 	</skill>
 	<skill id="4039" levels="12" name="NPC MP Drain">
 		<!-- Freya retail confirmed -->
+		<table name="#amount"> -34 -57 -78 -105 -134 -165 -194 -206 -216 -224 -229 -232 </table>
 		<table name="#magicLvl"> 10 20 30 40 50 60 70 75 80 85 90 95 </table>
 		<table name="#mpConsume2"> 13 20 27 35 45 55 65 69 73 75 77 78 </table>
-		<table name="#power"> 34 57 78 105 134 165 194 206 216 224 229 232 </table>
 		<set name="affectScope" val="SINGLE" />
 		<set name="castRange" val="600" />
 		<set name="effectPoint" val="-100" />
@@ -704,9 +704,10 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="ENEMY_ONLY" />
 		<effects>
-			<effect name="MagicalAttackMp">
-				<param power="#power" />
-			</effect>
+			<effect name="Mp">
+				<param amount="#amount" />
+				<param mode="DIFF" />
+ 			</effect>
 		</effects>
 	</skill>
 	<skill id="4040" levels="12" name="NPC Bow Attack">
diff --git a/dist/game/data/stats/skills/04100-04199.xml b/dist/game/data/stats/skills/04100-04199.xml
index 73bdad53a8f4ef506222eb592f8492b680b53fe2..3d5f6c4e70900fb1821e9409f2dbb86ebd21d884 100644
--- a/dist/game/data/stats/skills/04100-04199.xml
+++ b/dist/game/data/stats/skills/04100-04199.xml
@@ -1250,9 +1250,9 @@
 	</skill>
 	<skill id="4154" levels="12" name="NPC MP Drain - Magic">
 		<!-- Freya retail confirmed -->
+		<table name="#amount"> -34 -57 -78 -105 -134 -165 -194 -206 -216 -224 -229 -232 </table>
 		<table name="#magicLvl"> 10 20 30 40 50 60 70 75 80 85 90 95 </table>
 		<table name="#mpConsume2"> 7 10 14 18 23 28 33 35 37 38 39 39 </table>
-		<table name="#power"> 34 57 78 105 134 165 194 206 216 224 229 232 </table>
 		<set name="affectScope" val="SINGLE" />
 		<set name="castRange" val="600" />
 		<set name="effectPoint" val="-100" />
@@ -1265,9 +1265,10 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="ENEMY_ONLY" />
 		<effects>
-			<effect name="MagicalAttackMp">
-				<param power="#power" />
-			</effect>
+			<effect name="Mp">
+				<param amount="#amount" />
+				<param mode="DIFF" />
+ 			</effect>
 		</effects>
 	</skill>
 	<skill id="4155" levels="12" name="NPC Twister - Magic">
diff --git a/dist/game/data/stats/skills/04200-04299.xml b/dist/game/data/stats/skills/04200-04299.xml
index 8a88b20c1e39d134695946de1844f9fca67e8ed0..c50f7849849a5e2a7c6e7696c10484fa4ea183cd 100644
--- a/dist/game/data/stats/skills/04200-04299.xml
+++ b/dist/game/data/stats/skills/04200-04299.xml
@@ -455,9 +455,10 @@
 				<param power="57" />
 				<param drain="0.4" />
 			</effect>
-			<effect name="ManaDamOverTime">
-				<param power="274" />
-			</effect>
+			<effect name="Mp">
+				<param amount="-274" />
+				<param mode="DIFF" />
+ 			</effect>
 		</effects>
 	</skill>
 	<skill id="4219" levels="1" name="Hold">
diff --git a/dist/game/data/stats/skills/05600-05699.xml b/dist/game/data/stats/skills/05600-05699.xml
index ad19498c68250157664f08d72fc12a1b8a180284..b2286d47b5aad82c663128bdcd08a654e73abd77 100644
--- a/dist/game/data/stats/skills/05600-05699.xml
+++ b/dist/game/data/stats/skills/05600-05699.xml
@@ -290,8 +290,9 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="ONE" />
 		<effects>
-			<effect name="ManaHeal">
-				<param power="#amount" />
+			<effect name="Mp">
+				<param amount="#amount" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
@@ -1443,8 +1444,9 @@
 		<set name="rideState" val="NONE" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="ManaHeal">
-				<param power="41" />
+			<effect name="Mp">
+				<param amount="41" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
@@ -1456,8 +1458,9 @@
 		<set name="rideState" val="NONE" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="ManaHeal">
-				<param power="51" />
+			<effect name="Mp">
+				<param amount="51" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
@@ -1469,8 +1472,9 @@
 		<set name="rideState" val="NONE" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="ManaHeal">
-				<param power="59" />
+			<effect name="Mp">
+				<param amount="59" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/22100-22199.xml b/dist/game/data/stats/skills/22100-22199.xml
index ad3c4bbac2d2b5988a0ad8f1b7a91e0bd0e1c507..c6d073ef43912f1f2ead55a686ed6cdee727f060 100644
--- a/dist/game/data/stats/skills/22100-22199.xml
+++ b/dist/game/data/stats/skills/22100-22199.xml
@@ -1546,8 +1546,9 @@
 				<param amount="500" />
 				<param mode="DIFF" />
 			</effect>
-			<effect name="ManaHeal">
-				<param power="200" />
+			<effect name="Mp">
+				<param amount="200" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/22200-22299.xml b/dist/game/data/stats/skills/22200-22299.xml
index c0ca49442e2f24b1235d75c923459bd0d1ac7396..fcb5972e7bc58af92c3384f4582be9a0404a1063 100644
--- a/dist/game/data/stats/skills/22200-22299.xml
+++ b/dist/game/data/stats/skills/22200-22299.xml
@@ -1093,8 +1093,9 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="PARTY" />
 		<effects>
-			<effect name="ManaHeal">
-				<param power="1000" /> <!-- TODO: Custom. -->
+			<effect name="Mp">
+				<param amount="360" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/23200-23299.xml b/dist/game/data/stats/skills/23200-23299.xml
index 90bbd67438a89d32d65f885404ae4b827a4dd4c5..47461d38479242701a95f459c1bdb60868d05e7f 100644
--- a/dist/game/data/stats/skills/23200-23299.xml
+++ b/dist/game/data/stats/skills/23200-23299.xml
@@ -214,8 +214,9 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="ManaHeal">
-				<param power="500" />
+			<effect name="Mp">
+				<param amount="500" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/26000-26099.xml b/dist/game/data/stats/skills/26000-26099.xml
index 224ba604d0db4ca5d9553d8f9aae26efdd0cc58b..8540714875093cceef06ca4eaed36a66cf50d738 100644
--- a/dist/game/data/stats/skills/26000-26099.xml
+++ b/dist/game/data/stats/skills/26000-26099.xml
@@ -386,8 +386,9 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="ManaHeal">
-				<param power="60" />
+			<effect name="Mp">
+				<param amount="60" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/custom/10000-10099.xml b/dist/game/data/stats/skills/custom/10000-10099.xml
index faba19e4cb9a21e7c4a954df6f1f59f790802b1d..de89962d728332a58becd8503136e658e231a8e6 100644
--- a/dist/game/data/stats/skills/custom/10000-10099.xml
+++ b/dist/game/data/stats/skills/custom/10000-10099.xml
@@ -26,8 +26,9 @@
 		<set name="reuseDelay" val="500" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="ManaHeal">
-				<param power="100" />
+			<effect name="Mp">
+				<param amount="100" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>