AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
spell_gen_mount Class Reference
Inheritance diagram for spell_gen_mount:
SpellScript _SpellScript

Public Member Functions

 spell_gen_mount (uint32 mount0, uint32 mount60, uint32 mount100, uint32 mount150, uint32 mount280, uint32 mount310)
 
bool Validate (SpellInfo const *) override
 
void HandleMount (SpellEffIndex effIndex)
 
void Register () override
 
- Public Member Functions inherited from SpellScript
bool _Validate (SpellInfo const *entry) override
 
bool _Load (Spell *spell)
 
void _InitHit ()
 
bool _IsEffectPrevented (SpellEffIndex effIndex)
 
bool _IsDefaultEffectPrevented (SpellEffIndex effIndex)
 
void _PrepareScriptCall (SpellScriptHookType hookType)
 
void _FinishScriptCall ()
 
bool IsInCheckCastHook () const
 
bool IsInTargetHook () const
 
bool IsInHitPhase () const
 
bool IsInEffectHook () const
 
Unit * GetCaster ()
 
GameObject * GetGObjCaster ()
 
Unit * GetOriginalCaster ()
 
SpellInfo const * GetSpellInfo ()
 
SpellValue const * GetSpellValue ()
 
WorldLocation const * GetExplTargetDest ()
 
void SetExplTargetDest (WorldLocation &loc)
 
WorldObject * GetExplTargetWorldObject ()
 
Unit * GetExplTargetUnit ()
 
GameObject * GetExplTargetGObj ()
 
Item * GetExplTargetItem ()
 
Unit * GetHitUnit ()
 
Creature * GetHitCreature ()
 
Player * GetHitPlayer ()
 
Item * GetHitItem ()
 
GameObject * GetHitGObj ()
 
WorldLocation * GetHitDest ()
 
int32 GetHitDamage ()
 
void SetHitDamage (int32 damage)
 
void PreventHitDamage ()
 
int32 GetHitHeal ()
 
void SetHitHeal (int32 heal)
 
void PreventHitHeal ()
 
Spell * GetSpell ()
 
Aura * GetHitAura ()
 
void PreventHitAura ()
 
void PreventHitEffect (SpellEffIndex effIndex)
 
void PreventHitDefaultEffect (SpellEffIndex effIndex)
 
int32 GetEffectValue () const
 
void SetEffectValue (int32 value)
 
Item * GetCastItem ()
 
void CreateItem (uint32 effIndex, uint32 itemId)
 
SpellInfo const * GetTriggeringSpell ()
 
void FinishCast (SpellCastResult result)
 
void Cancel ()
 
void SetCustomCastResultMessage (SpellCustomErrors result)
 
- Public Member Functions inherited from _SpellScript
 _SpellScript ()
 
virtual ~_SpellScript ()
 
virtual void _Register ()
 
virtual void _Unload ()
 
virtual void _Init (std::string const *scriptname, uint32 spellId)
 
std::string const * _GetScriptName () const
 
virtual bool Load ()
 
virtual void Unload ()
 

Private Member Functions

 PrepareSpellScript (spell_gen_mount)
 

Private Attributes

uint32 _mount0
 
uint32 _mount60
 
uint32 _mount100
 
uint32 _mount150
 
uint32 _mount280
 
uint32 _mount310
 

Additional Inherited Members

- Static Public Member Functions inherited from _SpellScript
static bool ValidateSpellInfo (std::initializer_list< uint32 > spellIds)
 
template<class T >
static bool ValidateSpellInfo (T const &spellIds)
 
- Public Attributes inherited from SpellScript
HookList< CastHandler > BeforeCast
 
HookList< CastHandler > OnCast
 
HookList< CastHandler > AfterCast
 
HookList< CheckCastHandler > OnCheckCast
 
HookList< EffectHandler > OnEffectLaunch
 
HookList< EffectHandler > OnEffectLaunchTarget
 
HookList< EffectHandler > OnEffectHit
 
HookList< EffectHandler > OnEffectHitTarget
 
HookList< BeforeHitHandler > BeforeHit
 
HookList< HitHandler > OnHit
 
HookList< HitHandler > AfterHit
 
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
 
HookList< ObjectTargetSelectHandler > OnObjectTargetSelect
 
HookList< DestinationTargetSelectHandler > OnDestinationTargetSelect
 
- Protected Attributes inherited from _SpellScript
uint8 m_currentScriptState
 
std::string const * m_scriptName
 
uint32 m_scriptSpellId
 

Detailed Description

Constructor & Destructor Documentation

◆ spell_gen_mount()

spell_gen_mount::spell_gen_mount ( uint32  mount0,
uint32  mount60,
uint32  mount100,
uint32  mount150,
uint32  mount280,
uint32  mount310 
)
inline
4133 : SpellScript(),
4134 _mount0(mount0), _mount60(mount60), _mount100(mount100), _mount150(mount150), _mount280(mount280), _mount310(mount310) { }
Definition SpellScript.h:182
uint32 _mount150
Definition spell_generic.cpp:4230
uint32 _mount60
Definition spell_generic.cpp:4228
uint32 _mount100
Definition spell_generic.cpp:4229
uint32 _mount280
Definition spell_generic.cpp:4231
uint32 _mount0
Definition spell_generic.cpp:4227
uint32 _mount310
Definition spell_generic.cpp:4232

Member Function Documentation

◆ HandleMount()

void spell_gen_mount::HandleMount ( SpellEffIndex  effIndex)
inline
4154 {
4155 PreventHitDefaultEffect(effIndex);
4156
4157 if (Player* target = GetHitPlayer())
4158 {
4159 uint32 petNumber = target->GetTemporaryUnsummonedPetNumber();
4160 target->SetTemporaryUnsummonedPetNumber(0);
4161
4162 // Prevent stacking of mounts and client crashes upon dismounting
4163 target->RemoveAurasByType(SPELL_AURA_MOUNTED, ObjectGuid::Empty, GetHitAura());
4164
4165 // Triggered spell id dependent on riding skill and zone
4166 bool canFly = false;
4167 uint32 map = GetVirtualMapForMapAndZone(target->GetMapId(), target->GetZoneId());
4168 if (map == MAP_OUTLAND || (map == MAP_NORTHREND && target->HasSpell(SPELL_COLD_WEATHER_FLYING)))
4169 canFly = true;
4170
4171 AreaTableEntry const* area = sAreaTableStore.LookupEntry(target->GetAreaId());
4172 // Xinef: add battlefield check
4173 Battlefield* Bf = sBattlefieldMgr->GetBattlefieldToZoneId(target->GetZoneId());
4174 if ((area && canFly && (area->flags & AREA_FLAG_NO_FLY_ZONE)) || (Bf && !Bf->CanFlyIn()))
4175 canFly = false;
4176
4177 uint32 mount = 0;
4178 switch (target->GetBaseSkillValue(SKILL_RIDING))
4179 {
4180 case 0:
4181 mount = _mount0;
4182 break;
4183 case 75:
4184 mount = _mount60;
4185 break;
4186 case 150:
4187 mount = _mount100;
4188 break;
4189 case 225:
4190 if (canFly)
4191 mount = _mount150;
4192 else
4193 mount = _mount100;
4194 break;
4195 case 300:
4196 if (canFly)
4197 {
4198 if (_mount310 && target->Has310Flyer(false))
4199 mount = _mount310;
4200 else
4201 mount = _mount280;
4202 }
4203 else
4204 mount = _mount100;
4205 break;
4206 default:
4207 break;
4208 }
4209
4210 if (mount)
4211 {
4213 target->CastSpell(target, mount, true);
4214 }
4215
4216 if (petNumber)
4217 target->SetTemporaryUnsummonedPetNumber(petNumber);
4218 }
4219 }
@ MAP_OUTLAND
Definition AreaDefines.h:219
@ MAP_NORTHREND
Definition AreaDefines.h:246
#define sBattlefieldMgr
Definition BattlefieldMgr.h:79
@ AREA_FLAG_NO_FLY_ZONE
Definition DBCEnums.h:262
uint32 GetVirtualMapForMapAndZone(uint32 mapid, uint32 zoneId)
Definition DBCStores.cpp:715
DBCStorage< AreaTableEntry > sAreaTableStore(AreaTableEntryfmt)
std::uint32_t uint32
Definition Define.h:107
@ SKILL_RIDING
Definition SharedDefines.h:3224
@ SPELL_AURA_MOUNTED
Definition SpellAuraDefines.h:141
Definition Battlefield.h:196
bool CanFlyIn() const
Return if we can use mount in battlefield.
Definition Battlefield.h:336
static ObjectGuid const Empty
Definition ObjectGuid.h:123
Definition Player.h:1086
Aura * GetHitAura()
Definition SpellScript.cpp:559
Player * GetHitPlayer()
Definition SpellScript.cpp:476
void PreventHitDefaultEffect(SpellEffIndex effIndex)
Definition SpellScript.cpp:595
void PreventHitAura()
Definition SpellScript.cpp:573
@ SPELL_COLD_WEATHER_FLYING
Definition spell_generic.cpp:4064
Definition DBCStructure.h:519
uint32 flags
Definition DBCStructure.h:524

References _mount0, _mount100, _mount150, _mount280, _mount310, _mount60, AREA_FLAG_NO_FLY_ZONE, Battlefield::CanFlyIn(), ObjectGuid::Empty, AreaTableEntry::flags, SpellScript::GetHitAura(), SpellScript::GetHitPlayer(), GetVirtualMapForMapAndZone(), MAP_NORTHREND, MAP_OUTLAND, SpellScript::PreventHitAura(), SpellScript::PreventHitDefaultEffect(), sAreaTableStore, sBattlefieldMgr, SKILL_RIDING, SPELL_AURA_MOUNTED, and SPELL_COLD_WEATHER_FLYING.

Referenced by Register().

◆ PrepareSpellScript()

spell_gen_mount::PrepareSpellScript ( spell_gen_mount  )
private

◆ Register()

void spell_gen_mount::Register ( )
inlineoverridevirtual

Implements _SpellScript.

4222 {
4224 }
@ EFFECT_2
Definition SharedDefines.h:33
@ SPELL_EFFECT_SCRIPT_EFFECT
Definition SharedDefines.h:843
#define SpellEffectFn(F, I, N)
Definition SpellScript.h:337
HookList< EffectHandler > OnEffectHitTarget
Definition SpellScript.h:336
void HandleMount(SpellEffIndex effIndex)
Definition spell_generic.cpp:4153

References EFFECT_2, HandleMount(), SpellScript::OnEffectHitTarget, SPELL_EFFECT_SCRIPT_EFFECT, and SpellEffectFn.

◆ Validate()

bool spell_gen_mount::Validate ( SpellInfo const *  )
inlineoverridevirtual

Reimplemented from _SpellScript.

4137 {
4138 if (_mount0 && !sSpellMgr->GetSpellInfo(_mount0))
4139 return false;
4140 if (_mount60 && !sSpellMgr->GetSpellInfo(_mount60))
4141 return false;
4142 if (_mount100 && !sSpellMgr->GetSpellInfo(_mount100))
4143 return false;
4144 if (_mount150 && !sSpellMgr->GetSpellInfo(_mount150))
4145 return false;
4146 if (_mount280 && !sSpellMgr->GetSpellInfo(_mount280))
4147 return false;
4148 if (_mount310 && !sSpellMgr->GetSpellInfo(_mount310))
4149 return false;
4150 return true;
4151 }
#define sSpellMgr
Definition SpellMgr.h:847

References _mount0, _mount100, _mount150, _mount280, _mount310, _mount60, and sSpellMgr.

Member Data Documentation

◆ _mount0

uint32 spell_gen_mount::_mount0
private

Referenced by HandleMount(), and Validate().

◆ _mount100

uint32 spell_gen_mount::_mount100
private

Referenced by HandleMount(), and Validate().

◆ _mount150

uint32 spell_gen_mount::_mount150
private

Referenced by HandleMount(), and Validate().

◆ _mount280

uint32 spell_gen_mount::_mount280
private

Referenced by HandleMount(), and Validate().

◆ _mount310

uint32 spell_gen_mount::_mount310
private

Referenced by HandleMount(), and Validate().

◆ _mount60

uint32 spell_gen_mount::_mount60
private

Referenced by HandleMount(), and Validate().


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