115 { 11.69964981079101562f, 0.034145999699831008f, 20.62075996398925781f, 3.211405754089355468f },
116 { 7.30560922622680664f, -0.09524600207805633f, 34.51021575927734375f, 3.159045934677124023f }
169 auto gameobjectAction = [&](
GuidVector const& guids, std::function<void(
GameObject*)>
const& action) ->
void
377 transport->EnableMovement(
true);
382 cannon->SetUninteractible(
false);
399 else if (creature->
HasStringId(
"bg_ioc_faction_1732"))
426 if (gameobject->
HasStringId(
"bg_ioc_faction_1735"))
428 else if (gameobject->
HasStringId(
"bg_ioc_faction_1732"))
476 transport->EnableMovement(
false);
482 transport->EnableMovement(
false);
504 if (!player || !banner)
515 bool assault =
false;
531 assault = !defend && playerTeamId ==
TEAM_HORDE;
572 transport->EnableMovement(
false);
578 cannon->GetVehicleKit()->RemoveAllPassengers();
579 cannon->SetUninteractible(
true);
585 creature->DespawnOrUnsummon();
615 if (obj->GetGOInfo()->destructibleBuilding.DestroyedEvent == eventId)
699 keepGate->UseDoorOrButton();
@ PVP_STAT_BASES_DEFENDED
@ PVP_STAT_BASES_ASSAULTED
Position const GunshipTeleportTriggerPosition[2]
static constexpr Seconds IOC_RESOURCE_TIMER
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
@ 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
@ ACTION_IOC_INTERACT_CAPTURABLE_OBJECT
@ ACTION_IOC_CAPTURE_CAPTURABLE_OBJECT
@ NPC_HIGH_COMMANDER_HALFORD_WYRMBANE
@ NPC_WORLD_TRIGGER_NOT_FLOATING
@ NPC_ALLIANCE_GUNSHIP_CANNON
@ NPC_HORDE_GUNSHIP_CANNON
@ SPELL_DESTROYED_VEHICLE_ACHIEVEMENT
@ BG_IC_GATE_WEST_A_WS_OPEN
@ BG_IC_GATE_FRONT_A_WS_OPEN
@ BG_IC_GATE_FRONT_H_WS_OPEN
@ BG_IC_GATE_FRONT_A_WS_CLOSED
@ BG_IC_GATE_EAST_H_WS_OPEN
@ BG_IC_GATE_WEST_H_WS_OPEN
@ BG_IC_GATE_FRONT_H_WS_CLOSED
@ BG_IC_ALLIANCE_REINFORCEMENTS
@ BG_IC_GATE_EAST_H_WS_CLOSED
@ BG_IC_GATE_WEST_H_WS_CLOSED
@ BG_IC_GATE_WEST_A_WS_CLOSED
@ BG_IC_GATE_EAST_A_WS_OPEN
@ BG_IC_HORDE_REINFORCEMENTS
@ BG_IC_GATE_EAST_A_WS_CLOSED
#define MAX_REINFORCEMENTS
const IoCStaticNodeInfo nodePointInitial[MAX_NODE_TYPES]
std::chrono::seconds Seconds
Seconds shorthand typedef.
@ TEMPSUMMON_MANUAL_DESPAWN
std::vector< ObjectGuid > GuidVector
@ 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
GuidVector _teleporterEffectGUIDs
void HandleCaptureNodeAction(GameObject *banner)
static ICNodePointType BannerToNodeType(uint32 bannerId)
void OnPlayerDefendNode(Player *player, ICNodePoint &node)
std::array< uint16, PVP_TEAMS_COUNT > _factionReinforcements
std::array< ObjectGuid, PVP_TEAMS_COUNT > _keepBannerGUIDs
void OnGateDestroyed(GameObject *gate, WorldObject *destroyer)
WorldSafeLocsEntry const * GetExploitTeleportLocation(Team team) override
static int32 GetWorldStateFromGateEntry(uint32 id, bool open)
void HandleCapturedNodes(ICNodePoint &node)
std::array< GuidVector, PVP_TEAMS_COUNT > _cannonGUIDs
void HandleKillUnit(Creature *unit, Unit *killer) override
void OnGameObjectCreate(GameObject *gameobject) override
void UpdateNodeWorldState(ICNodePoint const &node)
GuidVector _portcullisGUIDs
void HandleKillPlayer(Player *player, Player *killer) override
BattlegroundIC(BattlegroundTemplate const *battlegroundTemplate)
void OnPlayerAssaultNode(Player *player, ICNodePoint &node)
TimeTracker _resourceTimer
static uint32 GetGateIDFromEntry(uint32 id)
~BattlegroundIC() override
ObjectGuid _gunshipTeleportTarget
std::array< BG_IC_GateState, 6 > _gateStatus
GuidVector _mainGateDoorGUIDs
void OnPlayerInteractWithBanner(Player *player, GameObject *banner)
void DoAction(uint32 actionId, WorldObject *source, WorldObject *target) override
std::array< std::unique_ptr< ICNodePoint >, 7 > _nodePoints
void ProcessEvent(WorldObject *target, uint32 eventId, WorldObject *invoker) override
void StartingEventOpenDoors() override
void PostUpdateImpl(uint32 diff) override
Post-update hook.
std::array< ObjectGuid, PVP_TEAMS_COUNT > _gunshipGUIDs
void OnMapSet(BattlegroundMap *map) override
void OnCreatureCreate(Creature *creature) override
std::array< GuidVector, PVP_TEAMS_COUNT > _keepGateGUIDs
GuidVector _teleporterGUIDs
virtual void HandleKillPlayer(Player *player, Player *killer)
virtual void OnMapSet(BattlegroundMap *map)
void RewardHonorToTeam(uint32 Honor, Team team)
BattlegroundMap * GetBgMap() const
BattlegroundMap * FindBgMap() const
void ProcessEvent(WorldObject *, uint32, WorldObject *) override
static TeamId GetTeamIndexByTeamId(Team team)
void UpdateWorldState(int32 worldStateId, int32 value, bool hidden=false)
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 GetState() const
IoCStaticNodeInfo const & GetNodeInfo() const
TeamId GetLastControlledTeam() const
void UpdateSpawnGroupConditions()
GameObject * GetGameObject(ObjectGuid const &guid)
void UpdateAreaDependentAuras()
GameObject * ToGameObject()
static ObjectGuid GetGUID(Object const *o)
TaskScheduler & Schedule(std::chrono::duration< Rep, Period > time, task_handler_t task)
TaskScheduler & Update(success_t const &callback=nullptr)
void SetControlled(bool apply, UnitState state)
void SetFaction(uint32 faction) override
void SetUninteractible(bool apply)
Player * GetCharmerOrOwnerPlayerOrPlayerItself() const
virtual void OnCreatureCreate(Creature *)
virtual void OnGameObjectCreate(GameObject *)
TC_GAME_API GameObject * GetGameObject(WorldObject const &u, ObjectGuid const &guid)
TC_GAME_API Transport * GetTransport(WorldObject const &u, ObjectGuid const &guid)
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
struct IoCStaticNodeInfo::@196 WorldStateIds
struct IoCStaticNodeInfo::@195 TextIds