mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-30 09:03:47 +00:00
feat(Core/Scripting): Add several UnitHooks (#12365)
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
#include "MapReference.h"
|
||||
#include "Player.h"
|
||||
#include "Vehicle.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "Language.h"
|
||||
|
||||
class PhasedRespawn : public BasicEvent
|
||||
@@ -226,6 +227,8 @@ void CreatureAI::EnterEvadeMode(EvadeReason why)
|
||||
me->DespawnOnEvade();
|
||||
me->m_Events.AddEvent(new PhasedRespawn(*me), me->m_Events.CalculateTime(20000));
|
||||
}
|
||||
|
||||
sScriptMgr->OnUnitEnterEvadeMode(me, why);
|
||||
}
|
||||
|
||||
/*void CreatureAI::AttackedBy(Unit* attacker)
|
||||
|
||||
@@ -13187,6 +13187,8 @@ void Unit::SetInCombatState(bool PvP, Unit* enemy, uint32 duration)
|
||||
|
||||
if (creature->GetFormation())
|
||||
creature->GetFormation()->MemberEngagingTarget(creature, enemy);
|
||||
|
||||
sScriptMgr->OnUnitEnterCombat(creature, enemy);
|
||||
}
|
||||
|
||||
creature->RefreshSwimmingFlag();
|
||||
@@ -17498,6 +17500,7 @@ void Unit::Kill(Unit* killer, Unit* victim, bool durabilityLoss, WeaponAttackTyp
|
||||
if (CreatureAI* ai = creature->AI())
|
||||
{
|
||||
ai->JustDied(killer);
|
||||
sScriptMgr->OnUnitDeath(creature, killer);
|
||||
}
|
||||
|
||||
if (TempSummon* summon = creature->ToTempSummon())
|
||||
|
||||
@@ -218,3 +218,27 @@ void ScriptMgr::OnDisplayIdChange(Unit* unit, uint32 displayId)
|
||||
script->OnDisplayIdChange(unit, displayId);
|
||||
});
|
||||
}
|
||||
|
||||
void ScriptMgr::OnUnitEnterEvadeMode(Unit* unit, uint8 evadeReason)
|
||||
{
|
||||
ExecuteScript<UnitScript>([&](UnitScript* script)
|
||||
{
|
||||
script->OnUnitEnterEvadeMode(unit, evadeReason);
|
||||
});
|
||||
}
|
||||
|
||||
void ScriptMgr::OnUnitEnterCombat(Unit* unit, Unit* victim)
|
||||
{
|
||||
ExecuteScript<UnitScript>([&](UnitScript* script)
|
||||
{
|
||||
script->OnUnitEnterCombat(unit, victim);
|
||||
});
|
||||
}
|
||||
|
||||
void ScriptMgr::OnUnitDeath(Unit* unit, Unit* killer)
|
||||
{
|
||||
ExecuteScript<UnitScript>([&](UnitScript* script)
|
||||
{
|
||||
script->OnUnitDeath(unit, killer);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -461,6 +461,10 @@ public:
|
||||
virtual void OnUnitUpdate(Unit* /*unit*/, uint32 /*diff*/) { }
|
||||
|
||||
virtual void OnDisplayIdChange(Unit* /*unit*/, uint32 /*displayId*/) { }
|
||||
|
||||
virtual void OnUnitEnterEvadeMode(Unit* /*unit*/, uint8 /*evadeReason*/) { }
|
||||
virtual void OnUnitEnterCombat(Unit* /*unit*/, Unit* /*victim*/) { }
|
||||
virtual void OnUnitDeath(Unit* /*unit*/, Unit* /*killer*/) { }
|
||||
};
|
||||
|
||||
class MovementHandlerScript : public ScriptObject
|
||||
@@ -2403,6 +2407,9 @@ public: /* UnitScript */
|
||||
bool OnBuildValuesUpdate(Unit const* unit, uint8 updateType, ByteBuffer& fieldBuffer, Player* target, uint16 index);
|
||||
void OnUnitUpdate(Unit* unit, uint32 diff);
|
||||
void OnDisplayIdChange(Unit* unit, uint32 displayId);
|
||||
void OnUnitEnterEvadeMode(Unit* unit, uint8 why);
|
||||
void OnUnitEnterCombat(Unit* unit, Unit* victim);
|
||||
void OnUnitDeath(Unit* unit, Unit* killer);
|
||||
|
||||
public: /* MovementHandlerScript */
|
||||
void OnPlayerMove(Player* player, MovementInfo movementInfo, uint32 opcode);
|
||||
|
||||
Reference in New Issue
Block a user