fix(Core/SmartScripts): Added new parameter onlyInCombat to `SMART_… (#13947)
* fix(Core/SmartScripts): Added new parameter `onlyInCombat` to `SMART_EVENT_FRIENDLY_MISSING_BUFF` event. Coilfang Scale-Healer should cast Power Word: Shield only in combat. Fixes #13838 * missing sql.
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
--
|
||||||
|
UPDATE `smart_scripts` SET `event_param5`=1 WHERE `entryorguid`=21126 AND `source_type`=0 AND `id` IN (5,6);
|
||||||
@@ -3511,16 +3511,21 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SMART_EVENT_FRIENDLY_MISSING_BUFF:
|
case SMART_EVENT_FRIENDLY_MISSING_BUFF:
|
||||||
|
{
|
||||||
|
if (e.event.missingBuff.onlyInCombat && !me->IsEngaged())
|
||||||
{
|
{
|
||||||
std::vector<Creature*> creatures;
|
return;
|
||||||
DoFindFriendlyMissingBuff(creatures, float(e.event.missingBuff.radius), e.event.missingBuff.spell);
|
|
||||||
|
|
||||||
if (creatures.empty())
|
|
||||||
return;
|
|
||||||
|
|
||||||
ProcessTimedAction(e, e.event.missingBuff.repeatMin, e.event.missingBuff.repeatMax, Acore::Containers::SelectRandomContainerElement(creatures));
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<Creature*> creatures;
|
||||||
|
DoFindFriendlyMissingBuff(creatures, float(e.event.missingBuff.radius), e.event.missingBuff.spell);
|
||||||
|
|
||||||
|
if (creatures.empty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
ProcessTimedAction(e, e.event.missingBuff.repeatMin, e.event.missingBuff.repeatMax, Acore::Containers::SelectRandomContainerElement(creatures));
|
||||||
|
break;
|
||||||
|
}
|
||||||
case SMART_EVENT_HAS_AURA:
|
case SMART_EVENT_HAS_AURA:
|
||||||
{
|
{
|
||||||
if (!me)
|
if (!me)
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ enum SMART_EVENT
|
|||||||
SMART_EVENT_VICTIM_CASTING = 13, // RepeatMin, RepeatMax, spellid
|
SMART_EVENT_VICTIM_CASTING = 13, // RepeatMin, RepeatMax, spellid
|
||||||
SMART_EVENT_FRIENDLY_HEALTH = 14, // HPDeficit, Radius, RepeatMin, RepeatMax
|
SMART_EVENT_FRIENDLY_HEALTH = 14, // HPDeficit, Radius, RepeatMin, RepeatMax
|
||||||
SMART_EVENT_FRIENDLY_IS_CC = 15, // Radius, RepeatMin, RepeatMax
|
SMART_EVENT_FRIENDLY_IS_CC = 15, // Radius, RepeatMin, RepeatMax
|
||||||
SMART_EVENT_FRIENDLY_MISSING_BUFF = 16, // SpellId, Radius, RepeatMin, RepeatMax
|
SMART_EVENT_FRIENDLY_MISSING_BUFF = 16, // SpellId, Radius, RepeatMin, RepeatMax, onlyInCombat
|
||||||
SMART_EVENT_SUMMONED_UNIT = 17, // CreatureId(0 all), CooldownMin, CooldownMax
|
SMART_EVENT_SUMMONED_UNIT = 17, // CreatureId(0 all), CooldownMin, CooldownMax
|
||||||
SMART_EVENT_TARGET_MANA_PCT = 18, // ManaMin%, ManaMax%, RepeatMin, RepeatMax
|
SMART_EVENT_TARGET_MANA_PCT = 18, // ManaMin%, ManaMax%, RepeatMin, RepeatMax
|
||||||
SMART_EVENT_ACCEPTED_QUEST = 19, // QuestID (0 = any), CooldownMin, CooldownMax
|
SMART_EVENT_ACCEPTED_QUEST = 19, // QuestID (0 = any), CooldownMin, CooldownMax
|
||||||
@@ -301,6 +301,7 @@ struct SmartEvent
|
|||||||
uint32 radius;
|
uint32 radius;
|
||||||
uint32 repeatMin;
|
uint32 repeatMin;
|
||||||
uint32 repeatMax;
|
uint32 repeatMax;
|
||||||
|
uint32 onlyInCombat;
|
||||||
} missingBuff;
|
} missingBuff;
|
||||||
|
|
||||||
struct
|
struct
|
||||||
|
|||||||
Reference in New Issue
Block a user