mirror of
https://github.com/mod-playerbots/mod-playerbots
synced 2025-11-29 15:58:20 +08:00
fix ammo cache, enchant coredump
This commit is contained in:
@@ -4013,7 +4013,7 @@ void PlayerbotAI::ImbueItem(Item* item, uint32 targetFlag, ObjectGuid targetGUID
|
|||||||
void PlayerbotAI::EnchantItemT(uint32 spellid, uint8 slot)
|
void PlayerbotAI::EnchantItemT(uint32 spellid, uint8 slot)
|
||||||
{
|
{
|
||||||
Item* pItem = bot->GetItemByPos(INVENTORY_SLOT_BAG_0, slot);
|
Item* pItem = bot->GetItemByPos(INVENTORY_SLOT_BAG_0, slot);
|
||||||
if (!pItem || !pItem->IsInWorld())
|
if (!pItem || !pItem->IsInWorld() || !pItem->GetOwner() || !pItem->GetOwner()->IsInWorld() || !pItem->GetOwner()->GetSession())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellid);
|
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellid);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "RandomItemMgr.h"
|
#include "RandomItemMgr.h"
|
||||||
|
#include "ItemTemplate.h"
|
||||||
#include "LootValues.h"
|
#include "LootValues.h"
|
||||||
#include "Playerbots.h"
|
#include "Playerbots.h"
|
||||||
|
|
||||||
@@ -951,6 +952,10 @@ void RandomItemMgr::BuildItemInfoCache()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (proto->Flags & ITEM_FLAG_DEPRECATED) {
|
||||||
|
itemForTest.insert(proto->ItemId);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
// skip items with rank/rep requirements
|
// skip items with rank/rep requirements
|
||||||
/*if (proto->RequiredHonorRank > 0 ||
|
/*if (proto->RequiredHonorRank > 0 ||
|
||||||
proto->RequiredSkillRank > 0 ||
|
proto->RequiredSkillRank > 0 ||
|
||||||
@@ -2179,17 +2184,23 @@ void RandomItemMgr::BuildAmmoCache()
|
|||||||
uint32 counter = 0;
|
uint32 counter = 0;
|
||||||
for (uint32 level = 1; level <= maxLevel; level += 1)
|
for (uint32 level = 1; level <= maxLevel; level += 1)
|
||||||
{
|
{
|
||||||
for (uint32 subClass = ITEM_SUBCLASS_ARROW; subClass <= ITEM_SUBCLASS_THROWN; subClass++)
|
for (uint32 subClass = ITEM_SUBCLASS_ARROW; subClass <= ITEM_SUBCLASS_BULLET; subClass++)
|
||||||
{
|
{
|
||||||
QueryResult results = WorldDatabase.Query("SELECT entry FROM item_template WHERE class = {} AND subclass = {} AND RequiredLevel <= {} "
|
QueryResult results = WorldDatabase.Query("SELECT entry, Flags FROM item_template WHERE class = {} AND subclass = {} AND RequiredLevel <= {} AND stackable = 1000 "
|
||||||
"ORDER BY RequiredLevel DESC, Quality DESC, ItemLevel DESC", ITEM_CLASS_PROJECTILE, subClass, level);
|
"ORDER BY RequiredLevel DESC", ITEM_CLASS_PROJECTILE, subClass, level);
|
||||||
if (!results)
|
if (!results)
|
||||||
return;
|
continue;
|
||||||
|
do {
|
||||||
Field* fields = results->Fetch();
|
Field* fields = results->Fetch();
|
||||||
uint32 entry = fields[0].Get<uint32>();
|
uint32 entry = fields[0].Get<uint32>();
|
||||||
ammoCache[level][subClass] = entry;
|
uint32 flags = fields[1].Get<uint32>();
|
||||||
++counter;
|
if (flags & ITEM_FLAG_DEPRECATED) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ammoCache[level][subClass] = entry;
|
||||||
|
++counter;
|
||||||
|
break;
|
||||||
|
} while (results->NextRow());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user