[Faction] Alliance line is only allowed 1 faction change at a time. (#3718)

This commit is contained in:
Paul Coene 2023-11-26 01:13:16 -05:00 committed by GitHub
parent f9f45eedcd
commit 690cacdaab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 23 deletions

View File

@ -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 <uint32, int32> :: const_iterator faction_bonus;
typedef std::pair <uint32, int32> NewFactionBonus;
faction_bonus = faction_bonuses.find(pFactionID);
if(faction_bonus == faction_bonuses.end())
{
faction_bonuses.emplace(NewFactionBonus(pFactionID,bonus));
}
else
{
if(faction_bonus->second<bonus)
{
faction_bonuses.erase(pFactionID);
faction_bonuses.emplace(NewFactionBonus(pFactionID,bonus));
}
}
current_alliance_faction = pFactionID;
current_alliance_mod = bonus;
}
// Faction Mods from items
@ -7167,11 +7154,9 @@ void Mob::AddItemFactionBonus(uint32 pFactionID,int32 bonus) {
}
int32 Mob::GetFactionBonus(uint32 pFactionID) {
std::map <uint32, int32> :: 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;
}

View File

@ -1774,8 +1774,9 @@ protected:
uint32 time_until_can_move;
HateList hate_list;
std::set<uint32> feign_memory_list;
// This is to keep track of mobs we cast faction mod spells on
std::map<uint32,int32> 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