184 {
NODE_TYPE_REFINERY, { 35377, 35378, 35379, 35380 }, {
BG_IC_REFINERY_UNCONTROLLED,
BG_IC_REFINERY_CONFLICT_A,
BG_IC_REFINERY_CONFLICT_H,
BG_IC_REFINERY_CONTROLLED_A,
BG_IC_REFINERY_CONTROLLED_H } },
185 {
NODE_TYPE_QUARRY, { 35373, 35374, 35375, 35376 }, {
BG_IC_QUARRY_UNCONTROLLED,
BG_IC_QUARRY_CONFLICT_A,
BG_IC_QUARRY_CONFLICT_H,
BG_IC_QUARRY_CONTROLLED_A,
BG_IC_QUARRY_CONTROLLED_H } },
186 {
NODE_TYPE_DOCKS, { 35365, 35366, 35367, 35368 }, {
BG_IC_DOCKS_UNCONTROLLED,
BG_IC_DOCKS_CONFLICT_A,
BG_IC_DOCKS_CONFLICT_H,
BG_IC_DOCKS_CONTROLLED_A,
BG_IC_DOCKS_CONTROLLED_H } },
187 {
NODE_TYPE_HANGAR, { 35369, 35370, 35371, 35372 }, {
BG_IC_HANGAR_UNCONTROLLED,
BG_IC_HANGAR_CONFLICT_A,
BG_IC_HANGAR_CONFLICT_H,
BG_IC_HANGAR_CONTROLLED_A,
BG_IC_HANGAR_CONTROLLED_H } },
188 {
NODE_TYPE_WORKSHOP, { 35278, 35286, 35279, 35280 }, {
BG_IC_WORKSHOP_UNCONTROLLED,
BG_IC_WORKSHOP_CONFLICT_A,
BG_IC_WORKSHOP_CONFLICT_H,
BG_IC_WORKSHOP_CONTROLLED_A,
BG_IC_WORKSHOP_CONTROLLED_H } },
189 {
NODE_TYPE_GRAVEYARD_A, { 35461, 35459, 35463, 35466 }, {
BG_IC_ALLIANCE_KEEP_UNCONTROLLED,
BG_IC_ALLIANCE_KEEP_CONFLICT_A,
BG_IC_ALLIANCE_KEEP_CONFLICT_H,
BG_IC_ALLIANCE_KEEP_CONTROLLED_A,
BG_IC_ALLIANCE_KEEP_CONTROLLED_H } },
284 { 11.69964981079101562f, 0.034145999699831008f, 20.62075996398925781f, 3.211405754089355468f },
285 { 7.30560922622680664f, -0.09524600207805633f, 34.51021575927734375f, 3.159045934677124023f }
342 auto gameobjectAction = [&]<std::invocable<GameObject*>
Action>(
GuidVector const& guids,
Action const& action) ->
void
552 transport->EnableMovement(
true);
557 cannon->SetUninteractible(
false);
570 else if (creature->
HasStringId(
"bg_ioc_faction_1732"))
597 if (gameobject->
HasStringId(
"bg_ioc_faction_1735"))
599 else if (gameobject->
HasStringId(
"bg_ioc_faction_1732"))
647 transport->EnableMovement(
false);
653 transport->EnableMovement(
false);
676 if (!player || !banner)
687 bool assault =
false;
703 assault = !defend && playerTeamId ==
TEAM_HORDE;
744 transport->EnableMovement(
false);
750 cannon->GetVehicleKit()->RemoveAllPassengers();
751 cannon->SetUninteractible(
true);
757 creature->DespawnOrUnsummon();
787 if (obj->GetGOInfo()->destructibleBuilding.DestroyedEvent == eventId)
871 keepGate->UseDoorOrButton();
std::chrono::seconds Seconds
Seconds shorthand typedef.
@ TEMPSUMMON_MANUAL_DESPAWN
std::vector< ObjectGuid > GuidVector
#define RegisterBattlegroundMapScript(script_name, mapId)
@ GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING
@ GO_DESTRUCTIBLE_DAMAGED
@ FACTION_ALLIANCE_GENERIC_WG
@ FACTION_HORDE_GENERIC_WG
@ CHAT_MSG_BG_SYSTEM_ALLIANCE
@ CHAT_MSG_BG_SYSTEM_HORDE
BG_IC_ExploitTeleportLocations
@ IC_EXPLOIT_TELEPORT_LOCATION_ALLIANCE
@ IC_EXPLOIT_TELEPORT_LOCATION_HORDE
@ BG_IC_TEXT_WEST_GATE_HORDE_DESTROYED
@ BG_IC_TEXT_FRONT_GATE_ALLIANCE_DESTROYED
@ BG_IC_TEXT_WEST_GATE_ALLIANCE_DESTROYED
@ BG_IC_TEXT_FRONT_GATE_HORDE_DESTROYED
@ BG_IC_TEXT_EAST_GATE_HORDE_DESTROYED
@ BG_IC_TEXT_EAST_GATE_ALLIANCE_DESTROYED
@ PVP_STAT_BASES_DEFENDED
@ PVP_STAT_BASES_ASSAULTED
static constexpr Seconds IOC_RESOURCE_TIMER
const IoCStaticNodeInfo nodePointInitial[MAX_NODE_TYPES]
IsleOfConquestGameObjects
@ GO_BANNER_DOCKS_CONTROLLED_A
@ GO_BANNER_DOCKS_CONTROLLED_H
@ GO_BANNER_HORDE_KEEP_CONTROLLED_A
@ GO_BANNER_REFINERY_CONTESTED_A
@ GO_BANNER_QUARRY_CONTROLLED_A
@ GO_BANNER_HANGAR_CONTROLLED_A
@ GO_BANNER_ALLIANCE_KEEP_CONTROLLED_H
@ GO_TELEPORTER_EFFECTS_A
@ GO_BANNER_WORKSHOP_CONTROLLED_N
@ GO_BANNER_ALLIANCE_KEEP_CONTROLLED_A
@ GO_DOODAD_PORTCULLISACTIVE02
@ GO_BANNER_REFINERY_CONTROLLED_H
@ GO_BANNER_WORKSHOP_CONTESTED_H
@ GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR01
@ GO_BANNER_WORKSHOP_CONTROLLED_H
@ GO_BANNER_HANGAR_CONTROLLED_H
@ GO_TELEPORTER_EFFECTS_H
@ GO_BANNER_WORKSHOP_CONTESTED_A
@ GO_BANNER_QUARRY_CONTESTED_A
@ GO_BANNER_QUARRY_CONTESTED_H
@ GO_BANNER_QUARRY_CONTROLLED_N
@ GO_BANNER_ALLIANCE_KEEP_CONTESTED_A
@ GO_BANNER_HORDE_KEEP_CONTROLLED_H
@ GO_BANNER_QUARRY_CONTROLLED_H
@ GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR01
@ GO_BANNER_DOCKS_CONTESTED_A
@ GO_DOODAD_HU_PORTCULLIS01
@ GO_BANNER_ALLIANCE_KEEP_CONTESTED_H
@ GO_BANNER_REFINERY_CONTROLLED_A
@ GO_BANNER_REFINERY_CONTESTED_H
@ GO_DOODAD_VR_PORTCULLIS01
@ GO_BANNER_HORDE_KEEP_CONTESTED_A
@ GO_BANNER_DOCKS_CONTROLLED_N
@ GO_BANNER_WORKSHOP_CONTROLLED_A
@ GO_BANNER_HANGAR_CONTROLLED_N
@ GO_BANNER_REFINERY_CONTROLLED_N
@ GO_BANNER_DOCKS_CONTESTED_H
@ GO_BANNER_HORDE_KEEP_CONTESTED_H
@ GO_BANNER_HANGAR_CONTESTED_H
@ GO_BANNER_HANGAR_CONTESTED_A
static constexpr Position GunshipTeleportTriggerPosition[2]
void AddSC_battleground_isle_of_conquest()
constexpr uint16 MAX_REINFORCEMENTS
ObjectGuid const & GetGUID() const
Battleground * battleground
BattlegroundMap * battlegroundMap
virtual void OnPlayerKilled(Player *victim, Player *killer)
virtual void OnUpdate(uint32 diff)
virtual void OnUnitKilled(Creature *victim, Unit *killer)
void UpdateWorldState(int32 worldStateId, int32 value, bool hidden=false) const
void RewardHonorToTeam(uint32 Honor, Team team)
static TeamId GetTeamIndexByTeamId(Team team)
virtual void EndBattleground(Team winner)
void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
BattlegroundStatus GetStatus() const
Team GetPlayerTeam(ObjectGuid guid) const
void UpdatePvpStat(Player *player, uint32 pvpStatId, uint32 value)
bool HasStringId(std::string_view id) const
bool HasStringId(std::string_view id) const
void SetGoState(GOState state)
void UseDoorOrButton(uint32 time_to_restore=0, bool alternative=false, Unit *user=nullptr)
void RemoveFlag(GameObjectFlags flags)
void DespawnOrUnsummon(Milliseconds delay=0ms, Seconds forceRespawnTime=0s)
void SetDestructibleState(GameObjectDestructibleState state, WorldObject *attackerOrHealer=nullptr, bool setHealth=false)
bool IsDestructibleBuilding() const
void SetFaction(uint32 faction) override
void UpdateState(IsleOfConquestNodeState state)
IsleOfConquestNodeState _state
IsleOfConquestNodeState GetState() const
IoCStaticNodeInfo const & GetNodeInfo() const
ICNodePoint(IsleOfConquestNodeState state, IoCStaticNodeInfo const &nodeInfo)
TeamId GetLastControlledTeam() const
IoCStaticNodeInfo _nodeInfo
void UpdateSpawnGroupConditions()
GameObject * GetGameObject(ObjectGuid const &guid)
void UpdateAreaDependentAuras()
Creature * GetCreature(ObjectGuid const &guid)
Transport * GetTransport(ObjectGuid const &guid)
GameObject * ToGameObject()
TaskScheduler & Schedule(duration_t time, task_handler_t task)
TaskScheduler & Update()
Update the scheduler to the current time.
void SetControlled(bool apply, UnitState state)
void SetFaction(uint32 faction) override
void SetUninteractible(bool apply)
Player * GetCharmerOrOwnerPlayerOrPlayerItself() 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 *)
@ ACTION_IOC_INTERACT_CAPTURABLE_OBJECT
@ ACTION_IOC_CAPTURE_CAPTURABLE_OBJECT
@ SPELL_DESTROYED_VEHICLE_ACHIEVEMENT
@ BG_IC_HANGAR_CONTROLLED_H
@ BG_IC_GATE_WEST_A_WS_OPEN
@ BG_IC_QUARRY_CONTROLLED_H
@ BG_IC_HANGAR_CONTROLLED_A
@ BG_IC_QUARRY_CONTROLLED_A
@ BG_IC_WORKSHOP_CONFLICT_A
@ BG_IC_WORKSHOP_CONTROLLED_H
@ BG_IC_GATE_FRONT_A_WS_OPEN
@ BG_IC_GATE_FRONT_H_WS_OPEN
@ BG_IC_QUARRY_CONFLICT_A
@ BG_IC_HORDE_KEEP_CONTROLLED_A
@ BG_IC_HORDE_KEEP_UNCONTROLLED
@ BG_IC_HORDE_KEEP_CONFLICT_H
@ BG_IC_GATE_FRONT_A_WS_CLOSED
@ BG_IC_WORKSHOP_UNCONTROLLED
@ BG_IC_HORDE_KEEP_CONFLICT_A
@ BG_IC_GATE_EAST_H_WS_OPEN
@ BG_IC_GATE_WEST_H_WS_OPEN
@ BG_IC_WORKSHOP_CONTROLLED_A
@ BG_IC_GATE_FRONT_H_WS_CLOSED
@ BG_IC_DOCKS_UNCONTROLLED
@ BG_IC_ALLIANCE_REINFORCEMENTS
@ BG_IC_REFINERY_CONTROLLED_A
@ BG_IC_GATE_EAST_H_WS_CLOSED
@ BG_IC_QUARRY_CONFLICT_H
@ BG_IC_WORKSHOP_CONFLICT_H
@ BG_IC_GATE_WEST_H_WS_CLOSED
@ BG_IC_HANGAR_CONFLICT_A
@ BG_IC_ALLIANCE_KEEP_UNCONTROLLED
@ BG_IC_REFINERY_CONTROLLED_H
@ BG_IC_HANGAR_CONFLICT_H
@ BG_IC_ALLIANCE_KEEP_CONTROLLED_H
@ BG_IC_HORDE_KEEP_CONTROLLED_H
@ BG_IC_GATE_WEST_A_WS_CLOSED
@ BG_IC_HANGAR_UNCONTROLLED
@ BG_IC_ALLIANCE_KEEP_CONFLICT_A
@ BG_IC_DOCKS_CONTROLLED_H
@ BG_IC_ALLIANCE_KEEP_CONTROLLED_A
@ BG_IC_GATE_EAST_A_WS_OPEN
@ BG_IC_HORDE_REINFORCEMENTS
@ BG_IC_QUARRY_UNCONTROLLED
@ BG_IC_REFINERY_CONFLICT_H
@ BG_IC_ALLIANCE_KEEP_CONFLICT_H
@ BG_IC_GATE_EAST_A_WS_CLOSED
@ BG_IC_DOCKS_CONTROLLED_A
@ BG_IC_REFINERY_UNCONTROLLED
@ BG_IC_REFINERY_CONFLICT_A
@ NPC_HIGH_COMMANDER_HALFORD_WYRMBANE
@ NPC_WORLD_TRIGGER_NOT_FLOATING
@ NPC_ALLIANCE_GUNSHIP_CANNON
@ NPC_HORDE_GUNSHIP_CANNON
struct IoCStaticNodeInfo::@333 WorldStateIds
struct IoCStaticNodeInfo::@332 TextIds
battleground_isle_of_conquest(BattlegroundMap *map)
static int32 GetWorldStateFromGateEntry(uint32 id, bool open)
static ICNodePointType BannerToNodeType(uint32 bannerId)
TimeTracker _resourceTimer
void OnPlayerDefendNode(Player *player, ICNodePoint &node)
static uint32 GetGateIDFromEntry(uint32 id)
GuidVector _portcullisGUIDs
void OnPlayerKilled(Player *player, Player *killer) override
void OnGameObjectCreate(GameObject *gameobject) override
std::array< GuidVector, PVP_TEAMS_COUNT > _cannonGUIDs
void OnPlayerInteractWithBanner(Player *player, GameObject *banner)
std::array< GuidVector, PVP_TEAMS_COUNT > _keepGateGUIDs
ObjectGuid _gunshipTeleportTarget
void HandleCaptureNodeAction(GameObject *banner)
void OnPlayerAssaultNode(Player *player, ICNodePoint &node)
void OnUpdate(uint32 diff) override
void HandleCapturedNodes(ICNodePoint &node)
GuidVector _mainGateDoorGUIDs
void ProcessEvent(WorldObject *target, uint32 eventId, WorldObject *invoker) override
void DoAction(uint32 actionId, WorldObject *source, WorldObject *target) override
GuidVector _teleporterEffectGUIDs
void OnCreatureCreate(Creature *creature) override
std::array< ObjectGuid, PVP_TEAMS_COUNT > _gunshipGUIDs
std::array< ObjectGuid, PVP_TEAMS_COUNT > _keepBannerGUIDs
void UpdateNodeWorldState(ICNodePoint const &node) const
std::array< BG_IC_GateState, 6 > _gateStatus
std::array< std::unique_ptr< ICNodePoint >, 7 > _nodePoints
void OnUnitKilled(Creature *unit, Unit *killer) override
GuidVector _teleporterGUIDs
void OnGateDestroyed(GameObject *gate, WorldObject *destroyer)
std::array< uint16, PVP_TEAMS_COUNT > _factionReinforcements