diff --git a/src/main/java/com/l2jserver/datapack/handlers/EffectMasterHandler.java b/src/main/java/com/l2jserver/datapack/handlers/EffectMasterHandler.java
index 80f16fbd97405086c4645fb2a562a71b8196e63e..283167afab0a160c594e8b92217645f3b513eb60 100644
--- a/src/main/java/com/l2jserver/datapack/handlers/EffectMasterHandler.java
+++ b/src/main/java/com/l2jserver/datapack/handlers/EffectMasterHandler.java
@@ -169,7 +169,6 @@ public final class EffectMasterHandler {
 		Heal.class,
 		Hide.class,
 		Hp.class,
-		HpByLevel.class,
 		HpDrain.class,
 		HpPerMax.class,
 		ImmobileBuff.class,
@@ -178,6 +177,8 @@ public final class EffectMasterHandler {
 		InstantCallTargetParty.class,
 		InstantDespawn.class,
 		InstantDispelByName.class,
+		InstantHpByLevelSelf.class,
+		InstantMpByLevelSelf.class,
 		Lethal.class,
 		Lucky.class,
 		MagicalAttack.class,
diff --git a/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/instant/HpByLevel.java b/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/instant/InstantHpByLevelSelf.java
similarity index 54%
rename from src/main/java/com/l2jserver/datapack/handlers/effecthandlers/instant/HpByLevel.java
rename to src/main/java/com/l2jserver/datapack/handlers/effecthandlers/instant/InstantHpByLevelSelf.java
index 25122720a2c5dbe2ab8893894e97c7b06425279a..1882aaa5980a487199a621f434870bcb2d7f4adf 100644
--- a/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/instant/HpByLevel.java
+++ b/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/instant/InstantHpByLevelSelf.java
@@ -18,31 +18,25 @@
  */
 package com.l2jserver.datapack.handlers.effecthandlers.instant;
 
+import static com.l2jserver.gameserver.network.SystemMessageId.S1_HP_HAS_BEEN_RESTORED;
+
 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 By Level effect implementation.
+ * Instant Hp By Level Self effect implementation.
  * @author Zoey76
  */
-public final class HpByLevel extends AbstractEffect {
-	private final double _power;
+public final class InstantHpByLevelSelf extends AbstractEffect {
 	
-	public HpByLevel(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params) {
-		super(attachCond, applyCond, set, params);
-		
-		_power = params.getDouble("power", 0);
-	}
+	private final double power;
 	
-	@Override
-	public L2EffectType getEffectType() {
-		return L2EffectType.BUFF;
+	public InstantHpByLevelSelf(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params) {
+		super(attachCond, applyCond, set, params);
+		power = params.getDouble("power", 0);
 	}
 	
 	@Override
@@ -52,18 +46,15 @@ public final class HpByLevel extends AbstractEffect {
 	
 	@Override
 	public void onStart(BuffInfo info) {
-		if (info.getEffector() == null) {
+		final var target = info.getEffector();
+		if ((target == null) || target.isDead() || target.isDoor() || target.isInvul() || target.isHpBlocked()) {
 			return;
 		}
 		
-		final L2Character activeChar = info.getEffector();
-		
-		// Calculation
-		final double abs = _power;
-		final double absorb = ((activeChar.getCurrentHp() + abs) > activeChar.getMaxHp() ? activeChar.getMaxHp() : (activeChar.getCurrentHp() + abs));
-		final int restored = (int) (absorb - activeChar.getCurrentHp());
-		activeChar.setCurrentHp(absorb);
-		// System message
-		activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_HP_HAS_BEEN_RESTORED).addInt(restored));
+		// TODO(Zoey76): This formula looks naive to me, test skill id 5878 for game mechanics.
+		final var absorb = Math.max(target.getCurrentHp() + power, target.getMaxHp());
+		final var restored = (int) (absorb - target.getCurrentHp());
+		target.setCurrentHp(absorb);
+		target.sendPacket(SystemMessage.getSystemMessage(S1_HP_HAS_BEEN_RESTORED).addInt(restored));
 	}
 }
diff --git a/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/instant/InstantMpByLevelSelf.java b/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/instant/InstantMpByLevelSelf.java
new file mode 100644
index 0000000000000000000000000000000000000000..569e4d29599200498d5a0eddc78398b29ed71b51
--- /dev/null
+++ b/src/main/java/com/l2jserver/datapack/handlers/effecthandlers/instant/InstantMpByLevelSelf.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright © 2004-2021 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 com.l2jserver.datapack.handlers.effecthandlers.instant;
+
+import static com.l2jserver.gameserver.model.effects.L2EffectType.MANAHEAL_BY_LEVEL;
+import static com.l2jserver.gameserver.model.stats.Stats.MANA_CHARGE;
+import static com.l2jserver.gameserver.network.SystemMessageId.S1_MP_HAS_BEEN_RESTORED;
+import static com.l2jserver.gameserver.network.serverpackets.SystemMessage.getSystemMessage;
+
+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;
+
+/**
+ * Instant Mp By Level Self effect implementation.
+ * @author Zoey76
+ * @version 2.6.3.0
+ */
+public final class InstantMpByLevelSelf extends AbstractEffect {
+	
+	private final double power;
+	
+	public InstantMpByLevelSelf(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params) {
+		super(attachCond, applyCond, set, params);
+		power = params.getDouble("power", 0);
+	}
+	
+	@Override
+	public L2EffectType getEffectType() {
+		return MANAHEAL_BY_LEVEL;
+	}
+	
+	@Override
+	public boolean isInstant() {
+		return true;
+	}
+	
+	@Override
+	public void onStart(BuffInfo info) {
+		final var target = info.getEffector();
+		if ((target == null) || target.isDead() || target.isDoor() || target.isInvul() || target.isMpBlocked()) {
+			return;
+		}
+		
+		var amount = target.calcStat(MANA_CHARGE, power, null, null);
+		// Prevents overheal and negative amount.
+		amount = Math.max(Math.min(amount, target.getMaxRecoverableMp() - target.getCurrentMp()), 0);
+		target.setCurrentMp(amount + target.getCurrentMp());
+		target.sendPacket(getSystemMessage(S1_MP_HAS_BEEN_RESTORED).addInt((int) amount));
+	}
+}
diff --git a/src/main/resources/data/stats/skills/00000-00099.xml b/src/main/resources/data/stats/skills/00000-00099.xml
index c91b44e9a26bbbd0c9603605b9b0a19b2c3b1959..7c1ddd14aee59fd3541990f362718961802eabc8 100644
--- a/src/main/resources/data/stats/skills/00000-00099.xml
+++ b/src/main/resources/data/stats/skills/00000-00099.xml
@@ -1453,14 +1453,14 @@
 		</effects>
 		<enchant1Effects>
 			<effect name="Sweeper" />
-			<effect name="HpByLevel">
+			<effect name="InstantHpByLevelSelf">
 				<param power="#ench1DrainHp" />
 			</effect>
 			<effect name="ConsumeBody" />
 		</enchant1Effects>
 		<enchant2Effects>
 			<effect name="Sweeper" />
-			<effect name="ManaHealByLevel">
+			<effect name="InstantMpByLevelSelf">
 				<param power="#ench2DrainMp" />
 			</effect>
 			<effect name="ConsumeBody" />
@@ -1541,13 +1541,13 @@
 		<enchant2 name="mpConsume1" val="#ench2MpConsume1" />
 		<enchant2 name="mpConsume2" val="#ench2MpConsume2" />
 		<effects>
-			<effect name="HpByLevel">
+			<effect name="InstantHpByLevelSelf">
 				<param power="#hpByLevelPower" />
 			</effect>
 			<effect name="ConsumeBody" />
 		</effects>
 		<enchant1Effects>
-			<effect name="HpByLevel">
+			<effect name="InstantHpByLevelSelf">
 				<param power="#ench1hpByLevelPower" />
 			</effect>
 			<effect name="ConsumeBody" />
@@ -2771,7 +2771,7 @@
 			</effect>
 		</effects>
 		<enchant2Effects>
-			<effect name="HpByLevel">
+			<effect name="InstantHpByLevelSelf">
 				<param power="#ench2Sap" />
 			</effect>
 			<effect name="TickHp">
diff --git a/src/main/resources/data/stats/skills/00500-00599.xml b/src/main/resources/data/stats/skills/00500-00599.xml
index e05c54d0f91acb3ad3d0b8d4f9be8adda7917e53..eb374a68cf744707551125088f1ccc9b9495b141 100644
--- a/src/main/resources/data/stats/skills/00500-00599.xml
+++ b/src/main/resources/data/stats/skills/00500-00599.xml
@@ -2996,7 +2996,7 @@
 		<set name="targetType" val="NPC_BODY" />
 		<effects>
 			<effect name="ConsumeBody" />
-			<effect name="HpByLevel">
+			<effect name="InstantHpByLevelSelf">
 				<param power="#hpByLevelPower" />
 			</effect>
 		</effects>
diff --git a/src/main/resources/data/stats/skills/01100-01199.xml b/src/main/resources/data/stats/skills/01100-01199.xml
index ddaed5e5a97e821e29c7aa1a0cf6d9da5a572c12..dd50ff96ccc1ab4d02d6f7048bd525fee042b0bf 100644
--- a/src/main/resources/data/stats/skills/01100-01199.xml
+++ b/src/main/resources/data/stats/skills/01100-01199.xml
@@ -825,13 +825,13 @@
 		<enchant2 name="mpConsume1" val="#ench2MpConsume1" />
 		<enchant2 name="mpConsume2" val="#ench2MpConsume2" />
 		<effects>
-			<effect name="HpByLevel">
+			<effect name="InstantHpByLevelSelf">
 				<param power="#hpByLevelPower" />
 			</effect>
 			<effect name="ConsumeBody" />
 		</effects>
 		<enchant2Effects>
-			<effect name="HpByLevel">
+			<effect name="InstantHpByLevelSelf">
 				<param power="#ench1hpByLevelPower" />
 			</effect>
 			<effect name="ConsumeBody" />
diff --git a/src/main/resources/data/stats/skills/05800-05899.xml b/src/main/resources/data/stats/skills/05800-05899.xml
index c6a830cc05b408950bee4d948a9376d97969dcc1..13190bbdc84b7b0401a1a244b56946e51870da32 100644
--- a/src/main/resources/data/stats/skills/05800-05899.xml
+++ b/src/main/resources/data/stats/skills/05800-05899.xml
@@ -2046,7 +2046,7 @@
 		<set name="rideState" val="NONE" />
 		<set name="targetType" val="ENEMY_ONLY" />
 		<effects>
-			<effect name="HpByLevel">
+			<effect name="InstantHpByLevelSelf">
 				<param power="73" />
 			</effect>
 			<effect name="Debuff">
diff --git a/src/main/resources/data/stats/skills/06900-06999.xml b/src/main/resources/data/stats/skills/06900-06999.xml
index 709b5d5bc45a7de2ca13834193794a8190ca6f34..0e950fd021a0667b7a9c830e34156dee1aede979 100644
--- a/src/main/resources/data/stats/skills/06900-06999.xml
+++ b/src/main/resources/data/stats/skills/06900-06999.xml
@@ -276,12 +276,17 @@
 		<set name="abnormalLvl" val="1" />
 		<set name="abnormalTime" val="10" />
 		<set name="abnormalType" val="PATIENCE" />
+		<set name="affectScope" val="SINGLE" />
+		<set name="hitCancelTime" val="500" />
 		<set name="icon" val="BranchSys2.icon.skill0952" />
 		<set name="isMagic" val="4" />
 		<set name="operateType" val="A2" />
 		<set name="rideState" val="NONE" />
 		<set name="targetType" val="SELF" />
 		<effects>
+			<effect name="Buff">
+				<mul stat="pAtkSpd" val="1.03" />
+			</effect>
 			<effect name="Buff">
 				<mul stat="critDmg" val="1.1" />
 			</effect>
@@ -291,9 +296,6 @@
 			<effect name="Buff">
 				<mul stat="pAtk" val="1.15" />
 			</effect>
-			<effect name="Buff">
-				<mul stat="pAtkSpd" val="1.03" />
-			</effect>
 			<effect name="Buff">
 				<add stat="runSpd" val="5" />
 			</effect>
diff --git a/src/main/resources/data/xsd/skills.xsd b/src/main/resources/data/xsd/skills.xsd
index 559e642c81f85d2eb9acc46cab87bdd9d594a786..c17cac320587ce63cc9e67e387ad69ca9c951ef8 100644
--- a/src/main/resources/data/xsd/skills.xsd
+++ b/src/main/resources/data/xsd/skills.xsd
@@ -575,7 +575,6 @@
 					<xs:enumeration value="Heal" />
 					<xs:enumeration value="Hide" />
 					<xs:enumeration value="Hp" />
-					<xs:enumeration value="HpByLevel" />
 					<xs:enumeration value="HpDrain" />
 					<xs:enumeration value="HpPerMax" />
 					<xs:enumeration value="ImmobileBuff" />
@@ -584,6 +583,8 @@
 					<xs:enumeration value="InstantCallTargetParty" />
 					<xs:enumeration value="InstantDespawn" />
 					<xs:enumeration value="InstantDispelByName" />
+					<xs:enumeration value="InstantHpByLevelSelf" />
+					<xs:enumeration value="InstantMpByLevelSelf" />
 					<xs:enumeration value="Lethal" />
 					<xs:enumeration value="Lucky" />
 					<xs:enumeration value="MagicalAttack" />