aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2012-05-30 13:15:51 +0200
committerShauren <shauren.trinity@gmail.com>2012-05-30 13:15:51 +0200
commit853f96217da40c00be8d09fae171484f69723393 (patch)
treeb6a8e3ea5ff5899d16492bfe800e11e8f3cc2f4a
parent774f3cdc9b2861f0ba2bf496a8528e41f0f578c3 (diff)
Core/Players: 310% mounted speed is identified by riding skill 375, no need for a custom flag anymore.
-rw-r--r--sql/updates/characters/2012_05_30_00_characters_characters.sql2
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp50
-rwxr-xr-xsrc/server/game/Entities/Player/Player.h3
-rwxr-xr-xsrc/server/game/Spells/Auras/SpellAuras.cpp1
-rwxr-xr-xsrc/server/game/Spells/Auras/SpellAuras.h2
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp38
-rw-r--r--src/server/scripts/Spells/spell_druid.cpp2
7 files changed, 23 insertions, 75 deletions
diff --git a/sql/updates/characters/2012_05_30_00_characters_characters.sql b/sql/updates/characters/2012_05_30_00_characters_characters.sql
new file mode 100644
index 00000000000..9336e826580
--- /dev/null
+++ b/sql/updates/characters/2012_05_30_00_characters_characters.sql
@@ -0,0 +1,2 @@
+-- Remove unused flag
+UPDATE `characters` SET `extra_flags`=`extra_flags`&~0x40;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 890ceb72c3e..e8d89110f82 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -3895,12 +3895,6 @@ bool Player::addSpell(uint32 spellId, bool active, bool learning, bool dependent
if (!pSkill)
continue;
- if (!Has310Flyer(false) && pSkill->id == SKILL_MOUNTS)
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
- if (spellInfo->Effects[i].ApplyAuraName == SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED &&
- spellInfo->Effects[i].CalcValue() == 310)
- SetHas310Flyer(true);
-
if (HasSkill(pSkill->id))
continue;
@@ -4165,16 +4159,6 @@ void Player::removeSpell(uint32 spell_id, bool disabled, bool learn_low_rank)
SetSkill(pSkill->id, GetSkillStep(pSkill->id), 0, 0);
}
-
- // most likely will never be used, haven't heard of cases where players unlearn a mount
- if (Has310Flyer(false) && _spell_idx->second->skillId == SKILL_MOUNTS)
- {
- if (spellInfo)
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
- if (spellInfo->Effects[i].ApplyAuraName == SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED &&
- spellInfo->Effects[i].CalcValue() == 310)
- Has310Flyer(true, spell_id); // with true as first argument its also used to set/remove the flag
- }
}
}
@@ -4255,40 +4239,6 @@ void Player::removeSpell(uint32 spell_id, bool disabled, bool learn_low_rank)
}
}
-bool Player::Has310Flyer(bool checkAllSpells, uint32 excludeSpellId)
-{
- if (!checkAllSpells)
- return m_ExtraFlags & PLAYER_EXTRA_HAS_310_FLYER;
- else
- {
- SetHas310Flyer(false);
- SpellInfo const* spellInfo;
- for (PlayerSpellMap::iterator itr = m_spells.begin(); itr != m_spells.end(); ++itr)
- {
- if (itr->first == excludeSpellId)
- continue;
-
- SkillLineAbilityMapBounds bounds = sSpellMgr->GetSkillLineAbilityMapBounds(itr->first);
- for (SkillLineAbilityMap::const_iterator _spell_idx = bounds.first; _spell_idx != bounds.second; ++_spell_idx)
- {
- if (_spell_idx->second->skillId != SKILL_MOUNTS)
- break; // We can break because mount spells belong only to one skillline (at least 310 flyers do)
-
- spellInfo = sSpellMgr->GetSpellInfo(itr->first);
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
- if (spellInfo->Effects[i].ApplyAuraName == SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED &&
- spellInfo->Effects[i].CalcValue() == 310)
- {
- SetHas310Flyer(true);
- return true;
- }
- }
- }
- }
-
- return false;
-}
-
void Player::RemoveSpellCooldown(uint32 spell_id, bool update /* = false */)
{
m_spellCooldowns.erase(spell_id);
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index dc6fd7eab26..24a1c35b8e2 100755
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -500,7 +500,6 @@ enum PlayerExtraFlags
PLAYER_EXTRA_TAXICHEAT = 0x0008,
PLAYER_EXTRA_GM_INVISIBLE = 0x0010,
PLAYER_EXTRA_GM_CHAT = 0x0020, // Show GM badge in chat messages
- PLAYER_EXTRA_HAS_310_FLYER = 0x0040, // Marks if player already has 310% speed flying mount
// other states
PLAYER_EXTRA_PVP_DEATH = 0x0100 // store PvP death status until corpse creating.
@@ -1197,8 +1196,6 @@ class Player : public Unit, public GridObject<Player>
void SetTaxiCheater(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_TAXICHEAT; else m_ExtraFlags &= ~PLAYER_EXTRA_TAXICHEAT; }
bool isGMVisible() const { return !(m_ExtraFlags & PLAYER_EXTRA_GM_INVISIBLE); }
void SetGMVisible(bool on);
- bool Has310Flyer(bool checkAllSpells, uint32 excludeSpellId = 0);
- void SetHas310Flyer(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_HAS_310_FLYER; else m_ExtraFlags &= ~PLAYER_EXTRA_HAS_310_FLYER; }
void SetPvPDeath(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_PVP_DEATH; else m_ExtraFlags &= ~PLAYER_EXTRA_PVP_DEATH; }
void GiveXP(uint32 xp, Unit* victim, float group_rate=1.0f);
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp
index ea25c0b76b5..58c8ce5c558 100755
--- a/src/server/game/Spells/Auras/SpellAuras.cpp
+++ b/src/server/game/Spells/Auras/SpellAuras.cpp
@@ -2479,4 +2479,3 @@ void DynObjAura::FillTargetMap(std::map<Unit*, uint8> & targets, Unit* /*caster*
}
}
}
-
diff --git a/src/server/game/Spells/Auras/SpellAuras.h b/src/server/game/Spells/Auras/SpellAuras.h
index 2f50d47a79b..36398bafa97 100755
--- a/src/server/game/Spells/Auras/SpellAuras.h
+++ b/src/server/game/Spells/Auras/SpellAuras.h
@@ -166,7 +166,7 @@ class Aura
void SetLoadedState(int32 maxduration, int32 duration, int32 charges, uint8 stackamount, uint8 recalculateMask, int32 * amount);
// helpers for aura effects
- bool HasEffect(uint8 effIndex) const { return bool(GetEffect(effIndex)); }
+ bool HasEffect(uint8 effIndex) const { return GetEffect(effIndex) != NULL; }
bool HasEffectType(AuraType type) const;
AuraEffect* GetEffect(uint8 effIndex) const { ASSERT (effIndex < MAX_SPELL_EFFECTS); return m_effects[effIndex]; }
uint8 GetEffectMask() const { uint8 effMask = 0; for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) if (m_effects[i]) effMask |= 1<<i; return effMask; }
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 8c95bc054d9..ca3c4197fc3 100755
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -4392,27 +4392,30 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex)
switch (unitTarget->ToPlayer()->GetBaseSkillValue(SKILL_RIDING))
{
- case 75: unitTarget->CastSpell(unitTarget, 75619, true); break;
- case 150: unitTarget->CastSpell(unitTarget, 75620, true); break;
- case 225:
+ case 75: unitTarget->CastSpell(unitTarget, 75619, true); break;
+ case 150: unitTarget->CastSpell(unitTarget, 75620, true); break;
+ case 225:
{
if (canFly)
unitTarget->CastSpell(unitTarget, 75617, true);
else
unitTarget->CastSpell(unitTarget, 75620, true);
- }break;
- case 300:
+ }
+ break;
+ case 300:
{
if (canFly)
- {
- if (unitTarget->ToPlayer()->Has310Flyer(false))
- unitTarget->CastSpell(unitTarget, 76153, true);
- else
- unitTarget->CastSpell(unitTarget, 75618, true);
- }
+ unitTarget->CastSpell(unitTarget, 75618, true);
else
unitTarget->CastSpell(unitTarget, 75620, true);
- }break;
+ }
+ break;
+ case 375:
+ if (canFly)
+ unitTarget->CastSpell(unitTarget, 76153, true);
+ else
+ unitTarget->CastSpell(unitTarget, 75620, true);
+ break;
}
return;
}
@@ -4427,13 +4430,10 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex)
// Triggered spell id dependent on riding skill
if (uint16 skillval = unitTarget->ToPlayer()->GetSkillValue(SKILL_RIDING))
{
- if (skillval >= 300)
- {
- if (unitTarget->ToPlayer()->Has310Flyer(false))
- unitTarget->CastSpell(unitTarget, 76154, true);
- else
- unitTarget->CastSpell(unitTarget, 75972, true);
- }
+ if (skillval >= 375)
+ unitTarget->CastSpell(unitTarget, 76154, true);
+ else if (skillval >= 300)
+ unitTarget->CastSpell(unitTarget, 75972, true);
else
unitTarget->CastSpell(unitTarget, 75957, true);
}
diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp
index 898350dbd71..286bec6abab 100644
--- a/src/server/scripts/Spells/spell_druid.cpp
+++ b/src/server/scripts/Spells/spell_druid.cpp
@@ -312,7 +312,7 @@ class spell_dru_swift_flight_passive : public SpellScriptLoader
void CalculateAmount(AuraEffect const* /*aurEff*/, int32 & amount, bool & /*canBeRecalculated*/)
{
if (Player* caster = GetCaster()->ToPlayer())
- if (caster->Has310Flyer(false))
+ if (caster->GetSkillValue(SKILL_RIDING) >= 375)
amount = 310;
}