*Fix the bug that fishing bobber does not have correct position.
--HG-- branch : trunk
This commit is contained in:
+12
-2
@@ -1654,9 +1654,19 @@ void Spell::SetTargetMap(uint32 i, uint32 cur)
|
|||||||
switch(cur)
|
switch(cur)
|
||||||
{
|
{
|
||||||
case TARGET_UNIT_CASTER:
|
case TARGET_UNIT_CASTER:
|
||||||
case TARGET_UNIT_CASTER_FISHING:
|
|
||||||
AddUnitTarget(m_caster, i);
|
AddUnitTarget(m_caster, i);
|
||||||
break;
|
break;
|
||||||
|
case TARGET_UNIT_CASTER_FISHING:
|
||||||
|
{
|
||||||
|
AddUnitTarget(m_caster, i);
|
||||||
|
float min_dis = GetSpellMinRange(m_spellInfo, true);
|
||||||
|
float max_dis = GetSpellMaxRange(m_spellInfo, true);
|
||||||
|
float dis = rand_norm() * (max_dis - min_dis) + min_dis;
|
||||||
|
float x, y, z;
|
||||||
|
m_caster->GetClosePoint(x, y, z, DEFAULT_WORLD_OBJECT_SIZE, dis);
|
||||||
|
m_targets.setDestination(x, y, z);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case TARGET_UNIT_MASTER:
|
case TARGET_UNIT_MASTER:
|
||||||
if(Unit* owner = m_caster->GetCharmerOrOwner())
|
if(Unit* owner = m_caster->GetCharmerOrOwner())
|
||||||
AddUnitTarget(owner, i);
|
AddUnitTarget(owner, i);
|
||||||
@@ -2647,7 +2657,7 @@ void Spell::_handle_immediate_phase()
|
|||||||
{
|
{
|
||||||
if(spellmgr.EffectTargetType[m_spellInfo->Effect[j]] == SPELL_REQUIRE_DEST)
|
if(spellmgr.EffectTargetType[m_spellInfo->Effect[j]] == SPELL_REQUIRE_DEST)
|
||||||
{
|
{
|
||||||
if(!m_targets.HasDst())
|
if(!m_targets.HasDst()) // FIXME: this will ignore dest set in effect
|
||||||
m_targets.setDestination(m_caster);
|
m_targets.setDestination(m_caster);
|
||||||
HandleEffects(m_originalCaster, NULL, NULL, j);
|
HandleEffects(m_originalCaster, NULL, NULL, j);
|
||||||
m_effectMask |= (1<<j);
|
m_effectMask |= (1<<j);
|
||||||
|
|||||||
@@ -178,6 +178,12 @@ inline float GetSpellMaxRange(SpellEntry const *spellInfo, bool positive)
|
|||||||
? GetSpellMaxRangeForFriend(sSpellRangeStore.LookupEntry(spellInfo->rangeIndex))
|
? GetSpellMaxRangeForFriend(sSpellRangeStore.LookupEntry(spellInfo->rangeIndex))
|
||||||
: GetSpellMaxRangeForHostile(sSpellRangeStore.LookupEntry(spellInfo->rangeIndex));
|
: GetSpellMaxRangeForHostile(sSpellRangeStore.LookupEntry(spellInfo->rangeIndex));
|
||||||
}
|
}
|
||||||
|
inline float GetSpellMinRange(SpellEntry const *spellInfo, bool positive)
|
||||||
|
{
|
||||||
|
return positive
|
||||||
|
? GetSpellMinRangeForFriend(sSpellRangeStore.LookupEntry(spellInfo->rangeIndex))
|
||||||
|
: GetSpellMinRangeForHostile(sSpellRangeStore.LookupEntry(spellInfo->rangeIndex));
|
||||||
|
}
|
||||||
|
|
||||||
/*struct DispelEntry
|
/*struct DispelEntry
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user