mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Scripts/AreaTrigger: Added CanCaptureFlag and CaptureFlag hooks (#29237)
* also added related areatrigger script
This commit is contained in:
@@ -71,6 +71,9 @@ class TC_GAME_API ZoneScript
|
||||
virtual void ProcessEvent(WorldObject* /*obj*/, uint32 /*eventId*/, WorldObject* /*invoker*/) { }
|
||||
|
||||
virtual void OnFlagStateChange([[maybe_unused]] GameObject* flagInBase, [[maybe_unused]] FlagState oldValue, [[maybe_unused]] FlagState newValue, [[maybe_unused]] Player* player) { }
|
||||
|
||||
virtual bool CanCaptureFlag([[maybe_unused]] AreaTrigger* areaTrigger, [[maybe_unused]] Player* player) { return false; }
|
||||
virtual void OnCaptureFlag([[maybe_unused]] AreaTrigger* areaTrigger, [[maybe_unused]] Player* player) { }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "AreaTrigger.h"
|
||||
#include "AreaTriggerAI.h"
|
||||
#include "DB2Structure.h"
|
||||
#include "GameObject.h"
|
||||
@@ -26,6 +27,7 @@
|
||||
#include "Player.h"
|
||||
#include "TemporarySummon.h"
|
||||
#include "World.h"
|
||||
#include "ZoneScript.h"
|
||||
|
||||
/*######
|
||||
## at_coilfang_waterfall
|
||||
@@ -441,6 +443,22 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
struct areatrigger_action_capture_flag : AreaTriggerAI
|
||||
{
|
||||
areatrigger_action_capture_flag(AreaTrigger* areatrigger) : AreaTriggerAI(areatrigger) { }
|
||||
|
||||
void OnUnitEnter(Unit* unit) override
|
||||
{
|
||||
if (!unit->IsPlayer())
|
||||
return;
|
||||
|
||||
Player* player = unit->ToPlayer();
|
||||
if (ZoneScript* zoneScript = at->GetZoneScript())
|
||||
if (zoneScript->CanCaptureFlag(at, player))
|
||||
zoneScript->OnCaptureFlag(at, player);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_areatrigger_scripts()
|
||||
{
|
||||
new AreaTrigger_at_coilfang_waterfall();
|
||||
@@ -454,4 +472,5 @@ void AddSC_areatrigger_scripts()
|
||||
RegisterAreaTriggerAI(areatrigger_stormwind_teleport_unit);
|
||||
RegisterAreaTriggerAI(areatrigger_battleground_buffs);
|
||||
new AreaTrigger_at_battleground_buffs();
|
||||
RegisterAreaTriggerAI(areatrigger_action_capture_flag);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user