From 690cacdaab1631f6bb612a8103074cefb04f40d9 Mon Sep 17 00:00:00 2001 From: Paul Coene Date: Sun, 26 Nov 2023 01:13:16 -0500 Subject: [PATCH] [Faction] Alliance line is only allowed 1 faction change at a time. (#3718) --- zone/mob.cpp | 27 ++++++--------------------- zone/mob.h | 5 +++-- 2 files changed, 9 insertions(+), 23 deletions(-) diff --git a/zone/mob.cpp b/zone/mob.cpp index 4d4bc30df..a68889ddf 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -515,6 +515,7 @@ Mob::Mob( is_boat = IsBoat(); + current_alliance_faction = -1; } Mob::~Mob() @@ -7126,24 +7127,10 @@ int8 Mob::GetDecayEffectValue(uint16 spell_id, uint16 spelleffect) { return effect_value; } -// Faction Mods for Alliance type spells +// Faction Mods for Alliance type spells (only 1 ever active) void Mob::AddFactionBonus(uint32 pFactionID,int32 bonus) { - std::map :: const_iterator faction_bonus; - typedef std::pair NewFactionBonus; - - faction_bonus = faction_bonuses.find(pFactionID); - if(faction_bonus == faction_bonuses.end()) - { - faction_bonuses.emplace(NewFactionBonus(pFactionID,bonus)); - } - else - { - if(faction_bonus->second :: const_iterator faction_bonus; - faction_bonus = faction_bonuses.find(pFactionID); - if(faction_bonus != faction_bonuses.end()) + if(current_alliance_faction == pFactionID) { - return (*faction_bonus).second; + return current_alliance_mod; } return 0; } diff --git a/zone/mob.h b/zone/mob.h index 8960c0491..bcd4a6a3f 100644 --- a/zone/mob.h +++ b/zone/mob.h @@ -1774,8 +1774,9 @@ protected: uint32 time_until_can_move; HateList hate_list; std::set feign_memory_list; - // This is to keep track of mobs we cast faction mod spells on - std::map faction_bonuses; // Primary FactionID, Bonus + // This is to keep track of the current (one only) faction mod (alliance) + uint32 current_alliance_faction; + int32 current_alliance_mod; void AddFactionBonus(uint32 pFactionID,int32 bonus); int32 GetFactionBonus(uint32 pFactionID); // This is to keep track of item faction modifiers