Parcourir la source

fix for armor sets with no masterwork set, thx Charus

janiii il y a 16 ans
Parent
commit
db09db651b
1 fichiers modifiés avec 89 ajouts et 79 suppressions
  1. 89 79
      L2_GameServer/java/net/sf/l2j/gameserver/model/L2ArmorSet.java

+ 89 - 79
L2_GameServer/java/net/sf/l2j/gameserver/model/L2ArmorSet.java

@@ -1,16 +1,14 @@
 /*
- * This program 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.
+ * This program 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.
  * 
- * This program 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.
+ * This program 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/>.
+ * 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 net.sf.l2j.gameserver.model;
@@ -19,9 +17,8 @@ import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.model.itemcontainer.Inventory;
 
 /**
- *
- *
- * @author  Luno
+ * 
+ * @author Luno
  */
 public final class L2ArmorSet
 {
@@ -34,94 +31,102 @@ public final class L2ArmorSet
 	private final int _mw_head;
 	private final int _mw_gloves;
 	private final int _mw_feet;
-
+	
 	private final int _skillId;
 	private final int _skillLvl;
-
+	
 	private final int _shield;
 	private final int _mw_shield;
 	private final int _shieldSkillId;
-
+	
 	private final int _enchant6Skill;
-
+	
 	public L2ArmorSet(int chest, int legs, int head, int gloves, int feet, int skill_id, int skill_lvl, int shield, int shield_skill_id, int enchant6skill, int mw_legs, int mw_head, int mw_gloves, int mw_feet, int mw_shield)
 	{
 		_chest = chest;
-		_legs  = legs;
-		_head  = head;
+		_legs = legs;
+		_head = head;
 		_gloves = gloves;
-		_feet  = feet;
-		_mw_legs  = mw_legs;
-		_mw_head  = mw_head;
+		_feet = feet;
+		_mw_legs = mw_legs;
+		_mw_head = mw_head;
 		_mw_gloves = mw_gloves;
-		_mw_feet  = mw_feet;
+		_mw_feet = mw_feet;
 		_mw_shield = mw_shield;
 		_skillId = skill_id;
 		_skillLvl = skill_lvl;
-
+		
 		_shield = shield;
 		_shieldSkillId = shield_skill_id;
-
+		
 		_enchant6Skill = enchant6skill;
 	}
+	
 	/**
 	 * Checks if player have equiped all items from set (not checking shield)
-	 * @param player whose inventory is being checked
+	 * 
+	 * @param player
+	 *            whose inventory is being checked
 	 * @return True if player equips whole set
 	 */
 	public boolean containAll(L2PcInstance player)
 	{
 		Inventory inv = player.getInventory();
-
-		L2ItemInstance legsItem   = inv.getPaperdollItem(Inventory.PAPERDOLL_LEGS);
-		L2ItemInstance headItem   = inv.getPaperdollItem(Inventory.PAPERDOLL_HEAD);
+		
+		L2ItemInstance legsItem = inv.getPaperdollItem(Inventory.PAPERDOLL_LEGS);
+		L2ItemInstance headItem = inv.getPaperdollItem(Inventory.PAPERDOLL_HEAD);
 		L2ItemInstance glovesItem = inv.getPaperdollItem(Inventory.PAPERDOLL_GLOVES);
-		L2ItemInstance feetItem   = inv.getPaperdollItem(Inventory.PAPERDOLL_FEET);
-
+		L2ItemInstance feetItem = inv.getPaperdollItem(Inventory.PAPERDOLL_FEET);
+		
 		int legs = 0;
 		int head = 0;
 		int gloves = 0;
 		int feet = 0;
-
-		if(legsItem != null)   legs = legsItem.getItemId();
-		if(headItem != null)   head = headItem.getItemId();
-		if(glovesItem != null) gloves = glovesItem.getItemId();
-		if(feetItem != null)   feet = feetItem.getItemId();
-
-		return containAll(_chest,legs,head,gloves,feet);
-
+		
+		if (legsItem != null)
+			legs = legsItem.getItemId();
+		if (headItem != null)
+			head = headItem.getItemId();
+		if (glovesItem != null)
+			gloves = glovesItem.getItemId();
+		if (feetItem != null)
+			feet = feetItem.getItemId();
+		
+		return containAll(_chest, legs, head, gloves, feet);
 	}
+	
 	public boolean containAll(int chest, int legs, int head, int gloves, int feet)
 	{
-		if(_chest != 0 && _chest != chest)
+		if (_chest != 0 && _chest != chest)
 			return false;
-		if(_legs != 0 && _legs != legs && _mw_legs != legs)
+		if (_legs != 0 && _legs != legs && (_mw_legs == 0 || _mw_legs != legs))
 			return false;
-		if(_head != 0 && _head != head && _mw_head != head)
+		if (_head != 0 && _head != head && (_mw_head == 0 || _mw_head != head))
 			return false;
-		if(_gloves != 0 && _gloves != gloves && _mw_gloves != gloves)
+		if (_gloves != 0 && _gloves != gloves && (_mw_gloves == 0 || _mw_gloves != gloves))
 			return false;
-		if(_feet != 0 && _feet != feet && _mw_feet != feet)
+		if (_feet != 0 && _feet != feet && (_mw_feet == 0 || _mw_feet != feet))
 			return false;
-
+		
 		return true;
 	}
+	
 	public boolean containItem(int slot, int itemId)
 	{
-		switch(slot)
+		switch (slot)
 		{
-		case Inventory.PAPERDOLL_CHEST:
-			return _chest == itemId;
-		case Inventory.PAPERDOLL_LEGS:
-			return (_legs == itemId || _mw_legs == itemId);
-		case Inventory.PAPERDOLL_HEAD:
-			return (_head == itemId || _mw_head == itemId);
-		case Inventory.PAPERDOLL_GLOVES:
-			return (_gloves == itemId || _mw_gloves == itemId);
-		case Inventory.PAPERDOLL_FEET:
-			return (_feet == itemId || _mw_feet == itemId);
-		default:
-			return false;
+			case Inventory.PAPERDOLL_CHEST:
+				return _chest == itemId;
+			case Inventory.PAPERDOLL_LEGS:
+				return (_legs == itemId || _mw_legs == itemId);
+			case Inventory.PAPERDOLL_HEAD:
+				return (_head == itemId || _mw_head == itemId);
+			case Inventory.PAPERDOLL_GLOVES:
+				return (_gloves == itemId || _mw_gloves == itemId);
+			case Inventory.PAPERDOLL_FEET:
+				return (_feet == itemId || _mw_feet == itemId);
+			default:
+				return false;
 		}
 	}
 	
@@ -138,58 +143,63 @@ public final class L2ArmorSet
 	public boolean containShield(L2PcInstance player)
 	{
 		Inventory inv = player.getInventory();
-
-		L2ItemInstance shieldItem   = inv.getPaperdollItem(Inventory.PAPERDOLL_LHAND);
-		if(shieldItem!= null && (shieldItem.getItemId() == _shield || shieldItem.getItemId() == _mw_shield))
+		
+		L2ItemInstance shieldItem = inv.getPaperdollItem(Inventory.PAPERDOLL_LHAND);
+		if (shieldItem != null && (shieldItem.getItemId() == _shield || shieldItem.getItemId() == _mw_shield))
 			return true;
-
+		
 		return false;
 	}
+	
 	public boolean containShield(int shield_id)
 	{
-		if(_shield == 0)
+		if (_shield == 0)
 			return false;
-
+		
 		return (_shield == shield_id || _mw_shield == shield_id);
 	}
+	
 	public int getShieldSkillId()
 	{
 		return _shieldSkillId;
 	}
+	
 	public int getEnchant6skillId()
 	{
 		return _enchant6Skill;
 	}
+	
 	/**
 	 * Checks if all parts of set are enchanted to +6 or more
+	 * 
 	 * @param player
 	 * @return
 	 */
 	public boolean isEnchanted6(L2PcInstance player)
 	{
-		 // Player don't have full set
-		if(!containAll(player))
+		// Player don't have full set
+		if (!containAll(player))
 			return false;
-
+		
 		Inventory inv = player.getInventory();
-
-		L2ItemInstance chestItem  = inv.getPaperdollItem(Inventory.PAPERDOLL_CHEST);
-		L2ItemInstance legsItem   = inv.getPaperdollItem(Inventory.PAPERDOLL_LEGS);
-		L2ItemInstance headItem   = inv.getPaperdollItem(Inventory.PAPERDOLL_HEAD);
+		
+		L2ItemInstance chestItem = inv.getPaperdollItem(Inventory.PAPERDOLL_CHEST);
+		L2ItemInstance legsItem = inv.getPaperdollItem(Inventory.PAPERDOLL_LEGS);
+		L2ItemInstance headItem = inv.getPaperdollItem(Inventory.PAPERDOLL_HEAD);
 		L2ItemInstance glovesItem = inv.getPaperdollItem(Inventory.PAPERDOLL_GLOVES);
-		L2ItemInstance feetItem   = inv.getPaperdollItem(Inventory.PAPERDOLL_FEET);
-
-		if(chestItem == null || chestItem.getEnchantLevel() < 6)
+		L2ItemInstance feetItem = inv.getPaperdollItem(Inventory.PAPERDOLL_FEET);
+		
+		if (chestItem == null || chestItem.getEnchantLevel() < 6)
 			return false;
-		if(_legs != 0 && (legsItem == null || legsItem.getEnchantLevel() < 6))
+		if (_legs != 0 && (legsItem == null || legsItem.getEnchantLevel() < 6))
 			return false;
-		if(_gloves != 0 && (glovesItem == null || glovesItem.getEnchantLevel() < 6))
+		if (_gloves != 0 && (glovesItem == null || glovesItem.getEnchantLevel() < 6))
 			return false;
-		if(_head != 0 && (headItem == null || headItem.getEnchantLevel() < 6))
+		if (_head != 0 && (headItem == null || headItem.getEnchantLevel() < 6))
 			return false;
-		if(_feet != 0 && (feetItem == null || feetItem.getEnchantLevel() < 6))
+		if (_feet != 0 && (feetItem == null || feetItem.getEnchantLevel() < 6))
 			return false;
-
+		
 		return true;
 	}
 }