AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
OutdoorPvPSI Class Reference

#include "OutdoorPvPSI.h"

Inheritance diagram for OutdoorPvPSI:
OutdoorPvP ZoneScript

Public Member Functions

 OutdoorPvPSI ()
 
bool SetupOutdoorPvP () override
 
void HandlePlayerEnterZone (Player *player, uint32 zone) override
 
void HandlePlayerLeaveZone (Player *player, uint32 zone) override
 
bool Update (uint32 diff) override
 
void FillInitialWorldStates (WorldPackets::WorldState::InitWorldStates &packet) override
 
void SendRemoveWorldStates (Player *player) override
 
bool HandleAreaTrigger (Player *player, uint32 trigger) override
 
bool HandleDropFlag (Player *player, uint32 spellId) override
 
bool HandleCustomSpell (Player *player, uint32 spellId, GameObject *go) override
 
void UpdateWorldState ()
 
- Public Member Functions inherited from OutdoorPvP
 OutdoorPvP ()=default
 
 ~OutdoorPvP () override
 
void DeleteSpawns ()
 
virtual bool HandleOpenGo (Player *player, GameObject *go)
 
void OnGameObjectCreate (GameObject *go) override
 
void OnGameObjectRemove (GameObject *go) override
 
void OnCreatureCreate (Creature *creature) override
 
void OnCreatureRemove (Creature *creature) override
 
void SendUpdateWorldState (uint32 field, uint32 value)
 
virtual void HandleKill (Player *killer, Unit *killed)
 
virtual void HandleKillImpl (Player *, Unit *)
 
bool IsInsideObjective (Player *player) const
 
virtual void AwardKillBonus (Player *)
 
uint32 GetTypeId () const
 
virtual bool HandleGossipOption (Player *player, Creature *creature, uint32 gossipId)
 
virtual bool CanTalkTo (Player *player, Creature *c, GossipMenuItems const &gso)
 
void TeamApplyBuff (TeamId teamId, uint32 spellId, uint32 spellId2=0, Player *sameMapPlr=nullptr)
 
MapGetMap () const
 
OPvPCapturePointMap const & GetCapturePoints () const
 
OPvPCapturePointGetCapturePoint (ObjectGuid::LowType spawnId) const
 
- Public Member Functions inherited from ZoneScript
 ZoneScript ()
 
virtual ~ZoneScript ()
 
virtual uint32 GetCreatureEntry (ObjectGuid::LowType, CreatureData const *data)
 
virtual uint32 GetGameObjectEntry (ObjectGuid::LowType, uint32 entry)
 
virtual void OnUnitDeath (Unit *)
 
virtual void OnCreatureEvade (Creature *)
 
virtual ObjectGuid GetGuidData (uint32) const
 
virtual void SetGuidData (uint32, ObjectGuid)
 
virtual uint64 GetData64 (uint32) const
 
virtual void SetData64 (uint32, uint64)
 
virtual uint32 GetData (uint32) const
 
virtual void SetData (uint32, uint32)
 
virtual void ProcessEvent (WorldObject *, uint32)
 

Private Attributes

uint32 m_Gathered_A
 
uint32 m_Gathered_H
 
TeamId m_LastController
 

Additional Inherited Members

- Public Types inherited from OutdoorPvP
typedef std::map< ObjectGuid::LowType, OPvPCapturePoint * > OPvPCapturePointMap
 
typedef std::pair< ObjectGuid::LowType, GameObject * > GoScriptPair
 
typedef std::pair< ObjectGuid::LowType, Creature * > CreatureScriptPair
 
- Protected Member Functions inherited from OutdoorPvP
void BroadcastPacket (WorldPacket &data) const
 
virtual void HandlePlayerResurrects (Player *player, uint32 zone)
 
void AddCapturePoint (OPvPCapturePoint *cp)
 
void RegisterZone (uint32 zoneid)
 
bool HasPlayer (Player const *player) const
 
void TeamCastSpell (TeamId team, int32 spellId, Player *sameMapPlr=nullptr)
 
void SetMapFromZone (uint32 zone)
 
- Protected Attributes inherited from OutdoorPvP
OPvPCapturePointMap _capturePoints
 
std::array< PlayerSet, 2 > _players
 
uint32 _typeId {}
 
bool _sendUpdate { true }
 
Map_map {}
 
std::unordered_map< ObjectGuid::LowType, GameObject * > _goScriptStore
 
std::unordered_map< ObjectGuid::LowType, Creature * > _creatureScriptStore
 

Detailed Description

Constructor & Destructor Documentation

◆ OutdoorPvPSI()

OutdoorPvPSI::OutdoorPvPSI ( )
35{
37 m_Gathered_A = 0;
38 m_Gathered_H = 0;
40}
@ OUTDOOR_PVP_SI
Definition OutdoorPvP.h:34
@ TEAM_NEUTRAL
Definition SharedDefines.h:750
TeamId m_LastController
Definition OutdoorPvPSI.h:79
uint32 m_Gathered_A
Definition OutdoorPvPSI.h:77
uint32 m_Gathered_H
Definition OutdoorPvPSI.h:78
uint32 _typeId
Definition OutdoorPvP.h:273

References OutdoorPvP::_typeId, m_Gathered_A, m_Gathered_H, m_LastController, OUTDOOR_PVP_SI, and TEAM_NEUTRAL.

Member Function Documentation

◆ FillInitialWorldStates()

void OutdoorPvPSI::FillInitialWorldStates ( WorldPackets::WorldState::InitWorldStates packet)
overridevirtual

Reimplemented from OutdoorPvP.

43{
44 packet.Worldstates.reserve(3);
48}
const uint32 SI_MAX_RESOURCES
Definition OutdoorPvPSI.h:31
@ WORLD_STATE_OPVP_SI_SILITHYST_MAX
Definition WorldStateDefines.h:359
@ WORLD_STATE_OPVP_SI_GATHERED_H
Definition WorldStateDefines.h:358
@ WORLD_STATE_OPVP_SI_GATHERED_A
Definition WorldStateDefines.h:357
std::vector< WorldStateInfo > Worldstates
Definition WorldStatePackets.h:46

References m_Gathered_A, m_Gathered_H, SI_MAX_RESOURCES, WORLD_STATE_OPVP_SI_GATHERED_A, WORLD_STATE_OPVP_SI_GATHERED_H, WORLD_STATE_OPVP_SI_SILITHYST_MAX, and WorldPackets::WorldState::InitWorldStates::Worldstates.

◆ HandleAreaTrigger()

bool OutdoorPvPSI::HandleAreaTrigger ( Player player,
uint32  trigger 
)
overridevirtual

Reimplemented from OutdoorPvP.

94{
95 std::lock_guard<std::mutex> guard(sOutdoorPvPMgr->_lock);
96
97 switch (trigger)
98 {
100 if (player->GetTeamId() == TEAM_ALLIANCE && player->HasAura(SI_SILITHYST_FLAG))
101 {
102 // remove aura
104 ++ m_Gathered_A;
106 {
108 GetMap()->SendZoneText(OutdoorPvPSIBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_SI_CAPTURE_A).c_str());
110 m_Gathered_A = 0;
111 m_Gathered_H = 0;
112 }
114 // reward player, xinef: has no effect on characters above level 70
115 if (player->GetLevel() < 70)
116 player->CastSpell(player, SI_TRACES_OF_SILITHYST, true);
117 // add 19 honor
118 player->RewardHonor(nullptr, 1, 19);
119 // add 20 cenarion circle repu
120 player->GetReputationMgr().ModifyReputation(sFactionStore.LookupEntry(609), 20.f);
121 // complete quest
123 }
124 return true;
125 case SI_AREATRIGGER_H:
126 if (player->GetTeamId() == TEAM_HORDE && player->HasAura(SI_SILITHYST_FLAG))
127 {
128 // remove aura
130 ++ m_Gathered_H;
132 {
134 GetMap()->SendZoneText(OutdoorPvPSIBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_SI_CAPTURE_H).c_str());
136 m_Gathered_A = 0;
137 m_Gathered_H = 0;
138 }
140 // reward player, xinef: has no effect on characters above level 70
141 if (player->GetLevel() < 70)
142 player->CastSpell(player, SI_TRACES_OF_SILITHYST, true);
143 // add 19 honor
144 player->RewardHonor(nullptr, 1, 19);
145 // add 20 cenarion circle repu
146 player->GetReputationMgr().ModifyReputation(sFactionStore.LookupEntry(609), 20.f);
147 // complete quest
149 }
150 return true;
151 }
152 return false;
153}
DBCStorage< FactionEntry > sFactionStore(FactionEntryfmt)
@ LANG_OPVP_SI_CAPTURE_A
Definition Language.h:1335
@ LANG_OPVP_SI_CAPTURE_H
Definition Language.h:1334
#define sObjectMgr
Definition ObjectMgr.h:1712
#define sOutdoorPvPMgr
Definition OutdoorPvPMgr.h:102
const uint32 OutdoorPvPSIBuffZones[OutdoorPvPSIBuffZonesNum]
Definition OutdoorPvPSI.h:35
const uint32 SI_TURNIN_QUEST_CM_A
Definition OutdoorPvPSI.h:46
@ SI_CENARION_FAVOR
Definition OutdoorPvPSI.h:28
@ SI_SILITHYST_FLAG
Definition OutdoorPvPSI.h:26
@ SI_TRACES_OF_SILITHYST
Definition OutdoorPvPSI.h:27
const uint32 SI_AREATRIGGER_H
Definition OutdoorPvPSI.h:42
const uint32 SI_AREATRIGGER_A
Definition OutdoorPvPSI.h:44
const uint32 SI_TURNIN_QUEST_CM_H
Definition OutdoorPvPSI.h:48
@ TEAM_ALLIANCE
Definition SharedDefines.h:748
@ TEAM_HORDE
Definition SharedDefines.h:749
void SendZoneText(uint32 zoneId, char const *text, WorldSession const *self=nullptr, TeamId teamId=TEAM_NEUTRAL) const
Send a System Message to all players in the zone (except self if mentioned)
Definition Map.cpp:2764
void UpdateWorldState()
Definition OutdoorPvPSI.cpp:57
void TeamApplyBuff(TeamId teamId, uint32 spellId, uint32 spellId2=0, Player *sameMapPlr=nullptr)
Definition OutdoorPvP.cpp:671
Map * GetMap() const
Definition OutdoorPvP.h:246
bool RewardHonor(Unit *victim, uint32 groupsize, int32 honor=-1, bool awardXP=true)
Definition Player.cpp:6082
void KilledMonsterCredit(uint32 entry, ObjectGuid guid=ObjectGuid::Empty)
Definition PlayerQuest.cpp:1959
TeamId GetTeamId(bool original=false) const
Definition Player.h:2127
ReputationMgr & GetReputationMgr()
Definition Player.h:2144
bool ModifyReputation(FactionEntry const *factionEntry, float standing, bool noSpillOver=false, Optional< ReputationRank > repMaxCap={})
Definition ReputationMgr.h:117
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
Definition Unit.cpp:5982
SpellCastResult CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition Unit.cpp:1350
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:5157
uint8 GetLevel() const
Definition Unit.h:1103

References Unit::CastSpell(), Unit::GetLevel(), OutdoorPvP::GetMap(), Player::GetReputationMgr(), Player::GetTeamId(), Unit::HasAura(), Player::KilledMonsterCredit(), LANG_OPVP_SI_CAPTURE_A, LANG_OPVP_SI_CAPTURE_H, m_Gathered_A, m_Gathered_H, m_LastController, ReputationMgr::ModifyReputation(), OutdoorPvPSIBuffZones, Unit::RemoveAurasDueToSpell(), Player::RewardHonor(), Map::SendZoneText(), sFactionStore, SI_AREATRIGGER_A, SI_AREATRIGGER_H, SI_CENARION_FAVOR, SI_MAX_RESOURCES, SI_SILITHYST_FLAG, SI_TRACES_OF_SILITHYST, SI_TURNIN_QUEST_CM_A, SI_TURNIN_QUEST_CM_H, sObjectMgr, sOutdoorPvPMgr, TEAM_ALLIANCE, TEAM_HORDE, OutdoorPvP::TeamApplyBuff(), and UpdateWorldState().

◆ HandleCustomSpell()

bool OutdoorPvPSI::HandleCustomSpell ( Player player,
uint32  spellId,
GameObject go 
)
overridevirtual

Reimplemented from OutdoorPvP.

241{
242 if (!go || spellId != SI_SILITHYST_FLAG_GO_SPELL)
243 return false;
244 player->CastSpell(player, SI_SILITHYST_FLAG, true);
245 if (go->GetGOInfo()->entry == SI_SILITHYST_MOUND)
246 {
247 // despawn go
248 go->SetRespawnTime(0);
249 go->Delete();
250 }
251 return true;
252}
const uint32 SI_SILITHYST_MOUND
Definition OutdoorPvPSI.h:50
@ SI_SILITHYST_FLAG_GO_SPELL
Definition OutdoorPvPSI.h:25
GameObjectTemplate const * GetGOInfo() const
Definition GameObject.h:136
void Delete()
Definition GameObject.cpp:973
void SetRespawnTime(int32 respawn)
Definition GameObject.cpp:1279
uint32 entry
Definition GameObjectData.h:33

References Unit::CastSpell(), GameObject::Delete(), GameObjectTemplate::entry, GameObject::GetGOInfo(), GameObject::SetRespawnTime(), SI_SILITHYST_FLAG, SI_SILITHYST_FLAG_GO_SPELL, and SI_SILITHYST_MOUND.

◆ HandleDropFlag()

bool OutdoorPvPSI::HandleDropFlag ( Player player,
uint32  spellId 
)
overridevirtual

Reimplemented from OutdoorPvP.

156{
157 if (spellId == SI_SILITHYST_FLAG)
158 {
159 // if it was dropped away from the player's turn-in point, then create a silithyst mound, if it was dropped near the areatrigger, then it was dispelled by the outdoorpvp, so do nothing
160 switch (player->GetTeamId())
161 {
162 case TEAM_ALLIANCE:
163 {
164 AreaTrigger const* atEntry = sObjectMgr->GetAreaTrigger(SI_AREATRIGGER_A);
165 if (atEntry)
166 {
167 // 5.0f is safe-distance
168 if (player->GetDistance(atEntry->x, atEntry->y, atEntry->z) > 5.0f + atEntry->radius)
169 {
170 // he dropped it further, summon mound
171 GameObject* go = sObjectMgr->IsGameObjectStaticTransport(SI_SILITHYST_MOUND) ? new StaticTransport() : new GameObject();
172 Map* map = player->GetMap();
173 if (!map)
174 {
175 delete go;
176 return true;
177 }
178
179 G3D::Quat rotation = G3D::Quat::fromAxisAngleRotation(G3D::Vector3::unitZ(), player->GetOrientation());
180 if (!go->Create(map->GenerateLowGuid<HighGuid::GameObject>(), SI_SILITHYST_MOUND, map, player->GetPhaseMask(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation(), rotation, 100, GO_STATE_READY))
181 {
182 delete go;
183 return true;
184 }
185
186 go->SetRespawnTime(0);
187
188 if (!map->AddToMap(go))
189 {
190 delete go;
191 return true;
192 }
193 }
194 }
195 }
196 break;
197 case TEAM_HORDE:
198 {
199 AreaTrigger const* atEntry = sObjectMgr->GetAreaTrigger(SI_AREATRIGGER_H);
200 if (atEntry)
201 {
202 // 5.0f is safe-distance
203 if (player->GetDistance(atEntry->x, atEntry->y, atEntry->z) > 5.0f + atEntry->radius)
204 {
205 // he dropped it further, summon mound
206 GameObject* go = sObjectMgr->IsGameObjectStaticTransport(SI_SILITHYST_MOUND) ? new StaticTransport() : new GameObject();
207 Map* map = player->GetMap();
208 if (!map)
209 {
210 delete go;
211 return true;
212 }
213
214 G3D::Quat rotation = G3D::Quat::fromAxisAngleRotation(G3D::Vector3::unitZ(), player->GetOrientation());
215 if (!go->Create(map->GenerateLowGuid<HighGuid::GameObject>(), SI_SILITHYST_MOUND, map, player->GetPhaseMask(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation(), rotation, 100, GO_STATE_READY))
216 {
217 delete go;
218 return true;
219 }
220
221 go->SetRespawnTime(0);
222
223 if (!map->AddToMap(go))
224 {
225 delete go;
226 return true;
227 }
228 }
229 }
230 }
231 break;
232 default:
233 break;
234 }
235 return true;
236 }
237 return false;
238}
@ GO_STATE_READY
Definition GameObjectData.h:709
Definition GameObject.h:120
virtual bool Create(ObjectGuid::LowType guidlow, uint32 name_id, Map *map, uint32 phaseMask, float x, float y, float z, float ang, G3D::Quat const &rotation, uint32 animprogress, GOState go_state, uint32 artKit=0)
Definition GameObject.cpp:270
Definition Map.h:164
ObjectGuid::LowType GenerateLowGuid()
Definition Map.h:480
bool AddToMap(T *, bool checkTransport=false)
Definition Map.cpp:303
Definition Transport.h:115
uint32 GetPhaseMask() const
Definition Object.h:516
Map * GetMap() const
Definition Object.h:625
float GetDistance(WorldObject const *obj) const
Definition Object.cpp:1295
Definition ObjectMgr.h:421
float x
Definition ObjectMgr.h:424
float y
Definition ObjectMgr.h:425
float radius
Definition ObjectMgr.h:427
float z
Definition ObjectMgr.h:426
float GetPositionZ() const
Definition Position.h:123
float GetOrientation() const
Definition Position.h:124
float GetPositionX() const
Definition Position.h:121
float GetPositionY() const
Definition Position.h:122

References Map::AddToMap(), GameObject::Create(), GameObject, Map::GenerateLowGuid(), WorldObject::GetDistance(), WorldObject::GetMap(), Position::GetOrientation(), WorldObject::GetPhaseMask(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), Player::GetTeamId(), GO_STATE_READY, AreaTrigger::radius, GameObject::SetRespawnTime(), SI_AREATRIGGER_A, SI_AREATRIGGER_H, SI_SILITHYST_FLAG, SI_SILITHYST_MOUND, sObjectMgr, TEAM_ALLIANCE, TEAM_HORDE, AreaTrigger::x, AreaTrigger::y, and AreaTrigger::z.

◆ HandlePlayerEnterZone()

void OutdoorPvPSI::HandlePlayerEnterZone ( Player player,
uint32  zone 
)
overridevirtual

Reimplemented from OutdoorPvP.

80{
81 if (player->GetTeamId() == m_LastController)
82 player->CastSpell(player, SI_CENARION_FAVOR, true);
84}
virtual void HandlePlayerEnterZone(Player *player, uint32 zone)
Definition OutdoorPvP.cpp:278

References Unit::CastSpell(), Player::GetTeamId(), OutdoorPvP::HandlePlayerEnterZone(), m_LastController, and SI_CENARION_FAVOR.

◆ HandlePlayerLeaveZone()

void OutdoorPvPSI::HandlePlayerLeaveZone ( Player player,
uint32  zone 
)
overridevirtual

Reimplemented from OutdoorPvP.

87{
88 // remove buffs
91}
virtual void HandlePlayerLeaveZone(Player *player, uint32 zone)
Definition OutdoorPvP.cpp:283

References OutdoorPvP::HandlePlayerLeaveZone(), Unit::RemoveAurasDueToSpell(), and SI_CENARION_FAVOR.

◆ SendRemoveWorldStates()

void OutdoorPvPSI::SendRemoveWorldStates ( Player player)
overridevirtual

◆ SetupOutdoorPvP()

bool OutdoorPvPSI::SetupOutdoorPvP ( )
overridevirtual

Reimplemented from OutdoorPvP.

65{
66 for (uint8 i = 0; i < OutdoorPvPSIBuffZonesNum; ++i)
68
70
71 return true;
72}
std::uint8_t uint8
Definition Define.h:109
const uint8 OutdoorPvPSIBuffZonesNum
Definition OutdoorPvPSI.h:33
void RegisterZone(uint32 zoneid)
Definition OutdoorPvP.cpp:642
void SetMapFromZone(uint32 zone)
Definition OutdoorPvP.cpp:719

References OutdoorPvPSIBuffZones, OutdoorPvPSIBuffZonesNum, OutdoorPvP::RegisterZone(), and OutdoorPvP::SetMapFromZone().

◆ Update()

bool OutdoorPvPSI::Update ( uint32  diff)
overridevirtual

Reimplemented from OutdoorPvP.

75{
76 return false;
77}

◆ UpdateWorldState()

Member Data Documentation

◆ m_Gathered_A

uint32 OutdoorPvPSI::m_Gathered_A
private

◆ m_Gathered_H

uint32 OutdoorPvPSI::m_Gathered_H
private

◆ m_LastController

TeamId OutdoorPvPSI::m_LastController
private

The documentation for this class was generated from the following files: