mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 04:37:00 +00:00
[9754] Rename flight speed related auras and fix spell 40120
This commit is contained in:
parent
f25c319bc7
commit
6610484609
7 changed files with 58 additions and 24 deletions
|
|
@ -19285,7 +19285,7 @@ void Player::SendInitialPacketsBeforeAddToMap()
|
|||
// SMSG_POWER_UPDATE
|
||||
|
||||
// set fly flag if in fly form or taxi flight to prevent visually drop at ground in showup moment
|
||||
if(HasAuraType(SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED) || HasAuraType(SPELL_AURA_FLY) || isInFlight())
|
||||
if(HasAuraType(SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED) || HasAuraType(SPELL_AURA_FLY) || isInFlight())
|
||||
m_movementInfo.AddMovementFlag(MOVEFLAG_FLYING);
|
||||
|
||||
m_mover = this;
|
||||
|
|
@ -19310,7 +19310,7 @@ void Player::SendInitialPacketsAfterAddToMap()
|
|||
{
|
||||
SPELL_AURA_MOD_FEAR, SPELL_AURA_TRANSFORM, SPELL_AURA_WATER_WALK,
|
||||
SPELL_AURA_FEATHER_FALL, SPELL_AURA_HOVER, SPELL_AURA_SAFE_FALL,
|
||||
SPELL_AURA_FLY, SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED, SPELL_AURA_NONE
|
||||
SPELL_AURA_FLY, SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED, SPELL_AURA_NONE
|
||||
};
|
||||
for(AuraType const* itr = &auratypes[0]; itr && itr[0] != SPELL_AURA_NONE; ++itr)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4933,7 +4933,7 @@ SpellCastResult Spell::CheckCast(bool strict)
|
|||
break;
|
||||
}
|
||||
case SPELL_AURA_FLY:
|
||||
case SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED:
|
||||
case SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED:
|
||||
{
|
||||
// not allow cast fly spells if not have req. skills (all spells is self target)
|
||||
// allow always ghost flight spells
|
||||
|
|
|
|||
|
|
@ -248,12 +248,12 @@ enum AuraType
|
|||
SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE = 203,
|
||||
SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE = 204,
|
||||
SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_DAMAGE = 205,
|
||||
SPELL_AURA_MOD_SPEED_MOUNTED = 206, // ? used in strange spells
|
||||
SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED = 207,
|
||||
SPELL_AURA_MOD_SPEED_FLIGHT = 208,
|
||||
SPELL_AURA_MOD_FLIGHT_SPEED_ALWAYS = 209,
|
||||
SPELL_AURA_210 = 210, // unused
|
||||
SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACK = 211,
|
||||
SPELL_AURA_MOD_FLIGHT_SPEED = 206,
|
||||
SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED = 207,
|
||||
SPELL_AURA_MOD_FLIGHT_SPEED_STACKING = 208,
|
||||
SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED_STACKING = 209,
|
||||
SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACKING = 210,
|
||||
SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED_NOT_STACKING = 211,
|
||||
SPELL_AURA_MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT = 212,
|
||||
SPELL_AURA_MOD_RAGE_FROM_DAMAGE_DEALT = 213,
|
||||
SPELL_AURA_214 = 214,
|
||||
|
|
|
|||
|
|
@ -256,12 +256,12 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
|
|||
&Aura::HandleNoImmediateEffect, //203 SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE implemented in Unit::CalculateMeleeDamage and Unit::SpellCriticalDamageBonus
|
||||
&Aura::HandleNoImmediateEffect, //204 SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE implemented in Unit::CalculateMeleeDamage and Unit::SpellCriticalDamageBonus
|
||||
&Aura::HandleNoImmediateEffect, //205 SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_DAMAGE implemented in Unit::SpellCriticalDamageBonus
|
||||
&Aura::HandleNULL, //206 SPELL_AURA_MOD_SPEED_MOUNTED
|
||||
&Aura::HandleAuraModIncreaseFlightSpeed, //207 SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED
|
||||
&Aura::HandleAuraModIncreaseFlightSpeed, //208 SPELL_AURA_MOD_SPEED_FLIGHT, used only in spell: Flight Form (Passive)
|
||||
&Aura::HandleAuraModIncreaseFlightSpeed, //209 SPELL_AURA_MOD_FLIGHT_SPEED_ALWAYS
|
||||
&Aura::HandleNULL, //210 "Increase flight speed by"
|
||||
&Aura::HandleAuraModIncreaseFlightSpeed, //211 SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACK
|
||||
&Aura::HandleAuraModIncreaseFlightSpeed, //206 SPELL_AURA_MOD_FLIGHT_SPEED
|
||||
&Aura::HandleAuraModIncreaseFlightSpeed, //207 SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED
|
||||
&Aura::HandleAuraModIncreaseFlightSpeed, //208 SPELL_AURA_MOD_FLIGHT_SPEED_STACKING
|
||||
&Aura::HandleAuraModIncreaseFlightSpeed, //209 SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED_STACKING
|
||||
&Aura::HandleAuraModIncreaseFlightSpeed, //210 SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACKING
|
||||
&Aura::HandleAuraModIncreaseFlightSpeed, //211 SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED_NOT_STACKING
|
||||
&Aura::HandleAuraModRangedAttackPowerOfStatPercent, //212 SPELL_AURA_MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT
|
||||
&Aura::HandleNoImmediateEffect, //213 SPELL_AURA_MOD_RAGE_FROM_DAMAGE_DEALT implemented in Player::RewardRage
|
||||
&Aura::HandleUnused, //214 Tamed Pet Passive (single test like spell 20782, also single for 157 aura)
|
||||
|
|
@ -3377,7 +3377,7 @@ void Aura::HandleAuraTransform(bool apply, bool Real)
|
|||
((Creature*)m_target)->LoadEquipment(ci->equipmentId, true);
|
||||
|
||||
// Dragonmaw Illusion (set mount model also)
|
||||
if(GetId()==42016 && m_target->GetMountID() && !m_target->GetAurasByType(SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED).empty())
|
||||
if(GetId()==42016 && m_target->GetMountID() && !m_target->GetAurasByType(SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED).empty())
|
||||
m_target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID,16314);
|
||||
}
|
||||
|
||||
|
|
@ -4371,7 +4371,7 @@ void Aura::HandleAuraModIncreaseFlightSpeed(bool apply, bool Real)
|
|||
return;
|
||||
|
||||
// Enable Fly mode for flying mounts
|
||||
if (m_modifier.m_auraname == SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED)
|
||||
if (m_modifier.m_auraname == SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED)
|
||||
{
|
||||
WorldPacket data;
|
||||
if(apply)
|
||||
|
|
@ -4396,6 +4396,34 @@ void Aura::HandleAuraModIncreaseFlightSpeed(bool apply, bool Real)
|
|||
m_target->CastSpell(m_target, 25860, true, NULL, this);
|
||||
}
|
||||
|
||||
// Swift Flight Form check for higher speed flying mounts
|
||||
if (apply && m_target->GetTypeId() == TYPEID_PLAYER && GetSpellProto()->Id == 40121)
|
||||
{
|
||||
for (PlayerSpellMap::const_iterator iter = ((Player*)m_target)->GetSpellMap().begin(); iter != ((Player*)m_target)->GetSpellMap().end(); ++iter)
|
||||
{
|
||||
if (iter->second.state != PLAYERSPELL_REMOVED)
|
||||
{
|
||||
bool changedSpeed = false;
|
||||
SpellEntry const *spellInfo = sSpellStore.LookupEntry(iter->first);
|
||||
for(int i = 0; i < MAX_EFFECT_INDEX; ++i)
|
||||
{
|
||||
if(spellInfo->EffectApplyAuraName[i] == SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED)
|
||||
{
|
||||
int32 mountSpeed = spellInfo->CalculateSimpleValue(SpellEffectIndex(i));
|
||||
if (mountSpeed > m_modifier.m_amount)
|
||||
{
|
||||
m_modifier.m_amount = mountSpeed;
|
||||
changedSpeed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changedSpeed)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_target->UpdateSpeed(MOVE_FLIGHT, true);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1570,7 +1570,7 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx)
|
|||
case 58601: // Remove Flight Auras
|
||||
{
|
||||
m_caster->RemoveSpellsCausingAura(SPELL_AURA_FLY);
|
||||
m_caster->RemoveSpellsCausingAura(SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED);
|
||||
m_caster->RemoveSpellsCausingAura(SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED);
|
||||
return;
|
||||
}
|
||||
case 59640: // Underbelly Elixir
|
||||
|
|
|
|||
|
|
@ -10287,7 +10287,7 @@ void Unit::Mount(uint32 mount, uint32 spellId)
|
|||
else if (SpellEntry const* spellInfo = sSpellStore.LookupEntry(spellId))
|
||||
{
|
||||
// Flying case (Unsummon any pet)
|
||||
if (IsSpellHaveAura(spellInfo, SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED))
|
||||
if (IsSpellHaveAura(spellInfo, SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED))
|
||||
((Player*)this)->UnsummonPetTemporaryIfAny();
|
||||
// Normal case (Unsummon only permanent pet)
|
||||
else if (Pet* pet = GetPet())
|
||||
|
|
@ -10854,11 +10854,17 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced, float ratio)
|
|||
case MOVE_FLIGHT:
|
||||
{
|
||||
if (IsMounted()) // Use on mount auras
|
||||
main_speed_mod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED);
|
||||
{
|
||||
main_speed_mod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED);
|
||||
stack_bonus = GetTotalAuraMultiplier(SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED_STACKING);
|
||||
non_stack_bonus = (100.0f + GetMaxPositiveAuraModifier(SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED_NOT_STACKING))/100.0f;
|
||||
}
|
||||
else // Use not mount (shapeshift for example) auras (should stack)
|
||||
main_speed_mod = GetTotalAuraModifier(SPELL_AURA_MOD_SPEED_FLIGHT);
|
||||
stack_bonus = GetTotalAuraMultiplier(SPELL_AURA_MOD_FLIGHT_SPEED_ALWAYS);
|
||||
non_stack_bonus = (100.0f + GetMaxPositiveAuraModifier(SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACK))/100.0f;
|
||||
{
|
||||
main_speed_mod = GetTotalAuraModifier(SPELL_AURA_MOD_FLIGHT_SPEED);
|
||||
stack_bonus = GetTotalAuraMultiplier(SPELL_AURA_MOD_FLIGHT_SPEED_STACKING);
|
||||
non_stack_bonus = (100.0f + GetMaxPositiveAuraModifier(SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACKING))/100.0f;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MOVE_FLIGHT_BACK:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "9753"
|
||||
#define REVISION_NR "9754"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue