mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-26 15:11:30 +00:00
[Faction] Alliance line is only allowed 1 faction change at a time. (#3718)
This commit is contained in:
parent
f9f45eedcd
commit
690cacdaab
27
zone/mob.cpp
27
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 <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;
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user