39 for (
uint8 i = 0; i < 2; ++i)
111 if (!catapult->IsAlive())
112 catapult->Respawn(
true);
121 if (!glaiveThrower->IsAlive())
122 glaiveThrower->Respawn(
true);
142 if (siege->IsAlive())
148 siege->SetHealth(siege->GetMaxHealth());
151 siege->Respawn(
true);
159 if (!demolisher->IsAlive())
160 demolisher->Respawn(
true);
187 AddObject(
nodePoint[i].gameobject_type,
nodePoint[i].gameobject_entry, cords[0], cords[1], cords[2], cords[3], 0, 0, 0, 0,
RESPAWN_ONE_DAY);
251 if (!isInBattleground)
314 if (!
AddObject(
BG_IC_ObjSpawnlocs[i].type,
BG_IC_ObjSpawnlocs[i].entry,
BG_IC_ObjSpawnlocs[i].x,
BG_IC_ObjSpawnlocs[i].y,
BG_IC_ObjSpawnlocs[i].z,
BG_IC_ObjSpawnlocs[i].o, 0, 0, 0, 0,
RESPAWN_ONE_DAY))
323 if (!
AddObject(
BG_IC_Teleporters[i].type,
BG_IC_Teleporters[i].entry,
BG_IC_Teleporters[i].x,
BG_IC_Teleporters[i].y,
BG_IC_Teleporters[i].z,
BG_IC_Teleporters[i].o, 0, 0, 0, 0,
RESPAWN_ONE_DAY))
325 TC_LOG_ERROR(
"bg.battleground",
"Isle of Conquest | Starting Event Open Doors: There was an error spawning gameobject {}",
BG_IC_Teleporters[i].entry);
332 if (!
AddObject(
BG_IC_TeleporterEffects[i].type,
BG_IC_TeleporterEffects[i].entry,
BG_IC_TeleporterEffects[i].x,
BG_IC_TeleporterEffects[i].y,
BG_IC_TeleporterEffects[i].z,
BG_IC_TeleporterEffects[i].o, 0, 0, 0, 0,
RESPAWN_ONE_DAY))
334 TC_LOG_ERROR(
"bg.battleground",
"Isle of Conquest | Starting Event Open Doors: There was an error spawning gameobject {}",
BG_IC_Teleporters[i].entry);
353 TC_LOG_ERROR(
"bg.battleground",
"Isle of Conquest: Failed to spawn initial spirit guide!");
362 TC_LOG_ERROR(
"bg.battleground",
"Isle of Conquest: There was an error creating gunships!");
487 if (!
AddObject(
nodePoint[i].gameobject_type,
nodePoint[i].gameobject_entry, cords[0], cords[1], cords[2], cords[3], 0, 0, 0, 0,
RESPAWN_ONE_DAY))
489 TC_LOG_ERROR(
"bg.battleground",
"Isle of Conquest: There was an error spawning a banner (type: {}, entry: {}). Isle of Conquest BG cancelled.",
nodePoint[i].gameobject_type,
nodePoint[i].gameobject_entry);
518 for (
uint8 i = 0; i < 5; ++i)
549 TC_LOG_ERROR(
"bg.battleground",
"Isle Of Conquest: Unexpected return in GetNextBanner function");
574 std::list<Creature*> cannons;
582 cannon->GetVehicleKit()->RemoveAllPassengers();
598 TC_LOG_ERROR(
"bg.battleground",
"Isle of Conquest: Failed to spawn spirit guide! point: {}, team: {}, ", node->
nodeType, node->
faction);
608 std::list<Creature*> cannons;
673 if (
Vehicle* vehicleGlaive = glaiveThrower->GetVehicleKit())
675 if (!vehicleGlaive->GetPassenger(0))
685 if (
Vehicle* vehicleGlaive = catapult->GetVehicleKit())
687 if (!vehicleGlaive->GetPassenger(0))
729 if (
Vehicle* vehicleDemolisher = demolisher->GetVehicleKit())
732 if (!vehicleDemolisher->IsVehicleInUse())
754 if (
Vehicle* vehicleSiege = siegeEngine->GetVehicleKit())
757 if (!vehicleSiege->IsVehicleInUse())
771 siegeEngine->SetImmuneToPC(
true);
786 seaforiumBombs->SetRespawnTime(10);
869 std::vector<uint8> nodes;
881 float mindist = 999999.0f;
882 for (
uint8 i = 0; i < nodes.size(); ++i)
887 float dist = (entry->
Loc.
X - player_x)*(entry->
Loc.
X - player_x)+(entry->
Loc.
Y - player_y)*(entry->
Loc.
Y - player_y);
909 if (
nodePoint[i].nodeState == controlledState)
const uint32 BG_IC_GraveyardIds[MAX_NODE_TYPES+2]
@ 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
@ NPC_HORDE_GUNSHIP_CAPTAIN
@ NPC_HIGH_COMMANDER_HALFORD_WYRMBANE
@ NPC_WORLD_TRIGGER_NOT_FLOATING
@ NPC_ALLIANCE_GUNSHIP_CANNON
@ NPC_HORDE_GUNSHIP_CANNON
@ NPC_ALLIANCE_GUNSHIP_CAPTAIN
@ BANNER_STATE_CHANGE_TIME
ICNodeInfo const ICNodes[MAX_NODE_TYPES]
@ BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR01
@ BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR02
@ BG_IC_GO_ALLIANCE_GATE_3
@ BG_IC_GO_DOODAD_PORTCULLISACTIVE02
@ BG_IC_GO_HANGAR_TELEPORTER_EFFECT_3
@ BG_IC_GO_HANGAR_TELEPORTER_3
@ BG_IC_GO_WORKSHOP_BANNER
@ BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR03
@ BG_IC_GO_ALLIANCE_BANNER
@ BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR01
@ BG_IC_GO_HANGAR_TELEPORTER_1
@ BG_IC_GO_ALLIANCE_GATE_1
@ BG_IC_GO_REFINERY_BANNER
@ BG_IC_GO_SEAFORIUM_BOMBS_1
@ BG_IC_GO_DOODAD_VR_PORTCULLIS01_2
@ BG_IC_GO_SEAFORIUM_BOMBS_2
@ BG_IC_GO_DOODAD_HU_PORTCULLIS01_1
@ BG_IC_GO_HORDE_KEEP_PORTCULLIS
@ BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR03
@ BG_IC_GO_HANGAR_TELEPORTER_EFFECT_1
@ BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR02
@ BG_IC_GO_DOODAD_VR_PORTCULLIS01_1
@ BG_IC_GO_HUGE_SEAFORIUM_BOMBS_A_1
@ BG_IC_GO_ALLIANCE_GATE_2
@ BG_IC_GO_DOODAD_HU_PORTCULLIS01_2
@ BG_IC_GO_HUGE_SEAFORIUM_BOMBS_H_4
const Position BG_IC_WorkshopVehicles[5]
const ICGo BG_IC_TeleporterEffects[MAX_FORTRESS_TELEPORTER_EFFECTS_SPAWNS]
Position const BG_IC_SpiritGuidePos[MAX_NODE_TYPES+2]
@ SPELL_BACK_DOOR_JOB_ACHIEVEMENT
@ SPELL_DESTROYED_VEHICLE_ACHIEVEMENT
@ MAX_SPIRIT_GUIDES_SPAWNS
@ MAX_GLAIVE_THROWERS_SPAWNS_PER_FACTION
@ MAX_NORMAL_GAMEOBJECTS_SPAWNS
@ MAX_WORKSHOP_BOMBS_SPAWNS_PER_FACTION
@ MAX_HANGAR_TELEPORTER_EFFECTS_SPAWNS
@ MAX_FORTRESS_TELEPORTER_EFFECTS_SPAWNS
@ MAX_CATAPULTS_SPAWNS_PER_FACTION
@ MAX_DEMOLISHERS_SPAWNS_PER_FACTION
@ MAX_FORTRESS_TELEPORTERS_SPAWNS
@ MAX_FORTRESS_GATES_SPAWNS
@ MAX_TRIGGER_SPAWNS_PER_FACTION
@ MAX_CAPTAIN_SPAWNS_PER_FACTION
@ MAX_HANGAR_TELEPORTERS_SPAWNS
const uint32 BG_IC_Factions[2]
@ BG_IC_HORDE_RENFORT_SET
@ BG_IC_ALLIANCE_RENFORT_SET
#define MAX_REINFORCEMENTS
const ICGo BG_IC_ObjSpawnlocs[MAX_NORMAL_GAMEOBJECTS_SPAWNS]
const Position BG_IC_HangarTeleporters[3]
const Position BG_IC_HangarTrigger[2]
const ICNodePoint nodePointInitial[MAX_NODE_TYPES]
const ICNpc BG_IC_NpcSpawnlocs[MAX_NORMAL_NPCS_SPAWNS]
const Position workshopBombs[2]
@ NODE_STATE_CONTROLLED_A
@ NODE_STATE_CONTROLLED_H
const Position BG_IC_DocksVehiclesGlaives[2]
const Position BG_IC_DocksVehiclesCatapults[4]
@ GO_ALLIANCE_GUNSHIP_PORTAL_EFFECTS
@ GO_HORDE_GUNSHIP_PORTAL_EFFECTS
@ GO_ALLIANCE_GUNSHIP_PORTAL
@ GO_HORDE_GUNSHIP_PORTAL
@ BG_IC_NPC_KEEP_CANNON_24
@ BG_IC_NPC_GLAIVE_THROWER_1_H
@ BG_IC_NPC_GUNSHIP_CAPTAIN_1
@ BG_IC_NPC_KEEP_CANNON_13
@ BG_IC_NPC_SIEGE_ENGINE_H
@ BG_IC_NPC_DEMOLISHER_1_H
@ BG_IC_NPC_GUNSHIP_CAPTAIN_2
@ BG_IC_NPC_DEMOLISHER_1_A
@ BG_IC_NPC_OVERLORD_AGMAR
@ BG_IC_NPC_SIEGE_ENGINE_A
@ BG_IC_NPC_DEMOLISHER_4_A
@ BG_IC_NPC_KEEP_CANNON_12
@ BG_IC_NPC_KEEP_CANNON_1
@ BG_IC_NPC_GLAIVE_THROWER_1_A
@ BG_IC_NPC_SPIRIT_GUIDE_1
@ BG_IC_NPC_GLAIVE_THROWER_2_A
@ BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE
@ BG_IC_NPC_GLAIVE_THROWER_2_H
@ BG_IC_NPC_WORLD_TRIGGER_NOT_FLOATING
@ BG_IC_NPC_DEMOLISHER_4_H
const Position BG_IC_HangarTeleporterEffects[3]
const Position BG_IC_HangarCaptains[4]
const ICGo BG_IC_Teleporters[MAX_FORTRESS_TELEPORTERS_SPAWNS]
DBCStorage< WorldSafeLocsEntry > sWorldSafeLocsStore(WorldSafeLocsEntryfmt)
#define TC_LOG_ERROR(filterType__,...)
@ GO_DESTRUCTIBLE_DAMAGED
@ CHAT_MSG_BG_SYSTEM_ALLIANCE
@ CHAT_MSG_BG_SYSTEM_HORDE
@ UNIT_FLAG_UNINTERACTIBLE
void StartingEventCloseDoors() override
void HandleCapturedNodes(ICNodePoint *node, bool recapture)
void UpdateNodeWorldState(ICNodePoint *node)
bool IsSpellAllowed(uint32 spellId, Player const *player) const override
uint32 GetNodeState(uint8 nodeType) const
void HandleKillUnit(Creature *unit, Player *killer) override
void RemovePlayer(Player *player, ObjectGuid guid, uint32 team) override
void EventPlayerClickedOnFlag(Player *source, GameObject *) override
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates &packet) override
BG_IC_GateState GateStatus[6]
WorldSafeLocsEntry const * GetClosestGraveyard(Player *player) override
void AddPlayer(Player *player) override
void HandleKillPlayer(Player *player, Player *killer) override
uint32 GetGateIDFromEntry(uint32 id)
Transport * gunshipAlliance
void HandleAreaTrigger(Player *player, uint32 trigger) override
uint16 factionReinforcements[2]
void DestroyGate(Player *player, GameObject *go) override
uint32 GetNextBanner(ICNodePoint *node, uint32 team, bool returnDefinitve)
uint32 closeFortressDoorsTimer
void StartingEventOpenDoors() override
uint32 siegeEngineWorkshopTimer
void PostUpdateImpl(uint32 diff) override
Post-update hook.
uint32 GetWorldStateFromGateEntry(uint32 id, bool open)
bool IsAllNodesControlledByTeam(uint32 team) const override
void HandlePlayerResurrect(Player *player) override
bool SetupBattleground() override
void HandleContestedNodes(ICNodePoint *node)
virtual void AddPlayer(Player *player)
virtual void EndBattleground(uint32 winner)
virtual Creature * AddCreature(uint32 entry, uint32 type, float x, float y, float z, float o, TeamId teamId=TEAM_NEUTRAL, uint32 respawntime=0, Transport *transport=nullptr)
void RelocateDeadPlayers(ObjectGuid guideGuid)
Relocate all players in ReviveQueue to the closest graveyard.
void CastSpellOnTeam(uint32 SpellID, uint32 TeamID)
virtual void HandleKillPlayer(Player *player, Player *killer)
static TeamId GetTeamIndexByTeamId(uint32 Team)
void DoorOpen(uint32 type)
bool DelCreature(uint32 type)
virtual bool AddObject(uint32 type, uint32 entry, float x, float y, float z, float o, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime=0, GOState goState=GO_STATE_READY)
Creature * GetBGCreature(uint32 type, bool logError=true)
BattlegroundMap * GetBgMap() const
void RemoveAuraOnTeam(uint32 SpellID, uint32 TeamID)
virtual bool AddSpiritGuide(uint32 type, float x, float y, float z, float o, TeamId teamId=TEAM_NEUTRAL)
bool IsPlayerInBattleground(ObjectGuid guid) const
void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
bool DelObject(uint32 type)
BattlegroundScoreMap PlayerScores
void RewardHonorToTeam(uint32 Honor, uint32 TeamID)
BattlegroundStatus GetStatus() const
virtual bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true)
void UpdateWorldState(uint32 variable, uint32 value)
bool RemoveObjectFromWorld(uint32 type)
GameObject * GetBGObject(uint32 type, bool logError=true)
void SetGoState(GOState state)
void RemoveFlag(GameObjectFlags flags)
void SetDestructibleState(GameObjectDestructibleState state, WorldObject *attackerOrHealer=nullptr, bool setHealth=false)
void SetRespawnTime(int32 respawn)
void SetFaction(uint32 faction) override
static ObjectGuid GetGUID(Object const *o)
void EnableMovement(bool enabled)
virtual void DoAction(int32)
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
void SetFaction(uint32 faction) override
void GetCreatureListWithEntryInGrid(Container &creatureContainer, uint32 entry, float maxSearchRange=250.0f) const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
std::vector< WorldStateInfo > Worldstates
void BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player &playerData) override
float GetPositionZ() const
float GetOrientation() const
float GetPositionX() const
float GetPositionY() const
std::vector< uint32 > Stats