Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
OutdoorPvPHP.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#include "ScriptMgr.h"
7#include "OutdoorPvPHP.h"
8#include "OutdoorPvP.h"
9#include "OutdoorPvPMgr.h"
10#include "Player.h"
11#include "WorldPacket.h"
12#include "World.h"
13#include "ObjectMgr.h"
14#include "Language.h"
15
17
19
21
23
25: OPvPCapturePoint(pvp), m_TowerType(type)
26{
28 HPCapturePoints[type].map,
29 HPCapturePoints[type].x,
30 HPCapturePoints[type].y,
31 HPCapturePoints[type].z,
32 HPCapturePoints[type].o,
33 HPCapturePoints[type].rot0,
34 HPCapturePoints[type].rot1,
35 HPCapturePoints[type].rot2,
36 HPCapturePoints[type].rot3);
37 AddObject(type,
38 HPTowerFlags[type].entry,
39 HPTowerFlags[type].map,
40 HPTowerFlags[type].x,
41 HPTowerFlags[type].y,
42 HPTowerFlags[type].z,
43 HPTowerFlags[type].o,
44 HPTowerFlags[type].rot0,
45 HPTowerFlags[type].rot1,
46 HPTowerFlags[type].rot2,
47 HPTowerFlags[type].rot3);
48}
49
56
58{
61 // add the zones affected by the pvp buff
62 for (int i = 0; i < OutdoorPvPHPBuffZonesNum; ++i)
64
66
68
70
71 return true;
72}
73
75{
76 // add buffs
77 if (player->GetTeam() == ALLIANCE)
78 {
80 player->CastSpell(player, AllianceBuff, true);
81 }
82 else
83 {
85 player->CastSpell(player, HordeBuff, true);
86 }
88}
89
91{
92 // remove buffs
93 if (player->GetTeam() == ALLIANCE)
94 {
96 }
97 else
98 {
100 }
102}
103
123
140
142{
149 builder.AppendState(HP_UI_TOWER_SLIDER_N, 100);
150
151 for (OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr)
152 {
153 itr->second->FillInitialWorldStates(builder);
154 }
155}
156
158{
159 uint32 field = 0;
160 switch (m_OldState)
161 {
163 field = HP_MAP_N[m_TowerType];
164 break;
166 field = HP_MAP_A[m_TowerType];
167 if (uint32 alliance_towers = ((OutdoorPvPHP*)m_PvP)->GetAllianceTowersControlled())
168 ((OutdoorPvPHP*)m_PvP)->SetAllianceTowersControlled(--alliance_towers);
169 sWorld->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetSkyFireStringForDBCLocale(HP_LANG_LOSE_A[m_TowerType]));
170 break;
172 field = HP_MAP_H[m_TowerType];
173 if (uint32 horde_towers = ((OutdoorPvPHP*)m_PvP)->GetHordeTowersControlled())
174 ((OutdoorPvPHP*)m_PvP)->SetHordeTowersControlled(--horde_towers);
175 sWorld->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetSkyFireStringForDBCLocale(HP_LANG_LOSE_H[m_TowerType]));
176 break;
178 field = HP_MAP_N[m_TowerType];
179 break;
181 field = HP_MAP_N[m_TowerType];
182 break;
184 field = HP_MAP_A[m_TowerType];
185 break;
187 field = HP_MAP_H[m_TowerType];
188 break;
189 }
190
191 // send world state update
192 if (field)
193 {
194 m_PvP->SendUpdateWorldState(field, 0);
195 field = 0;
196 }
197 uint32 artkit = 21;
199 switch (m_State)
200 {
202 field = HP_MAP_N[m_TowerType];
203 break;
205 {
206 field = HP_MAP_A[m_TowerType];
207 artkit = 2;
208 artkit2 = HP_TowerArtKit_A[m_TowerType];
209 uint32 alliance_towers = ((OutdoorPvPHP*)m_PvP)->GetAllianceTowersControlled();
210 if (alliance_towers < 3)
211 ((OutdoorPvPHP*)m_PvP)->SetAllianceTowersControlled(++alliance_towers);
212 sWorld->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetSkyFireStringForDBCLocale(HP_LANG_CAPTURE_A[m_TowerType]));
213 break;
214 }
216 {
217 field = HP_MAP_H[m_TowerType];
218 artkit = 1;
219 artkit2 = HP_TowerArtKit_H[m_TowerType];
220 uint32 horde_towers = ((OutdoorPvPHP*)m_PvP)->GetHordeTowersControlled();
221 if (horde_towers < 3)
222 ((OutdoorPvPHP*)m_PvP)->SetHordeTowersControlled(++horde_towers);
223 sWorld->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetSkyFireStringForDBCLocale(HP_LANG_CAPTURE_H[m_TowerType]));
224 break;
225 }
227 field = HP_MAP_N[m_TowerType];
228 break;
230 field = HP_MAP_N[m_TowerType];
231 break;
233 field = HP_MAP_A[m_TowerType];
234 artkit = 2;
235 artkit2 = HP_TowerArtKit_A[m_TowerType];
236 break;
238 field = HP_MAP_H[m_TowerType];
239 artkit = 1;
240 artkit2 = HP_TowerArtKit_H[m_TowerType];
241 break;
242 }
243
246 if (flag)
247 {
248 flag->SetGoArtKit(artkit);
249 }
250 if (flag2)
251 {
252 flag2->SetGoArtKit(artkit2);
253 }
254
255 // send world state update
256 if (field)
257 m_PvP->SendUpdateWorldState(field, 1);
258
259 // complete quest objective
262}
263
265{
267 // send these updates to only the ones in this objective
268 uint32 phase = (uint32)ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f);
270 // send this too, sometimes the slider disappears, dunno why :(
272}
273
300
302{
304 {
306 uint32 phase = (uint32)ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f);
309 return true;
310 }
311 return false;
312}
313
319
321{
322 if (killed->GetTypeId() != TypeID::TYPEID_PLAYER)
323 return;
324
325 if (player->GetTeam() == ALLIANCE && killed->ToPlayer()->GetTeam() != ALLIANCE)
326 player->CastSpell(player, AlliancePlayerKillReward, true);
327 else if (player->GetTeam() == HORDE && killed->ToPlayer()->GetTeam() != HORDE)
328 player->CastSpell(player, HordePlayerKillReward, true);
329}
330
335
340
345
350
352{
353 public:
355
357 {
358 return new OutdoorPvPHP();
359 }
360};
361
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
@ LANG_OPVP_HP_LOSE_STADIUM_H
Definition Language.h:1162
@ LANG_OPVP_HP_LOSE_STADIUM_A
Definition Language.h:1163
@ LANG_OPVP_HP_CAPTURE_OVERLOOK_H
Definition Language.h:1154
@ LANG_OPVP_HP_LOSE_BROKENHILL_A
Definition Language.h:1165
@ LANG_OPVP_HP_CAPTURE_BROKENHILL_H
Definition Language.h:1158
@ LANG_OPVP_HP_CAPTURE_STADIUM_H
Definition Language.h:1156
@ LANG_OPVP_HP_CAPTURE_OVERLOOK_A
Definition Language.h:1155
@ LANG_OPVP_HP_LOSE_BROKENHILL_H
Definition Language.h:1164
@ LANG_OPVP_HP_LOSE_OVERLOOK_H
Definition Language.h:1160
@ LANG_OPVP_HP_LOSE_OVERLOOK_A
Definition Language.h:1161
@ LANG_OPVP_HP_CAPTURE_STADIUM_A
Definition Language.h:1157
@ LANG_OPVP_HP_CAPTURE_BROKENHILL_A
Definition Language.h:1159
@ TYPEID_PLAYER
Definition Object.h:55
#define sObjectMgr
Definition ObjectMgr.h:1617
@ OUTDOOR_PVP_HP
Definition OutdoorPvP.h:18
@ OBJECTIVESTATE_HORDE
Definition OutdoorPvP.h:31
@ OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE
Definition OutdoorPvP.h:33
@ OBJECTIVESTATE_ALLIANCE
Definition OutdoorPvP.h:30
@ OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE
Definition OutdoorPvP.h:32
@ OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE
Definition OutdoorPvP.h:35
@ OBJECTIVESTATE_NEUTRAL
Definition OutdoorPvP.h:29
@ OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE
Definition OutdoorPvP.h:34
const uint32 HP_LANG_LOSE_A[HP_TOWER_NUM]
const uint32 HP_LANG_CAPTURE_H[HP_TOWER_NUM]
const uint32 HP_LANG_CAPTURE_A[HP_TOWER_NUM]
void AddSC_outdoorpvp_hp()
const uint32 HP_LANG_LOSE_H[HP_TOWER_NUM]
#define OutdoorPvPHPBuffZonesNum
@ AllianceBuff
@ HordePlayerKillReward
@ HordeBuff
@ AlliancePlayerKillReward
const go_type HPCapturePoints[HP_TOWER_NUM]
@ HP_UI_TOWER_COUNT_A
@ HP_UI_TOWER_SLIDER_POS
@ HP_UI_TOWER_DISPLAY_A
@ HP_UI_TOWER_DISPLAY_H
@ HP_UI_TOWER_COUNT_H
@ HP_UI_TOWER_SLIDER_N
@ HP_UI_TOWER_SLIDER_DISPLAY
const uint32 HP_CREDITMARKER[HP_TOWER_NUM]
const uint32 HP_TowerArtKit_H[HP_TOWER_NUM]
const uint32 OutdoorPvPHPBuffZones[OutdoorPvPHPBuffZonesNum]
const uint32 HP_MAP_N[HP_TOWER_NUM]
const uint32 HP_MAP_H[HP_TOWER_NUM]
const uint32 HP_MAP_A[HP_TOWER_NUM]
const uint32 HP_TowerArtKit_A[HP_TOWER_NUM]
OutdoorPvPHPTowerType
@ HP_TOWER_STADIUM
@ HP_TOWER_NUM
@ HP_TOWER_OVERLOOK
@ HP_TOWER_BROKEN_HILL
const uint32 HP_TowerArtKit_N[HP_TOWER_NUM]
const go_type HPTowerFlags[HP_TOWER_NUM]
@ TEAM_ALLIANCE
@ TEAM_HORDE
@ ALLIANCE
@ HORDE
void SetGoArtKit(uint8 artkit)
static T * Find(uint64 guid)
OutdoorPvPHPTowerType m_TowerType
void HandlePlayerLeave(Player *player) OVERRIDE
bool HandlePlayerEnter(Player *player) OVERRIDE
void FillInitialWorldStates(WorldStateBuilder &builder) OVERRIDE
void SendChangePhase() OVERRIDE
void ChangeState() OVERRIDE
OPvPCapturePointHP(OutdoorPvP *pvp, OutdoorPvPHPTowerType type)
OPvPCapturePoint(OutdoorPvP *pvp)
bool AddObject(uint32 type, uint32 entry, uint32 map, float x, float y, float z, float o, float rotation0, float rotation1, float rotation2, float rotation3)
std::map< uint32, uint64 > m_Objects
Definition OutdoorPvP.h:169
bool SetCapturePointData(uint32 entry, uint32 map, float x, float y, float z, float o=0, float rotation0=0, float rotation1=0, float rotation2=0, float rotation3=0)
ObjectiveStates m_OldState
Definition OutdoorPvP.h:158
OutdoorPvP * m_PvP
Definition OutdoorPvP.h:165
ObjectiveStates m_State
Definition OutdoorPvP.h:159
uint32 m_neutralValuePct
Definition OutdoorPvP.h:162
void SendUpdateWorldState(uint32 field, uint32 value)
virtual void HandlePlayerLeave(Player *player)
void SendObjectiveComplete(uint32 id, uint64 guid)
virtual bool HandlePlayerEnter(Player *player)
uint32 m_capturePointGUID
Definition OutdoorPvP.h:121
Player * ToPlayer()
Definition Object.h:204
TypeID GetTypeId() const
Definition Object.h:131
OutdoorPvP * GetOutdoorPvP() const OVERRIDE
void HandlePlayerLeaveZone(Player *player, uint32 zone) OVERRIDE
void SetAllianceTowersControlled(uint32 count)
void HandlePlayerEnterZone(Player *player, uint32 zone) OVERRIDE
void FillInitialWorldStates(WorldStateBuilder &builder) OVERRIDE
bool SetupOutdoorPvP() OVERRIDE
uint32 m_AllianceTowersControlled
uint32 GetHordeTowersControlled() const
void HandleKillImpl(Player *player, Unit *killed) OVERRIDE
uint32 m_HordeTowersControlled
void SetHordeTowersControlled(uint32 count)
uint32 GetAllianceTowersControlled() const
bool Update(uint32 diff) OVERRIDE
void SendRemoveWorldStates(Player *player) OVERRIDE
virtual void HandlePlayerEnterZone(Player *player, uint32 zone)
OPvPCapturePointMap m_capturePoints
Definition OutdoorPvP.h:238
uint32 m_TypeId
Definition OutdoorPvP.h:242
virtual bool Update(uint32 diff)
void TeamApplyBuff(TeamId team, uint32 spellId, uint32 spellId2=0)
void RegisterZone(uint32 zoneid)
virtual void HandlePlayerLeaveZone(Player *player, uint32 zone)
void TeamCastSpell(TeamId team, int32 spellId)
void SendUpdateWorldState(uint32 field, uint32 value)
void AddCapturePoint(OPvPCapturePoint *cp)
Definition OutdoorPvP.h:256
OutdoorPvPScript(const char *name)
uint32 GetTeam() const
Definition Player.h:2527
void SendUpdateWorldState(uint32 Field, uint32 Value)
Definition Player.cpp:9734
Definition Unit.h:1367
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, uint64 originalCaster=0)
void RemoveAurasDueToSpell(uint32 spellId, uint64 casterGUID=0, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void AppendState(uint32 worldstate, uint32 value)
#define sWorld
Definition World.h:910