diff --git a/dist/game/data/scripts/handlers/effecthandlers/Backstab.java b/dist/game/data/scripts/handlers/effecthandlers/Backstab.java
index 8fac52466d1728a20679fa560818abd19c0005b3..110210b10af06de42b250bcc5cac4def254b58a8 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/Backstab.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/Backstab.java
@@ -80,7 +80,7 @@ public final class Backstab extends AbstractEffect
 		}
 		
 		target.reduceCurrentHp(damage, activeChar, skill);
-		target.notifyDamageReceived(damage, activeChar, skill, true, false);
+		target.notifyDamageReceived(damage, activeChar, skill, true, false, false);
 		
 		// Manage attack or cast break of the target (calculating rate, sending message...)
 		if (!target.isRaid() && Formulas.calcAtkBreak(target, damage))
diff --git a/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java b/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java
index e8b968c104e75d94f151cc87fec95ce7dfd28d92..b0ae58d3ee000f0febbb2049f8c7d9d6b0fe3e4f 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/DamOverTime.java
@@ -77,7 +77,7 @@ public final class DamOverTime extends AbstractEffect
 		}
 		
 		info.getEffected().reduceCurrentHpByDOT(damage, info.getEffector(), info.getSkill());
-		info.getEffected().notifyDamageReceived(damage, info.getEffector(), info.getSkill(), false, true);
+		info.getEffected().notifyDamageReceived(damage, info.getEffector(), info.getSkill(), false, true, false);
 		return info.getSkill().isToggle();
 	}
 }
diff --git a/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java b/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java
index 51ab82cb3560101f235dd125bc303d39ad8d88bf..60e1997f7afb06212987dd4addaadc08621d75b9 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/DamOverTimePercent.java
@@ -78,7 +78,7 @@ public final class DamOverTimePercent extends AbstractEffect
 			}
 		}
 		info.getEffected().reduceCurrentHpByDOT(damage, info.getEffector(), info.getSkill());
-		info.getEffected().notifyDamageReceived(damage, info.getEffector(), info.getSkill(), false, true);
+		info.getEffected().notifyDamageReceived(damage, info.getEffector(), info.getSkill(), false, true, false);
 		
 		return info.getSkill().isToggle();
 	}
diff --git a/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java b/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java
index 9ef4aca2eb2e64f6b84bcf5a2018d4743c8a048f..95322cb41ecdcf0f408d38bf0c5f916927f65978 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/DeathLink.java
@@ -88,12 +88,12 @@ public final class DeathLink extends AbstractEffect
 			if (target.getStat().calcStat(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0, target, info.getSkill()) > Rnd.get(100))
 			{
 				activeChar.reduceCurrentHp(damage, target, info.getSkill());
-				activeChar.notifyDamageReceived(damage, target, info.getSkill(), mcrit, false);
+				activeChar.notifyDamageReceived(damage, target, info.getSkill(), mcrit, false, true);
 			}
 			else
 			{
 				target.reduceCurrentHp(damage, activeChar, info.getSkill());
-				target.notifyDamageReceived(damage, activeChar, info.getSkill(), mcrit, false);
+				target.notifyDamageReceived(damage, activeChar, info.getSkill(), mcrit, false, false);
 				activeChar.sendDamageMessage(target, damage, mcrit, false, false);
 			}
 		}
diff --git a/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java b/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java
index c64a5d2f4be55bc4286dce006023531c6804ecf1..e991c70f2d041ac048bdf17d6f95aa5351ab47ce 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/EnergyAttack.java
@@ -159,7 +159,7 @@ public final class EnergyAttack extends AbstractEffect
 		{
 			attacker.sendDamageMessage(target, (int) damage, false, critical, false);
 			target.reduceCurrentHp(damage, attacker, skill);
-			target.notifyDamageReceived(damage, attacker, skill, critical, false);
+			target.notifyDamageReceived(damage, attacker, skill, critical, false, false);
 			
 			// Check if damage should be reflected
 			Formulas.calcDamageReflected(attacker, target, skill, critical);
diff --git a/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java b/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java
index 17e337595707713dd7e492aa4bb786a7f300037d..793f6986fb2c8fd6f92e63ee8260fee75126dc33 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java
@@ -81,7 +81,7 @@ public final class FatalBlow extends AbstractEffect
 		}
 		
 		target.reduceCurrentHp(damage, activeChar, skill);
-		target.notifyDamageReceived(damage, activeChar, skill, crit, false);
+		target.notifyDamageReceived(damage, activeChar, skill, crit, false, false);
 		
 		// Manage attack or cast break of the target (calculating rate, sending message...)
 		if (!target.isRaid() && Formulas.calcAtkBreak(target, damage))
diff --git a/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java b/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java
index 7e270565b5b66fe3c1f5eeda5ae601507f66e0f8..c63fccdf2ffaf0f38c651c833f3948b1cf6c7b70 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/HpDrain.java
@@ -103,7 +103,7 @@ public final class HpDrain extends AbstractEffect
 			}
 			activeChar.sendDamageMessage(target, damage, mcrit, false, false);
 			target.reduceCurrentHp(damage, activeChar, info.getSkill());
-			target.notifyDamageReceived(damage, activeChar, info.getSkill(), mcrit, false);
+			target.notifyDamageReceived(damage, activeChar, info.getSkill(), mcrit, false, false);
 		}
 	}
 }
\ No newline at end of file
diff --git a/dist/game/data/scripts/handlers/effecthandlers/Lethal.java b/dist/game/data/scripts/handlers/effecthandlers/Lethal.java
index 78ee6b62bb2c8fa060c6a5dfe1dbfa1a24846210..af930e0b7d6bcbaa05267e0ed8ebf10f1447719a 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/Lethal.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/Lethal.java
@@ -79,7 +79,7 @@ public final class Lethal extends AbstractEffect
 			// for Players CP and HP is set to 1.
 			if (target.isPlayer())
 			{
-				target.notifyDamageReceived(target.getCurrentHp() - 1, activeChar, skill, true, false);
+				target.notifyDamageReceived(target.getCurrentHp() - 1, activeChar, skill, true, false, false);
 				target.setCurrentCp(1);
 				target.setCurrentHp(1);
 				target.sendPacket(SystemMessageId.LETHAL_STRIKE);
@@ -87,7 +87,7 @@ public final class Lethal extends AbstractEffect
 			// for Monsters HP is set to 1.
 			else if (target.isMonster() || target.isSummon())
 			{
-				target.notifyDamageReceived(target.getCurrentHp() - 1, activeChar, skill, true, false);
+				target.notifyDamageReceived(target.getCurrentHp() - 1, activeChar, skill, true, false, false);
 				target.setCurrentHp(1);
 			}
 			activeChar.sendPacket(SystemMessageId.LETHAL_STRIKE_SUCCESSFUL);
@@ -105,7 +105,7 @@ public final class Lethal extends AbstractEffect
 			// for Monsters HP is set to 50%.
 			else if (target.isMonster() || target.isSummon())
 			{
-				target.notifyDamageReceived(target.getCurrentHp() * 0.5, activeChar, skill, true, false);
+				target.notifyDamageReceived(target.getCurrentHp() * 0.5, activeChar, skill, true, false, false);
 				target.setCurrentHp(target.getCurrentHp() * 0.5);
 			}
 			activeChar.sendPacket(SystemMessageId.HALF_KILL);
diff --git a/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java b/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java
index 6eeb60ce2afee3f57476460826d51d838c863210..140a7a58e61267f58f85447e7f84df10aee65355 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/MagicalAttack.java
@@ -88,12 +88,12 @@ public final class MagicalAttack extends AbstractEffect
 			if (target.getStat().calcStat(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0, target, info.getSkill()) > Rnd.get(100))
 			{
 				activeChar.reduceCurrentHp(damage, target, info.getSkill());
-				activeChar.notifyDamageReceived(damage, target, info.getSkill(), mcrit, false);
+				activeChar.notifyDamageReceived(damage, target, info.getSkill(), mcrit, false, true);
 			}
 			else
 			{
 				target.reduceCurrentHp(damage, activeChar, info.getSkill());
-				target.notifyDamageReceived(damage, activeChar, info.getSkill(), mcrit, false);
+				target.notifyDamageReceived(damage, activeChar, info.getSkill(), mcrit, false, false);
 				activeChar.sendDamageMessage(target, damage, mcrit, false, false);
 			}
 		}
diff --git a/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java b/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java
index 342a8c3b3bc070da8841ef2fe814900cdb1470ac..391cd35fc4ffb1087f352c6c48e25d4cad08d568 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/MagicalAttackByAbnormal.java
@@ -90,12 +90,12 @@ public final class MagicalAttackByAbnormal extends AbstractEffect
 			if (target.getStat().calcStat(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0, target, info.getSkill()) > Rnd.get(100))
 			{
 				activeChar.reduceCurrentHp(damage, target, info.getSkill());
-				activeChar.notifyDamageReceived(damage, target, info.getSkill(), mcrit, false);
+				activeChar.notifyDamageReceived(damage, target, info.getSkill(), mcrit, false, true);
 			}
 			else
 			{
 				target.reduceCurrentHp(damage, activeChar, info.getSkill());
-				target.notifyDamageReceived(damage, activeChar, info.getSkill(), mcrit, false);
+				target.notifyDamageReceived(damage, activeChar, info.getSkill(), mcrit, false, false);
 				activeChar.sendDamageMessage(target, damage, mcrit, false, false);
 			}
 		}
diff --git a/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java b/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java
index 2ed7719c0a9017b954177a5aae2e5c48fdebcded..51a236f28362602952ec80b005d59a4afbc6d334 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/MagicalSoulAttack.java
@@ -93,12 +93,12 @@ public final class MagicalSoulAttack extends AbstractEffect
 			if (target.getStat().calcStat(Stats.VENGEANCE_SKILL_MAGIC_DAMAGE, 0, target, info.getSkill()) > Rnd.get(100))
 			{
 				activeChar.reduceCurrentHp(damage, target, info.getSkill());
-				activeChar.notifyDamageReceived(damage, target, info.getSkill(), mcrit, false);
+				activeChar.notifyDamageReceived(damage, target, info.getSkill(), mcrit, false, true);
 			}
 			else
 			{
 				target.reduceCurrentHp(damage, activeChar, info.getSkill());
-				target.notifyDamageReceived(damage, activeChar, info.getSkill(), mcrit, false);
+				target.notifyDamageReceived(damage, activeChar, info.getSkill(), mcrit, false, false);
 				activeChar.sendDamageMessage(target, damage, mcrit, false, false);
 			}
 		}
diff --git a/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java b/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java
index 122f6ad2d644f65dff5d9f3b85cc7aea2d16ed5c..6e9f90ab417d19f4409c0af88d4bef6bb3377c6c 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttack.java
@@ -105,7 +105,7 @@ public final class PhysicalAttack extends AbstractEffect
 		{
 			activeChar.sendDamageMessage(target, damage, false, crit, false);
 			target.reduceCurrentHp(damage, activeChar, skill);
-			target.notifyDamageReceived(damage, activeChar, skill, crit, false);
+			target.notifyDamageReceived(damage, activeChar, skill, crit, false, false);
 			
 			// Check if damage should be reflected
 			Formulas.calcDamageReflected(activeChar, target, skill, crit);
diff --git a/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java b/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java
index 3968ecf5b5b63b65607225732cef72e04218501b..a71b9b2d0bb306a2c65060954e4a3c416c5605d8 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/PhysicalAttackHpLink.java
@@ -95,7 +95,7 @@ public final class PhysicalAttackHpLink extends AbstractEffect
 		{
 			activeChar.sendDamageMessage(target, damage, false, crit, false);
 			target.reduceCurrentHp(damage, activeChar, skill);
-			target.notifyDamageReceived(damage, activeChar, skill, crit, false);
+			target.notifyDamageReceived(damage, activeChar, skill, crit, false, false);
 			
 			// Check if damage should be reflected.
 			Formulas.calcDamageReflected(activeChar, target, skill, crit);
diff --git a/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java b/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java
index 15893cdb8f67b0f4b40591894ec691a70bd1f5d2..7354885e1682332ca1c390cfc3270dadf767294f 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/PhysicalSoulAttack.java
@@ -110,7 +110,7 @@ public final class PhysicalSoulAttack extends AbstractEffect
 		{
 			activeChar.sendDamageMessage(target, damage, false, crit, false);
 			target.reduceCurrentHp(damage, activeChar, skill);
-			target.notifyDamageReceived(damage, activeChar, skill, crit, false);
+			target.notifyDamageReceived(damage, activeChar, skill, crit, false, false);
 			
 			// Check if damage should be reflected
 			Formulas.calcDamageReflected(activeChar, target, skill, crit);
diff --git a/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java b/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java
index 8027e323fc7f48f125663ba21ee979f25e0632fd..c46e96f18c546d1503be33630afbe65baf63040c 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/SoulBlow.java
@@ -81,7 +81,7 @@ public final class SoulBlow extends AbstractEffect
 		}
 		
 		target.reduceCurrentHp(damage, activeChar, info.getSkill());
-		target.notifyDamageReceived(damage, activeChar, info.getSkill(), false, false);
+		target.notifyDamageReceived(damage, activeChar, info.getSkill(), false, false, false);
 		
 		// Manage attack or cast break of the target (calculating rate, sending message...)
 		if (!target.isRaid() && Formulas.calcAtkBreak(target, damage))
diff --git a/dist/game/data/scripts/handlers/effecthandlers/StaticDamage.java b/dist/game/data/scripts/handlers/effecthandlers/StaticDamage.java
index bb8ae41bb92e5d6c452fd4faa4b6fa7639991b30..3e5e12c75b9084d6ecb642a2f0f538b6d9c8846f 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/StaticDamage.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/StaticDamage.java
@@ -53,7 +53,7 @@ public final class StaticDamage extends AbstractEffect
 		}
 		
 		info.getEffected().reduceCurrentHp(_power, info.getEffector(), info.getSkill());
-		info.getEffected().notifyDamageReceived(_power, info.getEffector(), info.getSkill(), false, false);
+		info.getEffected().notifyDamageReceived(_power, info.getEffector(), info.getSkill(), false, false, false);
 		
 		if (info.getEffector().isPlayer())
 		{
diff --git a/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java
index 9cc11ee5d3383a998ce5be94290dd5d430224429..2d4e335ef0de109ee2a77d3decf28406cacfb8d1 100644
--- a/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java
+++ b/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java
@@ -88,7 +88,7 @@ public final class TriggerSkillByAttack extends AbstractEffect
 	
 	public void onAttackEvent(OnCreatureDamageDealt event)
 	{
-		if ((event.getSkill() != null) || event.isDamageOverTime() || (_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLvl() == 0)))
+		if ((event.getSkill() != null) || event.isDamageOverTime() || event.isReflect() || (_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLvl() == 0)))
 		{
 			return;
 		}