2
0
Эх сурвалжийг харах

Allowing pet jewels to be equipped by pets. Thx Kerberos

GodKratos 16 жил өмнө
parent
commit
94dfb60817

+ 28 - 12
L2_GameServer/java/net/sf/l2j/gameserver/datatables/ItemTable.java

@@ -500,19 +500,35 @@ public class ItemTable
 		
 		if (item.type == L2ArmorType.PET)
 		{
-			item.set.set("type1", L2Item.TYPE1_SHIELD_ARMOR);
-			if (item.set.getInteger("bodypart") == L2Item.SLOT_WOLF)
-				item.set.set("type2", L2Item.TYPE2_PET_WOLF);
-			else if (item.set.getInteger("bodypart") == L2Item.SLOT_GREATWOLF)
-				item.set.set("type2", L2Item.TYPE2_PET_GREATWOLF);
-			else if (item.set.getInteger("bodypart") == L2Item.SLOT_HATCHLING)
-				item.set.set("type2", L2Item.TYPE2_PET_HATCHLING);
-			else if (item.set.getInteger("bodypart") == L2Item.SLOT_BABYPET)
-				item.set.set("type2", L2Item.TYPE2_PET_BABY);
+			if (bodypart == L2Item.SLOT_NECK)
+			{
+				item.set.set("type1", L2Item.TYPE1_WEAPON_RING_EARRING_NECKLACE);
+				item.set.set("type2", L2Item.TYPE2_ACCESSORY);
+				item.set.set("bodypart", L2Item.SLOT_NECK);
+			}
 			else
-				item.set.set("type2", L2Item.TYPE2_PET_STRIDER);
-			
-			item.set.set("bodypart", L2Item.SLOT_CHEST);
+			{
+				item.set.set("type1", L2Item.TYPE1_SHIELD_ARMOR);
+				switch (item.set.getInteger("bodypart"))
+				{
+					case L2Item.SLOT_WOLF:
+						item.set.set("type2", L2Item.TYPE2_PET_WOLF);
+						break;
+					case L2Item.SLOT_GREATWOLF:
+						item.set.set("type2", L2Item.TYPE2_PET_GREATWOLF);
+						break;
+					case L2Item.SLOT_HATCHLING:
+						item.set.set("type2", L2Item.TYPE2_PET_HATCHLING);
+						break;
+					case L2Item.SLOT_BABYPET:
+						item.set.set("type2", L2Item.TYPE2_PET_BABY);
+						break;
+					default:
+						item.set.set("type2", L2Item.TYPE2_PET_STRIDER);
+						break;
+				}
+				item.set.set("bodypart", L2Item.SLOT_CHEST);
+			}
 		}
 		
 		return item;

+ 15 - 5
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestPetUseItem.java

@@ -27,6 +27,8 @@ import net.sf.l2j.gameserver.network.SystemMessageId;
 import net.sf.l2j.gameserver.network.serverpackets.PetInfo;
 import net.sf.l2j.gameserver.network.serverpackets.PetItemList;
 import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
+import net.sf.l2j.gameserver.templates.item.L2ArmorType;
+import net.sf.l2j.gameserver.templates.item.L2Item;
 
 public final class RequestPetUseItem extends L2GameClientPacket
 {
@@ -80,6 +82,14 @@ public final class RequestPetUseItem extends L2GameClientPacket
 		//check if the item matches the pet
 		if (item.isEquipable())
 		{
+			if (item.getItem().getBodyPart() == L2Item.SLOT_NECK)
+			{
+				if (item.getItem().getItemType() == L2ArmorType.PET)
+				{
+					useItem(pet, item, activeChar);
+					return;
+				}
+			}
 			if (L2PetDataTable.isWolf(pet.getNpcId()) && // wolf
                     item.getItem().isForWolf())
 			{
@@ -87,31 +97,31 @@ public final class RequestPetUseItem extends L2GameClientPacket
 				return;
 			}
             else if (L2PetDataTable.isGreatWolf(pet.getNpcId()) && // Greatwolf
-                    item.getItem().isForGreatWolf())
+                    (item.getItem().isForGreatWolf()||item.getItem().isForWolf()))
             {
                 useItem(pet, item, activeChar);
                 return;
             }
             else if (L2PetDataTable.isWGreatWolf(pet.getNpcId()) && // White Greatwolf
-                    item.getItem().isForGreatWolf())
+            		(item.getItem().isForGreatWolf()||item.getItem().isForWolf()))
             {
                 useItem(pet, item, activeChar);
                 return;
             }
             else if (L2PetDataTable.isBlackWolf(pet.getNpcId()) && // Blackwolf
-                    item.getItem().isForGreatWolf())
+            		(item.getItem().isForGreatWolf()||item.getItem().isForWolf()))
             {
                 useItem(pet, item, activeChar);
                 return;
             }
             else if (L2PetDataTable.isFenrirWolf(pet.getNpcId()) && // Fenrir
-                    item.getItem().isForGreatWolf())
+            		(item.getItem().isForGreatWolf()||item.getItem().isForWolf()))
             {
                 useItem(pet, item, activeChar);
                 return;
             }
             else if (L2PetDataTable.isWFenrirWolf(pet.getNpcId()) && // white fenrir
-                    item.getItem().isForGreatWolf())
+            		(item.getItem().isForGreatWolf()||item.getItem().isForWolf()))
             {
                 useItem(pet, item, activeChar);
                 return;

+ 5 - 3
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/UseItem.java

@@ -17,6 +17,8 @@ package net.sf.l2j.gameserver.network.clientpackets;
 import java.util.logging.Logger;
 
 import net.sf.l2j.Config;
+import net.sf.l2j.gameserver.GameTimeController;
+import net.sf.l2j.gameserver.ThreadPoolManager;
 import net.sf.l2j.gameserver.handler.IItemHandler;
 import net.sf.l2j.gameserver.handler.ItemHandler;
 import net.sf.l2j.gameserver.instancemanager.CastleManager;
@@ -30,12 +32,11 @@ import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
 import net.sf.l2j.gameserver.network.serverpackets.ItemList;
 import net.sf.l2j.gameserver.network.serverpackets.ShowCalculator;
 import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
+import net.sf.l2j.gameserver.templates.item.L2Armor;
 import net.sf.l2j.gameserver.templates.item.L2ArmorType;
 import net.sf.l2j.gameserver.templates.item.L2Item;
 import net.sf.l2j.gameserver.templates.item.L2Weapon;
 import net.sf.l2j.gameserver.templates.item.L2WeaponType;
-import net.sf.l2j.gameserver.GameTimeController;
-import net.sf.l2j.gameserver.ThreadPoolManager;
 import net.sf.l2j.gameserver.util.FloodProtector;
 
 /**
@@ -262,7 +263,8 @@ public final class UseItem extends L2GameClientPacket
 			}
 
 			// Char cannot use pet items
-			if (item.getItem().isForWolf() || item.getItem().isForGreatWolf() || item.getItem().isForHatchling() || item.getItem().isForStrider() || item.getItem().isForBabyPet())
+			if ((item.getItem() instanceof L2Armor && item.getItem().getItemType() == L2ArmorType.PET)
+					 || (item.getItem() instanceof L2Weapon && item.getItem().getItemType() == L2WeaponType.PET) )
 			{
 				SystemMessage sm = new SystemMessage(SystemMessageId.CANNOT_EQUIP_PET_ITEM); // You cannot equip a pet item.
 				sm.addItemName(item);