diff --git a/dist/game/data/scripts/ai/individual/Beleth.java b/dist/game/data/scripts/ai/individual/Beleth.java
index f6c058cdc89c47113826ccdb0fb80e5ab4ca375f..d0bab268122ccddf1a795edeac3600c9b460dda6 100644
--- a/dist/game/data/scripts/ai/individual/Beleth.java
+++ b/dist/game/data/scripts/ai/individual/Beleth.java
@@ -598,7 +598,7 @@ public final class Beleth extends AbstractNpcAI
 	@Override
 	public String onSkillSee(L2Npc npc, L2PcInstance player, Skill skill, L2Object[] targets, boolean isSummon)
 	{
-		if (!npc.isDead() && (npc.getId() == REAL_BELETH) && !npc.isCastingNow() && skill.hasEffectType(L2EffectType.HEAL) && (getRandom(100) < 80))
+		if (!npc.isDead() && (npc.getId() == REAL_BELETH) && !npc.isCastingNow() && skill.hasEffectType(L2EffectType.HP) && (getRandom(100) < 80))
 		{
 			npc.setTarget(player);
 			npc.doCast(HORN_OF_RISING);
diff --git a/dist/game/data/scripts/gracia/instances/SeedOfInfinity/HallOfSuffering/HallOfSuffering.java b/dist/game/data/scripts/gracia/instances/SeedOfInfinity/HallOfSuffering/HallOfSuffering.java
index 570c17a436467f268634a4b1ecccd62d75586972..3cc6f196db6430b6699330c06c358e545726b16f 100644
--- a/dist/game/data/scripts/gracia/instances/SeedOfInfinity/HallOfSuffering/HallOfSuffering.java
+++ b/dist/game/data/scripts/gracia/instances/SeedOfInfinity/HallOfSuffering/HallOfSuffering.java
@@ -422,7 +422,7 @@ public final class HallOfSuffering extends AbstractInstance
 	@Override
 	public String onSkillSee(L2Npc npc, L2PcInstance caster, Skill skill, L2Object[] targets, boolean isSummon)
 	{
-		if (skill.hasEffectType(L2EffectType.REBALANCE_HP, L2EffectType.HEAL))
+		if (skill.hasEffectType(L2EffectType.REBALANCE_HP, L2EffectType.HP))
 		{
 			int hate = 2 * skill.getEffectPoint();
 			if (hate < 2)
diff --git a/dist/game/data/scripts/handlers/EffectMasterHandler.java b/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 3824dff8996fce892c5115613ecebd4f6a730f0c..3bbd46cb87bbcdc8cc29af2cd982784db96b9af2 100644
--- a/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -103,6 +103,7 @@ public final class EffectMasterHandler
 		HealOverTime.class,
 		HealPercent.class,
 		Hide.class,
+		Hp.class,
 		HpByLevel.class,
 		HpDrain.class,
 		ImmobileBuff.class,
diff --git a/dist/game/data/scripts/handlers/effecthandlers/Heal.java b/dist/game/data/scripts/handlers/effecthandlers/Heal.java
index 4dcf1efb98fa033b0141ba7c12fc48586650cda5..5952535758c75de92dca60613ea3cbcc29da8e9f 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/Heal.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/Heal.java
@@ -51,7 +51,7 @@ public final class Heal extends AbstractEffect
 	@Override
 	public L2EffectType getEffectType()
 	{
-		return L2EffectType.HEAL;
+		return L2EffectType.HP;
 	}
 	
 	@Override
@@ -129,14 +129,14 @@ public final class Heal extends AbstractEffect
 			{
 				if (activeChar.isPlayer() && (activeChar != target))
 				{
-					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S2_HP_RESTORED_BY_C1);
+					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
 					sm.addString(activeChar.getName());
 					sm.addInt((int) amount);
 					target.sendPacket(sm);
 				}
 				else
 				{
-					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_HP_RESTORED);
+					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_HP_HAS_BEEN_RESTORED);
 					sm.addInt((int) amount);
 					target.sendPacket(sm);
 				}
diff --git a/dist/game/data/scripts/handlers/effecthandlers/HealPercent.java b/dist/game/data/scripts/handlers/effecthandlers/HealPercent.java
index 9feefd05331985c8be40722e7bc68e9803115c90..5e6929fae671d2bd8b9b678440383db0cb7a80cd 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/HealPercent.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/HealPercent.java
@@ -45,7 +45,7 @@ public final class HealPercent extends AbstractEffect
 	@Override
 	public L2EffectType getEffectType()
 	{
-		return L2EffectType.HEAL;
+		return L2EffectType.HP;
 	}
 	
 	@Override
@@ -77,12 +77,12 @@ public final class HealPercent extends AbstractEffect
 		SystemMessage sm;
 		if (info.getEffector().getObjectId() != target.getObjectId())
 		{
-			sm = SystemMessage.getSystemMessage(SystemMessageId.S2_HP_RESTORED_BY_C1);
+			sm = SystemMessage.getSystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
 			sm.addCharName(info.getEffector());
 		}
 		else
 		{
-			sm = SystemMessage.getSystemMessage(SystemMessageId.S1_HP_RESTORED);
+			sm = SystemMessage.getSystemMessage(SystemMessageId.S1_HP_HAS_BEEN_RESTORED);
 		}
 		sm.addInt((int) amount);
 		target.sendPacket(sm);
diff --git a/dist/game/data/scripts/handlers/effecthandlers/Hp.java b/dist/game/data/scripts/handlers/effecthandlers/Hp.java
new file mode 100644
index 0000000000000000000000000000000000000000..beeddf008444db961aa126106535e9636a35c4a0
--- /dev/null
+++ b/dist/game/data/scripts/handlers/effecthandlers/Hp.java
@@ -0,0 +1,113 @@
+/*
+ * 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.effects.L2EffectType;
+import com.l2jserver.gameserver.model.skills.BuffInfo;
+import com.l2jserver.gameserver.network.SystemMessageId;
+import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
+
+/**
+ * Hp effect implementation.
+ * @author Adry_85
+ * @since 2.6.0.0
+ */
+public final class Hp extends AbstractEffect
+{
+	private final double _amount;
+	private final EffectCalculationType _mode;
+	
+	public Hp(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 L2EffectType getEffectType()
+	{
+		return L2EffectType.HP;
+	}
+	
+	@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())
+		{
+			return;
+		}
+		
+		double amount = 0;
+		switch (_mode)
+		{
+			case DIFF:
+			{
+				amount = Math.min(_amount, target.getMaxRecoverableHp() - target.getCurrentHp());
+				break;
+			}
+			case PER:
+			{
+				if (_amount < 0)
+				{
+					amount = (target.getCurrentHp() * _amount) / 100;
+				}
+				else
+				{
+					amount = Math.min((target.getMaxHp() * _amount) / 100.0, target.getMaxRecoverableHp() - target.getCurrentHp());
+				}
+				break;
+			}
+		}
+		
+		if (amount != 0)
+		{
+			target.setCurrentHp(amount + target.getCurrentHp());
+		}
+		
+		if (amount >= 0)
+		{
+			if ((activeChar != null) && (activeChar != target))
+			{
+				final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
+				sm.addCharName(activeChar);
+				sm.addInt((int) amount);
+				target.sendPacket(sm);
+			}
+			else
+			{
+				target.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_HP_HAS_BEEN_RESTORED).addInt((int) amount));
+			}
+		}
+	}
+}
diff --git a/dist/game/data/scripts/handlers/effecthandlers/HpByLevel.java b/dist/game/data/scripts/handlers/effecthandlers/HpByLevel.java
index e3c74835a9c441c93a05356d6f72df8cad428c51..33d945e72e91280303d07522c7586fe6d63940a3 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/HpByLevel.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/HpByLevel.java
@@ -70,8 +70,6 @@ public final class HpByLevel extends AbstractEffect
 		final int restored = (int) (absorb - activeChar.getCurrentHp());
 		activeChar.setCurrentHp(absorb);
 		// System message
-		final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_HP_RESTORED);
-		sm.addInt(restored);
-		activeChar.sendPacket(sm);
+		activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_HP_HAS_BEEN_RESTORED).addInt(restored));
 	}
 }
diff --git a/dist/game/data/scripts/handlers/effecthandlers/ManaHeal.java b/dist/game/data/scripts/handlers/effecthandlers/ManaHeal.java
index 03b5d548ed182cbd5723bfad161cee137fd2351f..62edd0db0c8484f270c9d3b0fdd36a3c18c3cc33 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/ManaHeal.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/ManaHeal.java
@@ -73,12 +73,12 @@ public final class ManaHeal extends AbstractEffect
 		SystemMessage sm;
 		if (info.getEffector().getObjectId() != target.getObjectId())
 		{
-			sm = SystemMessage.getSystemMessage(SystemMessageId.S2_MP_RESTORED_BY_C1);
+			sm = SystemMessage.getSystemMessage(SystemMessageId.S2_MP_HAS_BEEN_RESTORED_BY_C1);
 			sm.addCharName(info.getEffector());
 		}
 		else
 		{
-			sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MP_RESTORED);
+			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 665f4a0da21cc8867573bb00b28f06a219e07290..e04a9153bfaf0e8b262737a62ec355eb44193901 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_MP_RESTORED_BY_C1 : SystemMessageId.S1_MP_RESTORED);
+		final SystemMessage sm = SystemMessage.getSystemMessage(info.getEffector().getObjectId() != target.getObjectId() ? SystemMessageId.S2_HP_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 647fc1e99f750e80163f3319335adb27e76026fd..f686c1c546ff147a3ae7c00f0a24fe918dd7ee07 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/ManaHealPercent.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/ManaHealPercent.java
@@ -77,12 +77,12 @@ public final class ManaHealPercent extends AbstractEffect
 		SystemMessage sm;
 		if (info.getEffector().getObjectId() != target.getObjectId())
 		{
-			sm = SystemMessage.getSystemMessage(SystemMessageId.S2_MP_RESTORED_BY_C1);
+			sm = SystemMessage.getSystemMessage(SystemMessageId.S2_HP_HAS_BEEN_RESTORED_BY_C1);
 			sm.addCharName(info.getEffector());
 		}
 		else
 		{
-			sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MP_RESTORED);
+			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/MaxHp.java b/dist/game/data/scripts/handlers/effecthandlers/MaxHp.java
index 38f60a2bddb9877778990f3b95303a2c2683e956..0c56bd89fcb4dfffe863c607051663653ae3b5cd 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/MaxHp.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/MaxHp.java
@@ -102,9 +102,7 @@ public final class MaxHp extends AbstractEffect
 		}
 		if (_heal)
 		{
-			SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_HP_RESTORED);
-			sm.addInt((int) amount);
-			effected.sendPacket(sm);
+			effected.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_HP_HAS_BEEN_RESTORED).addInt((int) amount));
 		}
 	}
 	
diff --git a/dist/game/data/stats/skills/02000-02099.xml b/dist/game/data/stats/skills/02000-02099.xml
index ba1e97ca2ae130ec978d6708623d3d7009c9ce88..e8bf1b1de88d575bb8ba669494d17ee4eb355342 100644
--- a/dist/game/data/stats/skills/02000-02099.xml
+++ b/dist/game/data/stats/skills/02000-02099.xml
@@ -437,8 +437,9 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="Heal">
-				<param power="435" />
+			<effect name="Hp">
+				<param amount="435" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/02200-02299.xml b/dist/game/data/stats/skills/02200-02299.xml
index d89d9c66da0fcaf2c559e0cfab7e2d103eaf448d..de1586187b51d583915377d9726df4a69a2d2e49 100644
--- a/dist/game/data/stats/skills/02200-02299.xml
+++ b/dist/game/data/stats/skills/02200-02299.xml
@@ -995,8 +995,9 @@
 			<player flyMounted="false" />
 		</cond>
 		<effects>
-			<effect name="Heal">
-				<param power="60" />
+			<effect name="Hp">
+				<param amount="60" />
+				<param mode="DIFF" />
 			</effect>
 			<effect name="HealPercent">
 				<param power="17" />
@@ -1928,8 +1929,9 @@
 			<player levelRange="#levelRange" />
 		</cond>
 		<effects>
-			<effect name="Heal">
-				<param power="#amount" />
+			<effect name="Hp">
+				<param amount="#amount" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/02300-02399.xml b/dist/game/data/stats/skills/02300-02399.xml
index aa098cf15566819905a71c81a575d8affa116190..da2bdcf62a8a81722052b3effdf98f92cb2c38bf 100644
--- a/dist/game/data/stats/skills/02300-02399.xml
+++ b/dist/game/data/stats/skills/02300-02399.xml
@@ -1865,8 +1865,9 @@
 			</and>
 		</cond>
 		<effects>
-			<effect name="Heal">
-				<param power="1900" />
+			<effect name="Hp">
+				<param amount="1900" />
+				<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 dc7cd05a8c1c0f883177c73ef534b58dc47602d2..894657d2cae5bac92beba3d558adfbe7395baf7f 100644
--- a/dist/game/data/stats/skills/02800-02899.xml
+++ b/dist/game/data/stats/skills/02800-02899.xml
@@ -1418,8 +1418,9 @@
 			<player levelRange="#levelRange" />
 		</cond>
 		<effects>
-			<effect name="Heal">
-				<param power="#amount" />
+			<effect name="Hp">
+				<param amount="#amount" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
@@ -1495,8 +1496,9 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="Heal">
-				<param power="870" />
+			<effect name="Hp">
+				<param amount="870" />
+				<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 f213659010804ee2b2c5dc5680b5eee1ecb1eac1..fc3e38f843395bd59b99817de42f5490fda88d95 100644
--- a/dist/game/data/stats/skills/02900-02999.xml
+++ b/dist/game/data/stats/skills/02900-02999.xml
@@ -141,8 +141,9 @@
 			<player levelRange="61;75" />
 		</cond>
 		<effects>
-			<effect name="Heal">
-				<param power="1900" />
+			<effect name="Hp">
+				<param amount="1900" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/04500-04599.xml b/dist/game/data/stats/skills/04500-04599.xml
index a22c279e5036e9fcba4743a1b985779fa67cc3a1..8f6c951e08181d7319e81364b8b64765a0097c49 100644
--- a/dist/game/data/stats/skills/04500-04599.xml
+++ b/dist/game/data/stats/skills/04500-04599.xml
@@ -307,8 +307,9 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="HealPercent">
-				<param power="10" />
+			<effect name="Hp">
+				<param amount="-10" />
+				<param mode="PER" />
 			</effect>
 		</effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/04600-04699.xml b/dist/game/data/stats/skills/04600-04699.xml
index 8e048cc7ea7d200aa776b3230ea5b8cd06ed4d1d..8aa1004207a6c2b38f4d2004418f0e204a340639 100644
--- a/dist/game/data/stats/skills/04600-04699.xml
+++ b/dist/game/data/stats/skills/04600-04699.xml
@@ -1354,8 +1354,9 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="CORPSE" />
 		<effects>
-			<effect name="Heal">
-				<param power="#amount" />
+			<effect name="Hp">
+				<param amount="#amount" />
+				<param mode="DIFF" />
 			</effect>
 			<effect name="ConsumeBody" />
 		</effects>
diff --git a/dist/game/data/stats/skills/05600-05699.xml b/dist/game/data/stats/skills/05600-05699.xml
index 02384b375602099ce7b43869db73a7f299ff4617..ad19498c68250157664f08d72fc12a1b8a180284 100644
--- a/dist/game/data/stats/skills/05600-05699.xml
+++ b/dist/game/data/stats/skills/05600-05699.xml
@@ -54,8 +54,9 @@
 			<effect name="Debuff">
 				<mul stat="maxRecoverableHp" val="0.1" />
 			</effect>
-			<effect name="HealPercent">
-				<param power="-99" />
+			<effect name="Hp">
+				<param amount="-99" />
+				<param mode="PER" />
 			</effect>
 		</effects>
 	</skill>
@@ -1888,8 +1889,9 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="Heal">
-				<param power="#amount" />
+			<effect name="Hp">
+				<param amount="#amount" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/05700-05799.xml b/dist/game/data/stats/skills/05700-05799.xml
index d4d995093f07a3d33229730f0754ac773b540504..89cec15a9e9a29f3c1a52ff8e3d3118530ca21d9 100644
--- a/dist/game/data/stats/skills/05700-05799.xml
+++ b/dist/game/data/stats/skills/05700-05799.xml
@@ -228,11 +228,6 @@
 		<set name="reuseDelay" val="10000" />
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="ONE" />
-		<effects>
-			<effect name="Heal">
-				<param power="200" />
-			</effect>
-		</effects>
 	</skill>
 	<skill id="5713" levels="5" name="Energy Ditch">
 		<table name="#abnormalLvls"> 1 2 3 4 5 </table>
diff --git a/dist/game/data/stats/skills/05800-05899.xml b/dist/game/data/stats/skills/05800-05899.xml
index 37749dfc88052e3e16d48616aad6e0404774c54d..aeb784c3dbe41b94009cddbd24a24c1e39ad0b10 100644
--- a/dist/game/data/stats/skills/05800-05899.xml
+++ b/dist/game/data/stats/skills/05800-05899.xml
@@ -1676,6 +1676,10 @@
 				<mul stat="critDmg" val="1.2" />
 				<mul stat="critRate" val="1.2" />
 			</effect>
+			<effect name="Hp">
+				<param amount="-33" />
+				<param mode="PER" />
+			</effect>
 		</effects>
 	</skill>
 	<skill id="5895" levels="1" name="Mark of Cowardice">
@@ -1707,6 +1711,10 @@
 				<mul stat="regHp" val="0.1" />
 				<mul stat="runSpd" val="1.25" />
 			</effect>
+			<effect name="Hp">
+				<param amount="-33" />
+				<param mode="PER" />
+			</effect>
 		</effects>
 	</skill>
 	<skill id="5896" levels="2" name="Soulless">
diff --git a/dist/game/data/stats/skills/06700-06799.xml b/dist/game/data/stats/skills/06700-06799.xml
index 12bac0e60da48fbeaceb94bb4d123c1baac4b834..fa74cf0798c2d968bc938247832ff215f33473eb 100644
--- a/dist/game/data/stats/skills/06700-06799.xml
+++ b/dist/game/data/stats/skills/06700-06799.xml
@@ -376,8 +376,9 @@
 		<set name="staticReuse" val="true" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="Heal">
-				<param power="458" />
+			<effect name="Hp">
+				<param amount="687" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
diff --git a/dist/game/data/stats/skills/09000-09099.xml b/dist/game/data/stats/skills/09000-09099.xml
index 4d6f1134bf68e1e3f5a7797b7fec3f48d8578d2b..c2c3ae69e5b262b660f4f6479aaada990224529b 100644
--- a/dist/game/data/stats/skills/09000-09099.xml
+++ b/dist/game/data/stats/skills/09000-09099.xml
@@ -1282,8 +1282,9 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="Heal">
-				<param power="2300" />
+			<effect name="Hp">
+				<param amount="2300" />
+				<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 9fd28d0198f808378ef5e3f64145fdcbfabbc964..ad3c4bbac2d2b5988a0ad8f1b7a91e0bd0e1c507 100644
--- a/dist/game/data/stats/skills/22100-22199.xml
+++ b/dist/game/data/stats/skills/22100-22199.xml
@@ -1542,8 +1542,9 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="Heal">
-				<param power="500" />
+			<effect name="Hp">
+				<param amount="500" />
+				<param mode="DIFF" />
 			</effect>
 			<effect name="ManaHeal">
 				<param power="200" />
diff --git a/dist/game/data/stats/skills/22200-22299.xml b/dist/game/data/stats/skills/22200-22299.xml
index f6434b707750bc050ee0e2aabc1ffe51f61838ee..c0ca49442e2f24b1235d75c923459bd0d1ac7396 100644
--- a/dist/game/data/stats/skills/22200-22299.xml
+++ b/dist/game/data/stats/skills/22200-22299.xml
@@ -1077,8 +1077,9 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="PARTY" />
 		<effects>
-			<effect name="Heal">
-				<param power="1000" /> <!-- TODO: Custom. -->
+			<effect name="Hp">
+				<param amount="1100" />
+				<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 9dd525d350bbf5f52df3a920fb3763122f45dadf..90bbd67438a89d32d65f885404ae4b827a4dd4c5 100644
--- a/dist/game/data/stats/skills/23200-23299.xml
+++ b/dist/game/data/stats/skills/23200-23299.xml
@@ -198,8 +198,9 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="Heal">
-				<param power="500" />
+			<effect name="Hp">
+				<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 9406faba9b34e93d258bc2893716bd2989546b07..224ba604d0db4ca5d9553d8f9aae26efdd0cc58b 100644
--- a/dist/game/data/stats/skills/26000-26099.xml
+++ b/dist/game/data/stats/skills/26000-26099.xml
@@ -280,8 +280,9 @@
 		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
 		<set name="targetType" val="SELF" />
 		<effects>
-			<effect name="Heal">
-				<param power="435" />
+			<effect name="Hp">
+				<param amount="435" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>
@@ -355,8 +356,9 @@
 			<player levelRange="#levelRange" />
 		</cond>
 		<effects>
-			<effect name="Heal">
-				<param power="#amount" />
+			<effect name="Hp">
+				<param amount="#amount" />
+				<param mode="DIFF" />
 			</effect>
 		</effects>
 	</skill>