Kaynağa Gözat

We dont need to send system message at checkItemRestriction() for item conditions.
Cloak have other system message than the one for the item condition when cloak get unequipped after you remove an item set.

Charus 15 yıl önce
ebeveyn
işleme
5bdb1ecf91

+ 44 - 39
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java

@@ -13126,47 +13126,52 @@ public final class L2PcInstance extends L2Playable
 		return true;	
 	}
 
-    public void gatesRequest(L2DoorInstance door)
-    {
-    	_gatesRequest.setTarget(door);
-    }
+	public void gatesRequest(L2DoorInstance door)
+	{
+		_gatesRequest.setTarget(door);
+	}
 
+	public void gatesAnswer(int answer, int type)
+	{
+		if (_gatesRequest.getDoor() == null)
+			return;
 
-    public void gatesAnswer(int answer, int type)
-    {
-    	if (_gatesRequest.getDoor() == null)
-    		return;
-    	if (answer == 1 && getTarget() == _gatesRequest.getDoor() && type == 1)
-    	{
-    		_gatesRequest.getDoor().openMe();
-    	}
-    	else if (answer == 1 && getTarget() == _gatesRequest.getDoor() && type == 0)
-    	{
-    		_gatesRequest.getDoor().closeMe();
-    	}
-    	_gatesRequest.setTarget(null);
-    }
-    
-    @Override
-    public void setIsCastingNow(boolean value)
-    {
-    	if (value == false)
-    	{
-    		_currentSkill = null;
-    	}
-    	super.setIsCastingNow(value);
-    }
-    public void checkItemRestriction()
-    {
-    	for (int i = 0; i < Inventory.PAPERDOLL_TOTALSLOTS; i++)
-    	{
-    		L2ItemInstance equippedItem = getInventory().getPaperdollItem(i);
-    		if (equippedItem != null && !equippedItem.getItem().checkCondition(this, this))
-    		{
+		if (answer == 1 && getTarget() == _gatesRequest.getDoor() && type == 1)
+			_gatesRequest.getDoor().openMe();
+		else if (answer == 1 && getTarget() == _gatesRequest.getDoor() && type == 0)
+			_gatesRequest.getDoor().closeMe();
+
+		_gatesRequest.setTarget(null);
+	}
+
+	@Override
+	public void setIsCastingNow(boolean value)
+	{
+		if (value == false)
+			_currentSkill = null;
+
+		super.setIsCastingNow(value);
+	}
+
+	public void checkItemRestriction()
+	{
+		for (int i = 0; i < Inventory.PAPERDOLL_TOTALSLOTS; i++)
+		{
+			L2ItemInstance equippedItem = getInventory().getPaperdollItem(i);
+			if (equippedItem != null && !equippedItem.getItem().checkCondition(this, this, false))
+			{
 				getInventory().unEquipItemInSlotAndRecord(i);
 				if (equippedItem.isWear())
 					continue;
+
 				SystemMessage sm = null;
+				if (equippedItem.getItem().getBodyPart() == L2Item.SLOT_BACK)
+				{
+					sm = new SystemMessage(SystemMessageId.CLOAK_REMOVED_BECAUSE_ARMOR_SET_REMOVED);
+					sendPacket(sm);
+					return;
+				}
+
 				if (equippedItem.getEnchantLevel() > 0)
 				{
 					sm = new SystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED);
@@ -13179,10 +13184,10 @@ public final class L2PcInstance extends L2Playable
 					sm.addItemName(equippedItem);
 				}
 				sendPacket(sm);
-    		}
-    	}
-    }
-    
+			}
+		}
+	}
+
     public void setTransformAllowedSkills(int[] ids)
     {
     	_transformAllowedSkills = ids;

+ 6 - 0
L2_GameServer/java/net/sf/l2j/gameserver/network/SystemMessageId.java

@@ -13826,6 +13826,12 @@ public enum SystemMessageId
 	*/
 	THE_COLLECTION_HAS_SUCCEEDED(2500),
 	
+	/**
+	 * ID: 2451
+	 * Message: The cloak equip has been removed because the armor set equip has been removed.
+	 */
+	CLOAK_REMOVED_BECAUSE_ARMOR_SET_REMOVED(2451),
+	
 	/**
 	 * ID: 2465
 	 * Message: You have selected a 3 vs 3 class irrelevant team match. Do you wish to participate?

+ 1 - 6
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestPetUseItem.java

@@ -36,7 +36,6 @@ public final class RequestPetUseItem extends L2GameClientPacket
 
 	private int _objectId;
 
-
 	@Override
 	protected void readImpl()
 	{
@@ -50,17 +49,14 @@ public final class RequestPetUseItem extends L2GameClientPacket
 	protected void runImpl()
 	{
 		L2PcInstance activeChar = getClient().getActiveChar();
-
 		if (activeChar == null)
 		    return;
 
 		L2PetInstance pet = (L2PetInstance)activeChar.getPet();
-
 		if (pet == null)
 			return;
 
 		L2ItemInstance item = pet.getInventory().getItemByObjectId(_objectId);
-
         if (item == null)
             return;
 
@@ -83,7 +79,7 @@ public final class RequestPetUseItem extends L2GameClientPacket
 		
         if (!item.isEquipped())
         {
-        	if ( !item.getItem().checkCondition(pet, pet))
+        	if (!item.getItem().checkCondition(pet, pet, true))
         		return;
         }
         
@@ -190,7 +186,6 @@ public final class RequestPetUseItem extends L2GameClientPacket
 		}
 
 	    IItemHandler handler = ItemHandler.getInstance().getItemHandler(item.getEtcItem());
-
 	    if (handler != null)
 		{
 			useItem(pet, item, activeChar);

+ 13 - 21
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/UseItem.java

@@ -79,15 +79,13 @@ public final class UseItem extends L2GameClientPacket
 	@Override
 	protected void runImpl()
 	{
-
 		L2PcInstance activeChar = getClient().getActiveChar();
-
 		if (activeChar == null)
             return;
 
 		// Flood protect UseItem
 		if (!activeChar.getFloodProtectors().getUseItem().tryPerformAction("use item"))
-				return;
+			return;
 
 		if (activeChar.getPrivateStoreType() != 0)
 		{
@@ -95,7 +93,7 @@ public final class UseItem extends L2GameClientPacket
 			activeChar.sendPacket(ActionFailed.STATIC_PACKET);
 			return;
 		}
-		
+
 		if (activeChar.getActiveTradeList() != null)
 			activeChar.cancelActiveTrade();
 
@@ -103,7 +101,6 @@ public final class UseItem extends L2GameClientPacket
 		// synchronized (activeChar.getInventory())
 		// 	{
 			L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);
-
 			if (item == null)
                 return;
 
@@ -215,14 +212,16 @@ public final class UseItem extends L2GameClientPacket
 			
 			if (!item.isEquipped())
 			{
-				if ( !item.getItem().checkCondition(activeChar, activeChar))
+				if (!item.getItem().checkCondition(activeChar, activeChar, true))
 					return;
 			}
             
 			if (item.isEquipable())
 			{
 				// No unequipping/equipping while the player is in special conditions
-				if (activeChar.isStunned() || activeChar.isSleeping() || activeChar.isParalyzed()
+				if (activeChar.isStunned()
+						|| activeChar.isSleeping()
+						|| activeChar.isParalyzed()
 						|| activeChar.isAlikeDead())
 				{
 					activeChar.sendMessage("Your status does not allow you to do that.");
@@ -254,14 +253,11 @@ public final class UseItem extends L2GameClientPacket
                     		activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_USE_ITEM_WHILE_USING_MAGIC));
                     		return;
                     	}
-                    	
                         if (activeChar.isMounted())
                         {
                         	activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_EQUIP_ITEM_DUE_TO_BAD_CONDITION));
                         	return;
                         }
-                        
-                       
                         if (activeChar.isDisarmed())
                         {
                             activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_EQUIP_ITEM_DUE_TO_BAD_CONDITION));
@@ -270,9 +266,7 @@ public final class UseItem extends L2GameClientPacket
                         
                         // Don't allow weapon/shield equipment if a cursed weapon is equiped
                         if (activeChar.isCursedWeaponEquipped())
-                        {
                             return;
-                        }
                         
                         // Don't allow other Race to Wear Kamael exclusive Weapons.
                         if (!item.isEquipped() && item.getItem() instanceof L2Weapon && !activeChar.isGM())
@@ -339,26 +333,26 @@ public final class UseItem extends L2GameClientPacket
                 }
                 
                 if (activeChar.isCursedWeaponEquipped() && itemId == 6408) // Don't allow to put formal wear
-                {
                     return;
-                }
-                if (activeChar.isAttackingNow()){
+
+                if (activeChar.isAttackingNow())
+                {
                 	ThreadPoolManager.getInstance().scheduleGeneral( new WeaponEquipTask(item,activeChar), (activeChar.getAttackEndTime()-GameTimeController.getGameTicks())*GameTimeController.MILLIS_IN_TICK);
                 	return;
                 }
                 // Equip or unEquip
-                if(FortSiegeManager.getInstance().isCombat(item.getItemId()))
-                		return;	//no message
+                if (FortSiegeManager.getInstance().isCombat(item.getItemId()))
+                	return;	//no message
+
                 activeChar.useEquippableItem(item, true);
 			}
 			else
 			{
                 L2Weapon weaponItem = activeChar.getActiveWeaponItem();
                 int itemid = item.getItemId();
-				//_log.finest("item not equipable id:"+ item.getItemId());
                 if (itemid == 4393)
                 {
-                        activeChar.sendPacket(new ShowCalculator(4393));
+                    activeChar.sendPacket(new ShowCalculator(4393));
                 }
                 else if ((weaponItem != null && weaponItem.getItemType() == L2WeaponType.ROD)
                     && ((itemid >= 6519 && itemid <= 6527) || (itemid >= 7610 && itemid <= 7613) || (itemid >= 7807 && itemid <= 7809) || (itemid >= 8484 && itemid <= 8486) || (itemid >= 8505 && itemid <= 8513)))
@@ -373,7 +367,6 @@ public final class UseItem extends L2GameClientPacket
 				else
 				{
 					IItemHandler handler = ItemHandler.getInstance().getItemHandler(item.getEtcItem());
-
 					if (handler == null)
 					{
 						if (Config.DEBUG)
@@ -391,5 +384,4 @@ public final class UseItem extends L2GameClientPacket
 	{
 		return _C__14_USEITEM;
 	}
-
 }

+ 54 - 50
L2_GameServer/java/net/sf/l2j/gameserver/templates/item/L2Item.java

@@ -716,56 +716,60 @@ public abstract class L2Item
 		}
 	}
 	
-    public final void attach(Condition c)
-    {
-    	if (!_preConditions.contains(c))
-    		_preConditions.add(c);
-    }
-    
-    public final L2Skill[] getItemSkills()
-    {
-    	return _skills;
-    }
-    
-    public boolean checkCondition(L2Character activeChar, L2Object target)
-    {
-    	if (activeChar.isGM() && !Config.GM_ITEM_RESTRICTION)
-    		return true;
-    	for (Condition preCondition : _preConditions)
-    	{
-	        if (preCondition == null) return true;
-	
-	        Env env = new Env();
-	        env.player = activeChar;
-	        if (target instanceof L2Character) // TODO: object or char?
-	        	env.target = (L2Character)target;
-	
-	        if (!preCondition.test(env))
-	        {
-	        	if (activeChar instanceof L2SummonInstance)
-	        	{
-	        		((L2SummonInstance)activeChar).getOwner().sendPacket(new SystemMessage(SystemMessageId.PET_CANNOT_USE_ITEM));
-	        		return false;
-	        	}
-	            String msg = preCondition.getMessage();
-	            int msgId = preCondition.getMessageId();
-	            
-	            if (msg != null)
-	            {
-	                activeChar.sendMessage(msg);
-	            }
-	            else if (msgId !=0)
-	            {
-	            	SystemMessage sm = new SystemMessage(msgId);
-	            	if (preCondition.isAddName())
-	            		sm.addItemName(_itemId);
-	            	activeChar.sendPacket(sm);
-	            }
-	            return false;
-	        }
-    	}
-        return true;
-    }
+	public final void attach(Condition c)
+	{
+		if (!_preConditions.contains(c))
+			_preConditions.add(c);
+	}
+	
+	public final L2Skill[] getItemSkills()
+	{
+		return _skills;
+	}
+	
+	public boolean checkCondition(L2Character activeChar, L2Object target, boolean sendMessage)
+	{
+		if (activeChar.isGM() && !Config.GM_ITEM_RESTRICTION)
+			return true;
+
+		for (Condition preCondition : _preConditions)
+		{
+			if (preCondition == null) return true;
+
+			Env env = new Env();
+			env.player = activeChar;
+			if (target instanceof L2Character) // TODO: object or char?
+				env.target = (L2Character)target;
+
+			if (!preCondition.test(env))
+			{
+				if (activeChar instanceof L2SummonInstance)
+				{
+					((L2SummonInstance)activeChar).getOwner().sendPacket(new SystemMessage(SystemMessageId.PET_CANNOT_USE_ITEM));
+					return false;
+				}
+
+				if (sendMessage)
+				{
+					String msg = preCondition.getMessage();
+					int msgId = preCondition.getMessageId();
+					if (msg != null)
+					{
+						activeChar.sendMessage(msg);
+					}
+					else if (msgId !=0)
+					{
+						SystemMessage sm = new SystemMessage(msgId);
+						if (preCondition.isAddName())
+							sm.addItemName(_itemId);
+						activeChar.sendPacket(sm);
+					}
+				}
+				return false;
+			}
+		}
+		return true;
+	}
 	
 	/**
 	 * Returns the name of the item