diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/Chests.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/Chests.java
index 4c45110a49535509d58e59d81bec33052e70db9f..90bab29f6db21a61f9f8e75ff043a57759bba67f 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/Chests.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/Chests.java
@@ -168,7 +168,7 @@ public class Chests extends AbstractNpcAI
 				}
 				else
 				{
-					L2Character originalCaster = isPet ? caster.getPet() : caster;
+					L2Character originalCaster = isPet ? caster.getSummon() : caster;
 					chest.setRunning();
 					chest.addDamageHate(originalCaster, 0, 999);
 					chest.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, originalCaster);
@@ -203,7 +203,7 @@ public class Chests extends AbstractNpcAI
 				{
 					// if this weren't a box, upon interaction start the mimic behaviors...
 					// todo: perhaps a self-buff (skill id 4245) with random chance goes here?
-					L2Character originalAttacker = isPet ? attacker.getPet() : attacker;
+					L2Character originalAttacker = isPet ? attacker.getSummon() : attacker;
 					chest.setRunning();
 					chest.addDamageHate(originalAttacker, 0, (damage * 100) / (chest.getLevel() + 7));
 					chest.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, originalAttacker);
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/FairyTrees.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/FairyTrees.java
index 1c3200adb2c2cfd0bb173a7d28a622c140f30670..c91863734097f6062049084737063ba5f6b7a2c4 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/FairyTrees.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/FairyTrees.java
@@ -56,7 +56,7 @@ public class FairyTrees extends AbstractNpcAI
 			for (int i = 0; i < 20; i++)
 			{
 				L2Attackable newNpc = (L2Attackable) addSpawn(27189, npc.getX(), npc.getY(), npc.getZ(), 0, false, 30000);
-				L2Character originalKiller = isPet ? killer.getPet() : killer;
+				L2Character originalKiller = isPet ? killer.getSummon() : killer;
 				newNpc.setRunning();
 				newNpc.addDamageHate(originalKiller, 0, 999);
 				newNpc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, originalKiller);
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/GiantScouts.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/GiantScouts.java
index 082d5bf6b970d2c32e29aa5ec90d4dc6ca05f7eb..98de660c670c4b3bf6900db906133ebe40aec3ea 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/GiantScouts.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/GiantScouts.java
@@ -51,7 +51,7 @@ public class GiantScouts extends AbstractNpcAI
 	@Override
 	public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isPet)
 	{
-		L2Character target = isPet ? player.getPet() : player;
+		L2Character target = isPet ? player.getSummon() : player;
 		
 		if (GeoData.getInstance().canSeeTarget(npc, target))
 		{
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/L2AttackableAIScript.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/L2AttackableAIScript.java
index 2a2cb3f5b28e3d8e1b9c315286e1677c9be0892c..6992e28f1a7c67620000bc7cdff58397efb751d6 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/L2AttackableAIScript.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/L2AttackableAIScript.java
@@ -75,9 +75,9 @@ public final class L2AttackableAIScript extends QuestJython
 		
 		int skillAggroPoints = skill.getAggroPoints();
 		
-		if (caster.getPet() != null)
+		if (caster.hasSummon())
 		{
-			if ((targets.length == 1) && Util.contains(targets, caster.getPet()))
+			if ((targets.length == 1) && Util.contains(targets, caster.getSummon()))
 			{
 				skillAggroPoints = 0;
 			}
@@ -92,7 +92,7 @@ public final class L2AttackableAIScript extends QuestJython
 				{
 					if ((npcTarget == skillTarget) || (npc == skillTarget))
 					{
-						L2Character originalCaster = isPet ? caster.getPet() : caster;
+						L2Character originalCaster = isPet ? caster.getSummon() : caster;
 						attackable.addDamageHate(originalCaster, 0, (skillAggroPoints * 150) / (attackable.getLevel() + 7));
 					}
 				}
@@ -110,7 +110,7 @@ public final class L2AttackableAIScript extends QuestJython
 			return null;
 		}
 		
-		L2Character originalAttackTarget = (isPet ? attacker.getPet() : attacker);
+		L2Character originalAttackTarget = (isPet ? attacker.getSummon() : attacker);
 		if (attacker.isInParty() && attacker.getParty().isInDimensionalRift())
 		{
 			byte riftType = attacker.getParty().getDimensionalRift().getType();
@@ -137,7 +137,7 @@ public final class L2AttackableAIScript extends QuestJython
 			return null;
 		}
 		
-		L2Character target = isPet ? player.getPet() : player;
+		L2Character target = isPet ? player.getSummon() : player;
 		
 		((L2Attackable) npc).addDamageHate(target, 0, 1);
 		
@@ -162,7 +162,7 @@ public final class L2AttackableAIScript extends QuestJython
 		{
 			L2Attackable attackable = (L2Attackable) npc;
 			
-			L2Character originalAttacker = isPet ? attacker.getPet() : attacker;
+			L2Character originalAttacker = isPet ? attacker.getSummon() : attacker;
 			attackable.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, originalAttacker);
 			attackable.addDamageHate(originalAttacker, damage, (damage * 100) / (attackable.getLevel() + 7));
 		}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PlainsOfLizardman.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PlainsOfLizardman.java
index e1a136628ff7beab2684574c203b6497118b22cc..fb8cf73e181a537884ba670793672af7bbfcc9d2 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PlainsOfLizardman.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PlainsOfLizardman.java
@@ -67,22 +67,22 @@ public class PlainsOfLizardman extends AbstractNpcAI
 		if ((player != null) && !player.isAlikeDead())
 		{
 			boolean isPet = false;
-			if (event.endsWith("_pet") && (player.getPet() != null) && !player.getPet().isDead())
+			if (event.endsWith("_pet") && player.hasSummon() && !player.getSummon().isDead())
 			{
 				isPet = true;
 			}
 			
 			if (event.startsWith("rainbow_frog"))
 			{
-				triggerSkill(npc, isPet ? player.getPet() : player, RAINBOW_FROG_SKILL, 1);
+				triggerSkill(npc, isPet ? player.getSummon() : player, RAINBOW_FROG_SKILL, 1);
 			}
 			else if (event.startsWith("energy_plant"))
 			{
-				triggerSkill(npc, isPet ? player.getPet() : player, ENERGY_PLANT_SKILL, 1);
+				triggerSkill(npc, isPet ? player.getSummon() : player, ENERGY_PLANT_SKILL, 1);
 			}
 			else if (event.startsWith("sticky_mushroom"))
 			{
-				triggerSkill(npc, isPet ? player.getPet() : player, STICKY_MUSHROOM_SKILL, 1);
+				triggerSkill(npc, isPet ? player.getSummon() : player, STICKY_MUSHROOM_SKILL, 1);
 			}
 			else if (event.startsWith("fantasy_mushroom"))
 			{
@@ -93,7 +93,7 @@ public class PlainsOfLizardman extends AbstractNpcAI
 					if ((target != null) && (target instanceof L2Attackable) && (target.getAI() != null))
 					{
 						skill.getEffects(npc, target);
-						attackPlayer((L2Attackable) target, isPet ? player.getPet() : player);
+						attackPlayer((L2Attackable) target, isPet ? player.getSummon() : player);
 					}
 				}
 				npc.doDie(player);
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PolymorphingOnAttack.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PolymorphingOnAttack.java
index ffd9da3546058c3f151c0f504ad19d1a69432289..b720bb30d58fc3165b8b920110bbbf2056548879 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PolymorphingOnAttack.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PolymorphingOnAttack.java
@@ -100,7 +100,7 @@ public class PolymorphingOnAttack extends AbstractNpcAI
 					}
 					npc.deleteMe();
 					L2Attackable newNpc = (L2Attackable) addSpawn(tmp.get(0), npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
-					L2Character originalAttacker = isPet ? attacker.getPet() : attacker;
+					L2Character originalAttacker = isPet ? attacker.getSummon() : attacker;
 					newNpc.setRunning();
 					newNpc.addDamageHate(originalAttacker, 0, 500);
 					newNpc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, originalAttacker);
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PrisonGuards.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PrisonGuards.java
index bd4c2aaa39fd7c112c651bdbd0d5bd59fc5a3313..68883cd3d1fa3b89f9f38fc3ec24a66c2734ba11 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PrisonGuards.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/PrisonGuards.java
@@ -134,7 +134,7 @@ public class PrisonGuards extends AbstractNpcAI
 	@Override
 	public String onSkillSee(L2Npc npc, L2PcInstance player, L2Skill skill, L2Object[] targets, boolean isPet)
 	{
-		L2Character caster = isPet ? player.getPet() : player;
+		L2Character caster = isPet ? player.getSummon() : player;
 		
 		if (npc.getNpcId() == GUARD2)
 		{
@@ -153,7 +153,7 @@ public class PrisonGuards extends AbstractNpcAI
 	@Override
 	public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isPet)
 	{
-		L2Character target = isPet ? player.getPet() : player;
+		L2Character target = isPet ? player.getSummon() : player;
 		
 		if (npc.getNpcId() == GUARD2)
 		{
@@ -187,7 +187,7 @@ public class PrisonGuards extends AbstractNpcAI
 	@Override
 	public String onAttack(L2Npc npc, L2PcInstance player, int damage, boolean isPet)
 	{
-		L2Character attacker = isPet ? player.getPet() : player;
+		L2Character attacker = isPet ? player.getSummon() : player;
 		
 		_firstAttacked = true;
 		
@@ -252,7 +252,7 @@ public class PrisonGuards extends AbstractNpcAI
 		L2Skill skill = SkillTable.getInstance().getInfo(effectId, isSpell ? 9 : 1);
 		if (skill != null)
 		{
-			npc.setTarget(isSummon ? player.getPet() : player);
+			npc.setTarget(isSummon ? player.getSummon() : player);
 			npc.doCast(skill);
 		}
 	}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SummonMinions.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SummonMinions.java
index d6d85ba8e7dd55e83949fefde66844048d4d9e9d..3da59e3c7d7e147ac0e72347a89352d502e5e986 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SummonMinions.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/SummonMinions.java
@@ -138,7 +138,7 @@ public class SummonMinions extends AbstractNpcAI
 				{
 					if (isPet)
 					{
-						attacker = (attacker).getPet().getOwner();
+						attacker = attacker.getSummon().getOwner();
 					}
 					if (attacker.getParty() != null)
 					{
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/DarkWaterDragon.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/DarkWaterDragon.java
index 35bf6db24415b7c4e79e142855d7633cbd407ee6..1a0566a1f6f14e482257b0b22bd6dbd4473cad9a 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/DarkWaterDragon.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/DarkWaterDragon.java
@@ -147,7 +147,7 @@ public class DarkWaterDragon extends AbstractNpcAI
 			{
 				MY_TRACKING_SET.add(npcObjId);
 				// Spawn first 5 shades on first attack on Dark Water Dragon
-				L2Character originalAttacker = isPet ? attacker.getPet() : attacker;
+				L2Character originalAttacker = isPet ? attacker.getSummon() : attacker;
 				spawnShade(originalAttacker, SHADE1, npc.getX() + 100, npc.getY() + 100, npc.getZ());
 				spawnShade(originalAttacker, SHADE2, npc.getX() + 100, npc.getY() - 100, npc.getZ());
 				spawnShade(originalAttacker, SHADE1, npc.getX() - 100, npc.getY() + 100, npc.getZ());
@@ -158,7 +158,7 @@ public class DarkWaterDragon extends AbstractNpcAI
 			{
 				SECOND_SPAWN.add(npcObjId);
 				// Spawn second 5 shades on half hp of on Dark Water Dragon
-				L2Character originalAttacker = isPet ? attacker.getPet() : attacker;
+				L2Character originalAttacker = isPet ? attacker.getSummon() : attacker;
 				spawnShade(originalAttacker, SHADE2, npc.getX() + 100, npc.getY() + 100, npc.getZ());
 				spawnShade(originalAttacker, SHADE1, npc.getX() + 100, npc.getY() - 100, npc.getZ());
 				spawnShade(originalAttacker, SHADE2, npc.getX() - 100, npc.getY() + 100, npc.getZ());
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/NecromancerValley.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/NecromancerValley.java
index 2e320ec7136b028c930a57895dc8fb9bd154f9ca..6867800c5f25a221c93e6f4d26022e9c337cfe28 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/NecromancerValley.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/NecromancerValley.java
@@ -45,7 +45,7 @@ public class NecromancerValley extends AbstractNpcAI
 	{
 		if (Rnd.get(100) < 20)
 		{
-			L2Character attacker = isPet ? killer.getPet() : killer;
+			L2Character attacker = isPet ? killer.getSummon() : killer;
 			L2Attackable Orc = (L2Attackable) addSpawn(EXPLODING_ORC_GHOST, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
 			Orc.setRunning();
 			Orc.addDamageHate(attacker, 0, 600);
@@ -65,7 +65,7 @@ public class NecromancerValley extends AbstractNpcAI
 	{
 		if (Rnd.get(100) < 1)
 		{
-			L2Character player = isPet ? attacker.getPet() : attacker;
+			L2Character player = isPet ? attacker.getSummon() : attacker;
 			L2Attackable Orc = (L2Attackable) addSpawn(EXPLODING_ORC_GHOST, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
 			Orc.setRunning();
 			Orc.addDamageHate(player, 0, 600);
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Orfen.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Orfen.java
index abc48c573a23bb943a44e3e7826e0021f680916b..eab6df8de80378547850eeabc8bd26a1de373674 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Orfen.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Orfen.java
@@ -241,7 +241,7 @@ public class Orfen extends AbstractNpcAI
 	{
 		if (npc.getNpcId() == ORFEN)
 		{
-			L2Character originalCaster = isPet ? caster.getPet() : caster;
+			L2Character originalCaster = isPet ? caster.getSummon() : caster;
 			if ((skill.getAggroPoints() > 0) && (getRandom(5) == 0) && npc.isInsideRadius(originalCaster, 1000, false, false))
 			{
 				NpcSay packet = new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getNpcId(), TEXT[getRandom(4)]);
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/QueenAnt.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/QueenAnt.java
index c83b23a59adad82cdb09e1ad625f50dfe16178bb..783e2cffddbcb60c330eaa4a764f36a4ce8e87b5 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/QueenAnt.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/QueenAnt.java
@@ -273,7 +273,7 @@ public class QueenAnt extends AbstractNpcAI
 		if (isPet)
 		{
 			isMage = false;
-			character = player.getPet();
+			character = player.getSummon();
 		}
 		else
 		{
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Zaken.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Zaken.java
index 63fc33b8b42fd6b4ba79564ffd9417b3b183fac9..94f714cb9908d878abf69367a53ba48eacb65d41 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Zaken.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Zaken.java
@@ -802,7 +802,7 @@ public class Zaken extends AbstractNpcAI
 					npc.doCast(SkillTable.getInstance().getInfo(4258, 1));
 				}
 			}
-			L2Character originalAttacker = isPet ? attacker.getPet() : attacker;
+			L2Character originalAttacker = isPet ? attacker.getSummon() : attacker;
 			int hate = (int) (((damage / npc.getMaxHp()) / 0.05) * 20000);
 			((L2Attackable) npc).addDamageHate(originalAttacker, 0, hate);
 			if (getRandom(10) < 1)
@@ -966,7 +966,7 @@ public class Zaken extends AbstractNpcAI
 		{
 			if (_Zone.isInsideZone(npc))
 			{
-				L2Character target = isPet ? player.getPet() : player;
+				L2Character target = isPet ? player.getSummon() : player;
 				((L2Attackable) npc).addDamageHate(target, 1, 200);
 			}
 			if ((player.getZ() > (npc.getZ() - 100)) && (player.getZ() < (npc.getZ() + 100)))
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java b/L2J_DataPack_BETA/dist/game/data/scripts/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java
index f47792424c2f71906e370ceceb77c48a4051729f..2aa4ae979beec015cae206bcfb0451b5a16e8979 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/conquerablehalls/RainbowSpringsChateau/RainbowSpringsChateau.java
@@ -719,9 +719,9 @@ public class RainbowSpringsChateau extends Quest
 			if (pc != null)
 			{
 				pc.stopAllEffects();
-				if (pc.getPet() != null)
+				if (pc.hasSummon())
 				{
-					pc.getPet().unSummon(pc);
+					pc.getSummon().unSummon(pc);
 				}
 				pc.teleToLocation(ARENAS[arena][0], ARENAS[arena][1], ARENAS[arena][2]);
 			}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/custom/IOPRace/IOPRace.java b/L2J_DataPack_BETA/dist/game/data/scripts/custom/IOPRace/IOPRace.java
index fce91a9a17e35eed3b357ffd18752352610a1055..3c5a5e7db28c4cbd0f9798d65efa863561230cc0 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/custom/IOPRace/IOPRace.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/custom/IOPRace/IOPRace.java
@@ -70,8 +70,8 @@ public class IOPRace extends Quest
 		{
 			// clean old data
 			player.stopSkillEffects(5239);
-			if (player.getPet() != null)
-				player.getPet().stopSkillEffects(5239);
+			if (player.hasSummon())
+				player.getSummon().stopSkillEffects(5239);
 			
 			st.takeItems(STAMP, -1);
 			st.set("1st", "0");
@@ -83,8 +83,8 @@ public class IOPRace extends Quest
 			if (skill != null)
 			{
 				skill.getEffects(npc, player);
-				if (player.getPet() != null)
-					skill.getEffects(npc, player.getPet());
+				if (player.hasSummon())
+					skill.getEffects(npc, player.getSummon());
 			}
 			
 			startQuestTimer("timer", 1800000, null, null); // 30 min
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/events/GiftOfVitality/GiftOfVitality.java b/L2J_DataPack_BETA/dist/game/data/scripts/events/GiftOfVitality/GiftOfVitality.java
index ef356c380a3a47b2d4e7f5c5edef9638515b9c92..f4b611bde10a986ef5ccf54d1b8bd9e4d0d22bbb 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/events/GiftOfVitality/GiftOfVitality.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/events/GiftOfVitality/GiftOfVitality.java
@@ -18,7 +18,6 @@ import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2ServitorInstance;
 import com.l2jserver.gameserver.model.quest.Quest;
 import com.l2jserver.gameserver.model.quest.QuestState;
 import com.l2jserver.gameserver.model.quest.State;
@@ -139,13 +138,13 @@ public class GiftOfVitality extends Quest
 			{
 				htmltext = "4306-nolevel.htm";
 			}
-			else if ((player.getPet() == null) || !(player.getPet() instanceof L2ServitorInstance))
+			else if (!player.hasSummon() || !player.getSummon().isServitor())
 			{
 				htmltext = "4306-nosummon.htm";
 			}
 			else
 			{
-				npc.setTarget(player.getPet());
+				npc.setTarget(player.getSummon());
 				npc.doCast(SkillTable.getInstance().getInfo(5627, 1)); // Wind Walk
 				npc.doCast(SkillTable.getInstance().getInfo(5628, 1)); // Shield
 				npc.doCast(SkillTable.getInstance().getInfo(5637, 1)); // Magic Barrier
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstance.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstance.java
index 2c3c7f163dc5508197ff3acf0e63feb59312628d..bc3deb44e19049a56b3f30d9f4e78ed70453b6a0 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstance.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminInstance.java
@@ -23,7 +23,6 @@ import com.l2jserver.gameserver.model.actor.L2Summon;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.entity.Instance;
 
-
 /**
  * @author evill33t, GodKratos
  */
@@ -105,11 +104,11 @@ public class AdminInstance implements IAdminCommandHandler
 					L2PcInstance player = (L2PcInstance) target;
 					player.sendMessage("Admin set your instance to:" + val);
 					player.teleToLocation(player.getX(), player.getY(), player.getZ());
-					L2Summon pet = player.getPet();
-					if (pet != null)
+					L2Summon pet = player.getSummon();
+					if (player.hasSummon())
 					{
-						pet.setInstanceId(val);
-						pet.teleToLocation(pet.getX(), pet.getY(), pet.getZ());
+						player.getSummon().setInstanceId(val);
+						player.getSummon().teleToLocation(player.getSummon().getLocation(), false);
 						player.sendMessage("Admin set " + pet.getName() + "'s instance to:" + val);
 					}
 				}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminRide.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminRide.java
index e91faed3d5ec2c18420a3b443fec7d7f967f21c9..3e35de8c0375476a3e70c1ed3bcfeaa59e99fe54 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminRide.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminRide.java
@@ -51,9 +51,9 @@ public class AdminRide implements IAdminCommandHandler
 		
 		if (command.startsWith("admin_ride"))
 		{		
-			if (player.isMounted() || player.getPet() != null)
+			if (player.isMounted() || player.hasSummon())
 			{
-				activeChar.sendMessage("Target already have a pet.");
+				activeChar.sendMessage("Target already have a summon.");
 				return false;
 			}
 			if (command.startsWith("admin_ride_wyvern"))
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/OlympiadManagerLink.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/OlympiadManagerLink.java
index 1dfbc87c833e92b6f2bcd3edf7fca9a9f3fe6dba..7378b2e6aee5a5331fe8c1e9dcc6cb5efae799fa 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/OlympiadManagerLink.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/OlympiadManagerLink.java
@@ -261,7 +261,7 @@ public class OlympiadManagerLink implements IBypassHandler
 						activeChar.olyBuff--;
 						target.broadcastPacket(new MagicSkillUse(target, activeChar, skill.getId(), skill.getLevel(), 0, 0));
 						skill.getEffects(activeChar, activeChar);
-						L2Summon summon = activeChar.getPet();
+						L2Summon summon = activeChar.getSummon();
 						if (summon != null)
 						{
 							target.broadcastPacket(new MagicSkillUse(target, summon, skill.getId(), skill.getLevel(), 0, 0));
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/RentPet.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/RentPet.java
index 79cbde70c07142709ff255cfed158a44ee37161e..00e9e72dd0a30ad52ba408ccd0ba9d0f3ace7054 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/RentPet.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/RentPet.java
@@ -78,7 +78,7 @@ public class RentPet implements IBypassHandler
 	
 	public static final void tryRentPet(L2PcInstance player, int val)
 	{
-		if ((player == null) || (player.getPet() != null) || player.isMounted() || player.isRentedPet() || player.isTransformed() || player.isCursedWeaponEquipped())
+		if ((player == null) || player.hasSummon() || player.isMounted() || player.isRentedPet() || player.isTransformed() || player.isCursedWeaponEquipped())
 		{
 			return;
 		}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/RideWyvern.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/RideWyvern.java
index 1ef9e690b6ccaf390bbaa8f1b864dbc0921ced57..edd45e73516dcde50bad37c3cbadeb5647039444 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/RideWyvern.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/RideWyvern.java
@@ -61,7 +61,7 @@ public class RideWyvern implements IBypassHandler
 			return false;
 		}
 		
-		if (activeChar.getPet() == null)
+		if (!activeChar.hasSummon())
 		{
 			if (activeChar.isMounted())
 			{
@@ -72,17 +72,17 @@ public class RideWyvern implements IBypassHandler
 				activeChar.sendMessage("Summon your Strider first.");
 			}
 		}
-		else if (Util.contains(STRIDERS, activeChar.getPet().getNpcId()))
+		else if (Util.contains(STRIDERS, activeChar.getSummon().getNpcId()))
 		{
 			if ((activeChar.getInventory().getItemByItemId(1460) != null) && (activeChar.getInventory().getItemByItemId(1460).getCount() >= 25))
 			{
-				if (activeChar.getPet().getLevel() < 55)
+				if (activeChar.getSummon().getLevel() < 55)
 				{
 					activeChar.sendMessage("Your Strider Has not reached the required level.");
 				}
 				else
 				{
-					activeChar.getPet().unSummon(activeChar);
+					activeChar.getSummon().unSummon(activeChar);
 					if (activeChar.mount(12621, 0, true))
 					{
 						activeChar.getInventory().destroyItemByItemId("Wyvern", 1460, 25, activeChar, npc);
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/SupportMagic.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/SupportMagic.java
index 3dd50c2cf918c54e9f03ad99a739a0d0d1936761..757f4e4ed2f31267731ff4ab62a52135dde64741 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/SupportMagic.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/bypasshandlers/SupportMagic.java
@@ -21,7 +21,6 @@ import com.l2jserver.gameserver.model.L2HelperBuff;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2ServitorInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 
@@ -87,13 +86,13 @@ public class SupportMagic implements IBypassHandler
 		
 		if (isSummon)
 		{
-			if ((player.getPet() == null) || !(player.getPet() instanceof L2ServitorInstance))
+			if (!player.hasSummon() || !player.getSummon().isServitor())
 			{
 				String content = "<html><body>Only servitors can receive this Support Magic. If you do not have a servitor, you cannot access these spells.</body></html>";
 				npc.insertObjectIdAndShowChatWindow(player, content);
 				return true;
 			}
-			npc.setTarget(player.getPet());
+			npc.setTarget(player.getSummon());
 		}
 		else
 		{
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java
index 3676671e5bfd33b78344f6b574884a67425aee1a..5cb9a1be0e374d9d7488adc5c17d4a1e274e5fb1 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ServitorShare.java
@@ -45,7 +45,7 @@ public class ServitorShare extends L2Effect
 		L2Effect[] effects = null;
 		if (getEffected().isPlayer())
 		{
-			L2Summon summon = getEffector().getPet();
+			L2Summon summon = getEffector().getSummon();
 			if (summon != null)
 			{
 				effects = summon.getAllEffects();
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SignetAntiSummon.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SignetAntiSummon.java
index edb04b81798aba38a0a661ad2e659ff9664bb4c1..caa8a4a7b2d952fda1d485cd6fe49979e08950f8 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SignetAntiSummon.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SignetAntiSummon.java
@@ -74,7 +74,7 @@ public class SignetAntiSummon extends L2Effect
 					else
 						owner = cha.getActingPlayer();
 					
-					if (owner != null && owner.getPet() != null)
+					if (owner != null && owner.hasSummon())
 					{
 						if (mpConsume > getEffector().getCurrentMp())
 						{
@@ -83,7 +83,7 @@ public class SignetAntiSummon extends L2Effect
 						}
 						
 						getEffector().reduceCurrentMp(mpConsume);
-						owner.getPet().unSummon(owner);
+						owner.getSummon().unSummon(owner);
 						owner.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, getEffector());
 					}
 				}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSoulShot.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSoulShot.java
index e43d6f85509a3cd922d72c51fa41eee8d4d13458..bc227d252d58c7043868da1734dbf074b05f0f12 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSoulShot.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSoulShot.java
@@ -19,7 +19,6 @@ import java.util.logging.Level;
 import com.l2jserver.gameserver.handler.IItemHandler;
 import com.l2jserver.gameserver.model.ShotType;
 import com.l2jserver.gameserver.model.actor.L2Playable;
-import com.l2jserver.gameserver.model.actor.L2Summon;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.holders.SkillHolder;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
@@ -42,23 +41,21 @@ public class BeastSoulShot implements IItemHandler
 			return false;
 		}
 		
-		L2PcInstance activeOwner = playable.getActingPlayer();
-		L2Summon activePet = activeOwner.getPet();
-		
-		if (activePet == null)
+		final L2PcInstance activeOwner = playable.getActingPlayer();
+		if (activeOwner.hasSummon())
 		{
 			activeOwner.sendPacket(SystemMessageId.PETS_ARE_NOT_AVAILABLE_AT_THIS_TIME);
 			return false;
 		}
 		
-		if (activePet.isDead())
+		if (activeOwner.getSummon().isDead())
 		{
 			activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_PET);
 			return false;
 		}
 		
 		final int itemId = item.getItemId();
-		final short shotConsumption = activePet.getSoulShotsPerHit();
+		final short shotConsumption = activeOwner.getSummon().getSoulShotsPerHit();
 		final long shotCount = item.getCount();
 		final SkillHolder[] skills = item.getItem().getSkills();
 		
@@ -78,7 +75,7 @@ public class BeastSoulShot implements IItemHandler
 			return false;
 		}
 		
-		if (activePet.isChargedShot(ShotType.SOULSHOTS))
+		if (activeOwner.getSummon().isChargedShot(ShotType.SOULSHOTS))
 		{
 			// SoulShots are already active.
 			return false;
@@ -96,9 +93,9 @@ public class BeastSoulShot implements IItemHandler
 		
 		// Pet uses the power of spirit.
 		activeOwner.sendPacket(SystemMessageId.PET_USE_SPIRITSHOT);
-		activePet.setChargedShot(ShotType.SOULSHOTS, true);
+		activeOwner.getSummon().setChargedShot(ShotType.SOULSHOTS, true);
 		
-		Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(activePet, activePet, skills[0].getSkillId(), skills[0].getSkillLvl(), 0, 0), 600);
+		Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(activeOwner.getSummon(), activeOwner.getSummon(), skills[0].getSkillId(), skills[0].getSkillLvl(), 0, 0), 600);
 		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpiritShot.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpiritShot.java
index 9043f8bbc4aa807e0e0c44e4bc2f0c0dc4fadc58..f1b298a8e90936620d39d4600c604edc73edcb7c 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpiritShot.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpiritShot.java
@@ -19,7 +19,6 @@ import java.util.logging.Level;
 import com.l2jserver.gameserver.handler.IItemHandler;
 import com.l2jserver.gameserver.model.ShotType;
 import com.l2jserver.gameserver.model.actor.L2Playable;
-import com.l2jserver.gameserver.model.actor.L2Summon;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.holders.SkillHolder;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
@@ -42,16 +41,14 @@ public class BeastSpiritShot implements IItemHandler
 			return false;
 		}
 		
-		L2PcInstance activeOwner = playable.getActingPlayer();
-		L2Summon activePet = activeOwner.getPet();
-		
-		if (activePet == null)
+		final L2PcInstance activeOwner = playable.getActingPlayer();
+		if (activeOwner.hasSummon())
 		{
 			activeOwner.sendPacket(SystemMessageId.PETS_ARE_NOT_AVAILABLE_AT_THIS_TIME);
 			return false;
 		}
 		
-		if (activePet.isDead())
+		if (activeOwner.getSummon().isDead())
 		{
 			activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_PET);
 			return false;
@@ -59,7 +56,7 @@ public class BeastSpiritShot implements IItemHandler
 		
 		final int itemId = item.getItemId();
 		final boolean isBlessed = ((itemId == 6647) || (itemId == 20334)); // TODO: Unhardcode these!
-		final short shotConsumption = activePet.getSpiritShotsPerHit();
+		final short shotConsumption = activeOwner.getSummon().getSpiritShotsPerHit();
 		final SkillHolder[] skills = item.getItem().getSkills();
 		
 		if (skills == null)
@@ -79,7 +76,7 @@ public class BeastSpiritShot implements IItemHandler
 			return false;
 		}
 		
-		if (activePet.isChargedShot(isBlessed ? ShotType.BLESSED_SPIRITSHOTS : ShotType.SPIRITSHOTS))
+		if (activeOwner.getSummon().isChargedShot(isBlessed ? ShotType.BLESSED_SPIRITSHOTS : ShotType.SPIRITSHOTS))
 		{
 			// shots are already active.
 			return false;
@@ -96,9 +93,9 @@ public class BeastSpiritShot implements IItemHandler
 		
 		// Pet uses the power of spirit.
 		activeOwner.sendPacket(SystemMessageId.PET_USE_SPIRITSHOT);
-		activePet.setChargedShot(isBlessed ? ShotType.BLESSED_SPIRITSHOTS : ShotType.SPIRITSHOTS, true);
+		activeOwner.getSummon().setChargedShot(isBlessed ? ShotType.BLESSED_SPIRITSHOTS : ShotType.SPIRITSHOTS, true);
 		
-		Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(activePet, activePet, skills[0].getSkillId(), skills[0].getSkillLvl(), 0, 0), 600);
+		Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(activeOwner.getSummon(), activeOwner.getSummon(), skills[0].getSkillId(), skills[0].getSkillLvl(), 0, 0), 600);
 		return true;
 	}
 }
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java
index 6a3ea8a10711d1ae2e177b33b753dc5ef3613ee1..7377867211f56cb6b5d6659597c3966f6d95b75f 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java
@@ -153,9 +153,9 @@ public class ItemSkillsTemplate implements IItemHandler
 				{
 					playable.doSimultaneousCast(itemSkill);
 					// Summons should be affected by herbs too, self time effect is handled at L2Effect constructor
-					if (!playable.isSummon() && (activeChar.getPet() != null))
+					if (!playable.isSummon() && activeChar.hasSummon())
 					{
-						activeChar.getPet().doSimultaneousCast(itemSkill);
+						activeChar.getSummon().doSimultaneousCast(itemSkill);
 					}
 				}
 				else
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java
index 9aa08875ff89a13283d707eef225fa2d9600e3a6..36292cf0265fd87beb1b3ba72598fa923229e6a6 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java
@@ -12,12 +12,6 @@
  * You should have received a copy of the GNU General Public License along with
  * this program. If not, see <http://www.gnu.org/licenses/>.
  */
-
-/**
- *
- * @author FBIagent
- *
- */
 package handlers.itemhandlers;
 
 import java.util.logging.Level;
@@ -42,8 +36,10 @@ import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
 import com.l2jserver.gameserver.network.serverpackets.PetItemList;
 import com.l2jserver.gameserver.network.serverpackets.SetupGauge;
 import com.l2jserver.gameserver.util.Broadcast;
+
 /**
  * UnAfraid: TODO: Rewrite me :D
+ * @author FBIagent
  */
 public class SummonItems implements IItemHandler
 {
@@ -57,12 +53,15 @@ public class SummonItems implements IItemHandler
 		}
 		
 		if (!TvTEvent.onItemSummon(playable.getObjectId()))
+		{
 			return false;
+		}
 		
-		final L2PcInstance activeChar = (L2PcInstance) playable;
-		
+		final L2PcInstance activeChar = playable.getActingPlayer();
 		if (!activeChar.getFloodProtectors().getItemPetSummon().tryPerformAction("summon items"))
+		{
 			return false;
+		}
 		
 		if (activeChar.isSitting())
 		{
@@ -71,22 +70,28 @@ public class SummonItems implements IItemHandler
 		}
 		
 		if (activeChar.getBlockCheckerArena() != -1)
+		{
 			return false;
+		}
 		
 		if (activeChar.inObserverMode())
+		{
 			return false;
+		}
 		
 		if (activeChar.isInOlympiadMode())
 		{
 			activeChar.sendPacket(SystemMessageId.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT);
 			return false;
 		}
+		
 		if (activeChar.isAllSkillsDisabled() || activeChar.isCastingNow())
+		{
 			return false;
+		}
 		
 		final L2SummonItem sitem = SummonItemsData.getInstance().getSummonItem(item.getItemId());
-		
-		if ((activeChar.getPet() != null || activeChar.isMounted()) && sitem.isPetSummon())
+		if ((activeChar.hasSummon() || activeChar.isMounted()) && sitem.isPetSummon())
 		{
 			activeChar.sendPacket(SystemMessageId.YOU_ALREADY_HAVE_A_PET);
 			return false;
@@ -100,11 +105,15 @@ public class SummonItems implements IItemHandler
 		
 		final int npcId = sitem.getNpcId();
 		if (npcId == 0)
+		{
 			return false;
+		}
 		
 		final L2NpcTemplate npcTemplate = NpcTable.getInstance().getTemplate(npcId);
 		if (npcTemplate == null)
+		{
 			return false;
+		}
 		
 		activeChar.stopMove(null, false);
 		
@@ -126,7 +135,9 @@ public class SummonItems implements IItemHandler
 						npc.setTitle(activeChar.getName());
 						npc.setIsRunning(false); // broadcast info
 						if (sitem.getDespawnDelay() > 0)
+						{
 							npc.scheduleDespawn(sitem.getDespawnDelay() * 1000L);
+						}
 					}
 				}
 				catch (Exception e)
@@ -155,7 +166,7 @@ public class SummonItems implements IItemHandler
 		return true;
 	}
 	
-	static class PetSummonFeedWait implements Runnable
+	private static class PetSummonFeedWait implements Runnable
 	{
 		private final L2PcInstance _activeChar;
 		private final L2PetInstance _petSummon;
@@ -172,9 +183,13 @@ public class SummonItems implements IItemHandler
 			try
 			{
 				if (_petSummon.getCurrentFed() <= 0)
+				{
 					_petSummon.unSummon(_activeChar);
+				}
 				else
+				{
 					_petSummon.startFeed();
+				}
 			}
 			catch (Exception e)
 			{
@@ -184,13 +199,13 @@ public class SummonItems implements IItemHandler
 	}
 	
 	// TODO: this should be inside skill handler
-	static class PetSummonFinalizer implements Runnable
+	private static class PetSummonFinalizer implements Runnable
 	{
 		private final L2PcInstance _activeChar;
 		private final L2ItemInstance _item;
 		private final L2NpcTemplate _npcTemplate;
 		
-		PetSummonFinalizer(L2PcInstance activeChar, L2NpcTemplate npcTemplate, L2ItemInstance item)
+		protected PetSummonFinalizer(L2PcInstance activeChar, L2NpcTemplate npcTemplate, L2ItemInstance item)
 		{
 			_activeChar = activeChar;
 			_npcTemplate = npcTemplate;
@@ -206,46 +221,55 @@ public class SummonItems implements IItemHandler
 				_activeChar.setIsCastingNow(false);
 				
 				// check for summon item validity
-				if (_item == null || _item.getOwnerId() != _activeChar.getObjectId() || _item.getLocation() != L2ItemInstance.ItemLocation.INVENTORY)
+				if ((_item == null) || (_item.getOwnerId() != _activeChar.getObjectId()) || (_item.getLocation() != L2ItemInstance.ItemLocation.INVENTORY))
+				{
 					return;
+				}
 				
-				final L2PetInstance petSummon = L2PetInstance.spawnPet(_npcTemplate, _activeChar, _item);
-				if (petSummon == null)
+				final L2PetInstance pet = L2PetInstance.spawnPet(_npcTemplate, _activeChar, _item);
+				if (pet == null)
+				{
 					return;
+				}
 				
-				petSummon.setShowSummonAnimation(true);
-				petSummon.setTitle(_activeChar.getName());
+				pet.setShowSummonAnimation(true);
+				pet.setTitle(_activeChar.getName());
 				
-				if (!petSummon.isRespawned())
+				if (!pet.isRespawned())
 				{
-					petSummon.setCurrentHp(petSummon.getMaxHp());
-					petSummon.setCurrentMp(petSummon.getMaxMp());
-					petSummon.getStat().setExp(petSummon.getExpForThisLevel());
-					petSummon.setCurrentFed(petSummon.getMaxFed());
+					pet.setCurrentHp(pet.getMaxHp());
+					pet.setCurrentMp(pet.getMaxMp());
+					pet.getStat().setExp(pet.getExpForThisLevel());
+					pet.setCurrentFed(pet.getMaxFed());
 				}
 				
-				petSummon.setRunning();
+				pet.setRunning();
 				
-				if (!petSummon.isRespawned())
-					petSummon.store();
+				if (!pet.isRespawned())
+				{
+					pet.store();
+				}
 				
-				_activeChar.setPet(petSummon);
+				_activeChar.setPet(pet);
 				
 				// JIV remove - done on spawn
-				// L2World.getInstance().storeObject(petSummon);
-				petSummon.spawnMe(_activeChar.getX() + 50, _activeChar.getY() + 100, _activeChar.getZ());
-				petSummon.startFeed();
-				_item.setEnchantLevel(petSummon.getLevel());
+				pet.spawnMe(_activeChar.getX() + 50, _activeChar.getY() + 100, _activeChar.getZ());
+				pet.startFeed();
+				_item.setEnchantLevel(pet.getLevel());
 				
-				if (petSummon.getCurrentFed() <= 0)
-					ThreadPoolManager.getInstance().scheduleGeneral(new PetSummonFeedWait(_activeChar, petSummon), 60000);
+				if (pet.getCurrentFed() <= 0)
+				{
+					ThreadPoolManager.getInstance().scheduleGeneral(new PetSummonFeedWait(_activeChar, pet), 60000);
+				}
 				else
-					petSummon.startFeed();
+				{
+					pet.startFeed();
+				}
 				
-				petSummon.setFollowStatus(true);
+				pet.setFollowStatus(true);
 				
-				petSummon.sendPacket(new PetItemList(petSummon));
-				petSummon.broadcastStatusUpdate();
+				pet.sendPacket(new PetItemList(pet.getInventory().getItems()));
+				pet.broadcastStatusUpdate();
 			}
 			catch (Exception e)
 			{
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Continuous.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Continuous.java
index 115914be5bb4f1edf2a8c6646b43df97575c63e6..2ff9f95eea3f56b263d673f2da79e4f5c4b3d809 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Continuous.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Continuous.java
@@ -153,11 +153,11 @@ public class Continuous implements ISkillHandler
 				else
 				{
 					L2Effect[] effects = skill.getEffects(activeChar, target, new Env(shld, ss, sps, bss));
-					L2Summon summon = target.getPet();
+					L2Summon summon = target.getSummon();
 					if (summon != null && summon != activeChar && summon.isServitor() && effects.length > 0)
 					{
 						if (effects[0].canBeStolen() || skill.isHeroSkill() || skill.isStatic())
-							skill.getEffects(activeChar, target.getPet(), new Env(shld, ss, sps, bss));
+							skill.getEffects(activeChar, target.getSummon(), new Env(shld, ss, sps, bss));
 					}
 				}
 				
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Disablers.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Disablers.java
index 2f07ecfad7a8c6ae48702ee5f833b9abc0b3b83f..e956c9cd9d34d81b16cb8c7bd09de51faad37426 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Disablers.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Disablers.java
@@ -306,7 +306,7 @@ public class Disablers implements ISkillHandler
 					if (Formulas.calcSkillSuccess(activeChar, target, skill, shld, ss, sps, bss) && !(target instanceof L2SiegeSummonInstance))
 					{
 						final L2PcInstance summonOwner = ((L2Summon) target).getOwner();
-						final L2Summon summon = summonOwner.getPet();
+						final L2Summon summon = summonOwner.getSummon();
 						if (summon != null)
 						{
 							// TODO: Retail confirmation for Soul of the Phoenix required.
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetAlly.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetAlly.java
index 640b03fea859419784e3f196e337f3343d383cd3..f1dc9eac69370e52599bf053d9254ba3fd185b5f 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetAlly.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetAlly.java
@@ -55,7 +55,7 @@ public class TargetAlly implements ITargetTypeHandler
 			final int radius = skill.getSkillRadius();
 			
 			if (L2Skill.addSummon(activeChar, player, radius, false))
-				targetList.add(player.getPet());
+				targetList.add(player.getSummon());
 			
 			if (player.getClan() != null)
 			{
@@ -85,7 +85,7 @@ public class TargetAlly implements ITargetTypeHandler
 						continue;
 					
 					if (!onlyFirst && L2Skill.addSummon(activeChar, obj, radius, false))
-						targetList.add(obj.getPet());
+						targetList.add(obj.getSummon());
 					
 					if (!L2Skill.addCharacter(activeChar, obj, radius, false))
 						continue;
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetAreaSummon.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetAreaSummon.java
index 301a1afe4c8a69cf7242689591e3b16457f58609..a8edd7d3646ab5d3151fa9395d4cd716aaccfaa0 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetAreaSummon.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetAreaSummon.java
@@ -39,7 +39,7 @@ public class TargetAreaSummon implements ITargetTypeHandler
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
 		List<L2Character> targetList = new FastList<>();
-		target = activeChar.getPet();
+		target = activeChar.getSummon();
 		if (target == null || !(target instanceof L2ServitorInstance) || target.isDead())
 			return _emptyTargetList;
 		
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetClan.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetClan.java
index 6cb1928b7dc034274c584f9276b4c07a4cb8951b..ecf9f40cba345de73ff6f3487214088d15e09fec 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetClan.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetClan.java
@@ -60,7 +60,7 @@ public class TargetClan implements ITargetTypeHandler
 			final L2Clan clan = player.getClan();
 			
 			if (L2Skill.addSummon(activeChar, player, radius, false))
-				targetList.add(player.getPet());
+				targetList.add(player.getSummon());
 			
 			if (clan != null)
 			{
@@ -88,7 +88,7 @@ public class TargetClan implements ITargetTypeHandler
 						continue;
 					
 					if (!onlyFirst && L2Skill.addSummon(activeChar, obj, radius, false))
-						targetList.add(obj.getPet());
+						targetList.add(obj.getSummon());
 					
 					if (!L2Skill.addCharacter(activeChar, obj, radius, false))
 						continue;
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetCorpseAlly.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetCorpseAlly.java
index 807c80915a10fff00801e31bd4d4f2757d2eec20..97afbcd52a696fddd63e6775d20bcffea5b969d0 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetCorpseAlly.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetCorpseAlly.java
@@ -52,7 +52,7 @@ public class TargetCorpseAlly implements ITargetTypeHandler
 			final int radius = skill.getSkillRadius();
 			
 			if (L2Skill.addSummon(activeChar, player, radius, true))
-				targetList.add(player.getPet());
+				targetList.add(player.getSummon());
 			
 			if (player.getClan() != null)
 			{
@@ -85,7 +85,7 @@ public class TargetCorpseAlly implements ITargetTypeHandler
 							continue;
 						
 						if (!onlyFirst && L2Skill.addSummon(activeChar, obj, radius, true))
-							targetList.add(obj.getPet());
+							targetList.add(obj.getSummon());
 						
 						if (!L2Skill.addCharacter(activeChar, obj, radius, true))
 							continue;
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetCorpseClan.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetCorpseClan.java
index c7eee870db9a532ec8719c132bfaade495712d16..bbc0d0bd3ce0e9a197abb112974417b0a272b2f6 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetCorpseClan.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetCorpseClan.java
@@ -57,7 +57,7 @@ public class TargetCorpseClan implements ITargetTypeHandler
 			final L2Clan clan = player.getClan();
 			
 			if (L2Skill.addSummon(activeChar, player, radius, true))
-				targetList.add(player.getPet());
+				targetList.add(player.getSummon());
 			
 			if (clan != null)
 			{
@@ -85,7 +85,7 @@ public class TargetCorpseClan implements ITargetTypeHandler
 						continue;
 					
 					if (!onlyFirst && L2Skill.addSummon(activeChar, obj, radius, true))
-						targetList.add(obj.getPet());
+						targetList.add(obj.getSummon());
 					
 					if (!L2Skill.addCharacter(activeChar, obj, radius, true))
 						continue;
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetCorpsePet.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetCorpsePet.java
index ee97e3eb7a6b7d74e8896c86857802d2f96efcf0..4503d1faec71a13f3e47db9c8e452f3a31da87aa 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetCorpsePet.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetCorpsePet.java
@@ -31,7 +31,7 @@ public class TargetCorpsePet implements ITargetTypeHandler
 	{
 		if (activeChar instanceof L2PcInstance)
 		{
-			target = activeChar.getPet();
+			target = activeChar.getSummon();
 			if (target != null && target.isDead())
 				return new L2Character[] { target };
 		}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetEnemySummon.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetEnemySummon.java
index e28788a4bffa63f66d48171cdeac1abcaa848ada..c75e87d563a619c9d671bda7198656061990f2bc 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetEnemySummon.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetEnemySummon.java
@@ -34,7 +34,7 @@ public class TargetEnemySummon implements ITargetTypeHandler
 		if(target instanceof L2Summon)
 		{
 			L2Summon targetSummon = (L2Summon)target;
-			if (activeChar instanceof L2PcInstance && activeChar.getPet() != targetSummon && !targetSummon.isDead()
+			if (activeChar instanceof L2PcInstance && activeChar.getSummon() != targetSummon && !targetSummon.isDead()
 					&& (targetSummon.getOwner().getPvpFlag() != 0 || targetSummon.getOwner().getKarma() > 0)
 					|| (targetSummon.getOwner().isInsideZone(ZoneId.PVP) && ((L2PcInstance)activeChar).isInsideZone(ZoneId.PVP))
 					|| (targetSummon.getOwner().isInDuel() && ((L2PcInstance)activeChar).isInDuel() && targetSummon.getOwner().getDuelId() == ((L2PcInstance)activeChar).getDuelId()))
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetParty.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetParty.java
index b5d94a9a4d0b6609963881ac7286cfe65dcafe1a..9f7e46887ee6ea9c1c1a6575fa336b27133a0a93 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetParty.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetParty.java
@@ -51,7 +51,7 @@ public class TargetParty implements ITargetTypeHandler
 		else if (activeChar instanceof L2PcInstance)
 		{
 			if (L2Skill.addSummon(activeChar, player, radius, false))
-				targetList.add(player.getPet());
+				targetList.add(player.getSummon());
 		}
 		
 		if (activeChar.isInParty())
@@ -69,7 +69,7 @@ public class TargetParty implements ITargetTypeHandler
 					targetList.add(partyMember);
 				
 				if (L2Skill.addSummon(activeChar, partyMember, radius, false))
-					targetList.add(partyMember.getPet());
+					targetList.add(partyMember.getSummon());
 			}
 		}
 		return targetList.toArray(new L2Character[targetList.size()]);
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPartyClan.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPartyClan.java
index df0a20bbf952f95eaac084478079fa05a4debf6e..97db1273d555f84bc9594f69c8f01dd7ee60a018 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPartyClan.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPartyClan.java
@@ -51,7 +51,7 @@ public class TargetPartyClan implements ITargetTypeHandler
 		final boolean hasParty = player.isInParty();
 		
 		if (L2Skill.addSummon(activeChar, player, radius, false))
-			targetList.add(player.getPet());
+			targetList.add(player.getSummon());
 		
 		// if player in clan and not in party
 		if (!(hasClan || hasParty))
@@ -96,7 +96,7 @@ public class TargetPartyClan implements ITargetTypeHandler
 				continue;
 			
 			if (!onlyFirst && L2Skill.addSummon(activeChar, obj, radius, false))
-				targetList.add(obj.getPet());
+				targetList.add(obj.getSummon());
 			
 			if (!L2Skill.addCharacter(activeChar, obj, radius, false))
 				continue;
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPartyMember.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPartyMember.java
index 918273c88700818eee197f864843b5e4907123e2..03872f9728985feb776712ea03dfd8a93823dcf4 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPartyMember.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPartyMember.java
@@ -38,8 +38,8 @@ public class TargetPartyMember implements ITargetTypeHandler
 		{
 			if ((target == activeChar) ||
 				(activeChar.isInParty() && target.isInParty() && (activeChar.getParty().getLeaderObjectId() == target.getParty().getLeaderObjectId())) ||
-				(activeChar.isPlayer() && target.isSummon() && (activeChar.getPet() == target)) ||
-				(activeChar.isSummon() && target.isPlayer() && (activeChar == target.getPet())))
+				(activeChar.isPlayer() && target.isSummon() && (activeChar.getSummon() == target)) ||
+				(activeChar.isSummon() && target.isPlayer() && (activeChar == target.getSummon())))
 			{
 				return new L2Character[] { target };
 			}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPartyNotMe.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPartyNotMe.java
index 2fe13c01701382f80f1f74df11c7bff4a184d6bc..dfa87f048e9b0195911b3aa73d77d5e0cc6d6179 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPartyNotMe.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPartyNotMe.java
@@ -49,8 +49,8 @@ public class TargetPartyNotMe implements ITargetTypeHandler
 		else if (activeChar instanceof L2PcInstance)
 		{
 			player = (L2PcInstance) activeChar;
-			if (activeChar.getPet() != null)
-				targetList.add(activeChar.getPet());
+			if (activeChar.getSummon() != null)
+				targetList.add(activeChar.getSummon());
 		}
 		
 		if (activeChar.getParty() != null)
@@ -70,9 +70,9 @@ public class TargetPartyNotMe implements ITargetTypeHandler
 					
 					targetList.add(partyMember);
 					
-					if (partyMember.getPet() != null && !partyMember.getPet().isDead())
+					if (partyMember.getSummon() != null && !partyMember.getSummon().isDead())
 					{
-						targetList.add(partyMember.getPet());
+						targetList.add(partyMember.getSummon());
 					}
 				}
 			}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPet.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPet.java
index 40cfaa9df321884655f407432e76221292c50eb1..ee53b9f2569eb484595726c5fdbd826c08662c53 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPet.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetPet.java
@@ -28,7 +28,7 @@ public class TargetPet implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		target = activeChar.getPet();
+		target = activeChar.getSummon();
 		if (target != null && !target.isDead())
 			return new L2Character[] { target };
 		
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetSummon.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetSummon.java
index 46440930c1f1889a5d5048e1286c7933cc6c17b4..49bf1dd817175af074f5665539416cc05ab940d5 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetSummon.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/targethandlers/TargetSummon.java
@@ -17,7 +17,6 @@ package handlers.targethandlers;
 import com.l2jserver.gameserver.handler.ITargetTypeHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2ServitorInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.targets.L2TargetType;
 
@@ -29,8 +28,8 @@ public class TargetSummon implements ITargetTypeHandler
 	@Override
 	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target)
 	{
-		target = activeChar.getPet();
-		if (target != null && !target.isDead() && target instanceof L2ServitorInstance)
+		target = activeChar.getSummon();
+		if (target != null && !target.isDead() && target.isServitor())
 			return new L2Character[] { target };
 		
 		return _emptyTargetList;
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/usercommandhandlers/Mount.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/usercommandhandlers/Mount.java
index a8147014213f856a5bf12aa496e2433f418dc9e9..aebdbf5dc8b1c271b9b089ef6bc28b34466e3eac 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/usercommandhandlers/Mount.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/usercommandhandlers/Mount.java
@@ -34,7 +34,7 @@ public class Mount implements IUserCommandHandler
 		if (id != COMMAND_IDS[0])
 			return false;
 		
-		return activeChar.mountPlayer(activeChar.getPet());
+		return activeChar.mountPlayer(activeChar.getSummon());
 	}
 	
 	@Override
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/instances/CrystalCaverns/CrystalCaverns.java b/L2J_DataPack_BETA/dist/game/data/scripts/instances/CrystalCaverns/CrystalCaverns.java
index ee42ff1cb5ab60164255686c8c032df62cdaf720..7e76a437262f0aaa10f02442657c0363f8cecf87 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/instances/CrystalCaverns/CrystalCaverns.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/instances/CrystalCaverns/CrystalCaverns.java
@@ -592,7 +592,7 @@ public class CrystalCaverns extends Quest
 		player.breakAttack();
 		player.breakCast();
 		player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
-		L2Summon pet = player.getPet();
+		L2Summon pet = player.getSummon();
 		if (pet != null)
 		{
 			pet.setTarget(null);
@@ -1100,8 +1100,8 @@ public class CrystalCaverns extends Quest
 				{
 					p.setIsParalyzed(false);
 					Throw(npc, p);
-					if (p.getPet() != null)
-						Throw(npc, p.getPet());
+					if (p.getSummon() != null)
+						Throw(npc, p.getSummon());
 				}
 				world._raidStatus = 0;
 				for (L2Npc mob : world._animationMobs)
@@ -1701,7 +1701,7 @@ public class CrystalCaverns extends Quest
 					int x = (int) (radius * Math.cos(i * 2 * Math.PI / members));
 					int y = (int) (radius * Math.sin(i++ * 2 * Math.PI / members));
 					p.teleToLocation(153571 + x, 142075 + y, -12737);
-					L2Summon pet = p.getPet();
+					L2Summon pet = p.getSummon();
 					if (pet != null)
 					{
 						pet.teleToLocation(153571 + x, 142075 + y, -12737, true);
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/instances/FinalEmperialTomb/FinalEmperialTomb.java b/L2J_DataPack_BETA/dist/game/data/scripts/instances/FinalEmperialTomb/FinalEmperialTomb.java
index 59c3dfc5deadee2a9d96fec71b7ba973bfeaf8e9..6a975c49522b4dab5a67a66ed5e7e6f3c914ef97 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/instances/FinalEmperialTomb/FinalEmperialTomb.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/instances/FinalEmperialTomb/FinalEmperialTomb.java
@@ -930,9 +930,9 @@ public class FinalEmperialTomb extends Quest
 									{
 										targetList.add(player);
 									}
-									if ((player.getPet() != null) && !player.getPet().isDead())
+									if (player.hasSummon() && !player.getSummon().isDead())
 									{
-										targetList.add(player.getPet());
+										targetList.add(player.getSummon());
 									}
 								}
 							}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/instances/Kamaloka/Kamaloka.java b/L2J_DataPack_BETA/dist/game/data/scripts/instances/Kamaloka/Kamaloka.java
index 65f4bd44be46a604c45512d6fd085c3618ac086d..afd8278c7c4d2150f5146599310b86dbb3ff1a53 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/instances/Kamaloka/Kamaloka.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/instances/Kamaloka/Kamaloka.java
@@ -522,9 +522,9 @@ public class Kamaloka extends Quest
 				continue;
 			e.exit();
 		}
-		if (ch.getPet() != null)
+		if (ch.getSummon() != null)
 		{
-			for (L2Effect e : ch.getPet().getAllEffects())
+			for (L2Effect e : ch.getSummon().getAllEffects())
 			{
 				if (e == null)
 					continue;
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/instances/NornilsGarden/NornilsGarden.java b/L2J_DataPack_BETA/dist/game/data/scripts/instances/NornilsGarden/NornilsGarden.java
index 130b019a02637f4acc01ed7869343db65f97ded5..9d628c6e8958a329226df8c4c934206bd5f47918 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/instances/NornilsGarden/NornilsGarden.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/instances/NornilsGarden/NornilsGarden.java
@@ -250,10 +250,10 @@ public class NornilsGarden extends Quest
 		}
 		removeBuffs(player);
 		giveBuffs(player);
-		if (player.getPet() != null)
+		if (player.hasSummon())
 		{
-			removeBuffs(player.getPet());
-			giveBuffs(player.getPet());
+			removeBuffs(player.getSummon());
+			giveBuffs(player.getSummon());
 		}
 		player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
 		player.setInstanceId(instanceId);
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/instances/Pailaka/PailakaDevilsLegacy.java b/L2J_DataPack_BETA/dist/game/data/scripts/instances/Pailaka/PailakaDevilsLegacy.java
index 0cd03e64da92963e3d377af975e2ab407685a757..4ae5a9c44ebeabd9b7deef02048c7e7ae4ad4f6c 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/instances/Pailaka/PailakaDevilsLegacy.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/instances/Pailaka/PailakaDevilsLegacy.java
@@ -431,7 +431,7 @@ public class PailakaDevilsLegacy extends Quest
 				}
 				return "32501-01.htm";
 			case ADVENTURER1:
-				if (player.getPet() == null)
+				if (!player.hasSummon())
 				{
 					if (st.hasQuestItems(SWORD))
 					{
@@ -466,7 +466,7 @@ public class PailakaDevilsLegacy extends Quest
 				}
 				return "32508-07.htm";
 			case ADVENTURER2:
-				if (player.getPet() == null)
+				if (!player.hasSummon())
 				{
 					st.unset("cond");
 					st.playSound("ItemSound.quest_finish");
@@ -515,7 +515,7 @@ public class PailakaDevilsLegacy extends Quest
 						{
 							if (isPet)
 							{
-								attackPlayer((L2Attackable) npc, attacker.getPet());
+								attackPlayer((L2Attackable) npc, attacker.getSummon());
 							}
 							else
 							{
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/instances/SecretArea/SecretArea.java b/L2J_DataPack_BETA/dist/game/data/scripts/instances/SecretArea/SecretArea.java
index 3017892a95b00f63cf600394f63b3e99fb01b519..10aa8da1a11e7d24eb1bb3e288f591510690f868 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/instances/SecretArea/SecretArea.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/instances/SecretArea/SecretArea.java
@@ -55,11 +55,11 @@ public class SecretArea extends Quest
 		player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
 		player.setInstanceId(instanceId);
 		player.teleToLocation(loc, false);
-		if (player.getPet() != null)
+		if (player.hasSummon())
 		{
-			player.getPet().getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
-			player.getPet().setInstanceId(instanceId);
-			player.getPet().teleToLocation(loc, false);
+			player.getSummon().getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
+			player.getSummon().setInstanceId(instanceId);
+			player.getSummon().teleToLocation(loc, false);
 		}
 	}
 	
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/230_TestOfSummoner/__init__.py b/L2J_DataPack_BETA/dist/game/data/scripts/quests/230_TestOfSummoner/__init__.py
index fa3734e869601c39490941ed54e249f92e7b7d34..8c0e94cb84fca40f125d5e6919cddf28ddf9386b 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/230_TestOfSummoner/__init__.py
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/230_TestOfSummoner/__init__.py
@@ -112,7 +112,7 @@ class Quest (JQuest) :
       JQuest.__init__(self,id,name,descr)
       self.questItemIds = range(3337,3390)
       # list to hold the player and pet instance of the player in the duel and an "isFoul" flag, indexed by npcId 
-      self.inProgressDuelMobs = {} # [player, player.getPet(), True/False]
+      self.inProgressDuelMobs = {} # [player, player.getSummon(), True/False]
 
    def onAdvEvent (self,event,npc, player) :
       htmltext = event
@@ -288,7 +288,7 @@ class Quest (JQuest) :
    def onDeath(self,killer,deadPerson,st) :               # if players summon dies, the crystal of defeat is given to the player and set stat to lose
       if not isinstance(killer, L2Attackable): return
       npcId = killer.getNpcId()
-##      if (deadPerson == st.getPlayer() or deadPerson = st.getPlayer().getPet()) and npcId in DROPLIST_SUMMON.keys() :
+##      if (deadPerson == st.getPlayer() or deadPerson = st.getPlayer().getSummon()) and npcId in DROPLIST_SUMMON.keys() :
       if npcId in DROPLIST_SUMMON.keys() :
          st.getPlayer().removeNotifyQuestOfDeath(st)
          # var means the variable of the SummonerManager, the rest are all Crystalls wich mark the status
@@ -312,12 +312,12 @@ class Quest (JQuest) :
             # if not, mark this as a foul.
             if not isPet :
                self.inProgressDuelMobs[npcId][2] = True
-            elif player.getPet() != self.inProgressDuelMobs[npcId][1] :
+            elif player.getSummon() != self.inProgressDuelMobs[npcId][1] :
                self.inProgressDuelMobs[npcId][2] = True
          # if the npc had never before been attacked, check if it's time to mark a duel in progress
          elif not st : return
          elif st.getState() != State.STARTED : return
-         elif not isPet and st.getInt(var) == 2: self.inProgressDuelMobs[npcId] = [player, player.getPet(), True] # foul
+         elif not isPet and st.getInt(var) == 2: self.inProgressDuelMobs[npcId] = [player, player.getSummon(), True] # foul
          else :
             # var means the variable of the SummonerManager, the rest are all Crystalls which mark the status
             if st.getInt(var) == 2:
@@ -325,7 +325,7 @@ class Quest (JQuest) :
                st.giveItems(progress,1)
                st.takeItems(start,1)
                st.playSound("ItemSound.quest_itemget")
-               self.inProgressDuelMobs[npcId] = [player, player.getPet(), False] #mark the attack
+               self.inProgressDuelMobs[npcId] = [player, player.getSummon(), False] #mark the attack
       return
 
    def onKill(self,npc,player,isPet):
@@ -351,7 +351,7 @@ class Quest (JQuest) :
          # If the attacker is the pet of a player who is doing the quest, mark it as a valid hit.
          if not self.inProgressDuelMobs.has_key(npcId) and isPet and st :
             if st.getInt(var) == 2:
-               self.inProgressDuelMobs[npcId] = [player, player.getPet(), False]
+               self.inProgressDuelMobs[npcId] = [player, player.getSummon(), False]
 
          # if the killed mob is now in the progress list, there is work to be done...
          if self.inProgressDuelMobs.has_key(npcId) :
@@ -359,7 +359,7 @@ class Quest (JQuest) :
             # if not, mark this as a foul.
             if not isPet :
                self.inProgressDuelMobs[npcId][2] = True
-            elif player.getPet() != self.inProgressDuelMobs[npcId][1] :
+            elif player.getSummon() != self.inProgressDuelMobs[npcId][1] :
                self.inProgressDuelMobs[npcId][2] = True
 
             # if a foul has NOT occured, give the player the victory crystal
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/421_LittleWingAdventures/__init__.py b/L2J_DataPack_BETA/dist/game/data/scripts/quests/421_LittleWingAdventures/__init__.py
index b97eb06b8fd2732a36a2398b839671f316b6c56f..521cac194625f3733952636164baea232af0f155 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/421_LittleWingAdventures/__init__.py
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/421_LittleWingAdventures/__init__.py
@@ -96,14 +96,14 @@ class Quest (JQuest) :
          st.exitQuest(1)
          htmltext = "30610-06.htm"
    elif event == "30747-02.htm" :
-      summon = player.getPet()
+      summon = player.getSummon()
       if summon :
          if summon.getControlItem().getObjectId() == st.getInt("summonOid"):
             htmltext = "30747-04.htm"
          else :
             htmltext = "30747-03.htm"
    elif event == "30747-05.htm" :
-      summon = player.getPet()
+      summon = player.getSummon()
       if summon :
          if summon.getControlItem().getObjectId() == st.getInt("summonOid"):
             htmltext = "30747-05.htm"
@@ -159,7 +159,7 @@ class Quest (JQuest) :
             st.set("id","2")
             htmltext = "30747-01.htm"
          elif st.getInt("id") == 2 :
-            summon = player.getPet()
+            summon = player.getSummon()
             if summon :
                if summon.getControlItem().getObjectId() == st.getInt("summonOid"):
                   htmltext = "30747-04.htm"
@@ -172,7 +172,7 @@ class Quest (JQuest) :
          elif st.getInt("id") > 0 and st.getInt("id") < 15 and st.getQuestItemsCount(FT_LEAF) >= 1 :
             htmltext = "30747-11.htm"
          elif st.getInt("id") == 15 and st.getQuestItemsCount(FT_LEAF) == 0 :
-            summon = player.getPet()
+            summon = player.getSummon()
             if summon :
                if summon.getControlItem().getObjectId() == st.getInt("summonOid"):
                   st.set("id","16")
@@ -182,7 +182,7 @@ class Quest (JQuest) :
             else :
                htmltext = "30747-12.htm"
          elif st.getInt("id") == 16:
-            summon = player.getPet()
+            summon = player.getSummon()
             if summon :
                htmltext = "30747-15.htm"
             elif (st.getQuestItemsCount(3500) + st.getQuestItemsCount(3501) + st.getQuestItemsCount(3502)) == 1 :
@@ -247,7 +247,7 @@ class Quest (JQuest) :
       if pc == player and mobId == npcId:
          return
    if isPet and st.getInt("id") < 16:
-      pet = player.getPet()
+      pet = player.getSummon()
       if self.getRandom(100) <= 2 and st.getQuestItemsCount(FT_LEAF) >= 0:
          st.takeItems(FT_LEAF,1)
          st.playSound("ItemSound.quest_middle")
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/422_RepentYourSins/__init__.py b/L2J_DataPack_BETA/dist/game/data/scripts/quests/422_RepentYourSins/__init__.py
index 84b543ba46c031e9e862e24f7f87df94c9eb1fa3..fd4f4b0f6df95fde53f7442b423a6ffceffc6b1e 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/422_RepentYourSins/__init__.py
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/422_RepentYourSins/__init__.py
@@ -29,7 +29,7 @@ TYRANT_KINGPIN = 20193
 TRISALIM_TARANTULA = 20561
 
 def findPetLvl (player, itemid) :
-    pet = player.getPet()
+    pet = player.getSummon()
     if pet:
         if pet.getNpcId() == 12564 :
             level = pet.getStat().getLevel()
@@ -85,7 +85,7 @@ class Quest (JQuest) :
         plevel = findPetLvl(player,PENITENTS_MANACLES)
         level = player.getLevel()
         olevel = st.getInt("level")
-        pet = player.getPet()
+        pet = player.getSummon()
         if pet:
             if pet.getNpcId() == 12564 :
                 htmltext = "30981-16.htm"
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00511_AwlUnderFoot/Q00511_AwlUnderFoot.java b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00511_AwlUnderFoot/Q00511_AwlUnderFoot.java
index fb38ad65d18c2cb632e4c49ebbab99655fcd7b14..591a54ec793433e0f2d6555be0934f55404939e9 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00511_AwlUnderFoot/Q00511_AwlUnderFoot.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00511_AwlUnderFoot/Q00511_AwlUnderFoot.java
@@ -386,7 +386,7 @@ public final class Q00511_AwlUnderFoot extends Quest
 	@Override
 	public String onAttack(L2Npc npc, L2PcInstance player, int damage, boolean isPet)
 	{
-		L2Playable attacker = (isPet ? player.getPet() : player);
+		L2Playable attacker = (isPet ? player.getSummon() : player);
 		if ((attacker.getLevel() - npc.getLevel()) >= 9)
 		{
 			if ((attacker.getBuffCount() > 0) || (attacker.getDanceCount() > 0))
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/transformations/DemonRace.java b/L2J_DataPack_BETA/dist/game/data/scripts/transformations/DemonRace.java
index 6561887c478dc2d613e9eaf960f248287f56ee5f..8139fcd135bd2ef9fe00583945e703e488421273 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/transformations/DemonRace.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/transformations/DemonRace.java
@@ -42,9 +42,9 @@ public class DemonRace extends L2Transformation
 			return;
 		}
 		
-		if (getPlayer().getPet() != null)
+		if (getPlayer().hasSummon())
 		{
-			getPlayer().getPet().unSummon(getPlayer());
+			getPlayer().getSummon().unSummon(getPlayer());
 		}
 		
 		transformedSkills();
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/transformations/DivineSummoner.java b/L2J_DataPack_BETA/dist/game/data/scripts/transformations/DivineSummoner.java
index e18182316f575a2fce665dc1a98a4f5fe8c40f8c..078ce6a2f8b63f8bdf83e5891a417f4f5e813b10 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/transformations/DivineSummoner.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/transformations/DivineSummoner.java
@@ -39,9 +39,9 @@ public class DivineSummoner extends L2Transformation
 			return;
 		}
 		
-		if (getPlayer().getPet() != null)
+		if (getPlayer().hasSummon())
 		{
-			getPlayer().getPet().unSummon(getPlayer());
+			getPlayer().getSummon().unSummon(getPlayer());
 		}
 		
 		transformedSkills();
@@ -70,9 +70,9 @@ public class DivineSummoner extends L2Transformation
 	@Override
 	public void onUntransform()
 	{
-		if (getPlayer().getPet() != null)
+		if (getPlayer().hasSummon())
 		{
-			getPlayer().getPet().unSummon(getPlayer());
+			getPlayer().getSummon().unSummon(getPlayer());
 		}
 		
 		removeSkills();
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/transformations/MyoRace.java b/L2J_DataPack_BETA/dist/game/data/scripts/transformations/MyoRace.java
index 37d51995de30f06418bee572037dbd10b070753f..2750882ea25f3b11a203400d86ed34de3cf88869 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/transformations/MyoRace.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/transformations/MyoRace.java
@@ -42,9 +42,9 @@ public class MyoRace extends L2Transformation
 			return;
 		}
 		
-		if (getPlayer().getPet() != null)
+		if (getPlayer().hasSummon())
 		{
-			getPlayer().getPet().unSummon(getPlayer());
+			getPlayer().getSummon().unSummon(getPlayer());
 		}
 		
 		transformedSkills();
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/transformations/Unicorniun.java b/L2J_DataPack_BETA/dist/game/data/scripts/transformations/Unicorniun.java
index f0a7b27a9f98f5905b50c045850e47e7dd520188..8076ca12aefe4a316582e21e5297d8bad5c066d0 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/transformations/Unicorniun.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/transformations/Unicorniun.java
@@ -42,9 +42,9 @@ public class Unicorniun extends L2Transformation
 			return;
 		}
 		
-		if (getPlayer().getPet() != null)
+		if (getPlayer().hasSummon())
 		{
-			getPlayer().getPet().unSummon(getPlayer());
+			getPlayer().getSummon().unSummon(getPlayer());
 		}
 		
 		transformedSkills();
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/vehicles/AirShipController.java b/L2J_DataPack_BETA/dist/game/data/scripts/vehicles/AirShipController.java
index d21c38b38b7c01e5183d8734839b36ac52920872..e22efe5447e74d1a6be9f55aca33e8ea7a2abf17 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/vehicles/AirShipController.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/vehicles/AirShipController.java
@@ -201,7 +201,7 @@ public abstract class AirShipController extends Quest
 				player.sendPacket(SystemMessageId.YOU_CANNOT_BOARD_AN_AIRSHIP_WHILE_HOLDING_A_FLAG);
 				return null;
 			}
-			else if ((player.getPet() != null) || player.isMounted())
+			else if (player.hasSummon() || player.isMounted())
 			{
 				player.sendPacket(SystemMessageId.YOU_CANNOT_BOARD_AN_AIRSHIP_WHILE_A_PET_OR_A_SERVITOR_IS_SUMMONED);
 				return null;
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java b/L2J_DataPack_BETA/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java
index 595cc4fe703d5147f545fb7400f9ee58b09b7150..116cdb7921e6428c4610ddf59941aebd6dc37820 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/vehicles/AirShipGludioGracia/AirShipGludioGracia.java
@@ -158,7 +158,7 @@ public class AirShipGludioGracia extends Quest implements Runnable
 			player.sendPacket(SystemMessageId.YOU_CANNOT_BOARD_AN_AIRSHIP_WHILE_HOLDING_A_FLAG);
 			return null;
 		}
-		else if (player.getPet() != null || player.isMounted())
+		else if (player.hasSummon() || player.isMounted())
 		{
 			player.sendPacket(SystemMessageId.YOU_CANNOT_BOARD_AN_AIRSHIP_WHILE_A_PET_OR_A_SERVITOR_IS_SUMMONED);
 			return null;