feat(Core/Scripting): Add new hook OnUnitSetShapeshiftForm (#21235)
This commit is contained in:
parent
02a903b16f
commit
054018232c
@ -21324,6 +21324,12 @@ bool Unit::CanRestoreMana(SpellInfo const* spellInfo) const
|
||||
return false;
|
||||
}
|
||||
|
||||
void Unit::SetShapeshiftForm(ShapeshiftForm form)
|
||||
{
|
||||
SetByteValue(UNIT_FIELD_BYTES_2, 3, form);
|
||||
sScriptMgr->OnUnitSetShapeshiftForm((Unit*)this, form);
|
||||
}
|
||||
|
||||
bool Unit::IsInDisallowedMountForm() const
|
||||
{
|
||||
if (SpellInfo const* transformSpellInfo = sSpellMgr->GetSpellInfo(getTransForm()))
|
||||
|
||||
@ -1868,10 +1868,7 @@ public:
|
||||
|
||||
// ShapeShitForm (use by druid)
|
||||
[[nodiscard]] ShapeshiftForm GetShapeshiftForm() const { return ShapeshiftForm(GetByteValue(UNIT_FIELD_BYTES_2, 3)); }
|
||||
void SetShapeshiftForm(ShapeshiftForm form)
|
||||
{
|
||||
SetByteValue(UNIT_FIELD_BYTES_2, 3, form);
|
||||
}
|
||||
void SetShapeshiftForm(ShapeshiftForm form);
|
||||
bool IsAttackSpeedOverridenShapeShift() const;
|
||||
[[nodiscard]] bool IsInFeralForm() const
|
||||
{
|
||||
|
||||
@ -148,6 +148,11 @@ void ScriptMgr::OnUnitDeath(Unit* unit, Unit* killer)
|
||||
CALL_ENABLED_HOOKS(UnitScript, UNITHOOK_ON_UNIT_DEATH, script->OnUnitDeath(unit, killer));
|
||||
}
|
||||
|
||||
void ScriptMgr::OnUnitSetShapeshiftForm(Unit* unit, uint8 form)
|
||||
{
|
||||
CALL_ENABLED_HOOKS(UnitScript, UNITHOOK_ON_UNIT_SET_SHAPESHIFT_FORM, script->OnUnitSetShapeshiftForm(unit, form));
|
||||
}
|
||||
|
||||
UnitScript::UnitScript(const char* name, bool addToScripts, std::vector<uint16> enabledHooks)
|
||||
: ScriptObject(name, UNITHOOK_END)
|
||||
{
|
||||
|
||||
@ -45,6 +45,7 @@ enum UnitHook
|
||||
UNITHOOK_ON_UNIT_ENTER_EVADE_MODE,
|
||||
UNITHOOK_ON_UNIT_ENTER_COMBAT,
|
||||
UNITHOOK_ON_UNIT_DEATH,
|
||||
UNITHOOK_ON_UNIT_SET_SHAPESHIFT_FORM,
|
||||
UNITHOOK_END
|
||||
};
|
||||
|
||||
@ -115,6 +116,7 @@ public:
|
||||
virtual void OnUnitEnterEvadeMode(Unit* /*unit*/, uint8 /*evadeReason*/) { }
|
||||
virtual void OnUnitEnterCombat(Unit* /*unit*/, Unit* /*victim*/) { }
|
||||
virtual void OnUnitDeath(Unit* /*unit*/, Unit* /*killer*/) { }
|
||||
virtual void OnUnitSetShapeshiftForm(Unit* /*unit*/, uint8 /*form*/) { }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@ -557,6 +557,7 @@ public: /* UnitScript */
|
||||
void OnUnitEnterEvadeMode(Unit* unit, uint8 why);
|
||||
void OnUnitEnterCombat(Unit* unit, Unit* victim);
|
||||
void OnUnitDeath(Unit* unit, Unit* killer);
|
||||
void OnUnitSetShapeshiftForm(Unit* unit, uint8 form);
|
||||
|
||||
public: /* MovementHandlerScript */
|
||||
void OnPlayerMove(Player* player, MovementInfo movementInfo, uint32 opcode);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user