[Bug Fix] Fix NPC Item Stat Bonuses (#3444)

* [Bug Fix] Fix NPC Item Stat Bonuses

# Notes
- Due to https://github.com/EQEmu/Server/pull/3136 NPCs/Mercs were not receiving stat bonuses from their items, this fixes that.

* Update npc.h

* Changes.

* Cleanup

* Cleanup

* Update loottables.cpp

* Update npc.cpp

* Update loottables.cpp
This commit is contained in:
Alex King 2023-06-26 00:22:10 -04:00 committed by GitHub
parent 8d986c95cd
commit a004924112
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 4 deletions

View File

@ -146,7 +146,8 @@ void Mob::CalcItemBonuses(StatBonuses* b) {
int16 i;
for (i = EQ::invslot::BONUS_BEGIN; i <= EQ::invslot::BONUS_SKILL_END; i++) {
const EQ::ItemInstance* inst = GetInv().GetItem(i);
const auto* inst = GetInv().GetItem(i);
if (!inst) {
continue;
}

View File

@ -363,11 +363,23 @@ void NPC::AddLootDrop(
bool found = false; // track if we found an empty slot we fit into
int foundslot = -1; // for multi-slot items
const auto* inst = database.CreateItem(
item2->ID,
loot_drop.item_charges,
aug1,
aug2,
aug3,
aug4,
aug5,
aug6
);
if (loot_drop.equip_item > 0) {
uint8 eslot = 0xFF;
char newid[20];
const EQ::ItemData* compitem = nullptr;
int32 foundslot = -1; // for multi-slot items
// Equip rules are as follows:
// If the item has the NoPet flag set it will not be equipped.
@ -511,10 +523,12 @@ void NPC::AddLootDrop(
}
}
if (itemlist != nullptr) {
if (itemlist) {
GetInv().PutItem(foundslot, *inst);
itemlist->push_back(item);
} else {
safe_delete(item);
}
else safe_delete(item);
if (found) {
CalcBonuses();

View File

@ -441,6 +441,8 @@ NPC::NPC(const NPCType *npc_type_data, Spawn2 *in_respawn, const glm::vec4 &posi
m_can_open_doors = false;
}
GetInv().SetInventoryVersion(EQ::versions::MobVersion::RoF2);
GetInv().SetGMInventory(false);
}
float NPC::GetRoamboxMaxX() const