diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/RebalanceHP.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/RebalanceHP.java
index f6f82ef3be3a1d5e91920c5c4c5c24bc65b797f0..54642840400c90e5ecab50fdb548864a0f375029 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/RebalanceHP.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/RebalanceHP.java
@@ -20,11 +20,14 @@ package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.model.L2Party;
 import com.l2jserver.gameserver.model.StatsSet;
+import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.actor.L2Summon;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 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.model.skills.Skill;
 import com.l2jserver.gameserver.util.Util;
 
 /**
@@ -61,39 +64,64 @@ public final class RebalanceHP extends AbstractEffect
 		double fullHP = 0;
 		double currentHPs = 0;
 		final L2Party party = info.getEffector().getParty();
+		final Skill skill = info.getSkill();
+		final L2Character effector = info.getEffector();
 		for (L2PcInstance member : party.getMembers())
 		{
-			if (member.isDead() || !Util.checkIfInRange(info.getSkill().getAffectRange(), info.getEffector(), member, true))
+			if (!member.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, member, true))
 			{
-				continue;
+				fullHP += member.getMaxHp();
+				currentHPs += member.getCurrentHp();
 			}
 			
-			fullHP += member.getMaxHp();
-			currentHPs += member.getCurrentHp();
+			final L2Summon summon = member.getSummon();
+			if ((summon != null) && (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true)))
+			{
+				fullHP += summon.getMaxHp();
+				currentHPs += summon.getCurrentHp();
+			}
 		}
 		
 		double percentHP = currentHPs / fullHP;
 		for (L2PcInstance member : party.getMembers())
 		{
-			if (member.isDead() || !Util.checkIfInRange(info.getSkill().getAffectRange(), info.getEffector(), member, true))
+			if (!member.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, member, true))
 			{
-				continue;
+				double newHP = member.getMaxHp() * percentHP;
+				if (newHP > member.getCurrentHp()) // The target gets healed
+				{
+					// The heal will be blocked if the current hp passes the limit
+					if (member.getCurrentHp() > member.getMaxRecoverableHp())
+					{
+						newHP = member.getCurrentHp();
+					}
+					else if (newHP > member.getMaxRecoverableHp())
+					{
+						newHP = member.getMaxRecoverableHp();
+					}
+				}
+				
+				member.setCurrentHp(newHP);
 			}
 			
-			double newHP = member.getMaxHp() * percentHP;
-			if (newHP > member.getCurrentHp()) // The target gets healed
+			final L2Summon summon = member.getSummon();
+			if ((summon != null) && (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true)))
 			{
-				// The heal will be blocked if the current hp passes the limit
-				if (member.getCurrentHp() > member.getMaxRecoverableHp())
-				{
-					newHP = member.getCurrentHp();
-				}
-				else if (newHP > member.getMaxRecoverableHp())
+				double newHP = summon.getMaxHp() * percentHP;
+				if (newHP > summon.getCurrentHp()) // The target gets healed
 				{
-					newHP = member.getMaxRecoverableHp();
+					// The heal will be blocked if the current hp passes the limit
+					if (summon.getCurrentHp() > summon.getMaxRecoverableHp())
+					{
+						newHP = summon.getCurrentHp();
+					}
+					else if (newHP > summon.getMaxRecoverableHp())
+					{
+						newHP = summon.getMaxRecoverableHp();
+					}
 				}
+				summon.setCurrentHp(newHP);
 			}
-			member.setCurrentHp(newHP);
 		}
 	}
 }