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
 
- 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)
 
OPvPCapturePointGetCapturePoint (ObjectGuid::LowType spawnId) const
 
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 ( )
36{
38 m_Gathered_A = 0;
39 m_Gathered_H = 0;
41}
@ OUTDOOR_PVP_SI
Definition OutdoorPvP.h:34
@ TEAM_NEUTRAL
Definition SharedDefines.h:762
TeamId m_LastController
Definition OutdoorPvPSI.h:74
uint32 m_Gathered_A
Definition OutdoorPvPSI.h:72
uint32 m_Gathered_H
Definition OutdoorPvPSI.h:73
uint32 _typeId
Definition OutdoorPvP.h:270

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.

44{
45 packet.Worldstates.reserve(3);
49}
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.

95{
96 std::lock_guard<std::mutex> guard(sOutdoorPvPMgr->_lock);
97
98 switch (trigger)
99 {
100 case SI_AREATRIGGER_A:
101 if (player->GetTeamId() == TEAM_ALLIANCE && player->HasAura(SI_SILITHYST_FLAG))
102 {
103 // remove aura
105 ++ m_Gathered_A;
107 {
109 sWorldSessionMgr->SendZoneText(OutdoorPvPSIBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_SI_CAPTURE_A));
111 m_Gathered_A = 0;
112 m_Gathered_H = 0;
113 }
115 // reward player, xinef: has no effect on characters above level 70
116 if (player->GetLevel() < 70)
117 player->CastSpell(player, SI_TRACES_OF_SILITHYST, true);
118 // add 19 honor
119 player->RewardHonor(nullptr, 1, 19);
120 // add 20 cenarion circle repu
121 player->GetReputationMgr().ModifyReputation(sFactionStore.LookupEntry(609), 20.f);
122 // complete quest
124 }
125 return true;
126 case SI_AREATRIGGER_H:
127 if (player->GetTeamId() == TEAM_HORDE && player->HasAura(SI_SILITHYST_FLAG))
128 {
129 // remove aura
131 ++ m_Gathered_H;
133 {
135 sWorldSessionMgr->SendZoneText(OutdoorPvPSIBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_SI_CAPTURE_H));
137 m_Gathered_A = 0;
138 m_Gathered_H = 0;
139 }
141 // reward player, xinef: has no effect on characters above level 70
142 if (player->GetLevel() < 70)
143 player->CastSpell(player, SI_TRACES_OF_SILITHYST, true);
144 // add 19 honor
145 player->RewardHonor(nullptr, 1, 19);
146 // add 20 cenarion circle repu
147 player->GetReputationMgr().ModifyReputation(sFactionStore.LookupEntry(609), 20.f);
148 // complete quest
150 }
151 return true;
152 }
153 return false;
154}
DBCStorage< FactionEntry > sFactionStore(FactionEntryfmt)
@ LANG_OPVP_SI_CAPTURE_A
Definition Language.h:1256
@ LANG_OPVP_SI_CAPTURE_H
Definition Language.h:1255
#define sObjectMgr
Definition ObjectMgr.h:1636
#define sOutdoorPvPMgr
Definition OutdoorPvPMgr.h:102
const uint32 OutdoorPvPSIBuffZones[OutdoorPvPSIBuffZonesNum]
Definition OutdoorPvPSI.h:35
const uint32 SI_TURNIN_QUEST_CM_A
Definition OutdoorPvPSI.h:41
@ 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:37
const uint32 SI_AREATRIGGER_A
Definition OutdoorPvPSI.h:39
const uint32 SI_TURNIN_QUEST_CM_H
Definition OutdoorPvPSI.h:43
@ TEAM_ALLIANCE
Definition SharedDefines.h:760
@ TEAM_HORDE
Definition SharedDefines.h:761
#define sWorldSessionMgr
Definition WorldSessionMgr.h:110
void UpdateWorldState()
Definition OutdoorPvPSI.cpp:58
void TeamApplyBuff(TeamId teamId, uint32 spellId, uint32 spellId2=0, Player *sameMapPlr=nullptr)
Definition OutdoorPvP.cpp:670
bool RewardHonor(Unit *victim, uint32 groupsize, int32 honor=-1, bool awardXP=true)
Definition Player.cpp:6105
void KilledMonsterCredit(uint32 entry, ObjectGuid guid=ObjectGuid::Empty)
Definition PlayerQuest.cpp:1927
TeamId GetTeamId(bool original=false) const
Definition Player.h:2116
ReputationMgr & GetReputationMgr()
Definition Player.h:2133
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:5753
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:1178
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:4941
uint8 GetLevel() const
Definition Unit.h:1033

References Unit::CastSpell(), Unit::GetLevel(), 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(), 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, sWorldSessionMgr, TEAM_ALLIANCE, TEAM_HORDE, OutdoorPvP::TeamApplyBuff(), and UpdateWorldState().

◆ HandleCustomSpell()

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

Reimplemented from OutdoorPvP.

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

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.

157{
158 if (spellId == SI_SILITHYST_FLAG)
159 {
160 // 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
161 switch (player->GetTeamId())
162 {
163 case TEAM_ALLIANCE:
164 {
165 AreaTrigger const* atEntry = sObjectMgr->GetAreaTrigger(SI_AREATRIGGER_A);
166 if (atEntry)
167 {
168 // 5.0f is safe-distance
169 if (player->GetDistance(atEntry->x, atEntry->y, atEntry->z) > 5.0f + atEntry->radius)
170 {
171 // he dropped it further, summon mound
172 GameObject* go = sObjectMgr->IsGameObjectStaticTransport(SI_SILITHYST_MOUND) ? new StaticTransport() : new GameObject();
173 Map* map = player->GetMap();
174 if (!map)
175 {
176 delete go;
177 return true;
178 }
179
180 if (!go->Create(map->GenerateLowGuid<HighGuid::GameObject>(), SI_SILITHYST_MOUND, map, player->GetPhaseMask(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation(), G3D::Quat(), 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 if (!go->Create(map->GenerateLowGuid<HighGuid::GameObject>(), SI_SILITHYST_MOUND, map, player->GetPhaseMask(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation(), G3D::Quat(), 100, GO_STATE_READY))
215 {
216 delete go;
217 return true;
218 }
219
220 go->SetRespawnTime(0);
221
222 if (!map->AddToMap(go))
223 {
224 delete go;
225 return true;
226 }
227 }
228 }
229 }
230 break;
231 default:
232 break;
233 }
234 return true;
235 }
236 return false;
237}
@ GO_STATE_READY
Definition GameObjectData.h:690
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:254
Definition Map.h:156
ObjectGuid::LowType GenerateLowGuid()
Definition Map.h:487
bool AddToMap(T *, bool checkTransport=false)
Definition Map.cpp:394
Definition Transport.h:113
uint32 GetPhaseMask() const
Definition Object.h:451
Map * GetMap() const
Definition Object.h:536
float GetDistance(WorldObject const *obj) const
Definition Object.cpp:1256
Definition ObjectMgr.h:420
float x
Definition ObjectMgr.h:423
float y
Definition ObjectMgr.h:424
float radius
Definition ObjectMgr.h:426
float z
Definition ObjectMgr.h:425
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.

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

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.

88{
89 // remove buffs
92}
virtual void HandlePlayerLeaveZone(Player *player, uint32 zone)
Definition OutdoorPvP.cpp:282

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

◆ SendRemoveWorldStates()

void OutdoorPvPSI::SendRemoveWorldStates ( Player player)
overridevirtual

◆ SetupOutdoorPvP()

bool OutdoorPvPSI::SetupOutdoorPvP ( )
overridevirtual

Reimplemented from OutdoorPvP.

66{
67 for (uint8 i = 0; i < OutdoorPvPSIBuffZonesNum; ++i)
69
71
72 return true;
73}
std::uint8_t uint8
Definition Define.h:109
const uint8 OutdoorPvPSIBuffZonesNum
Definition OutdoorPvPSI.h:33
void RegisterZone(uint32 zoneid)
Definition OutdoorPvP.cpp:641
void SetMapFromZone(uint32 zone)
Definition OutdoorPvP.cpp:718

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

◆ Update()

bool OutdoorPvPSI::Update ( uint32  diff)
overridevirtual

Reimplemented from OutdoorPvP.

76{
77 return false;
78}

◆ 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: