*Fix the bug that owner learns pet spells when pet does not exist.
--HG-- branch : trunk
This commit is contained in:
+11
-7
@@ -402,13 +402,11 @@ Spell::~Spell()
|
|||||||
|
|
||||||
void Spell::FillTargetMap()
|
void Spell::FillTargetMap()
|
||||||
{
|
{
|
||||||
// TODO: ADD the correct target FILLS!!!!!!
|
for(uint32 i = 0; i < 3; ++i)
|
||||||
|
|
||||||
for(uint32 i=0;i<3;i++)
|
|
||||||
{
|
{
|
||||||
// not call for empty effect.
|
// not call for empty effect.
|
||||||
// Also some spells use not used effect targets for store targets for dummy effect in triggered spells
|
// Also some spells use not used effect targets for store targets for dummy effect in triggered spells
|
||||||
if(m_spellInfo->Effect[i]==0)
|
if(!m_spellInfo->Effect[i])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// TODO: find a way so this is not needed?
|
// TODO: find a way so this is not needed?
|
||||||
@@ -417,9 +415,13 @@ void Spell::FillTargetMap()
|
|||||||
AddUnitTarget(m_caster, i);
|
AddUnitTarget(m_caster, i);
|
||||||
|
|
||||||
std::list<Unit*> tmpUnitMap;
|
std::list<Unit*> tmpUnitMap;
|
||||||
|
uint32 targetA = m_spellInfo->EffectImplicitTargetA[i];
|
||||||
|
uint32 targetB = m_spellInfo->EffectImplicitTargetB[i];
|
||||||
|
|
||||||
SetTargetMap(i,m_spellInfo->EffectImplicitTargetA[i],tmpUnitMap);
|
if(targetA)
|
||||||
SetTargetMap(i,m_spellInfo->EffectImplicitTargetB[i],tmpUnitMap);
|
SetTargetMap(i, targetA, tmpUnitMap);
|
||||||
|
if(targetB) // In very rare case !A && B
|
||||||
|
SetTargetMap(i, targetB, tmpUnitMap);
|
||||||
|
|
||||||
if(spellmgr.EffectTargetType[m_spellInfo->Effect[i]] != SPELL_REQUIRE_UNIT)
|
if(spellmgr.EffectTargetType[m_spellInfo->Effect[i]] != SPELL_REQUIRE_UNIT)
|
||||||
{
|
{
|
||||||
@@ -433,7 +435,9 @@ void Spell::FillTargetMap()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tmpUnitMap.empty())
|
if(!targetA && !targetB)
|
||||||
|
AddUnitTarget(m_caster, i);
|
||||||
|
else if(tmpUnitMap.empty())
|
||||||
{
|
{
|
||||||
// add here custom effects that need default target.
|
// add here custom effects that need default target.
|
||||||
// FOR EVERY TARGET TYPE THERE IS A DIFFERENT FILL!!
|
// FOR EVERY TARGET TYPE THERE IS A DIFFERENT FILL!!
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ SpellMgr::SpellMgr()
|
|||||||
case SPELL_EFFECT_PARRY: // 0
|
case SPELL_EFFECT_PARRY: // 0
|
||||||
case SPELL_EFFECT_BLOCK: // 0
|
case SPELL_EFFECT_BLOCK: // 0
|
||||||
case SPELL_EFFECT_SKILL: // always with dummy 3 as A
|
case SPELL_EFFECT_SKILL: // always with dummy 3 as A
|
||||||
case SPELL_EFFECT_LEARN_SPELL: // 0
|
//case SPELL_EFFECT_LEARN_SPELL: // 0 may be 5 pet
|
||||||
case SPELL_EFFECT_TRADE_SKILL: // 0 or 1
|
case SPELL_EFFECT_TRADE_SKILL: // 0 or 1
|
||||||
case SPELL_EFFECT_PROFICIENCY: // 0
|
case SPELL_EFFECT_PROFICIENCY: // 0
|
||||||
EffectTargetType[i] = SPELL_REQUIRE_NONE;
|
EffectTargetType[i] = SPELL_REQUIRE_NONE;
|
||||||
|
|||||||
Reference in New Issue
Block a user