[Bug Fix] Personal tributes for bard items were not applying correctly (#4416)

* Fixes Personal Tributes for bard items not being applied.

* Fix for bots
This commit is contained in:
Mitch Freeman 2024-07-16 12:18:42 -03:00 committed by GitHub
parent 51eb95ed31
commit 17f66c5d60
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 37 additions and 8 deletions

View File

@ -182,14 +182,20 @@ void Mob::CalcItemBonuses(StatBonuses* b) {
SetDualWeaponsEquipped(true); SetDualWeaponsEquipped(true);
} }
if (IsOfClientBot()) { if (IsClient()) {
for (i = EQ::invslot::TRIBUTE_BEGIN; i <= EQ::invslot::TRIBUTE_END; i++) { if (CastToClient()->GetPP().tribute_active) {
const EQ::ItemInstance* inst = m_inv[i]; 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) { if (!inst) {
continue; 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/data_verification.h"
#include "../common/repositories/character_parcels_repository.h" #include "../common/repositories/character_parcels_repository.h"
#include "../common/repositories/trader_repository.h" #include "../common/repositories/trader_repository.h"
#include "../common/guild_base.h"
#ifdef _WINDOWS #ifdef _WINDOWS
// since windows defines these within windef.h (which windows.h include) // since windows defines these within windef.h (which windows.h include)
@ -967,6 +968,8 @@ public:
void ChangeTributeSettings(TributeInfo_Struct *t); void ChangeTributeSettings(TributeInfo_Struct *t);
void SendTributeTimer(); void SendTributeTimer();
void ToggleTribute(bool enabled); void ToggleTribute(bool enabled);
std::map<uint32, TributeData> GetTributeList();
uint32 LookupTributeItemID(uint32 tribute_id, uint32 tier);
void SendPathPacket(const std::vector<FindPerson_Point> &path); void SendPathPacket(const std::vector<FindPerson_Point> &path);
inline PTimerList &GetPTimers() { return(p_timers); } 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; extern WorldServer worldserver;
std::map<uint32, TributeData> tribute_list; std::map<uint32, TributeData> tribute_list{};
void Client::ToggleTribute(bool enabled) { void Client::ToggleTribute(bool enabled) {
if(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 64.37.149.6:1353 == server
66.90.221.245:3173 == client 66.90.221.245:3173 == client