void BattleGround::OnObjectDBLoad(Creature* creature) { const BattleGroundEventIdx eventId = sBattleGroundMgr.GetCreatureEventIndex(creature->GetGUIDLow()); if (eventId.event1 == BG_EVENT_NONE) return; m_EventObjects[MAKE_PAIR32(eventId.event1, eventId.event2)].creatures.push_back(creature->GetObjectGuid()); if (!IsActiveEvent(eventId.event1, eventId.event2)) SpawnBGCreature(creature->GetObjectGuid(), RESPAWN_ONE_DAY); }
void BattleGroundIC::StartingEventOpenDoors() { //after 20 seconds they should be despawned DoorOpen(m_BgObjects[BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR01]); DoorOpen(m_BgObjects[BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR01]); DoorOpen(m_BgObjects[BG_IC_GO_DOODAD_HU_PORTCULLIS01_1]); DoorOpen(m_BgObjects[BG_IC_GO_DOODAD_HU_PORTCULLIS01_2]); DoorOpen(m_BgObjects[BG_IC_GO_DOODAD_VR_PORTCULLIS01_1]); DoorOpen(m_BgObjects[BG_IC_GO_DOODAD_VR_PORTCULLIS01_2]); for (uint8 i = 0; i < MAX_FORTRESS_TELEPORTERS_SPAWNS; i++) { 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)) sLog.outError("Isle of Conquest | Starting Event Open Doors: There was an error spawning gameobject %u",BG_IC_Teleporters[i].entry); else SpawnBGObject(m_BgObjects[BG_IC_Teleporters[i].type], RESPAWN_IMMEDIATELY); } 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); else SpawnBGCreature(m_BgCreatures[i], RESPAWN_IMMEDIATELY); } // 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]); }
void BattleGround::SpawnEvent(uint8 event1, uint8 event2, bool spawn) { // stop if we want to spawn something which was already spawned // or despawn something which was already despawned if (event2 == BG_EVENT_NONE || (spawn && m_ActiveEvents[event1] == event2) || (!spawn && m_ActiveEvents[event1] != event2)) return; if (spawn) { // if event gets spawned, the current active event mus get despawned SpawnEvent(event1, m_ActiveEvents[event1], false); m_ActiveEvents[event1] = event2; // set this event to active } else m_ActiveEvents[event1] = BG_EVENT_NONE; // no event active if event2 gets despawned GuidVector::const_iterator itr = m_EventObjects[MAKE_PAIR32(event1, event2)].creatures.begin(); for (; itr != m_EventObjects[MAKE_PAIR32(event1, event2)].creatures.end(); ++itr) SpawnBGCreature(*itr, (spawn) ? RESPAWN_IMMEDIATELY : RESPAWN_ONE_DAY); GuidVector::const_iterator itr2 = m_EventObjects[MAKE_PAIR32(event1, event2)].gameobjects.begin(); for (; itr2 != m_EventObjects[MAKE_PAIR32(event1, event2)].gameobjects.end(); ++itr2) SpawnBGObject(*itr2, (spawn) ? RESPAWN_IMMEDIATELY : RESPAWN_ONE_DAY); }