uint32 BattlefieldWG::GetData(uint32 data) { switch (data) { // Used to determine when the phasing spells must be casted // See: SpellArea::IsFitToRequirements case AREA_THE_SUNKEN_RING: case AREA_THE_BROKEN_TEMPLATE: case AREA_WESTPARK_WORKSHOP: case AREA_EASTPARK_WORKSHOP: // Graveyards and Workshops are controlled by the same team. if (m_GraveyardList[GetSpiritGraveyardId(data)]) return m_GraveyardList[GetSpiritGraveyardId(data)]->GetControlTeamId(); } return Battlefield::GetData(data); }
uint32 BattlefieldWG::GetData(uint32 data) const { switch (data) { // Used to determine when the phasing spells must be cast // See: SpellArea::IsFitToRequirements case AREA_THE_SUNKEN_RING: case AREA_THE_BROKEN_TEMPLATE: case AREA_WESTPARK_WORKSHOP: case AREA_EASTPARK_WORKSHOP: // Graveyards and Workshops are controlled by the same team. if (BfGraveyard const* graveyard = GetGraveyardById(GetSpiritGraveyardId(data))) return graveyard->GetControlTeamId(); break; default: break; } return Battlefield::GetData(data); }
void BattlefieldWG::OnCreatureCreate(Creature* creature) { // Accessing to db spawned creatures switch (creature->GetEntry()) { case NPC_DWARVEN_SPIRIT_GUIDE: case NPC_TAUNKA_SPIRIT_GUIDE: { TeamId teamId = (creature->GetEntry() == NPC_DWARVEN_SPIRIT_GUIDE ? TEAM_ALLIANCE : TEAM_HORDE); uint8 graveyardId = GetSpiritGraveyardId(creature->GetAreaId()); if (m_GraveyardList[graveyardId]) m_GraveyardList[graveyardId]->SetSpirit(creature, teamId); break; } } // untested code - not sure if it is valid. if (IsWarTime()) { switch (creature->GetEntry()) { case NPC_WINTERGRASP_SIEGE_ENGINE_ALLIANCE: case NPC_WINTERGRASP_SIEGE_ENGINE_HORDE: case NPC_WINTERGRASP_CATAPULT: case NPC_WINTERGRASP_DEMOLISHER: { if (!creature->ToTempSummon() || !creature->ToTempSummon()->GetSummonerGUID() || !sObjectAccessor->FindPlayer(creature->ToTempSummon()->GetSummonerGUID())) { creature->DespawnOrUnsummon(); return; } Player* creator = sObjectAccessor->FindPlayer(creature->ToTempSummon()->GetSummonerGUID()); TeamId team = creator->GetTeamId(); if (team == TEAM_HORDE) { if (GetData(BATTLEFIELD_WG_DATA_VEHICLE_H) < GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_H)) { UpdateData(BATTLEFIELD_WG_DATA_VEHICLE_H, 1); creature->AddAura(SPELL_HORDE_FLAG, creature); m_vehicles[team].insert(creature->GetGUID()); UpdateVehicleCountWG(); } else { creature->DespawnOrUnsummon(); return; } } else { if (GetData(BATTLEFIELD_WG_DATA_VEHICLE_A) < GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_A)) { UpdateData(BATTLEFIELD_WG_DATA_VEHICLE_A, 1); creature->AddAura(SPELL_ALLIANCE_FLAG, creature); m_vehicles[team].insert(creature->GetGUID()); UpdateVehicleCountWG(); } else { creature->DespawnOrUnsummon(); return; } } creature->CastSpell(creator, SPELL_GRAB_PASSENGER, true); break; } } } }