diff options
author | tobmaps <spambot42@yandex.ru> | 2011-08-06 20:42:00 +0700 |
---|---|---|
committer | tobmaps <spambot42@yandex.ru> | 2011-08-06 20:42:00 +0700 |
commit | 7c6366ca1155fae63fc75055ba35eff656772c5c (patch) | |
tree | 2cd20f127001b74e979b3d453e131429f8af0011 /src | |
parent | d3ab5941b2a466b74791bba3a10dba0e6a1fca96 (diff) |
Core/Spells: Partial revert of b0fe236265465a0f39aa98a8cee2916d1ccfaa02 , thx A-Metaphysical-Drama for tip
Closes #2266
Closes #2442
Closes #2454
Closes #2455
Closes #2502
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Spells/Spell.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index c0b04601b97..ba7b96941c1 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5778,12 +5778,26 @@ bool Spell::CanAutoCast(Unit* target) return false; //target invalid } -SpellCastResult Spell::CheckRange(bool /*strict*/) +SpellCastResult Spell::CheckRange(bool strict) { + // Don't check for instant cast spells + if (!strict && m_casttime == 0) + return SPELL_CAST_OK; + + uint32 range_type = 0; + + if (m_spellInfo->RangeEntry) + { + // self cast doesn't need range checking -- also for Starshards fix + if (m_spellInfo->RangeEntry->ID == 1) + return SPELL_CAST_OK; + + range_type = m_spellInfo->RangeEntry->type; + } + Unit* target = m_targets.GetUnitTarget(); float max_range = m_caster->GetSpellMaxRangeForTarget(target, m_spellInfo); float min_range = m_caster->GetSpellMinRangeForTarget(target, m_spellInfo); - uint32 range_type = m_spellInfo->RangeEntry ? m_spellInfo->RangeEntry->type : 0; if (Player* modOwner = m_caster->GetSpellModOwner()) modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_RANGE, max_range, this); |