From 5298abe6bc1d17aacc95e264bf7e4a0e87b82c23 Mon Sep 17 00:00:00 2001 From: Alex King <89047260+Kinglykrab@users.noreply.github.com> Date: Mon, 22 Jan 2024 17:34:28 -0500 Subject: [PATCH] [Bug Fix] Fix Mercenaries Buffs/Zoning Issues (#4000) # Notes - Mercenaries were disappearing on zoning because they were saving to slot `1` and being loaded from slot `0`. - Mercenaries were not displaying properly in group window because of this as well. - Mercenary buffs were saving even when they did not have any buffs. --- zone/merc.cpp | 57 +++++++++++++++++++++++-------------------------- zone/zonedb.cpp | 8 ++++--- 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/zone/merc.cpp b/zone/merc.cpp index f8f9f0d06..df1275ce4 100644 --- a/zone/merc.cpp +++ b/zone/merc.cpp @@ -5575,20 +5575,17 @@ Merc* Client::GetMerc() { return (tmp); } -uint8 Client::GetNumberOfMercenaries() { +uint8 Client::GetNumberOfMercenaries() +{ + uint8 count = 0; - uint8 numMercs = 0; - - for(int i=0; iGetMercenaryCharacterID(); - e.Slot = c->GetNumberOfMercenaries(); + e.Slot = (c->GetNumberOfMercenaries() - 1); e.Name = m->GetCleanName(); e.TemplateID = m->GetMercenaryTemplateID(); e.SuspendedTime = c->GetMercInfo().SuspendedTime; @@ -2336,7 +2336,7 @@ bool ZoneDatabase::SaveMercenary(Merc* m) auto e = MercsRepository::FindOne(*this, m->GetMercenaryID()); e.OwnerCharacterID = m->GetMercenaryCharacterID(); - e.Slot = c->GetNumberOfMercenaries(); + e.Slot = (c->GetNumberOfMercenaries() - 1); e.Name = m->GetCleanName(); e.TemplateID = m->GetMercenaryTemplateID(); e.SuspendedTime = c->GetMercInfo().SuspendedTime; @@ -2416,7 +2416,9 @@ void ZoneDatabase::SaveMercenaryBuffs(Merc* m) v.emplace_back(e); } - MercBuffsRepository::InsertMany(*this, v); + if (!v.empty()) { + MercBuffsRepository::InsertMany(*this, v); + } } void ZoneDatabase::LoadMercenaryBuffs(Merc* m)