25#include "G3DPosition.hpp"
42#include <unordered_map>
71 Ruins,
Ridge,
Plunge,
Shipwreck,
CrashSite,
TidePools,
Tower,
Bonfire,
TarPits,
Temple,
Overlook,
Waterfall
86 namespace CommanderTexts
154 namespace SpellVisuals
172 namespace WorldStates
218 context.Repeat(100ms);
231 gameObject->UseDoorOrButton();
232 gameObject->DespawnOrUnsummon(3s);
257 else if (team ==
HORDE)
372 for (
uint32 const node : targets)
394 std::vector<uint32> selected;
419 bool const isValid = std::ranges::any_of(toSpawn.begin(), toSpawn.end(), [&](std::string_view stringId)
421 return creature->HasStringId(stringId);
435 std::vector<std::string_view> selected;
474 std::vector<uint32>
const* nodesToActivate = std::any_cast<std::vector<uint32>>(&
GetSpell()->
m_customArg);
475 if (!nodesToActivate)
481 auto itr = targets.begin();
482 while (itr != targets.end())
487 targets.erase(itr++);
491 bool const shouldActivate = std::ranges::any_of(*nodesToActivate, [&creature](
uint32 areaId)
497 targets.erase(itr++);
524 unitOwner->GetMotionMaster()->MoveTargetedHome();
626 player->CastSpell(player,
static_cast<uint32>(
GetEffectInfo().CalcValueAsInt(player)), args);
635 player->SetFallInformation(0, player->GetPositionZ());
653 player->GetSpellHistory()->ResetAllCooldowns();
747 static inline const std::unordered_map<std::string_view, AirSupplyData>
AIR_SUPPLY_DATA =
770 supplies->GetMotionMaster()->MovePath(
ConvertPosToPath(destination),
false);
812 buff->SetSpawnedByDefault(
false);
813 buff->SetRespawnTime(300);
std::vector< ObjectGuid > GuidVector
uint32 urand(uint32 min, uint32 max)
#define RegisterBattlegroundMapScript(script_name, mapId)
#define RegisterCreatureAI(ai_name)
#define RegisterGameObjectAI(ai_name)
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
constexpr TeamId GetTeamIdForTeam(Team team)
@ TARGET_UNIT_SRC_AREA_ENTRY
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_KNOCK_BACK
@ SPELL_EFFECT_APPLY_AURA
@ CHAT_MSG_BG_SYSTEM_NEUTRAL
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_CAN_TURN_WHILE_FALLING
@ SPELL_AURA_PERIODIC_DUMMY
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraEffectRemoveFn(F, I, N, M)
void AddSC_battleground_seething_shore()
void PlaySpellVisual(uint32 spellVisualId) const
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectApplyHandler > OnEffectRemove
Unit * GetUnitOwner() const
ObjectGuid GetCastId() const
ObjectGuid const & GetGUID() const
Battleground * battleground
BattlegroundMap * battlegroundMap
void UpdateWorldState(int32 worldStateId, int32 value, bool hidden=false) const
void PlaySoundToAll(uint32 SoundID)
uint32 GetTeamScore(TeamId teamId) const
static TeamId GetTeamIndexByTeamId(Team team)
virtual void EndBattleground(Team winner)
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)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
std::string_view GetStringId(StringIdType type) const
GOState GetGoState() const
bool HasFlag(GameObjectFlags flags) const
static GameObject * CreateGameObject(uint32 entry, Map *map, Position const &pos, QuaternionData const &rotation, uint32 animProgress, GOState goState, uint32 artKit=0)
void DespawnOrUnsummon(Milliseconds delay=0ms, Seconds forceRespawnTime=0s)
void SendCustomAnim(uint32 anim)
void SetAnimKitId(uint16 animKitId, bool oneshot)
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)
Creature * GetCreature(ObjectGuid const &guid)
static ObjectGuid const Empty
GameObject * ToGameObject()
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, TeleportToOptions options=TELE_TO_NONE, Optional< uint32 > instanceId={}, uint32 teleportSpellId=0)
Battleground * GetBattleground() const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
static bool ValidateSpellEffect(std::initializer_list< std::pair< uint32, SpellEffIndex > > effects)
Creature * GetHitCreature() const
Player * GetHitPlayer() const
Unit * GetHitUnit() const
SpellEffectInfo const & GetEffectInfo() const
HookList< EffectHandler > OnEffectHitTarget
HookList< EffectHandler > OnEffectLaunchTarget
HookList< EffectHandler > OnEffectLaunch
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
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 DoCastAOE(uint32 spellId, CastSpellExtraArgs const &args={})
void SendPlaySpellVisual(Unit *target, uint32 spellVisualId, uint8 missReason, uint8 reflectStatus, float travelSpeed, bool speedAsTime=false, float launchDelay=0.0f)
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
ZoneScript * GetZoneScript() const
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
bool Validate(SpellInfo const *) override
void FilterTargets(std::list< WorldObject * > &targets) const
void HandleDummy(SpellEffIndex) const
void HandleRemove(AuraEffect const *, AuraEffectHandleModes) const
void ResetFallDamage(SpellEffIndex) const
void ApplyParachuteAura(SpellEffIndex) const
bool Validate(SpellInfo const *spellInfo) override
void HandlePeriodicTrigger(AuraEffect const *)
void HandleRemove(AuraEffect const *, AuraEffectHandleModes) const
spell_bg_seething_shore_rocket_parachute_ground_check()
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandlePeriodic(AuraEffect const *) const
void ResetCooldowns(SpellEffIndex) const
static constexpr uint32 ConsumeBuff
static constexpr uint32 CommanderText1
static constexpr uint32 SpawnBuff
static constexpr uint32 CaptureAzeriteNode
static constexpr uint32 TarPits
static constexpr uint32 TidePools
static constexpr uint32 Overlook
static constexpr uint32 Shipwreck
static constexpr std::array< uint32, 12 > AzeriteNodes
static constexpr uint32 Ruins
static constexpr uint32 CrashSite
static constexpr uint32 Plunge
static constexpr uint32 Waterfall
static constexpr uint32 Bonfire
static constexpr uint32 Temple
static constexpr uint32 Ridge
static constexpr uint32 Tower
static constexpr uint8 SuppliesSpawned
static constexpr uint8 CapturedAzerite
static constexpr uint8 Intro4
static constexpr uint8 Intro3
static constexpr uint8 Intro1
static constexpr uint8 Intro2
static constexpr uint32 AirSupplies
static constexpr uint32 NathanosBlightCaller
static constexpr uint32 AirSupplyGroundDummy
static constexpr uint32 Controller
static constexpr uint32 MathiasShaw
static constexpr uint32 AzeriteFissure
static constexpr std::array< uint32, 3 > Buffs
static constexpr uint32 HordeAirshipPrepCollision
static constexpr uint32 FoodBuff
static constexpr uint32 BerserkBuff
static constexpr uint32 SpeedBuff
static constexpr uint32 AllianceAirshipPrepCollision
static constexpr uint32 CapturedAzerite
static constexpr uint32 PvpFlagCapturedAlliance
static constexpr uint32 PvpFlagCapturedHorde
static constexpr uint32 AzeriteBirth
static constexpr uint32 HasteRuneBuff
static constexpr uint32 AchievementTrackerDeathFromAbove
static constexpr uint32 AchievementCreditClaimJumper
static constexpr uint32 PingVehicle
static constexpr uint32 AzeriteGeyser
static constexpr uint32 EarthQuakeCameraShake
static constexpr uint32 RocketParachute
static constexpr uint32 SpeedUp
static constexpr uint32 DustCloudImpactBigger
static constexpr uint32 Parachute
static constexpr uint32 SummonAzeriteCaptureNode2
static constexpr uint32 AzeriteKnockBack
static constexpr uint32 CapturedHordeCosmeticFx
static constexpr std::array< uint32, 3 > SummonAzeriteCaptureNodeSpells
static constexpr uint32 AchievementCredit
static constexpr uint32 SummonAzeriteCaptureNode1
static constexpr uint32 RocketParachute2
static constexpr uint32 CreateHasteRuneBuffAreaTrigger
static constexpr uint32 RopeBeam
static constexpr uint32 AchievementTrackerCreditClaimJumper
static constexpr uint32 ActivateAzerite
static constexpr uint32 CapturedAllianceCosmeticFx
static constexpr uint32 SummonAzeriteCaptureNode3
static constexpr uint32 NoFallingDamage
static constexpr std::string_view AirSupplyGroundDummy2
static constexpr std::string_view AirSupplyGroundDummy1
static constexpr std::string_view AirSupplyGroundDummy3
static constexpr std::string_view AirSupplyGroundDummy6
static constexpr std::array< std::string_view, 6 > AirSupplyGroundDummies
static constexpr std::string_view AirSupplyGroundDummy4
static constexpr std::string_view AirSupplyGroundDummy5
static constexpr uint32 AzeriteSpawning
static constexpr uint32 AllianceNearVictory
static constexpr uint32 HordeNearVictory
static constexpr uint32 AllianceScore
static constexpr uint32 HordeScore
static constexpr uint32 MaxScore
auto SelectRandomContainerElement(C const &container) -> std::add_const_t< decltype(*std::ranges::begin(container))> &
void RandomResize(C &container, std::size_t requestedSize)
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr void GetPosition(float &x, float &y) const
constexpr float GetOrientation() const
constexpr float GetPositionZ() const
static QuaternionData fromEulerAnglesZYX(float Z, float Y, float X)
Optional< ObjectGuid::LowType > TransportSpawnId
at_bg_seething_shore_haste_rune_buff(AreaTrigger *areatrigger)
void OnUnitEnter(Unit *unit) override
void OnCreate(Spell const *) override
void OnGameObjectCreate(GameObject *gameobject) override
static constexpr uint32 WARNING_NEAR_VICTORY_SCORE
void OnPrepareStage2() override
std::array< bool, PVP_TEAMS_COUNT > _isInformedNearVictory
std::array< ObjectGuid, PVP_TEAMS_COUNT > _commanderGUIDs
battleground_seething_shore(BattlegroundMap *map)
void OnGameObjectRemove(GameObject *gameobject) override
static constexpr uint8 MAX_AZERITE_SPAWNS
ObjectGuid _controllerGUID
void OnUpdate(uint32 diff) override
static constexpr uint8 MAX_BUFF_SPAWNS
void OnPrepareStage3() override
std::set< uint32 > _activeAzeriteNodes
void HandleAssaultPoint(GameObject *capturePoint, Player *player)
std::vector< uint32 > SelectAzeriteNodesToSpawn() const
void OnCreatureCreate(Creature *creature) override
void DoAction(uint32 actionId, WorldObject *source, WorldObject *target) override
std::set< std::string_view > _activeBuffs
std::vector< std::string_view > SelectBuffsToSpawn() const
GuidVector _airSupplyGroundDummyGUIDs
bool OnCapturePointAssaulted(Player *player) override
go_bg_seething_shore_azerite(GameObject *go)
npc_bg_seething_shore_air_supplies_crate(Creature *creature)
void JustAppeared() override
void WaypointPathEnded(uint32, uint32 pathId) override
npc_bg_seething_shore_air_supplies_drop(Creature *creature)
static const std::unordered_map< std::string_view, AirSupplyData > AIR_SUPPLY_DATA
static constexpr uint32 PATH_ID_GROUND
static WaypointPath ConvertPosToPath(Position const &position)
void UpdateAI(uint32 diff) override
npc_bg_seething_shore_air_supply_ground_dummy(Creature *creature)
void DoAction(int32 actionId) override
void SpawnAirSupplyParachute() const
void UpdateAI(uint32 diff) override
npc_bg_seething_shore_commander(Creature *creature)
void DoAction(int32 actionId) override
npc_bg_seething_shore_vignette_dummy(Creature *creature)
void JustAppeared() override
void UpdateAI(uint32 diff) override
void OnRemovePassenger(Transport *, Player *player) override
transport_seething_shore()