فهرست منبع

Rework S80 and S84 items support in more logical way: added function getItemGradeSPlus(), returning grade S for S80 and S84.
Better in one place than in many :)

_DS_ 16 سال پیش
والد
کامیت
8efeac0a31

+ 4 - 8
L2_GameServer/java/net/sf/l2j/gameserver/model/itemcontainer/Inventory.java

@@ -1459,7 +1459,7 @@ public abstract class Inventory extends ItemContainer
 	{
 		int arrowsId = 0;
 
-		switch (bow.getCrystalType())
+		switch (bow.getItemGradeSPlus())
 		{
 			default: 
 			case L2Item.CRYSTAL_NONE:	 arrowsId = 17;
@@ -1472,9 +1472,7 @@ public abstract class Inventory extends ItemContainer
 				break; // Silver arrow
 			case L2Item.CRYSTAL_A:			arrowsId = 1344;
 				break; // Mithril arrow
-			case L2Item.CRYSTAL_S:
-			case L2Item.CRYSTAL_S80:
-			case L2Item.CRYSTAL_S84:        arrowsId = 1345;
+			case L2Item.CRYSTAL_S:			arrowsId = 1345;
 				break; // Shining arrow
 		}
 
@@ -1491,7 +1489,7 @@ public abstract class Inventory extends ItemContainer
 	{
 		int boltsId = 0;
 
-		switch (crossbow.getCrystalType())
+		switch (crossbow.getItemGradeSPlus())
 		{
 			default: 
 			case L2Item.CRYSTAL_NONE:	 boltsId = 9632;
@@ -1504,9 +1502,7 @@ public abstract class Inventory extends ItemContainer
 				break; // Silver Bolt
 			case L2Item.CRYSTAL_A:			boltsId = 9636;
 				break; // Mithril Bolt
-			case L2Item.CRYSTAL_S:
-			case L2Item.CRYSTAL_S80:
-			case L2Item.CRYSTAL_S84:        boltsId = 9637;
+			case L2Item.CRYSTAL_S:			boltsId = 9637;
 				break; // Shining Bolt
 		}
 

+ 2 - 12
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/AbstractEnchantPacket.java

@@ -79,18 +79,8 @@ public class AbstractEnchantPacket extends L2GameClientPacket
 			}
 
 			// check for crystal types
-			switch (enchantItem.getItem().getCrystalType())
-			{
-				case L2Item.CRYSTAL_S:
-				case L2Item.CRYSTAL_S80:
-				case L2Item.CRYSTAL_S84:
-					if (_grade != L2Item.CRYSTAL_S)
-						return false;
-					break;
-				default:
-					if (_grade != enchantItem.getItem().getCrystalType())
-						return false;
-			}
+			if (_grade != enchantItem.getItem().getItemGradeSPlus())
+				return false;
 
 			// check for maximum enchant level
 			if (_maxEnchantLevel != 0 && enchantItem.getEnchantLevel() >= _maxEnchantLevel)

+ 1 - 4
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestAutoSoulShot.java

@@ -22,7 +22,6 @@ import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.network.SystemMessageId;
 import net.sf.l2j.gameserver.network.serverpackets.ExAutoSoulShot;
 import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
-import net.sf.l2j.gameserver.templates.item.L2Item;
 
 /**
  * This class ...
@@ -87,9 +86,7 @@ public final class RequestAutoSoulShot extends L2GameClientPacket
 						{
 							if (activeChar.getActiveWeaponItem() != activeChar.getFistsWeaponItem())
 							{
-								if (item.getItem().getCrystalType() == activeChar.getActiveWeaponItem().getCrystalType() 
-										|| (item.getItem().getCrystalType() == L2Item.CRYSTAL_S && activeChar.getActiveWeaponItem().getCrystalType() == L2Item.CRYSTAL_S80) 
-										|| (item.getItem().getCrystalType() == L2Item.CRYSTAL_S && activeChar.getActiveWeaponItem().getCrystalType() == L2Item.CRYSTAL_S84))
+								if (item.getItem().getCrystalType() == activeChar.getActiveWeaponItem().getItemGradeSPlus()) 
 								{
 									activeChar.addAutoSoulShot(_itemId);
 									ExAutoSoulShot atk = new ExAutoSoulShot(_itemId, _type);

+ 1 - 3
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestConfirmCancelItem.java

@@ -65,7 +65,7 @@ public final class RequestConfirmCancelItem extends L2GameClientPacket
 		}
 
 		int price=0;
-		switch (item.getItem().getItemGrade())
+		switch (item.getItem().getItemGradeSPlus())
 		{
 			case L2Item.CRYSTAL_C:
 				if (item.getCrystalCount() < 1720)
@@ -90,8 +90,6 @@ public final class RequestConfirmCancelItem extends L2GameClientPacket
 					price = 420000;
 				break;
 			case L2Item.CRYSTAL_S:
-			case L2Item.CRYSTAL_S80:
-			case L2Item.CRYSTAL_S84:
 				price = 480000;
 				break;
 			// any other item type is not augmentable

+ 1 - 3
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestConfirmGemStone.java

@@ -79,7 +79,7 @@ public final class RequestConfirmGemStone extends L2GameClientPacket
 		}
 
 		// Check if the gemstoneCount is sufficant
-		int itemGrade = targetItem.getItem().getItemGrade();
+		int itemGrade = targetItem.getItem().getItemGradeSPlus();
 		switch (itemGrade)
 		{
 			case L2Item.CRYSTAL_C:
@@ -104,8 +104,6 @@ public final class RequestConfirmGemStone extends L2GameClientPacket
 				}
 				break;
 			case L2Item.CRYSTAL_S:
-			case L2Item.CRYSTAL_S80:
-			case L2Item.CRYSTAL_S84:
 				if (_gemstoneCount != 25 || gemstoneItemId != 2131)
 				{
 					activeChar.sendPacket(new SystemMessage(SystemMessageId.GEMSTONE_QUANTITY_IS_INCORRECT));

+ 1 - 4
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestConfirmRefinerItem.java

@@ -67,7 +67,6 @@ public class RequestConfirmRefinerItem extends L2GameClientPacket
 			Util.handleIllegalPlayerAction(getClient().getActiveChar(),"Warning!! Character "+getClient().getActiveChar().getName()+" of account "+getClient().getActiveChar().getAccountName()+" tryied to augment item that doesn't own.",Config.DEFAULT_PUNISH);
 			return;
 		}
-		int itemGrade = targetItem.getItem().getItemGrade();
 		int refinerItemId = refinerItem.getItem().getItemId();
 
 		// is the item a life stone?
@@ -86,7 +85,7 @@ public class RequestConfirmRefinerItem extends L2GameClientPacket
 		int gemstoneCount=0;
 		int gemstoneItemId=0;
 		SystemMessage sm = new SystemMessage(SystemMessageId.REQUIRES_S1_S2);
-		switch (itemGrade)
+		switch (targetItem.getItem().getItemGradeSPlus())
 		{
 			case L2Item.CRYSTAL_C:
 				gemstoneCount = 20;
@@ -107,8 +106,6 @@ public class RequestConfirmRefinerItem extends L2GameClientPacket
 				sm.addString("Gemstone C");
 				break;
 			case L2Item.CRYSTAL_S:
-			case L2Item.CRYSTAL_S80:
-			case L2Item.CRYSTAL_S84:
 				gemstoneCount = 25;
 				gemstoneItemId = GEMSTONE_C;
 				sm.addItemNumber(gemstoneCount);

+ 1 - 3
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestCrystallizeItem.java

@@ -132,7 +132,7 @@ public final class RequestCrystallizeItem extends L2GameClientPacket
         // Check if the char can crystallize items and return if false;
         boolean canCrystallize = true;
 
-        switch (itemToRemove.getItem().getCrystalType())
+        switch (itemToRemove.getItem().getItemGradeSPlus())
         {
             case L2Item.CRYSTAL_C:
             {
@@ -159,8 +159,6 @@ public final class RequestCrystallizeItem extends L2GameClientPacket
                 break;
             }
             case L2Item.CRYSTAL_S:
-            case L2Item.CRYSTAL_S80:
-            case L2Item.CRYSTAL_S84:
             {
                 if (skillLevel <= 4)
                 {

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

@@ -97,7 +97,7 @@ public class RequestExEnchantItemAttribute extends L2GameClientPacket
 		//can't enchant rods, shadow items, adventurers', hero items
 		if (item.getItem().getItemType() == L2WeaponType.ROD || item.isShadowItem() || item.isHeroItem() || item.isTimeLimitedItem()
 		|| (item.getItemId() >= 7816 && item.getItemId() <= 7831) || (item.getItem().getItemType() == L2WeaponType.NONE) ||
-			!(item.getItem().getCrystalType() == L2Item.CRYSTAL_S || item.getItem().getCrystalType() == L2Item.CRYSTAL_S80))
+			item.getItem().getItemGradeSPlus() != L2Item.CRYSTAL_S)
 		{
 			player.sendPacket(new SystemMessage(SystemMessageId.ELEMENTAL_ENHANCE_REQUIREMENT_NOT_SUFFICIENT));
 			player.setActiveEnchantAttrItem(null);

+ 1 - 3
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestRefineCancel.java

@@ -70,7 +70,7 @@ public final class RequestRefineCancel extends L2GameClientPacket
 
 		// get the price
 		int price=0;
-		switch (targetItem.getItem().getItemGrade())
+		switch (targetItem.getItem().getItemGradeSPlus())
 		{
 			case L2Item.CRYSTAL_C:
 				if (targetItem.getCrystalCount() < 1720)
@@ -95,8 +95,6 @@ public final class RequestRefineCancel extends L2GameClientPacket
 					price = 420000;
 				break;
 			case L2Item.CRYSTAL_S:
-			case L2Item.CRYSTAL_S80:
-			case L2Item.CRYSTAL_S84:
 				price = 480000;
 				break;
 			// any other item type is not augmentable

+ 2 - 6
L2_GameServer/java/net/sf/l2j/gameserver/skills/funcs/FuncEnchant.java

@@ -76,11 +76,9 @@ public class FuncEnchant extends Func
 
         if (stat == Stats.MAGIC_ATTACK)
         {
-            switch (item.getItem().getCrystalType())
+            switch (item.getItem().getItemGradeSPlus())
             {
                 case L2Item.CRYSTAL_S:
-                case L2Item.CRYSTAL_S80:
-                case L2Item.CRYSTAL_S84:
                     env.value += 4 * enchant + 8 * overenchant;
                     break;
                 case L2Item.CRYSTAL_A:
@@ -104,11 +102,9 @@ public class FuncEnchant extends Func
         {
             L2WeaponType type = (L2WeaponType) item.getItemType();
             
-            switch (item.getItem().getCrystalType())
+            switch (item.getItem().getItemGradeSPlus())
             {
             	case L2Item.CRYSTAL_S:
-                case L2Item.CRYSTAL_S80:
-                case L2Item.CRYSTAL_S84:
                     switch(type)
                     {
                         case BOW:

+ 18 - 1
L2_GameServer/java/net/sf/l2j/gameserver/templates/item/L2Item.java

@@ -311,7 +311,24 @@ public abstract class L2Item
 	{
 		return getCrystalType();
 	}
-	
+
+	/**
+	 * Returns the grade of the item.<BR><BR>
+	 * For grades S80 and S84 return S
+	 * @return int
+	 */
+	public final int getItemGradeSPlus()
+	{
+		switch (getItemGrade())
+		{
+			case CRYSTAL_S80:
+			case CRYSTAL_S84:
+				return CRYSTAL_S;
+			default:
+				return getItemGrade();
+		}
+	}
+
 	/**
 	 * Returns the quantity of crystals for crystallization
 	 * @return int