45 namespace BroadcastTexts
62 static constexpr std::array<std::pair<uint32, double>, 3>
CosmeticCarts =
70 namespace CreatureTexts::MineCart
138 namespace SpawnPositions
201 static constexpr std::string_view
MineDepot =
"bg_silvershard_mine_depot";
202 static constexpr std::string_view
TrackSwitchEast =
"bg_silvershard_mines_track_switch_east";
203 static constexpr std::string_view
TrackSwitchNorth =
"bg_silvershard_mines_track_switch_north";
206 namespace WorldStates
258 creature->GetMotionMaster()->MovePath(pathId,
false);
285 gameObject->UseDoorOrButton();
286 gameObject->DespawnOrUnsummon(3s);
397 mineCart->
CastSpell(mineCart, visualSpellId,
true);
408 if (player->GetBGTeam() == team)
556 if (!invoker || !trackSwitch)
559 int32 worldStateId = 0;
560 int32 broadcastTextId = 0;
666 std::ranges::set_intersection(
_theLongRidersPlayers, currentPlayers, std::inserter(theLongRidersPlayers, theLongRidersPlayers.begin()));
718 template <std::invocable<GameObject const*, Player*> Action>
722 for (
ObjectGuid const& playerGuid : *controlZone->GetInsidePlayers())
724 fn(controlZone, player);
735 player->CastSpell(player, mineCartCourierSpell, true);
736 if (controlZone->GetControllingTeam() == _endOfTheLineTeam)
737 player->CastSpell(player, SilvershardMines::Spells::EndOfTheLineAchievementCheck, true);
756 controlAuraApplyTime = aura->GetApplyTime();
758 controlAuraApplyTime = aura->GetApplyTime();
763 player->CastSpell(player, longRiderSpell,
true);
801 controllingTeam = controlZone->GetControllingTeam();
std::unordered_set< ObjectGuid > GuidUnorderedSet
std::set< ObjectGuid > GuidSet
std::vector< ObjectGuid > GuidVector
#define RegisterBattlegroundMapScript(script_name, mapId)
#define RegisterCreatureAI(ai_name)
#define RegisterSpellScript(spell_script)
constexpr TeamId GetTeamIdForTeam(Team team)
@ SPELL_EFFECT_SCRIPT_EFFECT
@ CHAT_MSG_BG_SYSTEM_ALLIANCE
@ CHAT_MSG_BG_SYSTEM_HORDE
@ CHAT_MSG_BG_SYSTEM_NEUTRAL
#define SpellEffectFn(F, I, N)
constexpr std::underlying_type< E >::type AsUnderlyingType(E enumValue)
void AddSC_battleground_silvershard_mines()
ObjectGuid const & GetGUID() const
Battleground * battleground
BattlegroundMap * battlegroundMap
virtual void OnPrepareStage2()
virtual void OnUpdate(uint32 diff)
void UpdateWorldState(int32 worldStateId, int32 value, bool hidden=false) const
uint32 GetTeamScore(TeamId teamId) const
void UpdateWorldState(int32 worldStateId, int32 value, bool hidden=false)
virtual void EndBattleground(Team winner)
void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
BattlegroundScore const * GetBattlegroundScore(Player *player) const
BattlegroundStatus GetStatus() const
void AddPoint(Team team, uint32 points=1)
void UpdatePvpStat(Player *player, uint32 pvpStatId, uint32 value)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
bool HasStringId(std::string_view id) 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)
void SetWorldStateValue(int32 worldStateId, int32 value, bool hidden)
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={})
GameObject * ToGameObject()
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
Creature * GetHitCreature() const
Player * GetHitPlayer() const
HookList< EffectHandler > OnEffectHitTarget
TaskContext & Schedule(TaskScheduler::duration_t time, TaskScheduler::task_handler_t task)
TaskContext & Repeat(TaskScheduler::duration_t duration)
TaskScheduler & Schedule(duration_t time, task_handler_t task)
TaskScheduler & Update()
Update the scheduler to the current time.
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
virtual void DoAction(int32 param)
MotionMaster * GetMotionMaster()
GameObject * GetGameObject(uint32 spellId) const
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) 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={ })
ZoneScript * GetZoneScript() const
GameObject * FindNearestGameObjectWithOptions(float range, FindGameObjectOptions const &options) const
virtual void DoAction(uint32 actionId, WorldObject *source=nullptr, WorldObject *target=nullptr)
virtual void OnCreatureCreate(Creature *)
virtual void ProcessEvent(WorldObject *obj, uint32 eventId, WorldObject *invoker)
virtual void OnGameObjectCreate(GameObject *)
void WaypointPathEnded(uint32, uint32 pathId) override
npc_bg_silvershard_mines_mine_cart_cosmetic(Creature *creature)
void DoForPlayersInControlZone(Action const &fn) const
time_t _theLongRidersSpawnTime
void WaypointPathEnded(uint32, uint32 pathId) override
GameObject * GetControlZone() const
static uint32 GetMineCartCourierSpell(uint32 pathId)
void JustAppeared() override
void HandleCapture(uint32 pathId) const
npc_bg_silvershard_mines_mine_cart(Creature *creature)
void DoAction(int32 actionId) override
void UpdateAI(uint32 diff) override
uint32 GetTheLongRiderAchievementSpell(uint32 pathId) const
GuidSet _theLongRidersPlayers
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex) const
void HandleScript(SpellEffIndex) const
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex) const
TC_GAME_API Player * FindPlayer(ObjectGuid const &)
static constexpr uint32 MineCartCapturedPlayer
static constexpr uint32 TrackChanged
static constexpr uint32 MineCartControlChanged
static constexpr uint32 MineCartCaptured
static constexpr uint32 NorthernCrossroadsChangedTracks
static constexpr uint32 AllianceControlsMineCart
static constexpr uint32 HordeControlsMineCart
static constexpr uint32 EasternCrossroadsChangedTracks
static constexpr uint32 CapturedByAlliance
static constexpr uint32 CapturedByHorde
static constexpr uint32 Spawned
static constexpr std::array< std::pair< uint32, double >, 3 > CosmeticCarts
static constexpr uint32 MineCartCosmetic3
static constexpr uint32 MineCart
static constexpr uint32 MineCartCosmetic2
static constexpr uint32 MineCartCosmetic1
static constexpr uint32 ProgressEventAllianceNorth
static constexpr uint32 ProgressEventAllianceEast
static constexpr uint32 ProgressEventNeutralEast
static constexpr uint32 ProgressEventHordeNorth
static constexpr uint32 ProgressEventHordeSouth
static constexpr uint32 ProgressEventNeutralSouth
static constexpr uint32 ProgressEventAllianceSouth
static constexpr uint32 ProgressEventHordeEast
static constexpr uint32 Gate4
static constexpr uint32 Gate3
static constexpr uint32 Gate1
static constexpr uint32 Gate2
static constexpr uint32 BattlegroundMap
static constexpr uint32 CosmeticCart3
static constexpr uint32 CosmeticCart2
static constexpr uint32 SouthEnd
static constexpr uint32 EastNorthEnd
static constexpr uint32 East
static constexpr uint32 CosmeticCart1
static constexpr uint32 EastNorth
static constexpr uint32 North
static constexpr uint32 NorthEastEnd
static constexpr uint32 EastSouthEnd
static constexpr uint32 NorthEast
static constexpr uint32 NorthWestEnd
static constexpr uint32 South
static constexpr uint32 EastSouth
static constexpr uint32 NorthWest
static constexpr uint32 CartsCaptured
static constexpr uint32 Capture
static constexpr uint32 Max
static constexpr Position MineCartSouth
static constexpr Position MineCartEast
static constexpr Position MineCartNorth
static constexpr std::array< std::pair< uint32, Position >, 3 > CosmeticCartsSpawnPositions
static constexpr uint32 TrackSwitchVisualClosed
static constexpr uint32 MineCartCourierNorthWest
static constexpr uint32 ControlVisualAlliance
static constexpr uint32 CartControlCapturePointUnitSouth
static constexpr uint32 LongRiderAchievementSouthAlliance
static constexpr uint32 CartControlCapturePointUnitEast
static constexpr uint32 LongRiderAchievementEastAlliance
static constexpr uint32 ThreeForThreeComplete
static constexpr uint32 EndOfTheLineAchievementCheck
static constexpr uint32 CartCap
static constexpr uint32 LongRiderAchievementEastHorde
static constexpr uint32 LongRiderAchievementSouthHorde
static constexpr uint32 MineCartCourierEastSouth
static constexpr uint32 DefendingCartAura
static constexpr uint32 MineCartCourierEastNorth
static constexpr uint32 MineCartCourierSouth
static constexpr uint32 LongRiderAchievementNorthHorde
static constexpr uint32 MineCartCourierNorthEast
static constexpr uint32 ControlVisualNeutral
static constexpr uint32 LongRiderAchievementNorthAlliance
static constexpr uint32 ControlVisualHorde
static constexpr uint32 TrackSwitchVisualOpened
static constexpr uint32 Capturing
static constexpr uint32 CartControlCapturePointUnitNorth
static constexpr std::string_view MineDepot
static constexpr std::string_view TrackSwitchEast
static constexpr std::string_view TrackSwitchNorth
static constexpr int32 HordeControlsNorthCart
static constexpr std::array< int32, 3 > HordeControlWorldStates
static constexpr int32 AllianceTeamScore
static constexpr int32 AllianceCapturedMineCart
static constexpr int32 AllianceControlsNorthCart
static constexpr int32 HordeTeamScore
static constexpr int32 HordeControlsEastCart
static constexpr int32 EasternCrossroadsTrackSwitchState
static constexpr int32 HordeCapturedMineCart
static constexpr int32 NorthernCrossroadsTrackSwitchState
static constexpr int32 AllianceControlsSouthCart
static constexpr int32 AllianceControlsEastCart
static constexpr int32 HordeControlsSouthCart
static constexpr std::array< int32, 3 > AllianceControlWorldStates
auto SelectRandomWeightedContainerElement(C const &container, std::span< double > const &weights) -> decltype(std::ranges::begin(container))
std::unordered_map< ObjectGuid, uint16 > _capturedMineCartsByPlayer
void OnPrepareStage2() override
void HandleProgressEvent(GameObject const *controlZone, Team team, ChatMsg msgType=CHAT_MSG_ADDON, uint32 broadcastTextId=0, uint32 visualSpellId=0) const
void OnCreatureCreate(Creature *creature) override
void OnUpdate(uint32 diff) override
void OnGameObjectCreate(GameObject *gameobject) override
void OnPlayerCapturedMineCart(Player *player)
void OnMineCartCaptured(Creature const *mineCart)
void SpawnNorthernMineCart() const
void ProcessEvent(WorldObject *obj, uint32 eventId, WorldObject *invoker) override
void UpdateCartWorldStates(GameObject const *controlZone) const
void SpawnEasternMineCart() const
battleground_silvershard_mines(BattlegroundMap *map)
void SpawnSouthernMineCart() const
void OnTrackSwitched(Player const *invoker, Creature *trackSwitch) const
void DoAction(uint32 actionId, WorldObject *source, WorldObject *target) override
void SendTeamScores() const