AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
BattlegroundIC Class Reference

#include "BattlegroundIC.h"

Inheritance diagram for BattlegroundIC:
Battleground

Public Member Functions

 BattlegroundIC ()
 
void AddPlayer (Player *player) override
 
void StartingEventCloseDoors () override
 
void StartingEventOpenDoors () override
 
void PostUpdateImpl (uint32 diff) override
 Post-update hook.
 
void RemovePlayer (Player *player) override
 
void HandleAreaTrigger (Player *player, uint32 trigger) override
 
bool SetupBattleground () override
 
void HandleKillUnit (Creature *unit, Player *killer) override
 
void HandleKillPlayer (Player *player, Player *killer) override
 
void EventPlayerClickedOnFlag (Player *source, GameObject *) override
 
void EventPlayerDamagedGO (Player *, GameObject *, uint32) override
 
void DestroyGate (Player *player, GameObject *go) override
 
GraveyardStruct const * GetClosestGraveyard (Player *player) override
 
bool UpdatePlayerScore (Player *player, uint32 type, uint32 value, bool doAddHonor=true) override
 
void FillInitialWorldStates (WorldPackets::WorldState::InitWorldStates &packet) override
 
void HandlePlayerResurrect (Player *player) override
 
uint32 GetNodeState (uint8 nodeType) const
 
bool AllNodesConrolledByTeam (TeamId teamId) const override
 
bool IsResourceGlutAllowed (TeamId teamId) const
 
void DoAction (uint32 action, ObjectGuid guid) override
 
- Public Member Functions inherited from Battleground
 Battleground ()
 
virtual ~Battleground ()
 
void Update (uint32 diff)
 
virtual void Init ()
 
virtual void ResetBGSubclass ()
 
void StartTimedAchievement (AchievementCriteriaTimedTypes type, uint32 entry)
 
std::string GetName () const
 
BattlegroundTypeId GetBgTypeID (bool GetRandom=false) const
 
BattlegroundBracketId GetBracketId () const
 
uint32 GetInstanceID () const
 
BattlegroundStatus GetStatus () const
 
uint32 GetClientInstanceID () const
 
uint32 GetStartTime () const
 
uint32 GetEndTime () const
 
uint32 GetLastResurrectTime () const
 
uint32 GetMinLevel () const
 
uint32 GetMaxLevel () const
 
bool isTemplate () const
 
bool isMaxLevel () const
 
uint32 GetMaxPlayersPerTeam () const
 
uint32 GetMinPlayersPerTeam () const
 
int32 GetStartDelayTime () const
 
uint8 GetArenaType () const
 
PvPTeamId GetWinner () const
 
uint32 GetScriptId () const
 
uint32 GetBonusHonorFromKill (uint32 kills) const
 
void SpiritOfCompetitionEvent (PvPTeamId winnerTeamId) const
 
bool IsRandom ()
 
void SetName (std::string_view name)
 
void SetBgTypeID (BattlegroundTypeId TypeID)
 
void SetRandomTypeID (BattlegroundTypeId TypeID)
 
void SetBracket (PvPDifficultyEntry const *bracketEntry)
 
void SetInstanceID (uint32 InstanceID)
 
void SetStatus (BattlegroundStatus Status)
 
void SetClientInstanceID (uint32 InstanceID)
 
void SetStartTime (uint32 Time)
 
void SetEndTime (uint32 Time)
 
void SetLastResurrectTime (uint32 Time)
 
void SetLevelRange (uint32 min, uint32 max)
 
void SetRated (bool state)
 
void SetArenaType (uint8 type)
 
void SetArenaorBGType (bool _isArena)
 
void SetWinner (PvPTeamId winner)
 
void SetScriptId (uint32 scriptId)
 
void SetRandom (bool isRandom)
 
void ModifyStartDelayTime (int32 diff)
 
void SetStartDelayTime (int32 Time)
 
void SetMaxPlayersPerTeam (uint32 MaxPlayers)
 
void SetMinPlayersPerTeam (uint32 MinPlayers)
 
void AddToBGFreeSlotQueue ()
 
void RemoveFromBGFreeSlotQueue ()
 
void DecreaseInvitedCount (TeamId teamId)
 
void IncreaseInvitedCount (TeamId teamId)
 
uint32 GetInvitedCount (TeamId teamId) const
 
bool HasFreeSlots () const
 
uint32 GetFreeSlotsForTeam (TeamId teamId) const
 
uint32 GetMaxFreeSlots () const
 
void AddSpectator (Player *p)
 
void RemoveSpectator (Player *p)
 
bool HaveSpectators ()
 
const SpectatorListGetSpectators () const
 
void AddToBeTeleported (ObjectGuid spectator, ObjectGuid participant)
 
void RemoveToBeTeleported (ObjectGuid spectator)
 
void SpectatorsSendPacket (WorldPacket &data)
 
bool isArena () const
 
bool isBattleground () const
 
bool isRated () const
 
BattlegroundPlayerMap const & GetPlayers () const
 
uint32 GetPlayersSize () const
 
void ReadyMarkerClicked (Player *p)
 
BattlegroundScoreMap const * GetPlayerScores () const
 
std::size_t GetPlayerScoresSize () const
 
uint32 GetReviveQueueSize () const
 
void AddPlayerToResurrectQueue (ObjectGuid npc_guid, ObjectGuid player_guid)
 
void RemovePlayerFromResurrectQueue (Player *player)
 
void RelocateDeadPlayers (ObjectGuid queueIndex)
 Relocate all players in ReviveQueue to the closest graveyard.
 
void StartBattleground ()
 
GameObjectGetBGObject (uint32 type)
 
CreatureGetBGCreature (uint32 type)
 
void SetMapId (uint32 MapID)
 
uint32 GetMapId () const
 
void SetBgMap (BattlegroundMap *map)
 
BattlegroundMapGetBgMap () const
 
BattlegroundMapFindBgMap () const
 
void SetTeamStartPosition (TeamId teamId, Position const &pos)
 
Position const * GetTeamStartPosition (TeamId teamId) const
 
void SetStartMaxDist (float startMaxDist)
 
float GetStartMaxDist () const
 
void SendPacketToTeam (TeamId teamId, WorldPacket const *packet, Player *sender=nullptr, bool self=true)
 
void SendPacketToAll (WorldPacket const *packet)
 
void YellToAll (Creature *creature, const char *text, uint32 language)
 
void SendChatMessage (Creature *source, uint8 textId, WorldObject *target=nullptr)
 
void SendBroadcastText (uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
 
template<class Do >
void BroadcastWorker (Do &_do)
 
void PlaySoundToAll (uint32 soundId)
 
void CastSpellOnTeam (uint32 spellId, TeamId teamId)
 
void RemoveAuraOnTeam (uint32 spellId, TeamId teamId)
 
void RewardHonorToTeam (uint32 honor, TeamId teamId)
 
void RewardReputationToTeam (uint32 factionId, uint32 reputation, TeamId teamId)
 
uint32 GetRealRepFactionForPlayer (uint32 factionId, Player *player)
 
void UpdateWorldState (uint32 variable, uint32 value)
 
void EndBattleground (PvPTeamId winnerTeamId)
 
virtual void EndBattleground (TeamId winnerTeamId)
 
void BlockMovement (Player *player)
 
GroupGetBgRaid (TeamId teamId) const
 
void SetBgRaid (TeamId teamId, Group *bg_raid)
 
void BuildPvPLogDataPacket (WorldPacket &data)
 
uint32 GetPlayersCountByTeam (TeamId teamId) const
 
uint32 GetAlivePlayersCountByTeam (TeamId teamId) const
 
void UpdatePlayersCountByTeam (TeamId teamId, bool remove)
 
virtual void CheckWinConditions ()
 
void SetArenaTeamIdForTeam (TeamId teamId, uint32 ArenaTeamId)
 
uint32 GetArenaTeamIdForTeam (TeamId teamId) const
 
void SetArenaMatchmakerRating (TeamId teamId, uint32 MMR)
 
uint32 GetArenaMatchmakerRating (TeamId teamId) const
 
virtual void EventPlayerDroppedFlag (Player *)
 
virtual void EventPlayerUsedGO (Player *, GameObject *)
 
void AddOrSetPlayerToCorrectBgGroup (Player *player, TeamId teamId)
 
virtual void RemovePlayerAtLeave (Player *player)
 
void HandleTriggerBuff (GameObject *gameObject)
 
void SetHoliday (bool is_holiday)
 
void SpawnBGObject (uint32 type, uint32 respawntime, uint32 forceRespawnDelay=0)
 
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)
 
CreatureAddCreature (uint32 entry, uint32 type, float x, float y, float z, float o, uint32 respawntime=0, MotionTransport *transport=nullptr)
 
bool DelCreature (uint32 type)
 
bool DelObject (uint32 type)
 
bool AddSpiritGuide (uint32 type, float x, float y, float z, float o, TeamId teamId)
 
int32 GetObjectType (ObjectGuid guid)
 
void DoorOpen (uint32 type)
 
void DoorClose (uint32 type)
 
virtual bool HandlePlayerUnderMap (Player *)
 
bool IsPlayerInBattleground (ObjectGuid guid) const
 
bool ToBeDeleted () const
 
void RewardXPAtKill (Player *killer, Player *victim)
 
virtual ObjectGuid GetFlagPickerGUID (TeamId=TEAM_NEUTRAL) const
 
virtual void SetDroppedFlagGUID (ObjectGuid, TeamId=TEAM_NEUTRAL)
 
uint32 GetTeamScore (TeamId teamId) const
 
virtual TeamId GetPrematureWinner ()
 
uint8 GetUniqueBracketId () const
 
BattlegroundAVToBattlegroundAV ()
 
BattlegroundAV const * ToBattlegroundAV () const
 
BattlegroundWSToBattlegroundWS ()
 
BattlegroundWS const * ToBattlegroundWS () const
 
BattlegroundABToBattlegroundAB ()
 
BattlegroundAB const * ToBattlegroundAB () const
 
BattlegroundNAToBattlegroundNA ()
 
BattlegroundNA const * ToBattlegroundNA () const
 
BattlegroundBEToBattlegroundBE ()
 
BattlegroundBE const * ToBattlegroundBE () const
 
BattlegroundEYToBattlegroundEY ()
 
BattlegroundEY const * ToBattlegroundEY () const
 
BattlegroundRLToBattlegroundRL ()
 
BattlegroundRL const * ToBattlegroundRL () const
 
BattlegroundSAToBattlegroundSA ()
 
BattlegroundSA const * ToBattlegroundSA () const
 
BattlegroundDSToBattlegroundDS ()
 
BattlegroundDS const * ToBattlegroundDS () const
 
BattlegroundRVToBattlegroundRV ()
 
BattlegroundRV const * ToBattlegroundRV () const
 
BattlegroundICToBattlegroundIC ()
 
BattlegroundIC const * ToBattlegroundIC () const
 

Private Types

typedef std::map< ObjectGuid, uint32RespawnMap
 

Private Member Functions

uint32 GetNextBanner (ICNodePoint *nodePoint, uint32 team, bool returnDefinitve)
 
uint32 GetGateIDFromEntry (uint32 id)
 
uint32 GetWorldStateFromGateEntry (uint32 id, bool open)
 
void UpdateNodeWorldState (ICNodePoint *nodePoint)
 
void HandleCapturedNodes (ICNodePoint *nodePoint, bool recapture)
 
void HandleContestedNodes (ICNodePoint *nodePoint)
 
void TurnBosses (bool on)
 

Private Attributes

uint32 closeFortressDoorsTimer
 
bool doorsClosed
 
uint32 docksTimer
 
uint32 resourceTimer
 
uint32 siegeEngineWorkshopTimer
 
uint16 factionReinforcements [2]
 
BG_IC_GateState GateStatus [6]
 
ICNodePoint nodePoint [7]
 
RespawnMap respawnMap
 
MotionTransportgunshipAlliance
 
MotionTransportgunshipHorde
 

Additional Inherited Members

- Public Types inherited from Battleground
typedef std::set< Player * > SpectatorList
 
typedef std::map< ObjectGuid, ObjectGuidToBeTeleportedMap
 
typedef std::map< ObjectGuid, Player * > BattlegroundPlayerMap
 
typedef std::unordered_map< ObjectGuid::LowType, BattlegroundScore * > BattlegroundScoreMap
 
typedef std::unordered_map< ObjectGuid, ArenaLogEntryDataArenaLogEntryDataMap
 
typedef GuidVector BGObjects
 
typedef GuidVector BGCreatures
 
- Static Public Member Functions inherited from Battleground
static TeamId GetOtherTeamId (TeamId teamId)
 
- Public Attributes inherited from Battleground
GuidSet readyMarkerClickedSet
 
ArenaLogEntryDataMap ArenaLogEntries
 
BGObjects BgObjects
 
BGCreatures BgCreatures
 
- Protected Member Functions inherited from Battleground
void EndNow ()
 
void PlayerAddedToBGCheckIfBGIsRunning (Player *player)
 
void _ProcessResurrect (uint32 diff)
 
void _ProcessProgress (uint32 diff)
 
void _ProcessLeave (uint32 diff)
 
void _ProcessJoin (uint32 diff)
 
void _CheckSafePositions (uint32 diff)
 
- Protected Attributes inherited from Battleground
bool m_SetupCompleted
 
BattlegroundScoreMap PlayerScores
 
BattlegroundPlayerMap m_Players
 
std::map< ObjectGuid, GuidVectorm_ReviveQueue
 
uint8 m_Events
 
BattlegroundStartTimeIntervals StartDelayTimes [BG_STARTING_EVENT_COUNT]
 
uint32 StartMessageIds [BG_STARTING_EVENT_COUNT]
 
bool m_BuffChange
 
bool m_IsRandom
 
BGHonorMode m_HonorMode
 
int32 m_TeamScores [PVP_TEAMS_COUNT]
 
ArenaTeamScore _arenaTeamScores [PVP_TEAMS_COUNT]
 
uint32 m_UpdateTimer
 
EventProcessor _reviveEvents
 

Detailed Description

Member Typedef Documentation

◆ RespawnMap

typedef std::map<ObjectGuid, uint32> BattlegroundIC::RespawnMap
private

Constructor & Destructor Documentation

◆ BattlegroundIC()

BattlegroundIC::BattlegroundIC ( )
39{
42
43 for (uint8 i = 0; i < 2; ++i)
45
46 for (uint8 i = 0; i < BG_IC_MAXDOOR; ++i)
48
49 closeFortressDoorsTimer = CLOSE_DOORS_TIME; // the doors are closed again... in a special way
50 doorsClosed = false;
53
54 for (uint8 i = NODE_TYPE_REFINERY; i < MAX_NODE_TYPES; ++i)
56
58
59 gunshipHorde = nullptr;
60 gunshipAlliance = nullptr;
61 respawnMap.clear();
62}
@ NODE_TYPE_REFINERY
Definition BattlegroundIC.h:759
@ MAX_NODE_TYPES
Definition BattlegroundIC.h:769
@ DOCKS_UPDATE_TIME
Definition BattlegroundIC.h:196
@ CLOSE_DOORS_TIME
Definition BattlegroundIC.h:199
@ IC_RESOURCE_TIME
Definition BattlegroundIC.h:198
@ WORKSHOP_UPDATE_TIME
Definition BattlegroundIC.h:195
@ BG_IC_MAXDOOR
Definition BattlegroundIC.h:754
@ MAX_WORKSHOP_SPAWNS
Definition BattlegroundIC.h:451
@ MAX_SPIRIT_GUIDES_SPAWNS
Definition BattlegroundIC.h:453
@ MAX_HANGAR_NPCS_SPAWNS
Definition BattlegroundIC.h:460
@ MAX_NORMAL_GAMEOBJECTS_SPAWNS
Definition BattlegroundIC.h:449
@ MAX_AIRSHIPS_SPAWNS
Definition BattlegroundIC.h:456
@ MAX_DOCKS_SPAWNS
Definition BattlegroundIC.h:452
@ MAX_NORMAL_NPCS_SPAWNS
Definition BattlegroundIC.h:450
@ MAX_HANGAR_TELEPORTER_EFFECTS_SPAWNS
Definition BattlegroundIC.h:455
@ MAX_FORTRESS_TELEPORTER_EFFECTS_SPAWNS
Definition BattlegroundIC.h:459
@ MAX_FORTRESS_TELEPORTERS_SPAWNS
Definition BattlegroundIC.h:458
@ MAX_HANGAR_TELEPORTERS_SPAWNS
Definition BattlegroundIC.h:454
#define MAX_REINFORCEMENTS
Definition BattlegroundIC.h:191
@ BG_IC_GATE_OK
Definition BattlegroundIC.h:741
const ICNodePoint nodePointInitial[MAX_NODE_TYPES]
Definition BattlegroundIC.h:841
std::uint8_t uint8
Definition Define.h:109
uint32 resourceTimer
Definition BattlegroundIC.h:929
MotionTransport * gunshipAlliance
Definition BattlegroundIC.h:938
MotionTransport * gunshipHorde
Definition BattlegroundIC.h:939
RespawnMap respawnMap
Definition BattlegroundIC.h:936
BG_IC_GateState GateStatus[6]
Definition BattlegroundIC.h:932
uint32 docksTimer
Definition BattlegroundIC.h:928
uint16 factionReinforcements[2]
Definition BattlegroundIC.h:931
ICNodePoint nodePoint[7]
Definition BattlegroundIC.h:933
uint32 closeFortressDoorsTimer
Definition BattlegroundIC.h:926
uint32 siegeEngineWorkshopTimer
Definition BattlegroundIC.h:930
bool doorsClosed
Definition BattlegroundIC.h:927
BGObjects BgObjects
Definition Battleground.h:540
BGCreatures BgCreatures
Definition Battleground.h:541

References BG_IC_GATE_OK, BG_IC_MAXDOOR, Battleground::BgCreatures, Battleground::BgObjects, CLOSE_DOORS_TIME, closeFortressDoorsTimer, DOCKS_UPDATE_TIME, docksTimer, doorsClosed, factionReinforcements, GateStatus, gunshipAlliance, gunshipHorde, IC_RESOURCE_TIME, MAX_AIRSHIPS_SPAWNS, MAX_DOCKS_SPAWNS, MAX_FORTRESS_TELEPORTER_EFFECTS_SPAWNS, MAX_FORTRESS_TELEPORTERS_SPAWNS, MAX_HANGAR_NPCS_SPAWNS, MAX_HANGAR_TELEPORTER_EFFECTS_SPAWNS, MAX_HANGAR_TELEPORTERS_SPAWNS, MAX_NODE_TYPES, MAX_NORMAL_GAMEOBJECTS_SPAWNS, MAX_NORMAL_NPCS_SPAWNS, MAX_REINFORCEMENTS, MAX_SPIRIT_GUIDES_SPAWNS, MAX_WORKSHOP_SPAWNS, NODE_TYPE_REFINERY, nodePoint, nodePointInitial, resourceTimer, respawnMap, siegeEngineWorkshopTimer, and WORKSHOP_UPDATE_TIME.

Member Function Documentation

◆ AddPlayer()

void BattlegroundIC::AddPlayer ( Player player)
overridevirtual

Reimplemented from Battleground.

321{
323 PlayerScores.emplace(player->GetGUID().GetCounter(), new BattlegroundICScore(player->GetGUID()));
324
326 player->CastSpell(player, SPELL_QUARRY, true);
327
329 player->CastSpell(player, SPELL_OIL_REFINERY, true);
330}
@ NODE_TYPE_QUARRY
Definition BattlegroundIC.h:760
@ SPELL_QUARRY
Definition BattlegroundIC.h:714
@ SPELL_OIL_REFINERY
Definition BattlegroundIC.h:713
@ NODE_STATE_CONTROLLED_A
Definition BattlegroundIC.h:777
@ NODE_STATE_CONTROLLED_H
Definition BattlegroundIC.h:778
@ TEAM_ALLIANCE
Definition SharedDefines.h:748
virtual void AddPlayer(Player *player)
Definition Battleground.cpp:1190
BattlegroundScoreMap PlayerScores
Definition Battleground.h:621
LowType GetCounter() const
Definition ObjectGuid.h:145
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:114
TeamId GetTeamId(bool original=false) const
Definition Player.h:2128
Definition BattlegroundIC.h:859

References Battleground::AddPlayer(), Unit::CastSpell(), ObjectGuid::GetCounter(), Object::GetGUID(), Player::GetTeamId(), NODE_STATE_CONTROLLED_A, NODE_STATE_CONTROLLED_H, NODE_TYPE_QUARRY, NODE_TYPE_REFINERY, nodePoint, Battleground::PlayerScores, SPELL_OIL_REFINERY, SPELL_QUARRY, and TEAM_ALLIANCE.

◆ AllNodesConrolledByTeam()

bool BattlegroundIC::AllNodesConrolledByTeam ( TeamId  teamId) const
overridevirtual

Reimplemented from Battleground.

302{
303 uint32 count = 0;
305 for (int i = 0; i < NODE_TYPE_WORKSHOP; ++i)
306 {
307 if (nodePoint[i].nodeState == controlledState)
308 ++count;
309 }
310
311 return count == NODE_TYPE_WORKSHOP;
312}
@ NODE_TYPE_WORKSHOP
Definition BattlegroundIC.h:763
ICNodeState
Definition BattlegroundIC.h:773
std::uint32_t uint32
Definition Define.h:107

References NODE_STATE_CONTROLLED_A, NODE_STATE_CONTROLLED_H, NODE_TYPE_WORKSHOP, nodePoint, and TEAM_ALLIANCE.

◆ DestroyGate()

void BattlegroundIC::DestroyGate ( Player player,
GameObject go 
)
overridevirtual

Reimplemented from Battleground.

993{
995 uint32 uws_open = GetWorldStateFromGateEntry(go->GetEntry(), true);
996 uint32 uws_close = GetWorldStateFromGateEntry(go->GetEntry(), false);
997 if (uws_open)
998 {
999 UpdateWorldState(uws_close, 0);
1000 UpdateWorldState(uws_open, 1);
1001 }
1002
1003 uint32 textId;
1004 ChatMsg msgType;
1005 TeamId teamId = TEAM_ALLIANCE;
1006
1007 switch (go->GetEntry())
1008 {
1009 case GO_HORDE_GATE_1:
1012 break;
1013 case GO_HORDE_GATE_2:
1016 break;
1017 case GO_HORDE_GATE_3:
1020 break;
1021 case GO_ALLIANCE_GATE_1:
1023 msgType = CHAT_MSG_BG_SYSTEM_HORDE;
1024 teamId = TEAM_HORDE;
1025 break;
1026 case GO_ALLIANCE_GATE_2:
1028 msgType = CHAT_MSG_BG_SYSTEM_HORDE;
1029 teamId = TEAM_HORDE;
1030 break;
1031 case GO_ALLIANCE_GATE_3:
1033 msgType = CHAT_MSG_BG_SYSTEM_HORDE;
1034 teamId = TEAM_HORDE;
1035 break;
1036 default:
1037 return;
1038 }
1039
1040 if (teamId == TEAM_ALLIANCE)
1041 {
1044 }
1045 else
1046 {
1049 }
1050
1051 TurnBosses(true);
1052 SendBroadcastText(textId, msgType);
1053}
@ BG_IC_TEXT_WEST_GATE_HORDE_DESTROYED
Definition BattlegroundIC.h:800
@ BG_IC_TEXT_FRONT_GATE_ALLIANCE_DESTROYED
Definition BattlegroundIC.h:799
@ BG_IC_TEXT_WEST_GATE_ALLIANCE_DESTROYED
Definition BattlegroundIC.h:801
@ BG_IC_TEXT_FRONT_GATE_HORDE_DESTROYED
Definition BattlegroundIC.h:798
@ BG_IC_TEXT_EAST_GATE_HORDE_DESTROYED
Definition BattlegroundIC.h:802
@ BG_IC_TEXT_EAST_GATE_ALLIANCE_DESTROYED
Definition BattlegroundIC.h:803
@ BG_IC_GO_DOODAD_PORTCULLISACTIVE02
Definition BattlegroundIC.h:273
@ BG_IC_GO_HORDE_BANNER
Definition BattlegroundIC.h:288
@ BG_IC_GO_ALLIANCE_BANNER
Definition BattlegroundIC.h:225
@ BG_IC_GO_HORDE_KEEP_PORTCULLIS
Definition BattlegroundIC.h:294
@ BG_IC_GATE_DESTROYED
Definition BattlegroundIC.h:743
@ GO_ALLIANCE_GATE_3
Definition BattlegroundIC.h:61
@ GO_HORDE_GATE_2
Definition BattlegroundIC.h:113
@ GO_HORDE_GATE_1
Definition BattlegroundIC.h:112
@ GO_HORDE_GATE_3
Definition BattlegroundIC.h:114
@ GO_ALLIANCE_GATE_2
Definition BattlegroundIC.h:60
@ GO_ALLIANCE_GATE_1
Definition BattlegroundIC.h:59
ChatMsg
Definition SharedDefines.h:3383
@ CHAT_MSG_BG_SYSTEM_ALLIANCE
Definition SharedDefines.h:3422
@ CHAT_MSG_BG_SYSTEM_HORDE
Definition SharedDefines.h:3423
@ GO_FLAG_NOT_SELECTABLE
Definition SharedDefines.h:1611
TeamId
Definition SharedDefines.h:747
@ TEAM_HORDE
Definition SharedDefines.h:749
@ GAMEOBJECT_FLAGS
Definition UpdateFields.h:399
uint32 GetGateIDFromEntry(uint32 id)
Definition BattlegroundIC.h:943
uint32 GetWorldStateFromGateEntry(uint32 id, bool open)
Definition BattlegroundIC.h:970
void TurnBosses(bool on)
Definition BattlegroundIC.cpp:493
void DoorOpen(uint32 type)
Definition Battleground.cpp:1557
void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
Definition Battleground.cpp:735
GameObject * GetBGObject(uint32 type)
Definition Battleground.cpp:1569
void UpdateWorldState(uint32 variable, uint32 value)
Definition Battleground.cpp:827
void RemoveFlag(uint16 index, uint32 oldFlag)
Definition Object.cpp:842
uint32 GetEntry() const
Definition Object.h:117

References BG_IC_GATE_DESTROYED, BG_IC_GO_ALLIANCE_BANNER, BG_IC_GO_DOODAD_PORTCULLISACTIVE02, BG_IC_GO_HORDE_BANNER, BG_IC_GO_HORDE_KEEP_PORTCULLIS, BG_IC_TEXT_EAST_GATE_ALLIANCE_DESTROYED, BG_IC_TEXT_EAST_GATE_HORDE_DESTROYED, BG_IC_TEXT_FRONT_GATE_ALLIANCE_DESTROYED, BG_IC_TEXT_FRONT_GATE_HORDE_DESTROYED, BG_IC_TEXT_WEST_GATE_ALLIANCE_DESTROYED, BG_IC_TEXT_WEST_GATE_HORDE_DESTROYED, CHAT_MSG_BG_SYSTEM_ALLIANCE, CHAT_MSG_BG_SYSTEM_HORDE, Battleground::DoorOpen(), GAMEOBJECT_FLAGS, GateStatus, Battleground::GetBGObject(), Object::GetEntry(), GetGateIDFromEntry(), GetWorldStateFromGateEntry(), GO_ALLIANCE_GATE_1, GO_ALLIANCE_GATE_2, GO_ALLIANCE_GATE_3, GO_FLAG_NOT_SELECTABLE, GO_HORDE_GATE_1, GO_HORDE_GATE_2, GO_HORDE_GATE_3, Object::RemoveFlag(), Battleground::SendBroadcastText(), TEAM_ALLIANCE, TEAM_HORDE, TurnBosses(), and Battleground::UpdateWorldState().

◆ DoAction()

void BattlegroundIC::DoAction ( uint32  action,
ObjectGuid  guid 
)
overridevirtual

Reimplemented from Battleground.

65{
67 return;
68
70 return;
71
73 if (!player)
74 return;
75
77 float x = BG_IC_HangarTrigger[player->GetTeamId()].GetPositionX();
78 float y = BG_IC_HangarTrigger[player->GetTeamId()].GetPositionY();
79 float z = BG_IC_HangarTrigger[player->GetTeamId()].GetPositionZ();
80 transport->CalculatePassengerPosition(x, y, z);
81
82 player->TeleportTo(GetMapId(), x, y, z, player->GetOrientation(), TELE_TO_NOT_LEAVE_TRANSPORT);
83}
@ ACTION_TELEPORT_PLAYER_TO_TRANSPORT
Definition BattlegroundIC.h:207
const Position BG_IC_HangarTrigger[2]
Definition BattlegroundIC.h:554
@ TELE_TO_NOT_LEAVE_TRANSPORT
Definition Player.h:815
uint32 GetMapId() const
Definition Battleground.h:436
Definition Transport.h:51
Definition Player.h:1084
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options=0, Unit *target=nullptr, bool newInstance=false)
Definition Player.cpp:1353
void CalculatePassengerPosition(float &x, float &y, float &z, float *o=nullptr) const override
This method transforms supplied transport offsets into global coordinates.
Definition Transport.h:33
Player * GetPlayer(Map const *, ObjectGuid const &guid)
Definition ObjectAccessor.cpp:220
float GetPositionZ() const
Definition Position.h:123
float GetOrientation() const
Definition Position.h:124
float GetPositionX() const
Definition Position.h:121
float GetPositionY() const
Definition Position.h:122

References ACTION_TELEPORT_PLAYER_TO_TRANSPORT, BG_IC_HangarTrigger, Transport::CalculatePassengerPosition(), Battleground::GetMapId(), Position::GetOrientation(), ObjectAccessor::GetPlayer(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), Player::GetTeamId(), gunshipAlliance, gunshipHorde, TEAM_ALLIANCE, TELE_TO_NOT_LEAVE_TRANSPORT, and Player::TeleportTo().

◆ EventPlayerClickedOnFlag()

void BattlegroundIC::EventPlayerClickedOnFlag ( Player source,
GameObject gameObject 
)
overridevirtual

Reimplemented from Battleground.

556{
558 return;
559
560 // All the node points are iterated to find the clicked one
561 for (uint8 i = 0; i < MAX_NODE_TYPES; ++i)
562 {
563 ICNodePoint& point = nodePoint[i];
564 if (point.gameobject_entry == gameObject->GetEntry())
565 {
566 // THIS SHOULD NEEVEER HAPPEN
567 if (point.faction == player->GetTeamId())
568 {
569 return;
570 }
571
572 // Prevent capturing of keep if none of gates was destroyed
574 {
576 {
577 return;
578 }
579 }
580 else if (point.gameobject_entry == GO_HORDE_BANNER)
581 {
583 {
584 return;
585 }
586 }
587
588 uint32 nextBanner = GetNextBanner(&point, player->GetTeamId(), false);
589
590 // we set the new settings of the nodePoint
591 point.faction = player->GetTeamId();
592 point.last_entry = point.gameobject_entry;
593 point.gameobject_entry = nextBanner;
594
595 // this is just needed if the next banner is grey
596 if (point.banners[BANNER_A_CONTESTED] == nextBanner || point.banners[BANNER_H_CONTESTED] == nextBanner)
597 {
598 point.timer = BANNER_STATE_CHANGE_TIME; // 1 minute for last change (real faction banner)
599 point.needChange = true;
600
601 _reviveEvents.AddEventAtOffset([this, point]()
602 {
604
605 // if we are here means that the point has been lost, or it is the first capture
606 if (point.nodeType != NODE_TYPE_REFINERY && point.nodeType != NODE_TYPE_QUARRY)
607 {
608 if (BgCreatures[static_cast<uint16>(BG_IC_NPC_SPIRIT_GUIDE_1) + (point.nodeType) - 2])
609 {
610 DelCreature(static_cast<uint16>(BG_IC_NPC_SPIRIT_GUIDE_1) + (point.nodeType) - 2);
611 }
612 }
613 }, 500ms);
614
616
617 if (nodePoint[i].faction == TEAM_ALLIANCE)
618 {
619 SendBroadcastText(ICNodes[i].TextAssaulted, CHAT_MSG_BG_SYSTEM_ALLIANCE, player);
620 }
621 else
622 {
623 SendBroadcastText(ICNodes[i].TextAssaulted, CHAT_MSG_BG_SYSTEM_HORDE, player);
624 }
625
626 HandleContestedNodes(&point);
627 }
628 else if (nextBanner == point.banners[BANNER_A_CONTROLLED] || nextBanner == point.banners[BANNER_H_CONTROLLED])
629 // if we are going to spawn the definitve faction banner, we dont need the timer anymore
630 {
632 point.needChange = false;
633
634 if (nodePoint[i].faction == TEAM_ALLIANCE)
635 {
636 SendBroadcastText(ICNodes[i].TextDefended, CHAT_MSG_BG_SYSTEM_ALLIANCE, player);
637 }
638 else
639 {
640 SendBroadcastText(ICNodes[i].TextDefended, CHAT_MSG_BG_SYSTEM_HORDE, player);
641 }
642
643 HandleCapturedNodes(&point, true);
645 }
646
647 GameObject* banner = GetBGObject(point.gameobject_type);
648
649 if (!banner) // this should never happen
650 {
651 return;
652 }
653
654 float cords[4] = {banner->GetPositionX(), banner->GetPositionY(), banner->GetPositionZ(), banner->GetOrientation() };
655
657 AddObject(point.gameobject_type, point.gameobject_entry, cords[0], cords[1], cords[2], cords[3], 0, 0, 0, 0, RESPAWN_ONE_DAY);
658
660
661 UpdateNodeWorldState(&point);
662 // we dont need iterating if we are here
663 // If the needChange bool was set true, we will handle the rest in the Update Map function.
664 return;
665 }
666 }
667}
const uint32 BG_IC_Factions[PVP_TEAMS_COUNT]
Definition BattlegroundIC.h:26
@ BANNER_STATE_CHANGE_TIME
Definition BattlegroundIC.h:200
ICNodeInfo const ICNodes[MAX_NODE_TYPES]
Definition BattlegroundIC.h:815
@ BG_IC_H_FRONT
Definition BattlegroundIC.h:748
@ BG_IC_A_WEST
Definition BattlegroundIC.h:752
@ BG_IC_H_WEST
Definition BattlegroundIC.h:749
@ BG_IC_A_FRONT
Definition BattlegroundIC.h:751
@ BG_IC_A_EAST
Definition BattlegroundIC.h:753
@ BG_IC_H_EAST
Definition BattlegroundIC.h:750
@ BANNER_A_CONTROLLED
Definition BattlegroundIC.h:441
@ BANNER_H_CONTESTED
Definition BattlegroundIC.h:444
@ BANNER_H_CONTROLLED
Definition BattlegroundIC.h:443
@ BANNER_A_CONTESTED
Definition BattlegroundIC.h:442
@ GO_ALLIANCE_BANNER
Definition BattlegroundIC.h:57
@ GO_HORDE_BANNER
Definition BattlegroundIC.h:110
@ BG_IC_NPC_SPIRIT_GUIDE_1
Definition BattlegroundIC.h:430
@ SCORE_BASES_ASSAULTED
Definition BattlegroundScore.h:40
@ SCORE_BASES_DEFENDED
Definition BattlegroundScore.h:41
@ RESPAWN_ONE_DAY
Definition Battleground.h:159
@ STATUS_IN_PROGRESS
Definition Battleground.h:193
std::uint16_t uint16
Definition Define.h:108
@ GAMEOBJECT_FACTION
Definition UpdateFields.h:402
float cords[5][4]
Definition boss_urom.cpp:78
uint32 GetNextBanner(ICNodePoint *nodePoint, uint32 team, bool returnDefinitve)
Definition BattlegroundIC.cpp:690
bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true) override
Definition BattlegroundIC.cpp:367
void HandleContestedNodes(ICNodePoint *nodePoint)
Definition BattlegroundIC.cpp:715
void HandleCapturedNodes(ICNodePoint *nodePoint, bool recapture)
Definition BattlegroundIC.cpp:818
void UpdateNodeWorldState(ICNodePoint *nodePoint)
Definition BattlegroundIC.cpp:669
bool DelCreature(uint32 type)
Definition Battleground.cpp:1670
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)
Definition Battleground.cpp:1485
void RelocateDeadPlayers(ObjectGuid queueIndex)
Relocate all players in ReviveQueue to the closest graveyard.
Definition Battleground.cpp:1461
EventProcessor _reviveEvents
Definition Battleground.h:647
bool DelObject(uint32 type)
Definition Battleground.cpp:1689
BattlegroundStatus GetStatus() const
Definition Battleground.h:323
void AddEventAtOffset(BasicEvent *event, Milliseconds offset, uint8 eventGroup=0)
Definition EventProcessor.h:108
Definition GameObject.h:120
void SetUInt32Value(uint16 index, uint32 value)
Definition Object.cpp:639
Definition BattlegroundIC.h:828
uint32 banners[4]
Definition BattlegroundIC.h:833
ICNodePointType nodeType
Definition BattlegroundIC.h:832
uint32 timer
Definition BattlegroundIC.h:835
uint32 last_entry
Definition BattlegroundIC.h:836
TeamId faction
Definition BattlegroundIC.h:831
uint32 gameobject_type
Definition BattlegroundIC.h:829
bool needChange
Definition BattlegroundIC.h:834
uint32 gameobject_entry
Definition BattlegroundIC.h:830

References Battleground::_reviveEvents, EventProcessor::AddEventAtOffset(), Battleground::AddObject(), BANNER_A_CONTESTED, BANNER_A_CONTROLLED, BANNER_H_CONTESTED, BANNER_H_CONTROLLED, BANNER_STATE_CHANGE_TIME, ICNodePoint::banners, BG_IC_A_EAST, BG_IC_A_FRONT, BG_IC_A_WEST, BG_IC_Factions, BG_IC_GATE_DESTROYED, BG_IC_H_EAST, BG_IC_H_FRONT, BG_IC_H_WEST, BG_IC_NPC_SPIRIT_GUIDE_1, Battleground::BgCreatures, CHAT_MSG_BG_SYSTEM_ALLIANCE, CHAT_MSG_BG_SYSTEM_HORDE, cords, Battleground::DelCreature(), Battleground::DelObject(), ICNodePoint::faction, ICNodePoint::gameobject_entry, GAMEOBJECT_FACTION, ICNodePoint::gameobject_type, GateStatus, Battleground::GetBGObject(), Object::GetEntry(), GetNextBanner(), Position::GetOrientation(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), Battleground::GetStatus(), Player::GetTeamId(), GO_ALLIANCE_BANNER, GO_HORDE_BANNER, HandleCapturedNodes(), HandleContestedNodes(), ICNodes, ICNodePoint::last_entry, MAX_NODE_TYPES, ICNodePoint::needChange, NODE_TYPE_QUARRY, NODE_TYPE_REFINERY, nodePoint, ICNodePoint::nodeType, Battleground::RelocateDeadPlayers(), RESPAWN_ONE_DAY, SCORE_BASES_ASSAULTED, SCORE_BASES_DEFENDED, Battleground::SendBroadcastText(), Object::SetUInt32Value(), STATUS_IN_PROGRESS, TEAM_ALLIANCE, ICNodePoint::timer, UpdateNodeWorldState(), and UpdatePlayerScore().

◆ EventPlayerDamagedGO()

void BattlegroundIC::EventPlayerDamagedGO ( Player ,
GameObject ,
uint32   
)
inlineoverridevirtual

Reimplemented from Battleground.

908{ }

◆ FillInitialWorldStates()

void BattlegroundIC::FillInitialWorldStates ( WorldPackets::WorldState::InitWorldStates packet)
overridevirtual

Reimplemented from Battleground.

386{
392
393 for (uint8 i = 0; i < MAX_FORTRESS_GATES_SPAWNS; ++i)
394 {
396 packet.Worldstates.emplace_back(uws, 1);
397 }
398
399 for (uint8 i = 0; i < MAX_NODE_TYPES; ++i)
400 packet.Worldstates.emplace_back(nodePoint[i].worldStates[nodePoint[i].nodeState], 1);
401
403}
@ MAX_FORTRESS_GATES_SPAWNS
Definition BattlegroundIC.h:457
const ICGo BG_IC_ObjSpawnlocs[MAX_NORMAL_GAMEOBJECTS_SPAWNS]
Definition BattlegroundIC.h:611
@ WORLD_STATE_BATTLEGROUND_IC_ALLIANCE_REINFORCEMENT
Definition WorldStateDefines.h:251
@ WORLD_STATE_BATTLEGROUND_IC_HORDE_REINFORCEMENT
Definition WorldStateDefines.h:252
@ WORLD_STATE_BATTLEGROUND_IC_ALLIANCE_REINFORCEMENT_SET
Definition WorldStateDefines.h:249
@ WORLD_STATE_BATTLEGROUND_IC_HORDE_REINFORCEMENT_SET
Definition WorldStateDefines.h:250
std::vector< WorldStateInfo > Worldstates
Definition WorldStatePackets.h:46
ICNodeState nodeState
Definition BattlegroundIC.h:838
uint32 worldStates[5]
Definition BattlegroundIC.h:837

References BG_IC_GATE_DESTROYED, BG_IC_ObjSpawnlocs, factionReinforcements, GateStatus, GetGateIDFromEntry(), GetWorldStateFromGateEntry(), MAX_FORTRESS_GATES_SPAWNS, MAX_NODE_TYPES, nodePoint, ICNodePoint::nodeState, TEAM_ALLIANCE, TEAM_HORDE, WORLD_STATE_BATTLEGROUND_IC_ALLIANCE_REINFORCEMENT, WORLD_STATE_BATTLEGROUND_IC_ALLIANCE_REINFORCEMENT_SET, WORLD_STATE_BATTLEGROUND_IC_HORDE_REINFORCEMENT, WORLD_STATE_BATTLEGROUND_IC_HORDE_REINFORCEMENT_SET, ICNodePoint::worldStates, and WorldPackets::WorldState::InitWorldStates::Worldstates.

◆ GetClosestGraveyard()

GraveyardStruct const * BattlegroundIC::GetClosestGraveyard ( Player player)
overridevirtual

Reimplemented from Battleground.

1056{
1057 // Is there any occupied node for this team?
1058 std::vector<uint8> nodes;
1059 for (uint8 i = 0; i < MAX_NODE_TYPES; ++i)
1060 if (nodePoint[i].faction == player->GetTeamId() && !nodePoint[i].needChange) // xinef: controlled by faction and not contested!
1061 nodes.push_back(i);
1062
1063 GraveyardStruct const* good_entry = nullptr;
1064 // If so, select the closest node to place ghost on
1065 if (!nodes.empty())
1066 {
1067 float plr_x = player->GetPositionX();
1068 float plr_y = player->GetPositionY();
1069
1070 float mindist = 999999.0f;
1071 for (uint8 i = 0; i < nodes.size(); ++i)
1072 {
1073 GraveyardStruct const* entry = sGraveyard->GetGraveyard(BG_IC_GraveyardIds[nodes[i]]);
1074 if (!entry)
1075 continue;
1076 float dist = (entry->x - plr_x) * (entry->x - plr_x) + (entry->y - plr_y) * (entry->y - plr_y);
1077 if (mindist > dist)
1078 {
1079 mindist = dist;
1080 good_entry = entry;
1081 }
1082 }
1083 nodes.clear();
1084 }
1085 // If not, place ghost on starting location
1086 if (!good_entry)
1087 good_entry = sGraveyard->GetGraveyard(BG_IC_GraveyardIds[player->GetTeamId() + static_cast<uint16>(MAX_NODE_TYPES)]);
1088
1089 return good_entry;
1090}
const uint32 BG_IC_GraveyardIds[MAX_NODE_TYPES+2]
Definition BattlegroundIC.h:781
#define sGraveyard
Definition GameGraveyard.h:74
Definition GameGraveyard.h:27
float x
Definition GameGraveyard.h:30
float y
Definition GameGraveyard.h:31

References BG_IC_GraveyardIds, Position::GetPositionX(), Position::GetPositionY(), Player::GetTeamId(), MAX_NODE_TYPES, ICNodePoint::needChange, nodePoint, sGraveyard, GraveyardStruct::x, and GraveyardStruct::y.

◆ GetGateIDFromEntry()

uint32 BattlegroundIC::GetGateIDFromEntry ( uint32  id)
inlineprivate
944 {
945 uint32 i = 0;
946 switch (id)
947 {
948 case GO_HORDE_GATE_1:
949 i = BG_IC_H_FRONT;
950 break;
951 case GO_HORDE_GATE_2:
952 i = BG_IC_H_EAST;
953 break;
954 case GO_HORDE_GATE_3:
955 i = BG_IC_H_WEST;
956 break;
958 i = BG_IC_A_FRONT;
959 break;
961 i = BG_IC_A_WEST;
962 break;
964 i = BG_IC_A_EAST;
965 break;
966 }
967 return i;
968 }

References BG_IC_A_EAST, BG_IC_A_FRONT, BG_IC_A_WEST, BG_IC_H_EAST, BG_IC_H_FRONT, BG_IC_H_WEST, GO_ALLIANCE_GATE_1, GO_ALLIANCE_GATE_2, GO_ALLIANCE_GATE_3, GO_HORDE_GATE_1, GO_HORDE_GATE_2, and GO_HORDE_GATE_3.

Referenced by DestroyGate(), and FillInitialWorldStates().

◆ GetNextBanner()

uint32 BattlegroundIC::GetNextBanner ( ICNodePoint nodePoint,
uint32  team,
bool  returnDefinitve 
)
private
691{
692 // this is only used in the update map function
693 if (returnDefinitve)
694 // here is a special case, here we must return the definitve faction banner after the grey banner was spawned 1 minute
696
697 // there were no changes, this point has never been captured by any faction or at least clicked
698 if (nodePoint->last_entry == 0)
699 // 1 returns the CONTESTED ALLIANCE BANNER, 3 returns the HORDE one
701
702 // If the actual banner is the definitive faction banner, we must return the grey banner of the player's faction
705
706 // If the actual banner is the grey faction banner, we must return the previous banner
708 return nodePoint->last_entry;
709
710 // we should never be here...
711 LOG_ERROR("bg.battleground", "Isle Of Conquest: Unexpected return in GetNextBanner function");
712 return 0;
713}
#define LOG_ERROR(filterType__,...)
Definition Log.h:145

References BANNER_A_CONTESTED, BANNER_A_CONTROLLED, BANNER_H_CONTESTED, BANNER_H_CONTROLLED, ICNodePoint::banners, ICNodePoint::gameobject_entry, ICNodePoint::last_entry, LOG_ERROR, nodePoint, and TEAM_ALLIANCE.

Referenced by EventPlayerClickedOnFlag(), and PostUpdateImpl().

◆ GetNodeState()

uint32 BattlegroundIC::GetNodeState ( uint8  nodeType) const
inline
920{ return (uint8)nodePoint[nodeType].nodeState; }

Referenced by SpellArea::IsFitToRequirements().

◆ GetWorldStateFromGateEntry()

uint32 BattlegroundIC::GetWorldStateFromGateEntry ( uint32  id,
bool  open 
)
inlineprivate
971 {
972 uint32 uws = 0;
973
974 switch (id)
975 {
976 case GO_HORDE_GATE_1:
978 break;
979 case GO_HORDE_GATE_2:
981 break;
982 case GO_HORDE_GATE_3:
984 break;
987 break;
990 break;
993 break;
994 }
995 return uws;
996 }
@ WORLD_STATE_BATTLEGROUND_IC_GATE_WEST_A_WS_CLOSED
Definition WorldStateDefines.h:289
@ WORLD_STATE_BATTLEGROUND_IC_GATE_FRONT_H_WS_OPEN
Definition WorldStateDefines.h:284
@ WORLD_STATE_BATTLEGROUND_IC_GATE_EAST_H_WS_OPEN
Definition WorldStateDefines.h:282
@ WORLD_STATE_BATTLEGROUND_IC_GATE_FRONT_H_WS_CLOSED
Definition WorldStateDefines.h:279
@ WORLD_STATE_BATTLEGROUND_IC_GATE_EAST_A_WS_OPEN
Definition WorldStateDefines.h:287
@ WORLD_STATE_BATTLEGROUND_IC_GATE_WEST_H_WS_OPEN
Definition WorldStateDefines.h:283
@ WORLD_STATE_BATTLEGROUND_IC_GATE_FRONT_A_WS_OPEN
Definition WorldStateDefines.h:285
@ WORLD_STATE_BATTLEGROUND_IC_GATE_EAST_A_WS_CLOSED
Definition WorldStateDefines.h:288
@ WORLD_STATE_BATTLEGROUND_IC_GATE_WEST_H_WS_CLOSED
Definition WorldStateDefines.h:280
@ WORLD_STATE_BATTLEGROUND_IC_GATE_FRONT_A_WS_CLOSED
Definition WorldStateDefines.h:290
@ WORLD_STATE_BATTLEGROUND_IC_GATE_WEST_A_WS_OPEN
Definition WorldStateDefines.h:286
@ WORLD_STATE_BATTLEGROUND_IC_GATE_EAST_H_WS_CLOSED
Definition WorldStateDefines.h:281

References GO_ALLIANCE_GATE_1, GO_ALLIANCE_GATE_2, GO_ALLIANCE_GATE_3, GO_HORDE_GATE_1, GO_HORDE_GATE_2, GO_HORDE_GATE_3, WORLD_STATE_BATTLEGROUND_IC_GATE_EAST_A_WS_CLOSED, WORLD_STATE_BATTLEGROUND_IC_GATE_EAST_A_WS_OPEN, WORLD_STATE_BATTLEGROUND_IC_GATE_EAST_H_WS_CLOSED, WORLD_STATE_BATTLEGROUND_IC_GATE_EAST_H_WS_OPEN, WORLD_STATE_BATTLEGROUND_IC_GATE_FRONT_A_WS_CLOSED, WORLD_STATE_BATTLEGROUND_IC_GATE_FRONT_A_WS_OPEN, WORLD_STATE_BATTLEGROUND_IC_GATE_FRONT_H_WS_CLOSED, WORLD_STATE_BATTLEGROUND_IC_GATE_FRONT_H_WS_OPEN, WORLD_STATE_BATTLEGROUND_IC_GATE_WEST_A_WS_CLOSED, WORLD_STATE_BATTLEGROUND_IC_GATE_WEST_A_WS_OPEN, WORLD_STATE_BATTLEGROUND_IC_GATE_WEST_H_WS_CLOSED, and WORLD_STATE_BATTLEGROUND_IC_GATE_WEST_H_WS_OPEN.

Referenced by DestroyGate(), and FillInitialWorldStates().

◆ HandleAreaTrigger()

void BattlegroundIC::HandleAreaTrigger ( Player player,
uint32  trigger 
)
overridevirtual

Reimplemented from Battleground.

339{
340 // this is wrong way to implement these things. On official it done by gameobject spell cast.
342 return;
343
344 switch (trigger)
345 {
347 if (player->GetTeamId() != TEAM_ALLIANCE)
348 return;
349 for (uint8 i = BG_IC_H_FRONT; i < BG_IC_A_FRONT; ++i)
351 return;
352 if (!player->HasAchieved(3854)) // ACHIEVEMENT_BACK_DOOR_JOB
353 player->CastSpell(player, SPELL_BACK_DOOR_JOB, true);
354 break;
356 if (player->GetTeamId() != TEAM_HORDE)
357 return;
358 for (uint8 i = BG_IC_A_FRONT; i < BG_IC_MAXDOOR; ++i)
360 return;
361 if (!player->HasAchieved(3854)) // ACHIEVEMENT_BACK_DOOR_JOB
362 player->CastSpell(player, SPELL_BACK_DOOR_JOB, true);
363 break;
364 }
365}
@ AREA_TRIGGER_HORDE_KEEP
Definition BattlegroundIC.h:209
@ AREA_TRIGGER_ALLIANCE_KEEP
Definition BattlegroundIC.h:210
@ SPELL_BACK_DOOR_JOB
Definition BattlegroundIC.h:717
bool HasAchieved(uint32 achievementId) const
Definition Player.cpp:13975
SpellCastResult CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition Unit.cpp:1375

References AREA_TRIGGER_ALLIANCE_KEEP, AREA_TRIGGER_HORDE_KEEP, BG_IC_A_FRONT, BG_IC_GATE_DESTROYED, BG_IC_H_FRONT, BG_IC_MAXDOOR, Unit::CastSpell(), GateStatus, Battleground::GetStatus(), Player::GetTeamId(), Player::HasAchieved(), SPELL_BACK_DOOR_JOB, STATUS_IN_PROGRESS, TEAM_ALLIANCE, and TEAM_HORDE.

◆ HandleCapturedNodes()

void BattlegroundIC::HandleCapturedNodes ( ICNodePoint nodePoint,
bool  recapture 
)
private
819{
821 {
826 LOG_ERROR("bg.battleground", "Isle of Conquest: Failed to spawn spirit guide! point: {}, team: {}, ", nodePoint->nodeType, nodePoint->faction);
827 }
828
829 switch (nodePoint->gameobject_type)
830 {
832 {
834 break;
835
836 std::list<Creature*> cannons;
839 else
841
842 for (std::list<Creature*>::const_iterator itr = cannons.begin(); itr != cannons.end(); ++itr)
843 (*itr)->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
844
845 for (uint8 u = 0; u < MAX_HANGAR_TELEPORTERS_SPAWNS; ++u)
846 {
849 LOG_ERROR("bg.battleground", "Isle of Conquest: There was an error spawning a gunship portal. Type: {}", BG_IC_GO_HANGAR_TELEPORTER_1 + u);
850 }
851
852 for (uint8 u = 0; u < MAX_HANGAR_TELEPORTER_EFFECTS_SPAWNS; ++u)
853 {
856 LOG_ERROR("bg.battleground", "Isle of Conquest: There was an error spawning a gunship portal effects. Type: {}", BG_IC_GO_HANGAR_TELEPORTER_1 + u);
857 }
858
859 for (uint8 u = 0; u < MAX_TRIGGER_SPAWNS_PER_FACTION; ++u)
860 {
862 LOG_ERROR("bg.battleground", "Isle of Conquest: There was an error spawning a world trigger. Type: {}", BG_IC_NPC_WORLD_TRIGGER_NOT_FLOATING);
863 }
864
865 for (uint8 u = 0; u < MAX_CAPTAIN_SPAWNS_PER_FACTION; ++u)
866 {
868
869 if (type == BG_IC_NPC_GUNSHIP_CAPTAIN_1)
870 if (AddCreature(nodePoint->faction == TEAM_ALLIANCE ? NPC_ALLIANCE_GUNSHIP_CAPTAIN : NPC_HORDE_GUNSHIP_CAPTAIN, type, BG_IC_HangarCaptains[nodePoint->faction == TEAM_ALLIANCE ? 2 : 0].GetPositionX(), BG_IC_HangarCaptains[nodePoint->faction == TEAM_ALLIANCE ? 2 : 0].GetPositionY(), BG_IC_HangarCaptains[nodePoint->faction == TEAM_ALLIANCE ? 2 : 0].GetPositionZ(), BG_IC_HangarCaptains[nodePoint->faction == TEAM_ALLIANCE ? 2 : 0].GetOrientation(), RESPAWN_ONE_DAY))
872
873 if (type == BG_IC_NPC_GUNSHIP_CAPTAIN_2)
875 LOG_ERROR("bg.battleground", "Isle of Conquest: There was an error spawning a world trigger. Type: {}", BG_IC_NPC_GUNSHIP_CAPTAIN_2);
876 }
877
878 (nodePoint->faction == TEAM_ALLIANCE ? gunshipAlliance : gunshipHorde)->EnableMovement(true);
879 break;
880 }
884 break;
888 break;
890 if (recapture)
891 break;
892
895
896 // spawning glaive throwers
898 {
900
901 if (GetBgMap()->GetCreature(BgCreatures[type]))
902 continue;
903
905 BG_IC_DocksVehiclesGlaives[i].GetPositionX(), BG_IC_DocksVehiclesGlaives[i].GetPositionY(),
906 BG_IC_DocksVehiclesGlaives[i].GetPositionZ(), BG_IC_DocksVehiclesGlaives[i].GetOrientation(),
908 GetBGCreature(type)->SetFaction(BG_IC_Factions[nodePoint->faction]);
909 }
910
911 // spawning catapults
912 for (uint8 i = 0; i < MAX_CATAPULTS_SPAWNS_PER_FACTION; ++i)
913 {
915
916 if (GetBgMap()->GetCreature(BgCreatures[type]))
917 continue;
918
919 if (AddCreature(NPC_CATAPULT, type,
920 BG_IC_DocksVehiclesCatapults[i].GetPositionX(), BG_IC_DocksVehiclesCatapults[i].GetPositionY(),
921 BG_IC_DocksVehiclesCatapults[i].GetPositionZ(), BG_IC_DocksVehiclesCatapults[i].GetOrientation(),
924 }
925 break;
927 {
930
931 for (uint8 i = 0; i < MAX_DEMOLISHERS_SPAWNS_PER_FACTION; ++i)
932 {
934
935 if (GetBgMap()->GetCreature(BgCreatures[type]))
936 continue;
937
938 if (AddCreature(NPC_DEMOLISHER, type,
939 BG_IC_WorkshopVehicles[i].GetPositionX(), BG_IC_WorkshopVehicles[i].GetPositionY(),
940 BG_IC_WorkshopVehicles[i].GetPositionZ(), BG_IC_WorkshopVehicles[i].GetOrientation(),
943 }
944
947
948 if (Creature* oppositeSiege = GetBgMap()->GetCreature(BgCreatures[oppositeSiegeType]))
949 {
950 if (oppositeSiege->IsAlive())
951 if (Vehicle* siegeVehicle = oppositeSiege->GetVehicleKit())
952 if (!siegeVehicle->IsVehicleInUse())
953 Unit::Kill(oppositeSiege, oppositeSiege);
954 }
955
956 if (!GetBgMap()->GetCreature(BgCreatures[siegeType]))
957 {
959 BG_IC_WorkshopVehicles[4].GetPositionX(), BG_IC_WorkshopVehicles[4].GetPositionY(),
960 BG_IC_WorkshopVehicles[4].GetPositionZ(), BG_IC_WorkshopVehicles[4].GetOrientation(),
962 }
963
964 if (Creature* siegeEngine = GetBgMap()->GetCreature(BgCreatures[siegeType]))
965 {
967 siegeEngine->SetCorpseDelay(5 * MINUTE);
968
969 respawnMap[siegeEngine->GetGUID()] = GameTime::GetGameTime().count() + VEHICLE_RESPAWN_TIME;
970 }
971
972 for (uint8 i = 0; i < MAX_WORKSHOP_BOMBS_SPAWNS_PER_FACTION; ++i)
973 {
975 workshopBombs[i].GetPositionX(), workshopBombs[i].GetPositionY(),
976 workshopBombs[i].GetPositionZ(), workshopBombs[i].GetOrientation(),
977 0, 0, 0, 0, 10);
978
979 if (GameObject* seaforiumBombs = GetBGObject(BG_IC_GO_SEAFORIUM_BOMBS_1 + i))
980 {
981 seaforiumBombs->SetRespawnTime(10);
982 seaforiumBombs->SetUInt32Value(GAMEOBJECT_FACTION, BG_IC_Factions[(nodePoint->faction == TEAM_ALLIANCE ? 0 : 1)]);
983 }
984 }
985 break;
986 }
987 default:
988 break;
989 }
990}
@ ACTION_GUNSHIP_READY
Definition BattlegroundIC.h:206
@ NPC_SIEGE_ENGINE_H
Definition BattlegroundIC.h:41
@ NPC_HORDE_GUNSHIP_CAPTAIN
Definition BattlegroundIC.h:48
@ NPC_SIEGE_ENGINE_A
Definition BattlegroundIC.h:42
@ NPC_GLAIVE_THROWER_A
Definition BattlegroundIC.h:43
@ NPC_WORLD_TRIGGER_NOT_FLOATING
Definition BattlegroundIC.h:50
@ NPC_GLAIVE_THROWER_H
Definition BattlegroundIC.h:44
@ NPC_DEMOLISHER
Definition BattlegroundIC.h:40
@ NPC_CATAPULT
Definition BattlegroundIC.h:45
@ NPC_ALLIANCE_GUNSHIP_CANNON
Definition BattlegroundIC.h:47
@ NPC_HORDE_GUNSHIP_CANNON
Definition BattlegroundIC.h:46
@ NPC_ALLIANCE_GUNSHIP_CAPTAIN
Definition BattlegroundIC.h:49
@ VEHICLE_RESPAWN_TIME
Definition BattlegroundIC.h:197
@ BG_IC_GO_HANGAR_BANNER
Definition BattlegroundIC.h:286
@ BG_IC_GO_WORKSHOP_BANNER
Definition BattlegroundIC.h:303
@ BG_IC_GO_HANGAR_TELEPORTER_1
Definition BattlegroundIC.h:324
@ BG_IC_GO_REFINERY_BANNER
Definition BattlegroundIC.h:305
@ BG_IC_GO_SEAFORIUM_BOMBS_1
Definition BattlegroundIC.h:321
@ BG_IC_GO_QUARRY_BANNER
Definition BattlegroundIC.h:296
@ BG_IC_GO_DOCKS_BANNER
Definition BattlegroundIC.h:262
@ BG_IC_GO_HANGAR_TELEPORTER_EFFECT_1
Definition BattlegroundIC.h:328
const Position BG_IC_WorkshopVehicles[5]
Definition BattlegroundIC.h:517
@ MAX_GLAIVE_THROWERS_SPAWNS_PER_FACTION
Definition BattlegroundIC.h:463
@ MAX_WORKSHOP_BOMBS_SPAWNS_PER_FACTION
Definition BattlegroundIC.h:468
@ MAX_CATAPULTS_SPAWNS_PER_FACTION
Definition BattlegroundIC.h:464
@ MAX_DEMOLISHERS_SPAWNS_PER_FACTION
Definition BattlegroundIC.h:467
@ MAX_TRIGGER_SPAWNS_PER_FACTION
Definition BattlegroundIC.h:471
@ MAX_CAPTAIN_SPAWNS_PER_FACTION
Definition BattlegroundIC.h:472
const float BG_IC_SpiritGuidePos[MAX_NODE_TYPES+2][4]
Definition BattlegroundIC.h:783
const Position BG_IC_HangarTeleporters[3]
Definition BattlegroundIC.h:540
const Position workshopBombs[2]
Definition BattlegroundIC.h:705
const Position BG_IC_DocksVehiclesGlaives[2]
Definition BattlegroundIC.h:526
const Position BG_IC_DocksVehiclesCatapults[4]
Definition BattlegroundIC.h:532
@ GO_ALLIANCE_GUNSHIP_PORTAL_EFFECTS
Definition BattlegroundIC.h:65
@ GO_HORDE_GUNSHIP_PORTAL_EFFECTS
Definition BattlegroundIC.h:118
@ GO_SEAFORIUM_BOMBS
Definition BattlegroundIC.h:127
@ GO_ALLIANCE_GUNSHIP_PORTAL
Definition BattlegroundIC.h:63
@ GO_HORDE_GUNSHIP_PORTAL
Definition BattlegroundIC.h:116
@ BG_IC_NPC_GLAIVE_THROWER_1_H
Definition BattlegroundIC.h:413
@ BG_IC_NPC_GUNSHIP_CAPTAIN_1
Definition BattlegroundIC.h:427
@ BG_IC_NPC_SIEGE_ENGINE_H
Definition BattlegroundIC.h:399
@ BG_IC_NPC_DEMOLISHER_1_H
Definition BattlegroundIC.h:406
@ BG_IC_NPC_GUNSHIP_CAPTAIN_2
Definition BattlegroundIC.h:428
@ BG_IC_NPC_CATAPULT_1_A
Definition BattlegroundIC.h:416
@ BG_IC_NPC_CATAPULT_1_H
Definition BattlegroundIC.h:421
@ BG_IC_NPC_DEMOLISHER_1_A
Definition BattlegroundIC.h:401
@ BG_IC_NPC_SIEGE_ENGINE_A
Definition BattlegroundIC.h:398
@ BG_IC_NPC_GLAIVE_THROWER_1_A
Definition BattlegroundIC.h:411
@ BG_IC_NPC_WORLD_TRIGGER_NOT_FLOATING
Definition BattlegroundIC.h:426
const Position BG_IC_HangarTeleporterEffects[3]
Definition BattlegroundIC.h:547
const Position BG_IC_HangarCaptains[4]
Definition BattlegroundIC.h:560
constexpr auto MINUTE
Definition Common.h:47
@ GO_STATE_ACTIVE
Definition GameObjectData.h:708
@ UNIT_FLAG_NOT_SELECTABLE
Definition UnitDefines.h:282
void DoAction(uint32 action, ObjectGuid guid) override
Definition BattlegroundIC.cpp:64
bool AddSpiritGuide(uint32 type, float x, float y, float z, float o, TeamId teamId)
Definition Battleground.cpp:1709
static TeamId GetOtherTeamId(TeamId teamId)
Definition Battleground.cpp:1824
BattlegroundMap * GetBgMap() const
Definition Battleground.h:440
Creature * AddCreature(uint32 entry, uint32 type, float x, float y, float z, float o, uint32 respawntime=0, MotionTransport *transport=nullptr)
Definition Battleground.cpp:1607
void RemoveAuraOnTeam(uint32 spellId, TeamId teamId)
Definition Battleground.cpp:760
void CastSpellOnTeam(uint32 spellId, TeamId teamId)
Definition Battleground.cpp:753
Creature * GetBGCreature(uint32 type)
Definition Battleground.cpp:1578
Definition Creature.h:47
Creature * GetCreature(ObjectGuid const &guid)
Definition Map.cpp:2349
void SetFaction(uint32 faction)
Definition Unit.cpp:7073
static void Kill(Unit *killer, Unit *victim, bool durabilityLoss=true, WeaponAttackType attackType=BASE_ATTACK, SpellInfo const *spellProto=nullptr, Spell const *spell=nullptr)
Definition Unit.cpp:13964
Definition Vehicle.h:28
void GetCreatureListWithEntryInGrid(std::list< Creature * > &lList, uint32 uiEntry, float fMaxSearchRange) const
Definition Object.cpp:2559
Seconds GetGameTime()
Definition GameTime.cpp:38
Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
Definition ObjectAccessor.cpp:210

References ACTION_GUNSHIP_READY, Battleground::AddCreature(), Battleground::AddObject(), Battleground::AddSpiritGuide(), BG_IC_DocksVehiclesCatapults, BG_IC_DocksVehiclesGlaives, BG_IC_Factions, BG_IC_GO_DOCKS_BANNER, BG_IC_GO_HANGAR_BANNER, BG_IC_GO_HANGAR_TELEPORTER_1, BG_IC_GO_HANGAR_TELEPORTER_EFFECT_1, BG_IC_GO_QUARRY_BANNER, BG_IC_GO_REFINERY_BANNER, BG_IC_GO_SEAFORIUM_BOMBS_1, BG_IC_GO_WORKSHOP_BANNER, BG_IC_HangarCaptains, BG_IC_HangarTeleporterEffects, BG_IC_HangarTeleporters, BG_IC_HangarTrigger, BG_IC_NPC_CATAPULT_1_A, BG_IC_NPC_CATAPULT_1_H, BG_IC_NPC_DEMOLISHER_1_A, BG_IC_NPC_DEMOLISHER_1_H, BG_IC_NPC_GLAIVE_THROWER_1_A, BG_IC_NPC_GLAIVE_THROWER_1_H, BG_IC_NPC_GUNSHIP_CAPTAIN_1, BG_IC_NPC_GUNSHIP_CAPTAIN_2, BG_IC_NPC_SIEGE_ENGINE_A, BG_IC_NPC_SIEGE_ENGINE_H, BG_IC_NPC_SPIRIT_GUIDE_1, BG_IC_NPC_WORLD_TRIGGER_NOT_FLOATING, BG_IC_SpiritGuidePos, BG_IC_WorkshopVehicles, Battleground::BgCreatures, Battleground::CastSpellOnTeam(), UnitAI::DoAction(), DOCKS_UPDATE_TIME, docksTimer, ICNodePoint::faction, GAMEOBJECT_FACTION, ICNodePoint::gameobject_type, Unit::GetAI(), Battleground::GetBGCreature(), Battleground::GetBgMap(), Battleground::GetBGObject(), Map::GetCreature(), WorldObject::GetCreatureListWithEntryInGrid(), GameTime::GetGameTime(), Position::GetOrientation(), Battleground::GetOtherTeamId(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), GO_ALLIANCE_GUNSHIP_PORTAL, GO_ALLIANCE_GUNSHIP_PORTAL_EFFECTS, GO_HORDE_GUNSHIP_PORTAL, GO_HORDE_GUNSHIP_PORTAL_EFFECTS, GO_SEAFORIUM_BOMBS, GO_STATE_ACTIVE, gunshipAlliance, gunshipHorde, Unit::Kill(), LOG_ERROR, MAX_CAPTAIN_SPAWNS_PER_FACTION, MAX_CATAPULTS_SPAWNS_PER_FACTION, MAX_DEMOLISHERS_SPAWNS_PER_FACTION, MAX_GLAIVE_THROWERS_SPAWNS_PER_FACTION, MAX_HANGAR_TELEPORTER_EFFECTS_SPAWNS, MAX_HANGAR_TELEPORTERS_SPAWNS, MAX_TRIGGER_SPAWNS_PER_FACTION, MAX_WORKSHOP_BOMBS_SPAWNS_PER_FACTION, MINUTE, NODE_TYPE_QUARRY, NODE_TYPE_REFINERY, nodePoint, ICNodePoint::nodeType, NPC_ALLIANCE_GUNSHIP_CANNON, NPC_ALLIANCE_GUNSHIP_CAPTAIN, NPC_CATAPULT, NPC_DEMOLISHER, NPC_GLAIVE_THROWER_A, NPC_GLAIVE_THROWER_H, NPC_HORDE_GUNSHIP_CANNON, NPC_HORDE_GUNSHIP_CAPTAIN, NPC_SIEGE_ENGINE_A, NPC_SIEGE_ENGINE_H, NPC_WORLD_TRIGGER_NOT_FLOATING, Battleground::RemoveAuraOnTeam(), RESPAWN_ONE_DAY, respawnMap, Unit::SetFaction(), siegeEngineWorkshopTimer, SPELL_OIL_REFINERY, SPELL_QUARRY, TEAM_ALLIANCE, TEAM_HORDE, UNIT_FLAG_NOT_SELECTABLE, VEHICLE_RESPAWN_TIME, WORKSHOP_UPDATE_TIME, and workshopBombs.

Referenced by EventPlayerClickedOnFlag(), and PostUpdateImpl().

◆ HandleContestedNodes()

void BattlegroundIC::HandleContestedNodes ( ICNodePoint nodePoint)
private
716{
718 {
720 (nodePoint->faction == TEAM_ALLIANCE ? gunshipHorde : gunshipAlliance)->EnableMovement(false);
721
723 DelObject(u);
724
726 DelObject(u);
727
729
730 for (uint8 u = 0; u < MAX_CAPTAIN_SPAWNS_PER_FACTION; ++u)
731 {
733 DelCreature(type);
734 }
735
736 std::list<Creature*> cannons;
739 else
741
742 for (std::list<Creature*>::const_iterator itr = cannons.begin(); itr != cannons.end(); ++itr)
743 {
744 (*itr)->GetVehicleKit()->RemoveAllPassengers();
745 (*itr)->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
746 }
747 }
749 {
750 auto removeUnusedVehicles = [&](uint8 baseType, uint8 count)
751 {
752 for (uint8 i = 0; i < count; ++i)
753 {
754 uint8 type = baseType + i;
755 if (Creature* vehicle = GetBgMap()->GetCreature(BgCreatures[type]))
756 {
757 if (Vehicle* veh = vehicle->GetVehicleKit())
758 if (!veh->IsVehicleInUse())
759 {
760 respawnMap.erase(vehicle->GetGUID());
761 DelCreature(type);
762 }
763 }
764 }
765 };
766
768 removeUnusedVehicles(glaiveBase, MAX_GLAIVE_THROWERS_SPAWNS_PER_FACTION);
769
771 removeUnusedVehicles(catapultBase, MAX_CATAPULTS_SPAWNS_PER_FACTION);
772 }
774 {
775 // nodePoint->faction is the assaulting team (set before this call);
776 // remove the siege damage buff from the team that previously controlled the node.
779 }
781 {
784
785 for (uint8 i = 0; i < MAX_DEMOLISHERS_SPAWNS_PER_FACTION; ++i)
786 {
788 if (BgCreatures[type] && GetBgMap()->GetCreature(BgCreatures[type]))
789 {
790 if (Creature* demolisher = GetBgMap()->GetCreature(BgCreatures[type]))
791 {
792 if (Vehicle* veh = demolisher->GetVehicleKit())
793 if (!veh->IsVehicleInUse())
794 {
795 respawnMap.erase(demolisher->GetGUID());
796 DelCreature(type);
797 }
798 }
799 }
800 }
801
803 if (BgCreatures[siegeType] && GetBgMap()->GetCreature(BgCreatures[siegeType]))
804 {
805 if (Creature* siege = GetBgMap()->GetCreature(BgCreatures[siegeType]))
806 {
807 if (Vehicle* veh = siege->GetVehicleKit())
808 if (!veh->IsVehicleInUse())
809 {
810 respawnMap.erase(siege->GetGUID());
811 DelCreature(siegeType);
812 }
813 }
814 }
815 }
816}
@ NODE_TYPE_DOCKS
Definition BattlegroundIC.h:761
@ NODE_TYPE_HANGAR
Definition BattlegroundIC.h:762
@ BG_IC_GO_HANGAR_TELEPORTER_EFFECT_3
Definition BattlegroundIC.h:330
@ BG_IC_GO_HANGAR_TELEPORTER_3
Definition BattlegroundIC.h:326
@ BG_IC_GO_SEAFORIUM_BOMBS_2
Definition BattlegroundIC.h:322

References BG_IC_GO_HANGAR_TELEPORTER_1, BG_IC_GO_HANGAR_TELEPORTER_3, BG_IC_GO_HANGAR_TELEPORTER_EFFECT_1, BG_IC_GO_HANGAR_TELEPORTER_EFFECT_3, BG_IC_GO_SEAFORIUM_BOMBS_1, BG_IC_GO_SEAFORIUM_BOMBS_2, BG_IC_NPC_CATAPULT_1_A, BG_IC_NPC_CATAPULT_1_H, BG_IC_NPC_DEMOLISHER_1_A, BG_IC_NPC_DEMOLISHER_1_H, BG_IC_NPC_GLAIVE_THROWER_1_A, BG_IC_NPC_GLAIVE_THROWER_1_H, BG_IC_NPC_GUNSHIP_CAPTAIN_1, BG_IC_NPC_SIEGE_ENGINE_A, BG_IC_NPC_SIEGE_ENGINE_H, BG_IC_NPC_WORLD_TRIGGER_NOT_FLOATING, Battleground::BgCreatures, Battleground::DelCreature(), Battleground::DelObject(), ICNodePoint::faction, Battleground::GetBgMap(), Map::GetCreature(), WorldObject::GetCreatureListWithEntryInGrid(), Battleground::GetOtherTeamId(), gunshipAlliance, gunshipHorde, MAX_CAPTAIN_SPAWNS_PER_FACTION, MAX_CATAPULTS_SPAWNS_PER_FACTION, MAX_DEMOLISHERS_SPAWNS_PER_FACTION, MAX_GLAIVE_THROWERS_SPAWNS_PER_FACTION, NODE_TYPE_DOCKS, NODE_TYPE_HANGAR, NODE_TYPE_QUARRY, NODE_TYPE_REFINERY, NODE_TYPE_WORKSHOP, nodePoint, ICNodePoint::nodeType, NPC_ALLIANCE_GUNSHIP_CANNON, NPC_HORDE_GUNSHIP_CANNON, Battleground::RemoveAuraOnTeam(), respawnMap, SPELL_OIL_REFINERY, SPELL_QUARRY, TEAM_ALLIANCE, TEAM_HORDE, and UNIT_FLAG_NOT_SELECTABLE.

Referenced by EventPlayerClickedOnFlag().

◆ HandleKillPlayer()

void BattlegroundIC::HandleKillPlayer ( Player player,
Player killer 
)
overridevirtual

Reimplemented from Battleground.

540{
542 return;
543
544 Battleground::HandleKillPlayer(player, killer);
545
546 factionReinforcements[player->GetTeamId()] -= 1;
547
549
550 // we must end the battleground
551 if (factionReinforcements[player->GetTeamId()] < 1)
552 EndBattleground(killer->GetTeamId());
553}
TeamId GetTeamId(PvPTeamId teamId)
Definition SharedDefines.h:3718
virtual void HandleKillPlayer(Player *player, Player *killer)
Definition Battleground.cpp:1789
void EndBattleground(PvPTeamId winnerTeamId)
Definition Battleground.cpp:835

References Battleground::EndBattleground(), factionReinforcements, Battleground::GetStatus(), Player::GetTeamId(), Battleground::HandleKillPlayer(), STATUS_IN_PROGRESS, TEAM_ALLIANCE, Battleground::UpdateWorldState(), WORLD_STATE_BATTLEGROUND_IC_ALLIANCE_REINFORCEMENT, and WORLD_STATE_BATTLEGROUND_IC_HORDE_REINFORCEMENT.

◆ HandleKillUnit()

void BattlegroundIC::HandleKillUnit ( Creature unit,
Player killer 
)
overridevirtual

Reimplemented from Battleground.

510{
512 return;
513
514 uint32 entry = unit->GetEntry();
516 {
519 }
520 else if (entry == NPC_OVERLORD_AGMAR)
521 {
524 }
525
526 //Achievement Mowed Down
527 // TO-DO: This should be done on the script of each vehicle of the BG.
528 if (unit->IsVehicle())
529 {
530 killer->CastSpell(killer, SPELL_DESTROYED_VEHICLE_ACHIEVEMENT, true);
531
532 // Xinef: Add to respawn list
533 if (entry == NPC_DEMOLISHER || entry == NPC_SIEGE_ENGINE_H || entry == NPC_SIEGE_ENGINE_A ||
534 entry == NPC_GLAIVE_THROWER_A || entry == NPC_GLAIVE_THROWER_H || entry == NPC_CATAPULT)
536 }
537}
@ WINNER_HONOR_AMOUNT
Definition BattlegroundIC.h:855
@ NPC_HIGH_COMMANDER_HALFORD_WYRMBANE
Definition BattlegroundIC.h:34
@ NPC_OVERLORD_AGMAR
Definition BattlegroundIC.h:35
@ SPELL_DESTROYED_VEHICLE_ACHIEVEMENT
Definition BattlegroundIC.h:716
void RewardHonorToTeam(uint32 honor, TeamId teamId)
Definition Battleground.cpp:777
bool IsVehicle() const
Definition Unit.h:800

References Unit::CastSpell(), Battleground::EndBattleground(), Object::GetEntry(), GameTime::GetGameTime(), Object::GetGUID(), Battleground::GetStatus(), Unit::IsVehicle(), NPC_CATAPULT, NPC_DEMOLISHER, NPC_GLAIVE_THROWER_A, NPC_GLAIVE_THROWER_H, NPC_HIGH_COMMANDER_HALFORD_WYRMBANE, NPC_OVERLORD_AGMAR, NPC_SIEGE_ENGINE_A, NPC_SIEGE_ENGINE_H, respawnMap, Battleground::RewardHonorToTeam(), SPELL_DESTROYED_VEHICLE_ACHIEVEMENT, STATUS_IN_PROGRESS, TEAM_ALLIANCE, TEAM_HORDE, VEHICLE_RESPAWN_TIME, and WINNER_HONOR_AMOUNT.

◆ HandlePlayerResurrect()

void BattlegroundIC::HandlePlayerResurrect ( Player player)
overridevirtual

◆ IsResourceGlutAllowed()

bool BattlegroundIC::IsResourceGlutAllowed ( TeamId  teamId) const

◆ PostUpdateImpl()

void BattlegroundIC::PostUpdateImpl ( uint32  )
overridevirtual

Post-update hook.

Will be called after battleground update has passed. May be used to implement custom update effects in subclasses.

Parameters
diffa time difference between two worldserver update loops in milliseconds.
See also
Update(), PreUpdateImpl().

Reimplemented from Battleground.

95{
97 return;
98
99 if (!doorsClosed)
100 {
101 if (closeFortressDoorsTimer <= diff)
102 {
109
116
117 doorsClosed = true;
118 }
119 else closeFortressDoorsTimer -= diff;
120 }
121
122 for (uint8 i = NODE_TYPE_REFINERY; i < MAX_NODE_TYPES; ++i)
123 {
124 if (nodePoint[i].nodeType == NODE_TYPE_DOCKS)
125 {
126 if (nodePoint[i].nodeState == NODE_STATE_CONTROLLED_A ||
127 nodePoint[i].nodeState == NODE_STATE_CONTROLLED_H)
128 {
129 if (nodePoint[i].timer <= diff)
130 {
131 // we need to confirm this, i am not sure if this every 3 minutes
132 for (uint8 j = 0; j < MAX_CATAPULTS_SPAWNS_PER_FACTION; ++j)
133 {
135 if (Creature* catapult = GetBgMap()->GetCreature(BgCreatures[type]))
136 if (!catapult->IsAlive())
137 {
138 // Check if creature respawn time is properly saved
139 RespawnMap::iterator itr = respawnMap.find(catapult->GetGUID());
140 if (itr == respawnMap.end() || GameTime::GetGameTime().count() < itr->second)
141 continue;
142
144 catapult->Respawn(true);
145 respawnMap.erase(itr);
146 }
147 }
148
149 // we need to confirm this is blizzlike, not sure if it is every 3 minutes
151 {
153 if (Creature* glaiveThrower = GetBgMap()->GetCreature(BgCreatures[type]))
154 if (!glaiveThrower->IsAlive())
155 {
156 // Check if creature respawn time is properly saved
157 RespawnMap::iterator itr = respawnMap.find(glaiveThrower->GetGUID());
158 if (itr == respawnMap.end() || GameTime::GetGameTime().count() < itr->second)
159 continue;
160
162 glaiveThrower->Respawn(true);
163 respawnMap.erase(itr);
164 }
165 }
166
168 }
169 else
170 nodePoint[i].timer -= diff;
171 }
172 }
173
174 if (nodePoint[i].nodeType == NODE_TYPE_WORKSHOP)
175 {
176 if (nodePoint[i].nodeState == NODE_STATE_CONTROLLED_A ||
177 nodePoint[i].nodeState == NODE_STATE_CONTROLLED_H)
178 {
179 if (siegeEngineWorkshopTimer <= diff)
180 {
182 if (Creature* siege = GetBgMap()->GetCreature(BgCreatures[siegeType]))
183 if (!siege->IsAlive())
184 {
185 // Check if creature respawn time is properly saved
186 RespawnMap::iterator itr = respawnMap.find(siege->GetGUID());
187 if (itr == respawnMap.end() || GameTime::GetGameTime().count() < itr->second)
188 continue;
189
191 siege->Respawn(true);
192 respawnMap.erase(itr);
193 }
194
195 // we need to confirm this, i am not sure if this every 3 minutes
196 for (uint8 u = 0; u < MAX_DEMOLISHERS_SPAWNS_PER_FACTION; ++u)
197 {
199 if (Creature* demolisher = GetBgMap()->GetCreature(BgCreatures[type]))
200 if (!demolisher->IsAlive())
201 {
202 // Check if creature respawn time is properly saved
203 RespawnMap::iterator itr = respawnMap.find(demolisher->GetGUID());
204 if (itr == respawnMap.end() || GameTime::GetGameTime().count() < itr->second)
205 continue;
206
208 demolisher->Respawn(true);
209 respawnMap.erase(itr);
210 }
211 }
212
214 }
215 else
217 }
218 }
219
220 // the point is waiting for a change on its banner
221 if (nodePoint[i].needChange)
222 {
223 if (nodePoint[i].timer <= diff)
224 {
225 uint32 nextBanner = GetNextBanner(&nodePoint[i], nodePoint[i].faction, true);
226
228 nodePoint[i].gameobject_entry = nextBanner;
229 // nodePoint[i].faction = the faction should be the same one...
230
231 GameObject* banner = GetBGObject(nodePoint[i].gameobject_type);
232
233 if (!banner) // this should never happen
234 return;
235
236 float cords[4] = {banner->GetPositionX(), banner->GetPositionY(), banner->GetPositionZ(), banner->GetOrientation() };
237
238 DelObject(nodePoint[i].gameobject_type);
239 AddObject(nodePoint[i].gameobject_type, nodePoint[i].gameobject_entry, cords[0], cords[1], cords[2], cords[3], 0, 0, 0, 0, RESPAWN_ONE_DAY);
240
242
244 HandleCapturedNodes(&nodePoint[i], false);
245
246 if (nodePoint[i].faction == TEAM_ALLIANCE)
247 {
249 }
250 else
251 {
253 }
254
255 nodePoint[i].needChange = false;
257 }
258 else nodePoint[i].timer -= diff;
259 }
260 }
261
262 if (resourceTimer <= diff)
263 {
264 for (uint8 i = 0; i < NODE_TYPE_DOCKS; ++i)
265 {
266 if (nodePoint[i].nodeState == NODE_STATE_CONTROLLED_A ||
267 nodePoint[i].nodeState == NODE_STATE_CONTROLLED_H)
268 {
272 }
273 }
275 }
276 else resourceTimer -= diff;
277}
@ RESOURCE_HONOR_AMOUNT
Definition BattlegroundIC.h:854
@ BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR01
Definition BattlegroundIC.h:317
@ BG_IC_GO_HORDE_GATE_3
Definition BattlegroundIC.h:292
@ BG_IC_GO_HORDE_GATE_2
Definition BattlegroundIC.h:291
@ BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR02
Definition BattlegroundIC.h:318
@ BG_IC_GO_ALLIANCE_GATE_3
Definition BattlegroundIC.h:229
@ BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR03
Definition BattlegroundIC.h:319
@ BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR01
Definition BattlegroundIC.h:267
@ BG_IC_GO_ALLIANCE_GATE_1
Definition BattlegroundIC.h:227
@ BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR03
Definition BattlegroundIC.h:269
@ BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR02
Definition BattlegroundIC.h:268
@ BG_IC_GO_HORDE_GATE_1
Definition BattlegroundIC.h:290
@ BG_IC_GO_ALLIANCE_GATE_2
Definition BattlegroundIC.h:228
@ GO_DESTRUCTIBLE_DAMAGED
Definition SharedDefines.h:1632
void RemoveFromWorld() override
Definition GameObject.cpp:184
void SetDestructibleState(GameObjectDestructibleState state, Player *eventInvoker=nullptr, bool setHealth=false)
Definition GameObject.cpp:2360

References Battleground::AddObject(), BANNER_STATE_CHANGE_TIME, BG_IC_DocksVehiclesCatapults, BG_IC_DocksVehiclesGlaives, BG_IC_Factions, BG_IC_GO_ALLIANCE_GATE_1, BG_IC_GO_ALLIANCE_GATE_2, BG_IC_GO_ALLIANCE_GATE_3, BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR01, BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR02, BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR03, BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR01, BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR02, BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR03, BG_IC_GO_HORDE_GATE_1, BG_IC_GO_HORDE_GATE_2, BG_IC_GO_HORDE_GATE_3, BG_IC_NPC_CATAPULT_1_A, BG_IC_NPC_CATAPULT_1_H, BG_IC_NPC_DEMOLISHER_1_A, BG_IC_NPC_DEMOLISHER_1_H, BG_IC_NPC_GLAIVE_THROWER_1_A, BG_IC_NPC_GLAIVE_THROWER_1_H, BG_IC_NPC_SIEGE_ENGINE_A, BG_IC_NPC_SIEGE_ENGINE_H, BG_IC_WorkshopVehicles, Battleground::BgCreatures, CHAT_MSG_BG_SYSTEM_ALLIANCE, CHAT_MSG_BG_SYSTEM_HORDE, closeFortressDoorsTimer, cords, Battleground::DelObject(), DOCKS_UPDATE_TIME, docksTimer, doorsClosed, ICNodePoint::faction, factionReinforcements, ICNodePoint::gameobject_entry, GAMEOBJECT_FACTION, Battleground::GetBgMap(), Battleground::GetBGObject(), Map::GetCreature(), GameTime::GetGameTime(), GetNextBanner(), Position::GetOrientation(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), Battleground::GetStatus(), GO_DESTRUCTIBLE_DAMAGED, HandleCapturedNodes(), IC_RESOURCE_TIME, ICNodes, ICNodePoint::last_entry, MAX_CATAPULTS_SPAWNS_PER_FACTION, MAX_DEMOLISHERS_SPAWNS_PER_FACTION, MAX_GLAIVE_THROWERS_SPAWNS_PER_FACTION, MAX_NODE_TYPES, ICNodePoint::needChange, NODE_STATE_CONTROLLED_A, NODE_STATE_CONTROLLED_H, NODE_TYPE_DOCKS, NODE_TYPE_REFINERY, NODE_TYPE_WORKSHOP, nodePoint, GameObject::RemoveFromWorld(), RESOURCE_HONOR_AMOUNT, resourceTimer, RESPAWN_ONE_DAY, respawnMap, Battleground::RewardHonorToTeam(), Battleground::SendBroadcastText(), GameObject::SetDestructibleState(), Object::SetUInt32Value(), siegeEngineWorkshopTimer, STATUS_IN_PROGRESS, TEAM_ALLIANCE, ICNodePoint::timer, UpdateNodeWorldState(), Battleground::UpdateWorldState(), WORKSHOP_UPDATE_TIME, WORLD_STATE_BATTLEGROUND_IC_ALLIANCE_REINFORCEMENT, and WORLD_STATE_BATTLEGROUND_IC_HORDE_REINFORCEMENT.

◆ RemovePlayer()

void BattlegroundIC::RemovePlayer ( Player player)
overridevirtual

Reimplemented from Battleground.

333{
334 player->RemoveAura(SPELL_QUARRY);
336}
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:5038

References Unit::RemoveAura(), SPELL_OIL_REFINERY, and SPELL_QUARRY.

◆ SetupBattleground()

bool BattlegroundIC::SetupBattleground ( )
overridevirtual

Reimplemented from Battleground.

406{
407 for (uint8 i = 0; i < MAX_NORMAL_GAMEOBJECTS_SPAWNS; ++i)
408 {
410 {
411 LOG_ERROR("bg.battleground", "Isle of Conquest: There was an error spawning gameobject {}", BG_IC_ObjSpawnlocs[i].entry);
412 return false;
413 }
414
415 // Horde / Alliance gates, set active
416 if (i < 6)
418 }
419
420 for (uint8 i = 0; i < MAX_FORTRESS_TELEPORTERS_SPAWNS; ++i)
421 {
423 {
424 LOG_ERROR("bg.battleground", "Isle of Conquest | Starting Event Open Doors: There was an error spawning gameobject {}", BG_IC_Teleporters[i].entry);
425 return false;
426 }
427 }
428
430 {
432 {
433 LOG_ERROR("bg.battleground", "Isle of Conquest | Starting Event Open Doors: There was an error spawning gameobject {}", BG_IC_Teleporters[i].entry);
434 return false;
435 }
436 }
437
438 for (uint8 i = 0; i < MAX_NORMAL_NPCS_SPAWNS; ++i)
439 {
441 {
442 LOG_ERROR("bg.battleground", "Isle of Conquest: There was an error spawning creature {}", BG_IC_NpcSpawnlocs[i].entry);
443 return false;
444 }
445 }
446
451 {
452 LOG_ERROR("bg.battleground", "Isle of Conquest: Failed to spawn initial spirit guide!");
453 return false;
454 }
455
456 gunshipHorde = sTransportMgr->CreateTransport(GO_HORDE_GUNSHIP, 0, GetBgMap());
458
460 {
461 LOG_ERROR("bg.battleground", "Isle of Conquest: There was an error creating gunships!");
462 return false;
463 }
464
467
468 // setting correct factions for Keep Cannons
473 // Flags
475 {
476 go->SetUInt32Value(GAMEOBJECT_FACTION, BG_IC_Factions[1]);
478 }
480 {
481 go->SetUInt32Value(GAMEOBJECT_FACTION, BG_IC_Factions[0]);
483 }
484
485 // correcting spawn time for keeps bombs
488
489 TurnBosses(false);
490 return true;
491}
@ BG_IC_GO_HUGE_SEAFORIUM_BOMBS_A_1
Definition BattlegroundIC.h:307
@ BG_IC_GO_HUGE_SEAFORIUM_BOMBS_H_4
Definition BattlegroundIC.h:315
const ICGo BG_IC_TeleporterEffects[MAX_FORTRESS_TELEPORTER_EFFECTS_SPAWNS]
Definition BattlegroundIC.h:594
const ICNpc BG_IC_NpcSpawnlocs[MAX_NORMAL_NPCS_SPAWNS]
Definition BattlegroundIC.h:475
@ GO_HORDE_GUNSHIP
Definition BattlegroundIC.h:187
@ GO_ALLIANCE_GUNSHIP
Definition BattlegroundIC.h:188
@ BG_IC_NPC_KEEP_CANNON_13
Definition BattlegroundIC.h:384
@ BG_IC_NPC_KEEP_CANNON_25
Definition BattlegroundIC.h:396
@ BG_IC_NPC_KEEP_CANNON_12
Definition BattlegroundIC.h:383
@ BG_IC_NPC_KEEP_CANNON_1
Definition BattlegroundIC.h:372
const ICGo BG_IC_Teleporters[MAX_FORTRESS_TELEPORTERS_SPAWNS]
Definition BattlegroundIC.h:578
#define sTransportMgr
Definition TransportMgr.h:165
void SetRespawnTime(int32 respawn)
Definition GameObject.cpp:1284
void EnableMovement(bool enabled)
Definition Transport.cpp:461
void setActive(bool isActiveObject)
Definition Object.cpp:1082

References Battleground::AddCreature(), Battleground::AddObject(), Battleground::AddSpiritGuide(), BG_IC_Factions, BG_IC_GO_ALLIANCE_BANNER, BG_IC_GO_HORDE_BANNER, BG_IC_GO_HUGE_SEAFORIUM_BOMBS_A_1, BG_IC_GO_HUGE_SEAFORIUM_BOMBS_H_4, BG_IC_NPC_KEEP_CANNON_1, BG_IC_NPC_KEEP_CANNON_12, BG_IC_NPC_KEEP_CANNON_13, BG_IC_NPC_KEEP_CANNON_25, BG_IC_NPC_SPIRIT_GUIDE_1, BG_IC_NpcSpawnlocs, BG_IC_ObjSpawnlocs, BG_IC_SpiritGuidePos, BG_IC_TeleporterEffects, BG_IC_Teleporters, MotionTransport::EnableMovement(), GAMEOBJECT_FACTION, GAMEOBJECT_FLAGS, Battleground::GetBGCreature(), Battleground::GetBgMap(), Battleground::GetBGObject(), GO_ALLIANCE_GUNSHIP, GO_FLAG_NOT_SELECTABLE, GO_HORDE_GUNSHIP, gunshipAlliance, gunshipHorde, LOG_ERROR, MAX_FORTRESS_TELEPORTER_EFFECTS_SPAWNS, MAX_FORTRESS_TELEPORTERS_SPAWNS, MAX_NORMAL_GAMEOBJECTS_SPAWNS, MAX_NORMAL_NPCS_SPAWNS, RESPAWN_ONE_DAY, WorldObject::setActive(), Unit::SetFaction(), GameObject::SetRespawnTime(), sTransportMgr, TEAM_ALLIANCE, TEAM_HORDE, and TurnBosses().

◆ StartingEventCloseDoors()

void BattlegroundIC::StartingEventCloseDoors ( )
inlineoverridevirtual

Reimplemented from Battleground.

897{ }

◆ StartingEventOpenDoors()

void BattlegroundIC::StartingEventOpenDoors ( )
overridevirtual

Reimplemented from Battleground.

280{
281 //after 20 seconds they should be despawned
288
293
294 for (uint8 i = 0; i < MAX_FORTRESS_TELEPORTERS_SPAWNS; ++i)
296
299}
@ BG_IC_GO_DOODAD_VR_PORTCULLIS01_2
Definition BattlegroundIC.h:276
@ BG_IC_GO_DOODAD_HU_PORTCULLIS01_1
Definition BattlegroundIC.h:264
@ BG_IC_GO_DOODAD_VR_PORTCULLIS01_1
Definition BattlegroundIC.h:275
@ BG_IC_GO_DOODAD_HU_PORTCULLIS01_2
Definition BattlegroundIC.h:265
void SetGoState(GOState state)
Definition GameObject.cpp:2497
void RemoveGameObjectFlag(GameObjectFlags flags)
Definition GameObject.h:219

References BG_IC_GO_DOODAD_HU_PORTCULLIS01_1, BG_IC_GO_DOODAD_HU_PORTCULLIS01_2, BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR01, BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR02, BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR03, BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR01, BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR02, BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR03, BG_IC_GO_DOODAD_VR_PORTCULLIS01_1, BG_IC_GO_DOODAD_VR_PORTCULLIS01_2, BG_IC_TeleporterEffects, BG_IC_Teleporters, Battleground::DoorOpen(), Battleground::GetBGObject(), GO_FLAG_NOT_SELECTABLE, GO_STATE_ACTIVE, MAX_FORTRESS_TELEPORTER_EFFECTS_SPAWNS, MAX_FORTRESS_TELEPORTERS_SPAWNS, GameObject::RemoveGameObjectFlag(), and GameObject::SetGoState().

◆ TurnBosses()

void BattlegroundIC::TurnBosses ( bool  on)
private
494{
495 // Make Bosses invisible and passive
496 // or visible and active
498 {
499 boss->SetVisible(on);
500 boss->SetReactState(on ? REACT_AGGRESSIVE : REACT_PASSIVE);
501 }
503 {
504 boss->SetVisible(on);
505 boss->SetReactState(on ? REACT_AGGRESSIVE : REACT_PASSIVE);
506 }
507}
@ BG_IC_NPC_OVERLORD_AGMAR
Definition BattlegroundIC.h:362
@ BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE
Definition BattlegroundIC.h:363
@ REACT_PASSIVE
Definition Unit.h:566
@ REACT_AGGRESSIVE
Definition Unit.h:568

References BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE, BG_IC_NPC_OVERLORD_AGMAR, Battleground::GetBGCreature(), REACT_AGGRESSIVE, and REACT_PASSIVE.

Referenced by DestroyGate(), and SetupBattleground().

◆ UpdateNodeWorldState()

◆ UpdatePlayerScore()

bool BattlegroundIC::UpdatePlayerScore ( Player player,
uint32  type,
uint32  value,
bool  doAddHonor = true 
)
overridevirtual

Reimplemented from Battleground.

368{
369 if (!Battleground::UpdatePlayerScore(player, type, value, doAddHonor))
370 return false;
371
372 switch (type)
373 {
376 break;
379 break;
380 }
381
382 return true;
383}
@ IC_OBJECTIVE_ASSAULT_BASE
Definition BattlegroundIC.h:735
@ IC_OBJECTIVE_DEFEND_BASE
Definition BattlegroundIC.h:736
@ ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE
Definition DBCEnums.h:144
virtual bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true)
Definition Battleground.cpp:1424
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
Definition PlayerUpdates.cpp:2169

References ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, IC_OBJECTIVE_ASSAULT_BASE, IC_OBJECTIVE_DEFEND_BASE, SCORE_BASES_ASSAULTED, SCORE_BASES_DEFENDED, Player::UpdateAchievementCriteria(), and Battleground::UpdatePlayerScore().

Referenced by EventPlayerClickedOnFlag().

Member Data Documentation

◆ closeFortressDoorsTimer

uint32 BattlegroundIC::closeFortressDoorsTimer
private

Referenced by BattlegroundIC(), and PostUpdateImpl().

◆ docksTimer

uint32 BattlegroundIC::docksTimer
private

◆ doorsClosed

bool BattlegroundIC::doorsClosed
private

Referenced by BattlegroundIC(), and PostUpdateImpl().

◆ factionReinforcements

uint16 BattlegroundIC::factionReinforcements[2]
private

◆ GateStatus

◆ gunshipAlliance

MotionTransport* BattlegroundIC::gunshipAlliance
private

◆ gunshipHorde

◆ nodePoint

◆ resourceTimer

uint32 BattlegroundIC::resourceTimer
private

Referenced by BattlegroundIC(), and PostUpdateImpl().

◆ respawnMap

◆ siegeEngineWorkshopTimer

uint32 BattlegroundIC::siegeEngineWorkshopTimer
private

The documentation for this class was generated from the following files: