[9754] Rename flight speed related auras and fix spell 40120

This commit is contained in:
Laise 2010-04-16 17:53:38 +03:00
parent f25c319bc7
commit 6610484609
7 changed files with 58 additions and 24 deletions

View file

@ -19285,7 +19285,7 @@ void Player::SendInitialPacketsBeforeAddToMap()
// SMSG_POWER_UPDATE // SMSG_POWER_UPDATE
// set fly flag if in fly form or taxi flight to prevent visually drop at ground in showup moment // 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_movementInfo.AddMovementFlag(MOVEFLAG_FLYING);
m_mover = this; m_mover = this;
@ -19310,7 +19310,7 @@ void Player::SendInitialPacketsAfterAddToMap()
{ {
SPELL_AURA_MOD_FEAR, SPELL_AURA_TRANSFORM, SPELL_AURA_WATER_WALK, SPELL_AURA_MOD_FEAR, SPELL_AURA_TRANSFORM, SPELL_AURA_WATER_WALK,
SPELL_AURA_FEATHER_FALL, SPELL_AURA_HOVER, SPELL_AURA_SAFE_FALL, 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) for(AuraType const* itr = &auratypes[0]; itr && itr[0] != SPELL_AURA_NONE; ++itr)
{ {

View file

@ -4933,7 +4933,7 @@ SpellCastResult Spell::CheckCast(bool strict)
break; break;
} }
case SPELL_AURA_FLY: 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) // not allow cast fly spells if not have req. skills (all spells is self target)
// allow always ghost flight spells // allow always ghost flight spells

View file

@ -248,12 +248,12 @@ enum AuraType
SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE = 203, SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE = 203,
SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE = 204, SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE = 204,
SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_DAMAGE = 205, SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_DAMAGE = 205,
SPELL_AURA_MOD_SPEED_MOUNTED = 206, // ? used in strange spells SPELL_AURA_MOD_FLIGHT_SPEED = 206,
SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED = 207, SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED = 207,
SPELL_AURA_MOD_SPEED_FLIGHT = 208, SPELL_AURA_MOD_FLIGHT_SPEED_STACKING = 208,
SPELL_AURA_MOD_FLIGHT_SPEED_ALWAYS = 209, SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED_STACKING = 209,
SPELL_AURA_210 = 210, // unused SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACKING = 210,
SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACK = 211, SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED_NOT_STACKING = 211,
SPELL_AURA_MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT = 212, SPELL_AURA_MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT = 212,
SPELL_AURA_MOD_RAGE_FROM_DAMAGE_DEALT = 213, SPELL_AURA_MOD_RAGE_FROM_DAMAGE_DEALT = 213,
SPELL_AURA_214 = 214, SPELL_AURA_214 = 214,

View file

@ -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, //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, //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::HandleNoImmediateEffect, //205 SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_DAMAGE implemented in Unit::SpellCriticalDamageBonus
&Aura::HandleNULL, //206 SPELL_AURA_MOD_SPEED_MOUNTED &Aura::HandleAuraModIncreaseFlightSpeed, //206 SPELL_AURA_MOD_FLIGHT_SPEED
&Aura::HandleAuraModIncreaseFlightSpeed, //207 SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED &Aura::HandleAuraModIncreaseFlightSpeed, //207 SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED
&Aura::HandleAuraModIncreaseFlightSpeed, //208 SPELL_AURA_MOD_SPEED_FLIGHT, used only in spell: Flight Form (Passive) &Aura::HandleAuraModIncreaseFlightSpeed, //208 SPELL_AURA_MOD_FLIGHT_SPEED_STACKING
&Aura::HandleAuraModIncreaseFlightSpeed, //209 SPELL_AURA_MOD_FLIGHT_SPEED_ALWAYS &Aura::HandleAuraModIncreaseFlightSpeed, //209 SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED_STACKING
&Aura::HandleNULL, //210 "Increase flight speed by" &Aura::HandleAuraModIncreaseFlightSpeed, //210 SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACKING
&Aura::HandleAuraModIncreaseFlightSpeed, //211 SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACK &Aura::HandleAuraModIncreaseFlightSpeed, //211 SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED_NOT_STACKING
&Aura::HandleAuraModRangedAttackPowerOfStatPercent, //212 SPELL_AURA_MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT &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::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) &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); ((Creature*)m_target)->LoadEquipment(ci->equipmentId, true);
// Dragonmaw Illusion (set mount model also) // 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); m_target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID,16314);
} }
@ -4371,7 +4371,7 @@ void Aura::HandleAuraModIncreaseFlightSpeed(bool apply, bool Real)
return; return;
// Enable Fly mode for flying mounts // 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; WorldPacket data;
if(apply) if(apply)
@ -4396,6 +4396,34 @@ void Aura::HandleAuraModIncreaseFlightSpeed(bool apply, bool Real)
m_target->CastSpell(m_target, 25860, true, NULL, this); 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); m_target->UpdateSpeed(MOVE_FLIGHT, true);
} }

View file

@ -1570,7 +1570,7 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx)
case 58601: // Remove Flight Auras case 58601: // Remove Flight Auras
{ {
m_caster->RemoveSpellsCausingAura(SPELL_AURA_FLY); 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; return;
} }
case 59640: // Underbelly Elixir case 59640: // Underbelly Elixir

View file

@ -10287,7 +10287,7 @@ void Unit::Mount(uint32 mount, uint32 spellId)
else if (SpellEntry const* spellInfo = sSpellStore.LookupEntry(spellId)) else if (SpellEntry const* spellInfo = sSpellStore.LookupEntry(spellId))
{ {
// Flying case (Unsummon any pet) // 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(); ((Player*)this)->UnsummonPetTemporaryIfAny();
// Normal case (Unsummon only permanent pet) // Normal case (Unsummon only permanent pet)
else if (Pet* pet = GetPet()) else if (Pet* pet = GetPet())
@ -10854,11 +10854,17 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced, float ratio)
case MOVE_FLIGHT: case MOVE_FLIGHT:
{ {
if (IsMounted()) // Use on mount auras 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) 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); main_speed_mod = GetTotalAuraModifier(SPELL_AURA_MOD_FLIGHT_SPEED);
non_stack_bonus = (100.0f + GetMaxPositiveAuraModifier(SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACK))/100.0f; 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; break;
} }
case MOVE_FLIGHT_BACK: case MOVE_FLIGHT_BACK:

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "9753" #define REVISION_NR "9754"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__