Преглед на файлове

BETA: New methods and minor changes:
* hasPet() return true if the player has a summon and the summon is a pet.
* hasServitor() return true if the player has a summon and the summon is a servitor.
* New target type SERVITOR, for servitors.
* Target type SUMMON, changed to be used for summons, either pets or servitors.
* Added retail like TargetType enumerated for future use.

Zoey76 преди 12 години
родител
ревизия
d76df7e219
променени са 17 файла, в които са добавени 84 реда и са изтрити 20 реда
  1. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/ai/AbstractAI.java
  2. 4 4
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Attackable.java
  3. 18 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Character.java
  4. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2NpcBufferInstance.java
  5. 3 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
  6. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/stat/PcStat.java
  7. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/status/PcStatus.java
  8. 1 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/olympiad/AbstractOlympiadGame.java
  9. 1 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/skills/targets/L2TargetType.java
  10. 45 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/skills/targets/TargetType.java
  11. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2OlympiadStadiumZone.java
  12. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestGetItemFromPet.java
  13. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestGiveItemToPet.java
  14. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestPetGetItem.java
  15. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestPetUseItem.java
  16. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/util/Broadcast.java
  17. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/util/Evolve.java

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/ai/AbstractAI.java

@@ -688,7 +688,7 @@ public abstract class AbstractAI implements Ctrl
 		}
 		if (!isAutoAttacking())
 		{
-			if ((_actor instanceof L2PcInstance) && ((L2PcInstance) _actor).hasSummon())
+			if (_actor.isPlayer() && _actor.hasSummon())
 			{
 				_actor.getSummon().broadcastPacket(new AutoAttackStart(_actor.getSummon().getObjectId()));
 			}

+ 4 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Attackable.java

@@ -664,8 +664,8 @@ public class L2Attackable extends L2Npc
 					
 					// Penalty applied to the attacker's XP
 					penalty = 0;
-					// If this attacker is a L2PcInstance with a summoned L2ServitorInstance, get Exp Penalty applied for the current summoned L2SummonInstance
-					if (attacker.isPlayer() && attacker.hasSummon() && attacker.getSummon().isServitor())
+					// If this attacker is a player with a servitor, get Exp Penalty applied for the servitor.
+					if (attacker.isPlayer() && attacker.hasServitor())
 					{
 						penalty = ((L2ServitorInstance) attacker.getSummon()).getExpPenalty();
 					}
@@ -682,7 +682,7 @@ public class L2Attackable extends L2Npc
 						// Calculate Exp and SP rewards
 						if (attacker.getKnownList().knowsObject(this))
 						{
-							// Calculate the difference of level between this attacker (L2PcInstance or L2ServitorInstance owner) and the L2Attackable
+							// Calculate the difference of level between this attacker (player or servitor owner) and the L2Attackable
 							// mob = 24, atk = 10, diff = -14 (full xp)
 							// mob = 24, atk = 28, diff = 4 (some xp)
 							// mob = 24, atk = 50, diff = 26 (no xp)
@@ -799,7 +799,7 @@ public class L2Attackable extends L2Npc
 								}
 							}
 							
-							if (pl.hasSummon() && pl.getSummon().isPet())
+							if (pl.hasPet())
 							{
 								final L2Summon summon = pl.getSummon();
 								reward2 = rewards.get(summon);

+ 18 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Character.java

@@ -1645,6 +1645,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder
 				break;
 			case SELF:
 			case PET:
+			case SERVITOR:
 			case SUMMON:
 			case OWNER_PET:
 			case PARTY:
@@ -2691,11 +2692,27 @@ public abstract class L2Character extends L2Object implements ISkillsHolder
 	/**
 	 * @return {@code true} if the character has a summon, {@code false} otherwise
 	 */
-	public boolean hasSummon()
+	public final boolean hasSummon()
 	{
 		return getSummon() != null;
 	}
 	
+	/**
+	 * @return {@code true} if the character has a pet, {@code false} otherwise
+	 */
+	public final boolean hasPet()
+	{
+		return hasSummon() && getSummon().isPet();
+	}
+	
+	/**
+	 * @return {@code true} if the character has a servitor, {@code false} otherwise
+	 */
+	public final boolean hasServitor()
+	{
+		return hasSummon() && getSummon().isServitor();
+	}
+	
 	public final boolean isRooted()
 	{
 		return isAffected(EffectFlag.ROOTED);

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2NpcBufferInstance.java

@@ -94,7 +94,7 @@ public class L2NpcBufferInstance extends L2Npc
 		L2Character target = player;
 		if (command.startsWith("Pet"))
 		{
-			if (!player.hasSummon())
+			if (!player.hasSummon()) // TODO: Should be hasPet() ?
 			{
 				player.sendPacket(SystemMessageId.DONT_HAVE_PET);
 				showChatWindow(player, 0); // 0 = main window

+ 3 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -9372,6 +9372,7 @@ public final class L2PcInstance extends L2Playable
 				target = this;
 				break;
 			case PET:
+			case SERVITOR:
 			case SUMMON:
 				target = getSummon();
 				break;
@@ -9616,6 +9617,7 @@ public final class L2PcInstance extends L2Playable
 			switch (sklTargetType)
 			{
 				case PET:
+				case SERVITOR:
 				case SUMMON:
 				case AURA:
 				case FRONT_AURA:
@@ -11267,7 +11269,7 @@ public final class L2PcInstance extends L2Playable
 			_charges.set(0);
 			stopChargeTask();
 			
-			if (hasSummon() && getSummon().isServitor())
+			if (hasServitor())
 			{
 				getSummon().unSummon(this);
 			}

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/stat/PcStat.java

@@ -152,7 +152,7 @@ public class PcStat extends PlayableStat
 		float ratioTakenByPlayer = 0;
 		
 		// if this player has a pet and it is in his range he takes from the owner's Exp, give the pet Exp now
-		if (activeChar.hasSummon() && activeChar.getSummon().isPet() && Util.checkIfInShortRadius(Config.ALT_PARTY_RANGE, activeChar, activeChar.getSummon(), false))
+		if (activeChar.hasPet() && Util.checkIfInShortRadius(Config.ALT_PARTY_RANGE, activeChar, activeChar.getSummon(), false))
 		{
 			L2PetInstance pet = (L2PetInstance) activeChar.getSummon();
 			ratioTakenByPlayer = pet.getPetLevelData().getOwnerExpTaken() / 100f;
@@ -289,7 +289,7 @@ public class PcStat extends PlayableStat
 		}
 		
 		// Synchronize level with pet if possible.
-		if (getActiveChar().hasSummon() && getActiveChar().getSummon().isPet())
+		if (getActiveChar().hasPet())
 		{
 			final L2PetInstance pet = (L2PetInstance) getActiveChar().getSummon();
 			if (pet.getPetData().isSynchLevel() && (pet.getLevel() != getLevel()))

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/status/PcStatus.java

@@ -148,7 +148,7 @@ public class PcStatus extends PlayableStatus
 			
 			// Check and calculate transfered damage
 			final L2Summon summon = getActiveChar().getSummon();
-			if (getActiveChar().hasSummon() && summon.isServitor() && Util.checkIfInRange(1000, getActiveChar(), summon, true))
+			if (getActiveChar().hasServitor() && Util.checkIfInRange(1000, getActiveChar(), summon, true))
 			{
 				tDmg = ((int) value * (int) getActiveChar().getStat().calcStat(Stats.TRANSFER_DAMAGE_PERCENT, 0, null, null)) / 100;
 				

+ 1 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/olympiad/AbstractOlympiadGame.java

@@ -35,7 +35,6 @@ import com.l2jserver.gameserver.model.Location;
 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.actor.instance.L2PetInstance;
 import com.l2jserver.gameserver.model.entity.TvTEvent;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.model.quest.Quest;
@@ -270,7 +269,7 @@ public abstract class AbstractOlympiadGame
 				summon.abortAttack();
 				summon.abortCast();
 				
-				if (summon instanceof L2PetInstance)
+				if (summon.isPet())
 				{
 					summon.unSummon(player);
 				}

+ 1 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/skills/targets/L2TargetType.java

@@ -55,6 +55,7 @@ public enum L2TargetType
 	PARTY_OTHER,
 	PET,
 	SELF,
+	SERVITOR,
 	SUMMON,
 	UNDEAD,
 	UNLOCKABLE

+ 45 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/skills/targets/TargetType.java

@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2004-2013 L2J Server
+ * 
+ * This file is part of L2J Server.
+ * 
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.model.skills.targets;
+
+/**
+ * Target type enumerated.
+ * @author Zoey76
+ */
+public enum TargetType
+{
+	ADVANCE_BASE,
+	ARTILLERY,
+	DOOR_TREASURE,
+	ENEMY,
+	ENEMY_NOT,
+	ENEMY_ONLY,
+	FORTRESS_FLAGPOLE,
+	GROUND,
+	HOLYTHING,
+	ITEM,
+	NONE,
+	NPC_BODY,
+	OTHERS,
+	PC_BODY,
+	SELF,
+	SUMMON,
+	TARGET,
+	WYVERN_TARGET;
+}

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2OlympiadStadiumZone.java

@@ -188,7 +188,7 @@ public class L2OlympiadStadiumZone extends L2ZoneRespawn
 				else
 				{
 					// check for pet
-					if (player.hasSummon() && player.getSummon().isPet())
+					if (player.hasPet())
 					{
 						player.getSummon().unSummon(player);
 					}

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestGetItemFromPet.java

@@ -48,7 +48,7 @@ public final class RequestGetItemFromPet extends L2GameClientPacket
 	protected void runImpl()
 	{
 		final L2PcInstance player = getClient().getActiveChar();
-		if ((player == null) || !player.hasSummon() || !player.getSummon().isPet())
+		if ((player == null) || !player.hasPet())
 		{
 			return;
 		}

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestGiveItemToPet.java

@@ -46,7 +46,7 @@ public final class RequestGiveItemToPet extends L2GameClientPacket
 	protected void runImpl()
 	{
 		final L2PcInstance player = getClient().getActiveChar();
-		if ((player == null) || !player.hasSummon() || !player.getSummon().isPet())
+		if ((player == null) || !player.hasPet())
 		{
 			return;
 		}

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestPetGetItem.java

@@ -43,7 +43,7 @@ public final class RequestPetGetItem extends L2GameClientPacket
 	{
 		L2World world = L2World.getInstance();
 		L2ItemInstance item = (L2ItemInstance) world.findObject(_objectId);
-		if ((item == null) || (getActiveChar() == null) || !getActiveChar().hasSummon() || !getActiveChar().getSummon().isPet())
+		if ((item == null) || (getActiveChar() == null) || !getActiveChar().hasPet())
 		{
 			sendPacket(ActionFailed.STATIC_PACKET);
 			return;

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestPetUseItem.java

@@ -46,7 +46,7 @@ public final class RequestPetUseItem extends L2GameClientPacket
 	protected void runImpl()
 	{
 		final L2PcInstance activeChar = getClient().getActiveChar();
-		if ((activeChar == null) || !activeChar.hasSummon() || !activeChar.getSummon().isPet())
+		if ((activeChar == null) || !activeChar.hasPet())
 		{
 			return;
 		}

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/util/Broadcast.java

@@ -93,7 +93,7 @@ public final class Broadcast
 					if ((oldrelation != null) && (oldrelation != relation))
 					{
 						player.sendPacket(new RelationChanged((L2PcInstance) character, relation, character.isAutoAttackable(player)));
-						if (((L2PcInstance) character).hasSummon())
+						if (character.hasSummon())
 						{
 							player.sendPacket(new RelationChanged(character.getSummon(), relation, character.isAutoAttackable(player)));
 						}

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/util/Evolve.java

@@ -53,7 +53,7 @@ public final class Evolve
 			return false;
 		}
 		
-		if (!player.hasSummon() || !player.getSummon().isPet())
+		if (!player.hasPet())
 		{
 			return false;
 		}