All pastes #575994 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-06-19 09:39 UTC
rendered paste body
Index: Player.cpp
===================================================================
--- Player.cpp	(revision 3893)
+++ Player.cpp	(working copy)
@@ -6528,8 +6528,10 @@
     SetUInt32Value(UNIT_FIELD_BYTES_2, 0x2800+sheathed);    // this must visualize Sheath changing for other players...
 }
 
-uint8 Player::FindEquipSlot( uint32 type, uint32 slot, bool swap ) const
-{
+uint8 Player::FindEquipSlot( uint32 type, uint32 slot, bool swap, Item *pItem ) const
+ {
+	ItemPrototype const *pProto = pItem->GetProto();
+	uint8 pClass = getClass();
     uint8 slots[4];
     slots[0] = NULL_SLOT;
     slots[1] = NULL_SLOT;
@@ -6624,8 +6626,23 @@
             slots[3] = INVENTORY_SLOT_BAG_4;
             break;
         case INVTYPE_RELIC:
-            slots[0] = EQUIPMENT_SLOT_RANGED;
-            break;
+			{
+				switch(pProto->SubClass)
+				{
+					case ITEM_SUBCLASS_ARMOR_LIBRAM:
+						if (pClass == CLASS_PALADIN)
+							slots[0] = EQUIPMENT_SLOT_RANGED;
+					break;
+					case ITEM_SUBCLASS_ARMOR_IDOL:
+						if (pClass == CLASS_DRUID)
+							slots[0] = EQUIPMENT_SLOT_RANGED;
+					break;
+					case ITEM_SUBCLASS_ARMOR_TOTEM:
+					if (pClass == CLASS_SHAMAN)
+							slots[0] = EQUIPMENT_SLOT_RANGED;
+					break;
+				}
+			};break;
         default :
             return NULL_SLOT;
     }
@@ -7605,7 +7622,7 @@
                 return EQUIP_ERR_CANT_DO_RIGHT_NOW;         // maybe exist better err
 
             uint32 type = pProto->InventoryType;
-            uint8 eslot = FindEquipSlot( type, slot, swap );
+            uint8 eslot = FindEquipSlot( type, slot, swap, pItem );
             if( eslot == NULL_SLOT )
                 return EQUIP_ERR_ITEM_CANT_BE_EQUIPPED;
 
Index: Player.h
===================================================================
--- Player.h	(revision 3893)
+++ Player.h	(working copy)
@@ -744,7 +744,7 @@
 
         void SetVirtualItemSlot( uint8 i, Item* item);
         void SetSheath( uint32 sheathed );
-        uint8 FindEquipSlot( uint32 type, uint32 slot, bool swap ) const;
+        uint8 FindEquipSlot( uint32 type, uint32 slot, bool swap, Item *pItem ) const;
         Item* CreateItem( uint32 item, uint32 count ) const;
         uint32 GetItemCount( uint32 item, Item* eItem = NULL ) const;
         uint32 GetBankItemCount( uint32 item, Item* eItem = NULL ) const;