diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/AreaTrigger/AreaTrigger.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp index 83b8edf1073..292d94e97d2 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp @@ -31,6 +31,7 @@ #include "Player.h" #include "ScriptMgr.h" #include "SpellInfo.h" +#include "SpellMgr.h" #include "Spline.h" #include "Transport.h" #include "Unit.h" @@ -501,17 +502,17 @@ void AreaTrigger::UpdateShape() UpdatePolygonOrientation(); } -bool UnitFitToActionRequirement(Unit* unit, Unit* caster, AreaTriggerActionUserTypes targetType) +bool UnitFitToActionRequirement(Unit* unit, Unit* caster, AreaTriggerAction const& action) { - switch (targetType) + switch (action.TargetType) { case AREATRIGGER_ACTION_USER_FRIEND: { - return caster->IsFriendlyTo(unit); + return caster->_IsValidAssistTarget(unit, sSpellMgr->GetSpellInfo(action.Param)); } case AREATRIGGER_ACTION_USER_ENEMY: { - return !caster->IsFriendlyTo(unit); + return caster->_IsValidAttackTarget(unit, sSpellMgr->GetSpellInfo(action.Param)); } case AREATRIGGER_ACTION_USER_RAID: { @@ -539,7 +540,7 @@ void AreaTrigger::DoActions(Unit* unit) { for (AreaTriggerAction const& action : GetTemplate()->Actions) { - if (UnitFitToActionRequirement(unit, caster, action.TargetType)) + if (UnitFitToActionRequirement(unit, caster, action)) { switch (action.ActionType) { |