void ControllerAI::DoAction(const int32 action) { switch (action) { case ACTION_START_EVENT: { StartEvent(); }break; case ACTION_RESET_EVENT: { ResetEvent(); }break; case ACTION_ENABLE_KADDRAK: { ActivateBoss(EVENT_KADDRAK_CAST_SPELL); }break; case ACTION_ENABLE_MARNAK: { ActivateBoss(EVENT_MARNAK_CAST_SPELL); }break; case ACTION_ENABLE_ABEDNEUM: { ActivateBoss(EVENT_ABEDNEUM_CAST_SPELL); }break; case ACTION_SET_ALL_GO_WHITE:{ ActivateOrSwitchBossGO(BOSS_ALL, BOSS_GO_STATE_ACTIVE_WHITE); }break; } }
void BattlegroundIC::DestroyGate(Player* player, GameObject* go) { GateStatus[GetGateIDFromEntry(go->GetEntry())] = BG_IC_GATE_DESTROYED; uint32 uws_open = GetWorldStateFromGateEntry(go->GetEntry(), true); uint32 uws_close = GetWorldStateFromGateEntry(go->GetEntry(), false); if (uws_open) { UpdateWorldState(uws_close, 0); UpdateWorldState(uws_open, 1); } DoorOpen((player->GetTeamId() == TEAM_ALLIANCE ? BG_IC_GO_HORDE_KEEP_PORTCULLIS : BG_IC_GO_DOODAD_PORTCULLISACTIVE02)); uint32 lang_entry = 0; switch (go->GetEntry()) { case GO_HORDE_GATE_1: ActivateBoss(TEAM_ALLIANCE); lang_entry = LANG_BG_IC_NORTH_GATE_DESTROYED; break; case GO_HORDE_GATE_2: ActivateBoss(TEAM_ALLIANCE); lang_entry = LANG_BG_IC_WEST_GATE_DESTROYED; break; case GO_ALLIANCE_GATE_1: ActivateBoss(TEAM_HORDE); lang_entry = LANG_BG_IC_WEST_GATE_DESTROYED; break; case GO_HORDE_GATE_3: ActivateBoss(TEAM_ALLIANCE); lang_entry = LANG_BG_IC_EAST_GATE_DESTROYED; break; case GO_ALLIANCE_GATE_2: ActivateBoss(TEAM_HORDE); lang_entry = LANG_BG_IC_EAST_GATE_DESTROYED; break; case GO_ALLIANCE_GATE_3: ActivateBoss(TEAM_HORDE); lang_entry = LANG_BG_IC_SOUTH_GATE_DESTROYED; break; default: break; } SendMessage2ToAll(lang_entry, CHAT_MSG_BG_SYSTEM_NEUTRAL, NULL, (player->GetTeamId() == TEAM_ALLIANCE ? LANG_BG_IC_HORDE_KEEP : LANG_BG_IC_ALLIANCE_KEEP)); }
bool BattlegroundIC::SetupBattleground() { for (uint8 i = 0; i < MAX_NORMAL_GAMEOBJECTS_SPAWNS; i++) { 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)) { sLog->outError("Isle of Conquest: There was an error spawning gameobject %u", BG_IC_ObjSpawnlocs[i].entry); return false; } } for (uint8 i = 0; i < MAX_NORMAL_NPCS_SPAWNS; i++) { if (!AddCreature(BG_IC_NpcSpawnlocs[i].entry, BG_IC_NpcSpawnlocs[i].type, BG_IC_NpcSpawnlocs[i].team, BG_IC_NpcSpawnlocs[i].x, BG_IC_NpcSpawnlocs[i].y, BG_IC_NpcSpawnlocs[i].z, BG_IC_NpcSpawnlocs[i].o, RESPAWN_ONE_DAY)) { sLog->outError("Isle of Conquest: There was an error spawning creature %u", BG_IC_NpcSpawnlocs[i].entry); return false; } } if (!AddSpiritGuide(BG_IC_NPC_SPIRIT_GUIDE_1+5, BG_IC_SpiritGuidePos[5][0], BG_IC_SpiritGuidePos[5][1], BG_IC_SpiritGuidePos[5][2], BG_IC_SpiritGuidePos[5][3], ALLIANCE) || !AddSpiritGuide(BG_IC_NPC_SPIRIT_GUIDE_1+6, BG_IC_SpiritGuidePos[6][0], BG_IC_SpiritGuidePos[6][1], BG_IC_SpiritGuidePos[6][2], BG_IC_SpiritGuidePos[6][3], HORDE) || !AddSpiritGuide(BG_IC_NPC_SPIRIT_GUIDE_1+3, BG_IC_SpiritGuidePos[7][0], BG_IC_SpiritGuidePos[7][1], BG_IC_SpiritGuidePos[7][2], BG_IC_SpiritGuidePos[7][3], ALLIANCE) || !AddSpiritGuide(BG_IC_NPC_SPIRIT_GUIDE_1+4, BG_IC_SpiritGuidePos[8][0], BG_IC_SpiritGuidePos[8][1], BG_IC_SpiritGuidePos[8][2], BG_IC_SpiritGuidePos[8][3], HORDE)) { sLog->outError("Isle of Conquest: Failed to spawn initial spirit guide!"); return false; } gunshipHorde = CreateTransport(GO_HORDE_GUNSHIP, TRANSPORT_PERIOD_TIME); gunshipAlliance = CreateTransport(GO_ALLIANCE_GUNSHIP, TRANSPORT_PERIOD_TIME); if (!gunshipAlliance || !gunshipHorde) { sLog->outError("Isle of Conquest: There was an error creating gunships!"); return false; } //Send transport init packet to all player in map for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end();itr++) { if (Player* player = sObjectMgr->GetPlayer(itr->first)) SendTransportInit(player); } // setting correct factions for Keep Cannons for (uint8 i = BG_IC_NPC_KEEP_CANNON_1; i < BG_IC_NPC_KEEP_CANNON_12; i++) GetBGCreature(i)->setFaction(BG_IC_Factions[0]); for (uint8 i = BG_IC_NPC_KEEP_CANNON_13; i < BG_IC_NPC_KEEP_CANNON_25; i++) GetBGCreature(i)->setFaction(BG_IC_Factions[1]); // correcting spawn time for keeps bombs for (uint8 i = BG_IC_GO_HUGE_SEAFORIUM_BOMBS_A_1; i < BG_IC_GO_HUGE_SEAFORIUM_BOMBS_H_4; i++) GetBGObject(i)->SetRespawnTime(10); // Make bosses invisible if (Creature *icBoss = GetBGCreature(BG_IC_NPC_OVERLORD_AGMAR)) ActivateBoss(TEAM_ALLIANCE, false); if (Creature *icBoss = GetBGCreature(BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE)) ActivateBoss(TEAM_HORDE, false); return true; }