Skip to content

Commit

Permalink
StaticFlags: Implement IGNORE_MISDIRECTION (#543)
Browse files Browse the repository at this point in the history
* StaticFlags: Implement IGNORE_MISDIRECTION

* StaticFlags: Simplify IgnoreMisdirection

* StaticFlags: Fix misdirect ignore applied in incorrect place

* StaticFlags: Break out of loop entire on misdirect ignore
  • Loading branch information
insunaa authored Oct 7, 2024
1 parent a765adf commit 79b5982
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/game/Combat/ThreatManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -476,6 +476,8 @@ void ThreatManager::addThreat(Unit* victim, float threat, bool crit, SpellSchool
auto& redirectionData = victim->getHostileRefManager().GetThreatRedirectionData();
for (auto& redirection : redirectionData)
{
if (getOwner()->IsIgnoringMisdirect())
break;
float redirectedMod = redirection.second.mod;
Unit* redirectedTarget = iOwner->GetMap()->GetUnit(redirection.second.target);
if (!redirectedTarget)
Expand Down
12 changes: 12 additions & 0 deletions src/game/Entities/Creature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2958,6 +2958,18 @@ void Creature::SetIgnoreSanctuary(bool state)
m_settings.RemoveFlag(CreatureStaticFlags2::IGNORE_SANCTUARY);
}

bool Creature::IsIgnoringMisdirect() const
{
return m_settings.HasFlag(CreatureStaticFlags2::IGNORE_MISDIRECTION);
}

void Creature::SetIgnoreMisdirect(bool state)
{
if (state)
m_settings.SetFlag(CreatureStaticFlags2::IGNORE_MISDIRECTION);
else
m_settings.RemoveFlag(CreatureStaticFlags2::IGNORE_MISDIRECTION);
}

void Creature::SetNoWoundedSlowdown(bool state)
{
Expand Down
3 changes: 3 additions & 0 deletions src/game/Entities/Creature.h
Original file line number Diff line number Diff line change
Expand Up @@ -860,6 +860,9 @@ class Creature : public Unit
void SetNoWeaponSkillGain(bool state);
bool IsNoWeaponSkillGain() const override;

bool IsIgnoringMisdirect() const override;
void SetIgnoreMisdirect(bool state);

bool IsPreventingDeath() const override;

virtual void AddCooldown(SpellEntry const& spellEntry, ItemPrototype const* itemProto = nullptr, bool permanent = false, uint32 forcedDuration = 0, bool ignoreCat = false) override;
Expand Down
2 changes: 2 additions & 0 deletions src/game/Entities/Unit.h
Original file line number Diff line number Diff line change
Expand Up @@ -2464,6 +2464,8 @@ class Unit : public WorldObject
virtual bool IsIgnoringFeignDeath() const { return false; }
virtual bool IsIgnoringSanctuary() const { return false; }

virtual bool IsIgnoringMisdirect() const { return false; }

virtual bool IsSlowedInCombat() const { return false; }

void InterruptSpellsCastedOnMe(bool killDelayed = false);
Expand Down

0 comments on commit 79b5982

Please sign in to comment.