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