Fixed ROF Augment item dupe with not checking for available slots properly and adding items to the virtual instance

This commit is contained in:
akkadius
2014-09-07 05:43:37 -05:00
parent 84310ec8f0
commit b392d16808
4 changed files with 18 additions and 4 deletions
+10
View File
@@ -1580,6 +1580,16 @@ int8 ItemInst::AvailableAugmentSlot(int32 augtype) const
return (i < EmuConstants::ITEM_COMMON_SIZE) ? i : INVALID_INDEX;
}
bool ItemInst::IsAugmentSlotAvailable(int32 augtype, uint8 slot) const {
if (m_item->ItemClass != ItemClassCommon || !m_item)
return false;
if ((!GetItem(slot) && m_item->AugSlotVisible[slot]) && augtype == -1 || (m_item->AugSlotType[slot] && ((1 << (m_item->AugSlotType[slot] - 1)) & augtype))) {
return true;
}
return false;
}
// Retrieve item inside container
ItemInst* ItemInst::GetItem(uint8 index) const
{
+1
View File
@@ -274,6 +274,7 @@ public:
inline bool IsAugmentable() const { return m_item->AugSlotType[0]!=0 || m_item->AugSlotType[1]!=0 || m_item->AugSlotType[2]!=0 || m_item->AugSlotType[3]!=0 || m_item->AugSlotType[4]!=0; }
bool AvailableWearSlot(uint32 aug_wear_slots) const;
int8 AvailableAugmentSlot(int32 augtype) const;
bool IsAugmentSlotAvailable(int32 augtype, uint8 slot) const;
inline int32 GetAugmentType() const { return m_item->AugType; }
inline bool IsExpendable() const { return ((m_item->Click.Type == ET_Expendable ) || (m_item->ItemType == ItemTypePotion)); }