Fixes Personal Tributes for bard items not being applied. (#4414)

This commit is contained in:
Mitch Freeman 2024-07-16 00:02:35 -03:00 committed by GitHub
parent 97e332819d
commit 080abaede1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 36 additions and 7 deletions

View File

@ -183,13 +183,19 @@ void Mob::CalcItemBonuses(StatBonuses* b) {
}
if (IsOfClientBot()) {
for (i = EQ::invslot::TRIBUTE_BEGIN; i <= EQ::invslot::TRIBUTE_END; i++) {
const EQ::ItemInstance* inst = m_inv[i];
if (!inst) {
continue;
}
if (CastToClient()->GetPP().tribute_active) {
for (auto const &t: CastToClient()->GetPP().tributes) {
auto item_id = CastToClient()->LookupTributeItemID(t.tribute, t.tier);
if (item_id) {
const EQ::ItemInstance *inst = database.CreateItem(item_id);
if (!inst) {
continue;
}
AddItemBonuses(inst, b, false, true);
AddItemBonuses(inst, b, false, true);
safe_delete(inst);
}
}
}
}

View File

@ -70,6 +70,7 @@ namespace EQ
#include "../common/data_verification.h"
#include "../common/repositories/character_parcels_repository.h"
#include "../common/repositories/trader_repository.h"
#include "../common/guild_base.h"
#ifdef _WINDOWS
// since windows defines these within windef.h (which windows.h include)
@ -967,6 +968,8 @@ public:
void ChangeTributeSettings(TributeInfo_Struct *t);
void SendTributeTimer();
void ToggleTribute(bool enabled);
std::map<uint32, TributeData> GetTributeList();
uint32 LookupTributeItemID(uint32 tribute_id, uint32 tier);
void SendPathPacket(const std::vector<FindPerson_Point> &path);
inline PTimerList &GetPTimers() { return(p_timers); }

View File

@ -48,7 +48,7 @@ but I dont see a point to that right now, so I dont do it.
*/
extern WorldServer worldserver;
std::map<uint32, TributeData> tribute_list;
std::map<uint32, TributeData> tribute_list{};
void Client::ToggleTribute(bool enabled) {
if(enabled) {
@ -622,6 +622,26 @@ void Client::SendGuildTributeDonatePlatReply(GuildTributeDonatePlatRequest_Struc
}
std::map<uint32, TributeData> Client::GetTributeList() {
return tribute_list;
}
uint32 Client::LookupTributeItemID(uint32 tribute_id, uint32 tier)
{
if (!tribute_id && !tier) {
return 0;
}
if (tribute_list.contains(tribute_id)) {
auto tribute = tribute_list.find(tribute_id);
auto item_id = tribute->second.tiers[tier].tribute_item_id;
if (!item_id) {
return 0;
}
return item_id;
}
}
/*
64.37.149.6:1353 == server
66.90.221.245:3173 == client