mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/SAI: implement SMART_EVENT_SUMMONED_UNIT_DIES (82), useable by creatures and gameobjects (#24874)
* Core/SAI: implement SMART_EVENT_SUMMONED_UNIT_DIES (82), useable by creatures and gameobjects.
Closes #24831
* Update SmartScriptMgr.h
(cherry picked from commit 5339d1d3b8)
This commit is contained in:
@@ -592,6 +592,11 @@ void SmartAI::JustSummoned(Creature* creature)
|
||||
GetScript()->ProcessEventsFor(SMART_EVENT_SUMMONED_UNIT, creature);
|
||||
}
|
||||
|
||||
void SmartAI::SummonedCreatureDies(Creature* summon, Unit* /*killer*/)
|
||||
{
|
||||
GetScript()->ProcessEventsFor(SMART_EVENT_SUMMONED_UNIT_DIES, summon);
|
||||
}
|
||||
|
||||
void SmartAI::AttackStart(Unit* who)
|
||||
{
|
||||
// dont allow charmed npcs to act on their own
|
||||
@@ -1102,6 +1107,11 @@ void SmartGameObjectAI::JustSummoned(Creature* creature)
|
||||
GetScript()->ProcessEventsFor(SMART_EVENT_SUMMONED_UNIT, creature);
|
||||
}
|
||||
|
||||
void SmartGameObjectAI::SummonedCreatureDies(Creature* summon, Unit* /*killer*/)
|
||||
{
|
||||
GetScript()->ProcessEventsFor(SMART_EVENT_SUMMONED_UNIT_DIES, summon);
|
||||
}
|
||||
|
||||
void SmartGameObjectAI::SummonedCreatureDespawn(Creature* unit)
|
||||
{
|
||||
GetScript()->ProcessEventsFor(SMART_EVENT_SUMMON_DESPAWNED, unit, unit->GetEntry());
|
||||
|
||||
@@ -92,6 +92,9 @@ class TC_GAME_API SmartAI : public CreatureAI
|
||||
// Called when the creature summon successfully other creature
|
||||
void JustSummoned(Creature* creature) override;
|
||||
|
||||
// Called when a summoned unit dies
|
||||
void SummonedCreatureDies(Creature* summon, Unit* killer) override;
|
||||
|
||||
// Tell creature to attack and follow the victim
|
||||
void AttackStart(Unit* who) override;
|
||||
|
||||
@@ -275,6 +278,9 @@ class TC_GAME_API SmartGameObjectAI : public GameObjectAI
|
||||
// Called when the gameobject summon successfully other creature
|
||||
void JustSummoned(Creature* creature) override;
|
||||
|
||||
// Called when a summoned unit dies
|
||||
void SummonedCreatureDies(Creature* summon, Unit* killer) override;
|
||||
|
||||
// Called when a summoned creature dissapears (UnSommoned)
|
||||
void SummonedCreatureDespawn(Creature* unit) override;
|
||||
|
||||
|
||||
@@ -3417,6 +3417,7 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui
|
||||
break;
|
||||
}
|
||||
case SMART_EVENT_SUMMONED_UNIT:
|
||||
case SMART_EVENT_SUMMONED_UNIT_DIES:
|
||||
{
|
||||
if (!IsCreature(unit))
|
||||
return;
|
||||
|
||||
@@ -461,6 +461,7 @@ SmartScriptHolder& SmartAIMgr::FindLinkedEvent(SmartAIEventList& list, uint32 li
|
||||
case SMART_EVENT_DEATH:
|
||||
case SMART_EVENT_KILL:
|
||||
case SMART_EVENT_SUMMONED_UNIT:
|
||||
case SMART_EVENT_SUMMONED_UNIT_DIES:
|
||||
case SMART_EVENT_SPELLHIT:
|
||||
case SMART_EVENT_SPELLHIT_TARGET:
|
||||
case SMART_EVENT_DAMAGED:
|
||||
@@ -883,6 +884,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
|
||||
break;
|
||||
case SMART_EVENT_SUMMON_DESPAWNED:
|
||||
case SMART_EVENT_SUMMONED_UNIT:
|
||||
case SMART_EVENT_SUMMONED_UNIT_DIES:
|
||||
if (e.event.summoned.creature && !IsCreatureValid(e, e.event.summoned.creature))
|
||||
return false;
|
||||
|
||||
|
||||
@@ -178,8 +178,9 @@ enum SMART_EVENT
|
||||
SMART_EVENT_SCENE_TRIGGER = 79, // param_string : triggerName
|
||||
SMART_EVENT_SCENE_CANCEL = 80, // none
|
||||
SMART_EVENT_SCENE_COMPLETE = 81, // none
|
||||
SMART_EVENT_SUMMONED_UNIT_DIES = 82, // CreatureId(0 all), CooldownMin, CooldownMax
|
||||
|
||||
SMART_EVENT_END = 82
|
||||
SMART_EVENT_END = 83
|
||||
};
|
||||
|
||||
struct SmartEvent
|
||||
@@ -1579,7 +1580,8 @@ const uint32 SmartAIEventMask[SMART_EVENT_END][2] =
|
||||
{SMART_EVENT_SCENE_START, SMART_SCRIPT_TYPE_MASK_SCENE },
|
||||
{SMART_EVENT_SCENE_TRIGGER, SMART_SCRIPT_TYPE_MASK_SCENE },
|
||||
{SMART_EVENT_SCENE_CANCEL, SMART_SCRIPT_TYPE_MASK_SCENE },
|
||||
{SMART_EVENT_SCENE_COMPLETE, SMART_SCRIPT_TYPE_MASK_SCENE }
|
||||
{SMART_EVENT_SCENE_COMPLETE, SMART_SCRIPT_TYPE_MASK_SCENE },
|
||||
{SMART_EVENT_SUMMONED_UNIT_DIES, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
|
||||
};
|
||||
|
||||
enum SmartEventFlags
|
||||
|
||||
Reference in New Issue
Block a user