#define RETRIEVE_FREESLOTS 0
#define RETRIEVE_TOTALSLOTS 1
#define RETRIEVE_BAGCOUNT 2
objectdef oInventory inherits oBase
{
;AutoSell, AutoDestroy, AutoBank, AutoMule, DestroyRarity, SellRarity, BankRarity, MuleRarity
method BagStatusPulse()
{
WoWEcho ${This.GetBagsInfo[2,"normal"]}
if ${This.GetBagsInfo[0,"normal"].Equal[0]}
{
; disabled to not break bot
;ActionNPC:MerchantRun
}
if ${This.GetBagsInfo[0,"quiver"].NotEqual[0]}||${This.GetBagsInfo[0,"ammo"].NotEqual[0]}
{
; disabled to not break bot
;ActionNPC:MerchantRun
}
}
member CheckInventory()
{
if ${This.GetBagsInfo[0,"normal"].Equal[0]}
{
return TRUE
}
}
member CheckAmmo()
{
if ${This.GetBagsInfo[0,"ammo"].NotEqual[0]}
{
return TRUE
}
}
member CheckQuiver()
{
if ${This.GetBagsInfo[0,"quiver"].Equal[0]}
{
return TRUE
}
}
member CheckQuestItem(string strItemName)
{
if ${WoWScript[GetItemInfo("${strItemName}"),6].Equal["Quest"]}
{
return TRUE
}
return FALSE
}
member GetBagType(string strBagName)
{
if ${strBagName.Find[Quiver]}||${strBagName.Equal[Ancient Sinew Wrapped Lamina]}
return "quiver"
if ${strBagName.Find[Ammo Pouch]}||${strBagName.Find[Shot Pouch]}||${strBagName.Find[Ammo Sack]}||${strBagName.Find[Bandolier]}
return "ammo"
if ${strBagName.Equal[Spellfire Bag]}||${strBagName.Find[Enchant]}
return "enchanting"
if ${strBagName.Equal[Satchel of Cenarius]}||${strBagName.Find[Herb]}
return "herbalism"
if ${strBagName.Find[Toolbox]}
return "engineering"
if ${strBagName.Equal[Bag of Jewels]}||${strBagName.Equal[Gem Pouch]}
return "jewelcrafting"
if ${strBagName.Find[Mining]}
return "mining"
if ${strBagName.Equal[Ebon Shadowbag]}||${strBagName.Find[Felcloth]}||${strBagName.Find[Soul]}
return "lock"
return "normal"
}
member GetBagsInfo(int intInfoType,string strBagType)
{
; intInfoType = what you want to retrieve - see defines
; strBagType = the bag type you want to get info from
variable int intBags = 0
variable int intTotalSlots = 0
variable int intFreeSlots = 0
do
{
if ${strBagType.Equal["all"]}
{
intFreeSlots:Inc[${Me.Bag[${intBags}].EmptySlots}]
intTotalSlots:Inc[${Me.Bag[${intBags}].Slots}]
}
elseif ${This.GetBagType[${Me.Bag[${intBags}].Name}].Equal["${strBagType}"]}
{
intFreeSlots:Inc[${Me.Bag[${intBags}].EmptySlots}]
intTotalSlots:Inc[${Me.Bag[${intBags}].Slots}]
}
}
while ${Me.Bag[${intBags:Inc}](exists)}
switch ${intInfoType}
{
case RETRIEVE_FREESLOTS
return ${intFreeSlots}
break
case RETRIEVE_TOTALSLOTS
return ${intTotalSlots}
break
case RETRIEVE_BAGCOUNT
return ${intBags}
break
}
}
member GetTotalSlots(intBag)
{
variable int intTotalSlots = 0
if ${Me.Bag[${intBag}](exists)}
{
intTotalSlots:Inc[${Me.Bag[${intBag}].Slots}]
}
return ${intTotalSlots}
}
member GetFreeSlots(intBag)
{
variable int intFreeSlots = 0
if ${Me.Bag[${intBag}](exists)}
{
intFreeSlots:Inc[${Me.Bag[${intBag}].Slots}]
}
return ${intFreeSlots}
}
member GetItemRarity(string strItemName)
{
variable int intItemRarity
intItemRarity:Set[${strItemName}.Rarity]
return ${intItemRarity}
}
member ItemCount(string strItemName)
{
variable guidlist lstItemList
variable int intTotalCount = 0
variable int Index = 1
lstItemList:Search[-items,-inventory,${strItemName}]
if ${lstItemList.Count}
{
do
{
if ${Item[${lstItemList.GUID[${Index}]}].Name.Equal["${strItemName}"]}
{
intTotalCount:Inc[${Item[${lstItemList.GUID[${Index}]}].StackCount}]
}
}
while ${Index:Inc}<=${lstItemList.Count}
}
return ${intTotalCount}
}
}