diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bindings/scripts/scripts/northrend/wintergrasp.cpp | 15 | ||||
-rw-r--r-- | src/game/OutdoorPvP.cpp | 19 | ||||
-rw-r--r-- | src/game/OutdoorPvP.h | 21 | ||||
-rw-r--r-- | src/game/OutdoorPvPImpl.h | 11 | ||||
-rw-r--r-- | src/game/Wintergrasp.cpp | 192 | ||||
-rw-r--r-- | src/game/Wintergrasp.h | 35 |
6 files changed, 192 insertions, 101 deletions
diff --git a/src/bindings/scripts/scripts/northrend/wintergrasp.cpp b/src/bindings/scripts/scripts/northrend/wintergrasp.cpp index 133138630b0..caa1232bb27 100644 --- a/src/bindings/scripts/scripts/northrend/wintergrasp.cpp +++ b/src/bindings/scripts/scripts/northrend/wintergrasp.cpp @@ -62,14 +62,17 @@ bool GossipHello_npc_demolisher_engineerer(Player* pPlayer, Creature* pCreature) return true; } -bool GossipSelect_npc_demolisher_engineerer(Player* pPlayer, Creature* me, uint32 uiSender, uint32 uiAction) +bool GossipSelect_npc_demolisher_engineerer(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { pPlayer->CLOSE_GOSSIP_MENU(); - switch(uiAction - GOSSIP_ACTION_INFO_DEF) + if(pPlayer->isGameMaster() || pCreature->GetZoneScript() && pCreature->GetZoneScript()->GetData(pCreature->GetDBTableGUIDLow())) { - case 0: pPlayer->CastSpell(pPlayer, 56663, false, NULL, NULL, me->GetGUID()); break; - case 1: pPlayer->CastSpell(pPlayer, 56575, false, NULL, NULL, me->GetGUID()); break; - case 2: pPlayer->CastSpell(pPlayer, pPlayer->GetTeamId() ? 61408 : 56661, false, NULL, NULL, me->GetGUID()); break; + switch(uiAction - GOSSIP_ACTION_INFO_DEF) + { + case 0: pPlayer->CastSpell(pPlayer, 56663, false, NULL, NULL, pCreature->GetGUID()); break; + case 1: pPlayer->CastSpell(pPlayer, 56575, false, NULL, NULL, pCreature->GetGUID()); break; + case 2: pPlayer->CastSpell(pPlayer, pPlayer->GetTeamId() ? 61408 : 56661, false, NULL, NULL, pCreature->GetGUID()); break; + } } return true; @@ -85,4 +88,4 @@ void AddSC_wintergrasp() newscript->pGossipHello = &GossipHello_npc_demolisher_engineerer; newscript->pGossipSelect = &GossipSelect_npc_demolisher_engineerer; newscript->RegisterSelf(); -}
\ No newline at end of file +} diff --git a/src/game/OutdoorPvP.cpp b/src/game/OutdoorPvP.cpp index 03263dd27a2..1ceabc63c21 100644 --- a/src/game/OutdoorPvP.cpp +++ b/src/game/OutdoorPvP.cpp @@ -33,7 +33,7 @@ OPvPCapturePoint::OPvPCapturePoint(OutdoorPvP * pvp) : m_PvP(pvp), m_value(0), m_maxValue(0), m_oldValue(0), -m_State(0), m_OldState(0), m_CapturePointGUID(0), m_neutralValuePct(0), +m_State(OBJECTIVESTATE_NEUTRAL), m_OldState(OBJECTIVESTATE_NEUTRAL), m_CapturePointGUID(0), m_neutralValuePct(0), m_maxSpeed(0), m_capturePoint(NULL) { } @@ -225,7 +225,7 @@ void OutdoorPvP::DeleteSpawns() itr->second->DeleteSpawns(); } -OutdoorPvP::OutdoorPvP() +OutdoorPvP::OutdoorPvP() : m_sendUpdate(true) { } @@ -375,13 +375,10 @@ bool OPvPCapturePoint::Update(uint32 diff) void OutdoorPvP::SendUpdateWorldState(uint32 field, uint32 value) { - // send to both factions - for(int i = 0; i < 2; ++i) - { - // send to all players present in the area - for(PlayerSet::iterator itr = m_players[i].begin(); itr != m_players[i].end(); ++itr) - (*itr)->SendUpdateWorldState(field,value); - } + if(m_sendUpdate) + for(int i = 0; i < 2; ++i) + for(PlayerSet::iterator itr = m_players[i].begin(); itr != m_players[i].end(); ++itr) + (*itr)->SendUpdateWorldState(field, value); } void OPvPCapturePoint::SendUpdateWorldState(uint32 field, uint32 value) @@ -545,11 +542,11 @@ bool OutdoorPvP::HandleAreaTrigger(Player *plr, uint32 trigger) return false; } -void OutdoorPvP::BroadcastPacket(WorldPacket &data) +void OutdoorPvP::BroadcastPacket(WorldPacket &data) const { // This is faster than sWorld.SendZoneMessage for(uint32 team = 0; team < 2; ++team) - for(PlayerSet::iterator itr = m_players[team].begin(); itr != m_players[team].end(); ++itr) + for(PlayerSet::const_iterator itr = m_players[team].begin(); itr != m_players[team].end(); ++itr) (*itr)->GetSession()->SendPacket(&data); } diff --git a/src/game/OutdoorPvP.h b/src/game/OutdoorPvP.h index 848012675f5..c3d91b53033 100644 --- a/src/game/OutdoorPvP.h +++ b/src/game/OutdoorPvP.h @@ -36,6 +36,17 @@ enum OutdoorPvPTypes OPVP_WINTERGRASP, }; +enum ObjectiveStates +{ + OBJECTIVESTATE_NEUTRAL = 0, + OBJECTIVESTATE_ALLIANCE, + OBJECTIVESTATE_HORDE, + OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE, + OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE, + OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE, + OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE, +}; + // struct for go spawning struct go_type{ uint32 entry; @@ -137,8 +148,8 @@ protected: // phase before update, used to check which faction is in conquer / control float m_oldValue; // objective states - uint32 m_OldState; - uint32 m_State; + ObjectiveStates m_OldState; + ObjectiveStates m_State; // neutral value on capture bar uint32 m_neutralValuePct; @@ -182,7 +193,7 @@ public: void OnCreatureCreate(Creature *, bool add) {} // send world state update to all players present - virtual void SendUpdateWorldState(uint32 field, uint32 value); + void SendUpdateWorldState(uint32 field, uint32 value); // called by OutdoorPvPMgr, updates the objectives and if needed, sends new worldstateui information virtual bool Update(uint32 diff); @@ -213,10 +224,12 @@ protected: PlayerSet m_players[2]; uint32 m_TypeId; + bool m_sendUpdate; + // world state stuff virtual void SendRemoveWorldStates(Player * plr) {} - void BroadcastPacket(WorldPacket & data); + void BroadcastPacket(WorldPacket & data) const; virtual void HandlePlayerEnterZone(Player * plr, uint32 zone); virtual void HandlePlayerLeaveZone(Player * plr, uint32 zone); diff --git a/src/game/OutdoorPvPImpl.h b/src/game/OutdoorPvPImpl.h index 4f6080dca70..b79b307c046 100644 --- a/src/game/OutdoorPvPImpl.h +++ b/src/game/OutdoorPvPImpl.h @@ -25,15 +25,4 @@ #define OTHER_TEAM(a) (a == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE) -enum ObjectiveStates -{ - OBJECTIVESTATE_NEUTRAL = 0, - OBJECTIVESTATE_ALLIANCE, - OBJECTIVESTATE_HORDE, - OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE, - OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE, - OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE, - OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE, -}; - #endif diff --git a/src/game/Wintergrasp.cpp b/src/game/Wintergrasp.cpp index a0c7b1da39c..6cd473ff7c7 100644 --- a/src/game/Wintergrasp.cpp +++ b/src/game/Wintergrasp.cpp @@ -75,6 +75,10 @@ typedef std::list<const AreaPOIEntry *> AreaPOIList; bool OPvPWintergrasp::SetupOutdoorPvP() { m_defender = TeamId(rand()%2); + m_changeDefender = false; + + m_workshopCount[TEAM_ALLIANCE] = 0; + m_workshopCount[TEAM_HORDE] = 0; // Load buildings AreaPOIList areaPOIs; @@ -217,7 +221,7 @@ bool OPvPWintergrasp::SetupOutdoorPvP() //sLog.outDebug("Demolisher Engineerer lowguid %u is linked to workshop lowguid %u.", engGuid, guid); AddCapturePoint(workshop); m_buildingStates[guid]->type = BUILDING_WORKSHOP; - workshop->SetStateByBuildingState(); + workshop->SetTeamByBuildingState(); } }while(result->NextRow()); delete result; @@ -245,7 +249,10 @@ void OPvPWintergrasp::ProcessEvent(GameObject *obj, uint32 eventId) if(eventId == 19982) { if(m_wartime) - ChangeDefender(); + { + m_changeDefender = true; + m_timer = 0; + } } else if(obj->GetGoType() == GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING) { @@ -255,16 +262,35 @@ void OPvPWintergrasp::ProcessEvent(GameObject *obj, uint32 eventId) if(obj->HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED)) itr->second->damageState = DAMAGE_DAMAGED; else + { itr->second->damageState = DAMAGE_DESTROYED; - BroadcastStateChange(itr->second); - if(itr->second->type == BUILDING_WORKSHOP) - if(SiegeWorkshop *workshop = GetWorkshop(obj->GetDBTableGUIDLow())) - workshop->DespawnAllVehicles(); + if(itr->second->type == BUILDING_WORKSHOP) + { + if(SiegeWorkshop *workshop = GetWorkshop(obj->GetDBTableGUIDLow())) + workshop->DespawnAllVehicles(); + ModifyWorkshopCount(itr->second->team, false); + } + } + + BroadcastStateChange(itr->second); } } } +void OPvPWintergrasp::ModifyWorkshopCount(TeamId team, bool add) +{ + return; + if(add) + ++m_workshopCount[team]; + else if(m_workshopCount[team]) + --m_workshopCount[team]; + else + sLog.outError("OPvPWintergrasp::ModifyWorkshopCount: negative workshop count!"); + + SendUpdateWorldState(MaxVehNumWorldState[team], m_workshopCount[team] * MAX_VEHICLE_PER_WORKSHOP); +} + uint32 OPvPWintergrasp::GetCreatureEntry(uint32 guidlow, const CreatureData *data) { if(m_defender == TEAM_ALLIANCE) @@ -335,6 +361,7 @@ void OPvPWintergrasp::OnCreatureCreate(Creature *creature, bool add) } else m_vehicles[team].erase((Vehicle*)creature); + SendUpdateWorldState(VehNumWorldState[team], m_vehicles[team].size()); break; } } @@ -399,14 +426,12 @@ void OPvPWintergrasp::UpdateAllWorldObject() // update capture points for(OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) if(SiegeWorkshop *workshop = dynamic_cast<SiegeWorkshop*>(itr->second)) - workshop->SetStateByBuildingState(); - - SendInitWorldStatesTo(); + workshop->SetTeamByBuildingState(); } void OPvPWintergrasp::RebuildAllBuildings() { - for(BuildingStateMap::iterator itr = m_buildingStates.begin(); itr != m_buildingStates.end(); ++itr) + for(BuildingStateMap::const_iterator itr = m_buildingStates.begin(); itr != m_buildingStates.end(); ++itr) { if(itr->second->building) { @@ -418,50 +443,65 @@ void OPvPWintergrasp::RebuildAllBuildings() itr->second->damageState = DAMAGE_INTACT; itr->second->team = m_defender == TEAM_ALLIANCE ? OTHER_TEAM(itr->second->defaultTeam) : itr->second->defaultTeam; + + if(itr->second->type == BUILDING_WORKSHOP) + ModifyWorkshopCount(itr->second->team, true); } } -void OPvPWintergrasp::SendInitWorldStatesTo(Player *player) +void OPvPWintergrasp::SendInitWorldStatesTo(Player *player) const { WorldPacket data(SMSG_INIT_WORLD_STATES, (4+4+4+2+(m_buildingStates.size()*8))); data << uint32(571); data << uint32(ZONE_WINTERGRASP); data << uint32(0); - data << uint16(m_buildingStates.size()); - for(BuildingStateMap::iterator itr = m_buildingStates.begin(); itr != m_buildingStates.end(); ++itr) + data << uint16(4+5+4+m_buildingStates.size()); + + data << uint32(3803) << uint32(m_defender == TEAM_ALLIANCE ? 1 : 0); + data << uint32(3802) << uint32(m_defender != TEAM_ALLIANCE ? 1 : 0); + data << uint32(3801) << uint32(m_wartime ? 0 : 1); + data << uint32(3710) << uint32(m_wartime ? 1 : 0); + + for(uint32 i = 0; i < 5; ++i) + data << ClockWorldState[i] << m_clock[i]; + + data << uint32(3490) << uint32(m_vehicles[TEAM_HORDE].size()); + data << uint32(3491) << m_workshopCount[TEAM_HORDE] * MAX_VEHICLE_PER_WORKSHOP; + data << uint32(3680) << uint32(m_vehicles[TEAM_ALLIANCE].size()); + data << uint32(3681) << m_workshopCount[TEAM_ALLIANCE] * MAX_VEHICLE_PER_WORKSHOP; + + for(BuildingStateMap::const_iterator itr = m_buildingStates.begin(); itr != m_buildingStates.end(); ++itr) itr->second->FillData(data); + if(player) player->GetSession()->SendPacket(&data); else BroadcastPacket(data); } -void OPvPWintergrasp::BroadcastStateChange(BuildingState *state) +void OPvPWintergrasp::BroadcastStateChange(BuildingState *state) const { - for(uint32 team = 0; team < 2; ++team) - for(PlayerSet::iterator p_itr = m_players[team].begin(); p_itr != m_players[team].end(); ++p_itr) - state->SendUpdate(*p_itr); + if(m_sendUpdate) + for(uint32 team = 0; team < 2; ++team) + for(PlayerSet::const_iterator p_itr = m_players[team].begin(); p_itr != m_players[team].end(); ++p_itr) + state->SendUpdate(*p_itr); } -bool OPvPWintergrasp::UpdateCreatureInfo(Creature *creature) +bool OPvPWintergrasp::UpdateCreatureInfo(Creature *creature) const { TeamPairMap::const_iterator itr = m_creEntryPair.find(creature->GetCreatureData()->id); if(itr != m_creEntryPair.end()) { uint32 entry = m_defender == TEAM_ALLIANCE ? itr->second : itr->first; - if(entry != creature->GetEntry()) - { - creature->SetOriginalEntry(entry); - creature->Respawn(true); - } - else if(!creature->isAlive()) + creature->SetOriginalEntry(entry); + if(entry != creature->GetEntry() || !creature->isAlive()) creature->Respawn(true); } return false; } -bool OPvPWintergrasp::UpdateGameObjectInfo(GameObject *go) +bool OPvPWintergrasp::UpdateGameObjectInfo(GameObject *go) const { switch(go->GetEntry()) { @@ -590,16 +630,38 @@ void OPvPWintergrasp::UpdateTenacityStack() } } -void OPvPWintergrasp::VehicleCastSpell(TeamId team, int32 spellId) +void OPvPWintergrasp::VehicleCastSpell(TeamId team, int32 spellId) const { if(spellId > 0) - for(VehicleSet::iterator itr = m_vehicles[team].begin(); itr != m_vehicles[team].end(); ++itr) + for(VehicleSet::const_iterator itr = m_vehicles[team].begin(); itr != m_vehicles[team].end(); ++itr) (*itr)->CastSpell(*itr, (uint32)spellId, true); else - for(VehicleSet::iterator itr = m_vehicles[team].begin(); itr != m_vehicles[team].end(); ++itr) + for(VehicleSet::const_iterator itr = m_vehicles[team].begin(); itr != m_vehicles[team].end(); ++itr) (*itr)->RemoveAura((uint32)-spellId); // by stack? } +void OPvPWintergrasp::UpdateClockDigit(uint32 &timer, uint32 digit, uint32 mod) +{ + uint32 value = timer%mod; + timer /= mod; + if(m_clock[digit] != value) + { + m_clock[digit] = value; + SendUpdateWorldState(ClockWorldState[digit], value); + } +} + +void OPvPWintergrasp::UpdateClock() +{ + uint32 timer = m_timer / 1000; + UpdateClockDigit(timer, 0, 10); + UpdateClockDigit(timer, 1, 6); + UpdateClockDigit(timer, 2, 10); + UpdateClockDigit(timer, 3, 6); + if(!m_wartime) + UpdateClockDigit(timer, 4, 10); +} + bool OPvPWintergrasp::Update(uint32 diff) { if(m_timer > diff) @@ -608,47 +670,48 @@ bool OPvPWintergrasp::Update(uint32 diff) if(m_wartime) OutdoorPvP::Update(diff); // update capture points + + UpdateClock(); } else { + m_sendUpdate = false; + if(m_wartime) { - if(m_defender == TEAM_ALLIANCE) - sWorld.SendZoneText(ZONE_WINTERGRASP, "Alliance has successfully defended the fortress!"); + if(m_changeDefender) + { + m_changeDefender = false; + m_defender = OTHER_TEAM(m_defender); + if(m_defender == TEAM_ALLIANCE) + sWorld.SendZoneText(ZONE_WINTERGRASP, "Alliance has taken over the fortress!"); + else + sWorld.SendZoneText(ZONE_WINTERGRASP, "Horde has taken over the fortress!"); + } else - sWorld.SendZoneText(ZONE_WINTERGRASP, "Horde has successfully defended the fortress!"); - GiveReward(); + { + if(m_defender == TEAM_ALLIANCE) + sWorld.SendZoneText(ZONE_WINTERGRASP, "Alliance has successfully defended the fortress!"); + else + sWorld.SendZoneText(ZONE_WINTERGRASP, "Horde has successfully defended the fortress!"); + } + EndBattle(); } else { sWorld.SendZoneText(ZONE_WINTERGRASP, "Battle begins!"); - UpdateAllWorldObject(); StartBattle(); } - } - return false; -} -void OPvPWintergrasp::ChangeDefender() -{ - m_defender = OTHER_TEAM(m_defender); - if(m_defender == TEAM_ALLIANCE) - sWorld.SendZoneText(ZONE_WINTERGRASP, "Alliance has taken over the fortress!"); - else - sWorld.SendZoneText(ZONE_WINTERGRASP, "Horde has taken over the fortress!"); - UpdateAllWorldObject(); + UpdateAllWorldObject(); + UpdateClock(); - GiveReward(); - EndBattle(); -} + SendInitWorldStatesTo(); + m_sendUpdate = true; + } -void OPvPWintergrasp::GiveReward() -{ - for(uint32 team = 0; team < 2; ++team) - for(PlayerSet::iterator itr = m_players[team].begin(); itr != m_players[team].end(); ++itr) - if((*itr)->HasAura(SPELL_LIEUTENANT)) - (*itr)->CastSpell(*itr, team == m_defender ? SPELL_VICTORY_REWARD : SPELL_DEFEAT_REWARD, true); + return false; } void OPvPWintergrasp::StartBattle() @@ -677,6 +740,8 @@ void OPvPWintergrasp::EndBattle() for(PlayerSet::iterator itr = m_players[team].begin(); itr != m_players[team].end(); ++itr) { + if((*itr)->HasAura(SPELL_LIEUTENANT)) + (*itr)->CastSpell(*itr, team == m_defender ? SPELL_VICTORY_REWARD : SPELL_DEFEAT_REWARD, true); REMOVE_RANK_AURAS(*itr); } } @@ -733,7 +798,7 @@ SiegeWorkshop::SiegeWorkshop(OPvPWintergrasp *opvp, BuildingState *state) { } -void SiegeWorkshop::SetStateByBuildingState() +void SiegeWorkshop::SetTeamByBuildingState() { if(m_buildingState->team == TEAM_ALLIANCE) { @@ -751,6 +816,9 @@ void SiegeWorkshop::SetStateByBuildingState() m_State = OBJECTIVESTATE_NEUTRAL; } + // this will force ChangeState to update workshop count + m_buildingState->team = TEAM_NEUTRAL; + ChangeState(); SendChangePhase(); } @@ -760,12 +828,24 @@ void SiegeWorkshop::ChangeState() uint32 entry = 0; if(m_State == OBJECTIVESTATE_ALLIANCE) // to do m_buildingState->team == TEAM_ALLIANCE; { - m_buildingState->team = TEAM_ALLIANCE; + if(m_buildingState->team != TEAM_ALLIANCE) + { + if(m_buildingState->team == TEAM_HORDE) + m_wintergrasp->ModifyWorkshopCount(TEAM_HORDE, false); + m_buildingState->team = TEAM_ALLIANCE; + m_wintergrasp->ModifyWorkshopCount(TEAM_ALLIANCE, true); + } entry = CRE_ENG_A; } else if(m_State == OBJECTIVESTATE_HORDE) { - m_buildingState->team = TEAM_HORDE; + if(m_buildingState->team != TEAM_HORDE) + { + if(m_buildingState->team == TEAM_ALLIANCE) + m_wintergrasp->ModifyWorkshopCount(TEAM_ALLIANCE, false); + m_buildingState->team = TEAM_HORDE; + m_wintergrasp->ModifyWorkshopCount(TEAM_HORDE, true); + } entry = CRE_ENG_H; } else diff --git a/src/game/Wintergrasp.h b/src/game/Wintergrasp.h index 43d3d35f704..83b0143af6f 100644 --- a/src/game/Wintergrasp.h +++ b/src/game/Wintergrasp.h @@ -74,6 +74,10 @@ enum OutdoorPvP_WG_KeepStatus OutdoorPvP_WG_KEEP_STATUS_HORDE_OCCUPIED = 4 }; +const uint32 VehNumWorldState[2] = {3680,3490}; +const uint32 MaxVehNumWorldState[2] = {3681,3491}; +const uint32 ClockWorldState[5] = {3785,3784,3782,3976,3975}; + enum BuildingType { BUILDING_WALL, @@ -104,12 +108,12 @@ struct BuildingState GameObject *building; BuildingType type; - void SendUpdate(Player *player) + void SendUpdate(Player *player) const { player->SendUpdateWorldState(worldState, AreaPOIIconId[team][damageState]); } - void FillData(WorldPacket &data) + void FillData(WorldPacket &data) const { data << worldState << AreaPOIIconId[team][damageState]; } @@ -145,10 +149,12 @@ class OPvPWintergrasp : public OutdoorPvP bool Update(uint32 diff); - void BroadcastStateChange(BuildingState *state); + void BroadcastStateChange(BuildingState *state) const; uint32 GetData(uint32 id); void SetData(uint32 id, uint32 value); + + void ModifyWorkshopCount(TeamId team, bool add); protected: TeamId m_defender; int32 m_tenacityStack; @@ -162,34 +168,37 @@ class OPvPWintergrasp : public OutdoorPvP TeamPairMap m_creEntryPair, m_goDisplayPair; bool m_wartime; + bool m_changeDefender; uint32 m_timer; + uint32 m_clock[5]; + uint32 m_workshopCount[2]; SiegeWorkshop *GetWorkshop(uint32 lowguid) const; SiegeWorkshop *GetWorkshopByEngGuid(uint32 lowguid) const; SiegeWorkshop *GetWorkshopByGOGuid(uint32 lowguid) const; - void ChangeDefender(); + void StartBattle(); + void EndBattle(); + void UpdateClock(); + void UpdateClockDigit(uint32 &timer, uint32 digit, uint32 mod); void UpdateTenacityStack(); - bool UpdateCreatureInfo(Creature *creature); void UpdateAllWorldObject(); - bool UpdateGameObjectInfo(GameObject *go); + bool UpdateCreatureInfo(Creature *creature) const; + bool UpdateGameObjectInfo(GameObject *go) const; void RebuildAllBuildings(); - void StartBattle(); - void EndBattle(); - void GiveReward(); - void VehicleCastSpell(TeamId team, int32 spellId); + void VehicleCastSpell(TeamId team, int32 spellId) const; - void SendInitWorldStatesTo(Player *player = NULL); + void SendInitWorldStatesTo(Player *player = NULL) const; }; class SiegeWorkshop : public OPvPCapturePoint { public: explicit SiegeWorkshop(OPvPWintergrasp *opvp, BuildingState *state); - void SetStateByBuildingState(); + void SetTeamByBuildingState(); void ChangeState(); void DespawnAllVehicles(); @@ -200,8 +209,8 @@ class SiegeWorkshop : public OPvPCapturePoint Creature *m_engineer; uint32 m_workshopGuid; VehicleSet m_vehicles; - protected: BuildingState *m_buildingState; + protected: OPvPWintergrasp *m_wintergrasp; }; |