47 namespace AreaTriggers
57 namespace BroadcastTexts
84 namespace CreatureTexts
125 namespace ForemanUzjax
141 { 4179.265625f, -2788.0712890625f, 240.7358856201171875f, 4.05515289306640625f },
142 { 4163.166015625f, -2809.192626953125f, 240.86444091796875f, 4.05515289306640625f },
143 { 4171.251953125f, -2798.54345703125f, 240.8136138916015625f, 4.05515289306640625f },
144 { 4175.2255859375f, -2793.239501953125f, 240.7935028076171875f, 4.091466903686523437f },
145 { 4167.109375f, -2803.795166015625f, 240.978973388671875f, 4.05515289306640625f }
150 { 3949.052978515625f, -3106.71875f, 240.960845947265625f, 4.05515289306640625f },
151 { 3961.213623046875f, -3090.671875f, 241.0115814208984375f, 4.05515289306640625f },
152 { 3957.064208984375f, -3095.954833984375f, 240.8014068603515625f, 4.05515289306640625f },
153 { 3965.46875f, -3084.96533203125f, 240.85400390625f, 4.068012237548828125f },
154 { 3953.146728515625f, -3101.30029296875f, 240.928680419921875f, 4.05515289306640625f },
196 namespace WorldStates
302 gameobject->UseDoorOrButton();
303 gameobject->DespawnOrUnsummon(3s);
361 return player->
GetGUID() == flag->GetFlagCarrierGUID();
417 DoForLeaders([&](Creature const* creature)
419 creature->AI()->Talk(DeephaulRavine::CreatureTexts::CrystalSpawn);
439 HandleMineCartCaptured();
457 if (!trigger || !player)
478 _scheduler.Schedule(90s, [&, createPropertiesId, pos](
TaskContext const&)
480 if (
Creature* genericBunny = battlegroundMap->GetCreature(_genericBunnyGUID))
494 _genericBunnyGUID = creature->
GetGUID();
512 _allianceDespawnedMineCarts.push(creature->
GetPosition());
515 _hordeDespawnedMineCarts.push(creature->
GetPosition());
572 mineCart->
CastSpell(mineCart, controlVisualSpell,
true);
573 UpdateCartWorldStates(controlZone);
574 battleground->SendBroadcastText(textId, msgType, controlZone);
578 if (player->GetBGTeam() == team)
585 if (_cartsReached != 2)
590 if (
Creature* creature = battlegroundMap->GetCreature(cartGUID))
600 uint32 const scoreToAdd = std::min<uint32>(1500 - battleground->GetTeamScore(controlZone->
GetControllingTeam()), 100);
608 battleground->AddPoint(
HORDE, scoreToAdd);
617 battleground->AddPoint(
ALLIANCE, scoreToAdd);
621 creature->DespawnOrUnsummon();
645 _cartGUIDs[0] = creature->GetGUID();
658 _cartGUIDs[1] = creature->GetGUID();
669 DoForLeaders([&](
Creature const* creature)
713 if (hordeScore >= maxScore || allianceScore >= maxScore)
717 if (hordeScore >= maxScore && allianceScore >= maxScore)
723 if (hordeScore >= maxScore)
725 battleground->EndBattleground(
HORDE);
733 if (allianceScore >= maxScore)
735 battleground->EndBattleground(
ALLIANCE);
747 template <std::invocable<Creature*> Action>
751 if (
Creature* creature = battlegroundMap->GetCreature(guid))
757 size_t allianceDespawnedMineCartCount = _allianceDespawnedMineCarts.size();
758 size_t hordeDespawnedMineCartCount = _hordeDespawnedMineCarts.size();
760 while (allianceDespawnedMineCartCount > 0 && !_hordeDespawnedMineCarts.empty())
762 --allianceDespawnedMineCartCount;
763 Position pos = _hordeDespawnedMineCarts.front();
764 _hordeDespawnedMineCarts.pop();
768 while (hordeDespawnedMineCartCount > 0 && !_allianceDespawnedMineCarts.empty())
770 --hordeDespawnedMineCartCount;
771 Position pos = _allianceDespawnedMineCarts.front();
772 _allianceDespawnedMineCarts.pop();
875 if (!spellClickHandled)
919 vehicle->RemoveAllPassengers();
978 for (auto const& [_, seat] : vehicle->Seats)
980 if (Unit* passenger = ObjectAccessor::GetUnit(*me, seat.Passenger.Guid))
982 passenger->CastSpell(passenger, DeephaulRavine::Spells::CartExhaustion, true);
983 passenger->_ExitVehicle();
1022template<u
int32 Path1, u
int32 Path2, u
int32 Path3, u
int32 Path4>
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
@ LANG_BG_DR_CRYSTAL_TAKEN_TUTORIAL
@ LANG_BG_DR_CRYSTAL_TAKEN
std::vector< ObjectGuid > GuidVector
#define RegisterBattlegroundMapScript(script_name, mapId)
#define RegisterCreatureAI(ai_name)
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
@ SPELL_EFFECT_SCRIPT_EFFECT
@ CHAT_MSG_BG_SYSTEM_ALLIANCE
@ CHAT_MSG_RAID_BOSS_EMOTE
@ CHAT_MSG_BG_SYSTEM_HORDE
@ AURA_EFFECT_HANDLE_REAL
#define SpellEffectFn(F, I, N)
#define AuraEffectApplyFn(F, I, N, M)
void AddSC_battleground_deephaul_ravine()
AreaTriggerCreatePropertiesId Id
AreaTriggerTemplate const * Template
bool IsStaticSpawn() const
static AreaTrigger * CreateAreaTrigger(AreaTriggerCreatePropertiesId areaTriggerCreatePropertiesId, Position const &pos, int32 duration, Unit *caster, Unit *target, SpellCastVisual spellVisual={ 0, 0 }, SpellInfo const *spellInfo=nullptr, Spell *spell=nullptr, AuraEffect const *aurEff=nullptr)
AreaTriggerCreateProperties const * GetCreateProperties() const
HookList< EffectApplyHandler > AfterEffectApply
ObjectGuid const & GetGUID() const
Battleground * battleground
void TriggerGameEvent(uint32 gameEventId, WorldObject *source=nullptr, WorldObject *target=nullptr) override
BattlegroundMap * battlegroundMap
virtual void OnUpdate(uint32 diff)
virtual void OnPrepareStage3()
void UpdateWorldState(int32 worldStateId, int32 value, bool hidden=false) const
void PlaySoundToAll(uint32 SoundID)
uint32 GetTeamScore(TeamId teamId) const
void SendMessageToAll(uint32 entry, ChatMsg type, Player const *source=nullptr)
static TeamId GetTeamIndexByTeamId(Team team)
void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
void AddPoint(Team team, uint32 points=1)
Team GetPlayerTeam(ObjectGuid guid) const
void UpdatePvpStat(Player *player, uint32 pvpStatId, uint32 value)
virtual void WaypointPathEnded(uint32, uint32)
virtual void OnSpellClick(Unit *, bool)
virtual void JustAppeared()
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
GameObjectTemplate const * GetGOInfo() const
GuidUnorderedSet const * GetInsidePlayers() const
TeamId GetControllingTeam() const
TempSummon * SummonCreature(uint32 entry, Position const &pos, SummonPropertiesEntry const *properties=nullptr, Milliseconds duration=0ms, WorldObject *summoner=nullptr, uint32 spellId=0, uint32 vehId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty, SmoothPhasingInfo const *smoothPhasingInfo=nullptr)
int32 GetWorldStateValue(int32 worldStateId) const
GameObject * GetGameObject(ObjectGuid const &guid)
void MovePath(uint32 pathId, bool repeatable, Optional< Milliseconds > duration={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< std::pair< Milliseconds, Milliseconds > > waitTimeRangeAtPathEnd={}, Optional< float > wanderDistanceAtPathEnds={}, Optional< bool > followPathBackwardsFromEndToStart={}, Optional< bool > exactSplinePath={}, bool generatePath=true, Optional< MovementFadeObject > fadeObject={}, Scripting::v2::ActionResultSetter< MovementStopReason > &&scriptResult={})
AreaTrigger * ToAreaTrigger()
GameObject * ToGameObject()
Creature * GetHitCreature() const
HookList< EffectHandler > OnEffectHitTarget
TaskContext & Repeat(TaskScheduler::duration_t duration)
TaskScheduler & Schedule(duration_t time, task_handler_t task)
TaskScheduler & Update()
Update the scheduler to the current time.
WorldObject * GetSummoner() const
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
void EnterVehicle(Unit *base, int8 seatId=-1)
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
MotionMaster * GetMotionMaster()
bool SetHover(bool enable, bool updateAnimTier=true)
TempSummon * ToTempSummon()
bool SetDisableGravity(bool disable, bool updateAnimTier=true)
void NearTeleportTo(TeleportLocation const &target, bool casting=false)
Vehicle * GetVehicleKit() const
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
TempSummon * SummonCreature(uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
ZoneScript * GetZoneScript() const
virtual void DoAction(uint32 actionId, WorldObject *source=nullptr, WorldObject *target=nullptr)
virtual void OnCaptureFlag(AreaTrigger *areaTrigger, Player *player)
virtual void OnFlagStateChange(GameObject *flagInBase, FlagState oldValue, FlagState newValue, Player *player)
virtual void OnAreaTriggerCreate(AreaTrigger *areaTrigger)
virtual void OnCreatureCreate(Creature *)
virtual void ProcessEvent(WorldObject *obj, uint32 eventId, WorldObject *invoker)
virtual void OnGameObjectCreate(GameObject *)
void JustAppeared() override
npc_bg_deephaul_cavern_mine_cart(Creature *creature)
void WaypointPathEnded(uint32 nodeId, uint32 pathId) override
void JustAppeared() override
void UpdateAI(uint32 diff) override
npc_bg_deephaul_ravine_commander(Creature *creature)
void DoAction(int32 actionId) override
void WaypointPathEnded(uint32, uint32 pathId) override
void JustAppeared() override
npc_bg_deephaul_ravine_earthen_mine_cart_alliance(Creature *creature)
void WaypointPathEnded(uint32, uint32 pathId) override
static constexpr int32 Path1
static constexpr int32 Path2
void UpdateAI(uint32 diff) override
static constexpr int32 Path3
static constexpr int32 Path1
static constexpr int32 Path2
void JustAppeared() override
void UpdateAI(uint32 diff) override
npc_bg_deephaul_ravine_earthen_mine_cart_horde(Creature *creature)
void WaypointPathEnded(uint32, uint32 pathId) override
void OnSpellClick(Unit *clicker, bool spellClickHandled) override
npc_bg_deephaul_ravine_earthen_mine_cart(Creature *creature)
void HandleScript(SpellEffIndex) const
void OnApply(AuraEffect const *, AuraEffectHandleModes) const
static constexpr uint32 CommanderStartIntro
static constexpr uint32 ConsumeBuff
static constexpr uint32 CaptureMineCart
static constexpr uint32 AllianceCartAppearedInitial
static constexpr uint32 HordeCartAppearedInitial
static constexpr uint32 CapturePointHorde
static constexpr uint32 BerserkerBuff
static constexpr uint32 RuneOfFrequency
static constexpr uint32 CapturePointAlliance
static constexpr uint32 HealingBuff
static constexpr uint32 FlagDropped
static constexpr uint32 AllianceCaptureMineCart
static constexpr uint32 CrystalCapturedHorde
static constexpr uint32 AllianceControlMineCart
static constexpr uint32 CrystalCapturedAlliance
static constexpr uint32 HordeCaptureMineCart
static constexpr uint32 HordeControlMineCart
static constexpr uint8 CrystalSpawn
static constexpr uint8 Intro2
static constexpr uint8 Win
static constexpr uint8 Intro1
static constexpr uint8 CartSpawn
static constexpr uint8 Lost
static constexpr uint32 MineCartEast
static constexpr uint32 GenericBunny
static constexpr uint32 EarthenMineCartAlliance
static constexpr uint32 ForemanUzjax
static constexpr uint32 Ruffious
static constexpr uint32 MineCartWest
static constexpr uint32 EarthenMineCartHorde
static constexpr uint32 BattlegroundStarted
static constexpr uint32 ProgressEventAllianceEast
static constexpr uint32 ProgressEventHordeWest
static constexpr uint32 ProgressEventAllianceWest
static constexpr uint32 ProgressEventHordeEast
static constexpr uint32 WaterworksStartingGateX
static constexpr uint32 EarthenworksStartingGateX
static constexpr uint32 DeephaulCrystal
static constexpr uint32 Path3
static constexpr uint32 Path4
static constexpr uint32 Path1
static constexpr uint32 Path2
static constexpr uint32 Path4
static constexpr uint32 Path3
static constexpr uint32 Path2
static constexpr uint32 Path1
static constexpr int32 EastCart
static constexpr int32 WestCart
static constexpr std::array< Position, 5 > EarthenMineCartsHorde
static constexpr Position WestMineCartSpawn
static constexpr Position EastMineCartSpawn
static constexpr std::array< Position, 5 > EarthenMineCartsAlliance
static constexpr int32 CartsControlled
static constexpr int32 FlagCaptures
static constexpr uint32 PvpFlagTakenAlliance
static constexpr uint32 PvpFlagCapturedHorde
static constexpr uint32 PvpFlagTakenHorde
static constexpr uint32 PvpFlagCapturedAlliance
static constexpr uint32 CartControlCapturePointUnitWest
static constexpr uint32 Restoration
static constexpr uint32 RuneOfFrequency
static constexpr uint32 CartExhaustion
static constexpr uint32 ControlVisualNeutral
static constexpr uint32 ControlVisualAlliance
static constexpr uint32 RecentlyDroppedFlag
static constexpr uint32 CartControlCapturePointUnitEast
static constexpr uint32 DefendingCartAura
static constexpr uint32 DeephaulCrystal
static constexpr uint32 Berserking
static constexpr uint32 ControlVisualHorde
static constexpr uint32 CartCap
static constexpr int32 FlagClaimed
static constexpr int32 FlagUnclaimed
static constexpr int32 AllianceControlsWestMineCart
static constexpr int32 FlagEnabled
static constexpr int32 HordeFlagState
static constexpr int32 AllianceTeamScore
static constexpr int32 HordeTeamScore
static constexpr int32 AllianceCapturedCart
static constexpr std::array< int32, 2 > HordeControlWorldStates
static constexpr int32 HordeCapturedCart
static constexpr int32 AllianceControlsEastMineCart
static constexpr int32 MaxTeamScore
static constexpr int32 HordeControlsEastMineCart
static constexpr int32 BattleBegun
static constexpr int32 HordeControlsWestMineCart
static constexpr int32 AllianceFlagState
static constexpr std::array< int32, 2 > AllianceControlWorldStates
TC_GAME_API Player * FindPlayer(ObjectGuid const &)
struct GameObjectTemplate::@197::@235 newflag
constexpr void GetPosition(float &x, float &y) const
virtual void UpdateAI(uint32 diff) override
at_bg_deephaul_ravine_buff(AreaTrigger *areaTrigger)
void OnUnitEnter(Unit *unit) override
std::queue< Position > _allianceDespawnedMineCarts
void OnUpdate(uint32 diff) override
void OnPrepareStage3() override
void HandleMineCartCaptured()
std::array< ObjectGuid, 2 > _cartGUIDs
battleground_deephaul_ravine(BattlegroundMap *map)
std::queue< Position > _hordeDespawnedMineCarts
void OnCreatureRemove(Creature *creature) override
std::array< ObjectGuid, 2 > _controlZoneGUIDs
void OnCaptureFlag(AreaTrigger *areaTrigger, Player *player) override
void OnFlagStateChange(GameObject *flagInBase, FlagState oldValue, FlagState newValue, Player *player) override
void OnCreatureCreate(Creature *creature) override
void RespawnEarthenMineCarts()
void UpdateCartWorldStates(GameObject const *controlZone) const
void SendTeamScores() const
std::array< ObjectGuid, 2 > _capturePointAreaTriggers
void DoAction(uint32 actionId, WorldObject *source, WorldObject *target) override
ObjectGuid _genericBunnyGUID
std::array< ObjectGuid, 2 > _leaderGUIDs
void ProcessEvent(WorldObject *obj, uint32 eventId, WorldObject *invoker) override
bool CanCaptureFlag(AreaTrigger *areaTrigger, Player *player) override
void OnGameObjectCreate(GameObject *gameobject) override
void HandleConsumeBuff(AreaTrigger *trigger, Player *player)
void HandleProgressEvent(GameObject const *controlZone, Team team, uint32 controlVisualSpell, uint32 textId, ChatMsg msgType) const
void DoForLeaders(Action const &fn) const
void OnAreaTriggerCreate(AreaTrigger *areaTrigger) override