mirror of
https://github.com/mangosfour/server.git
synced 2025-12-16 13:37:00 +00:00
[8369] Some step back in triggered effect caster selection.
This must fix some broken after [8360] spells.
This commit is contained in:
parent
6e8aca42f9
commit
8d30f01a73
3 changed files with 25 additions and 7 deletions
|
|
@ -1961,7 +1961,7 @@ void Spell::EffectForceCast(uint32 i)
|
||||||
unitTarget->CastSpell(unitTarget, spellInfo, true, NULL, NULL, m_originalCasterGUID);
|
unitTarget->CastSpell(unitTarget, spellInfo, true, NULL, NULL, m_originalCasterGUID);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Spell::EffectTriggerSpell(uint32 i)
|
void Spell::EffectTriggerSpell(uint32 effIndex)
|
||||||
{
|
{
|
||||||
// only unit case known
|
// only unit case known
|
||||||
if (!unitTarget)
|
if (!unitTarget)
|
||||||
|
|
@ -1971,7 +1971,7 @@ void Spell::EffectTriggerSpell(uint32 i)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 triggered_spell_id = m_spellInfo->EffectTriggerSpell[i];
|
uint32 triggered_spell_id = m_spellInfo->EffectTriggerSpell[effIndex];
|
||||||
|
|
||||||
// special cases
|
// special cases
|
||||||
switch(triggered_spell_id)
|
switch(triggered_spell_id)
|
||||||
|
|
@ -2087,6 +2087,9 @@ void Spell::EffectTriggerSpell(uint32 i)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// select formal caster for triggered spell
|
||||||
|
Unit* caster = m_caster;
|
||||||
|
|
||||||
// some triggered spells require specific equipment
|
// some triggered spells require specific equipment
|
||||||
if (spellInfo->EquippedItemClass >=0 && m_caster->GetTypeId()==TYPEID_PLAYER)
|
if (spellInfo->EquippedItemClass >=0 && m_caster->GetTypeId()==TYPEID_PLAYER)
|
||||||
{
|
{
|
||||||
|
|
@ -2118,8 +2121,14 @@ void Spell::EffectTriggerSpell(uint32 i)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Note: not exist spells with weapon req. and IsSpellHaveCasterSourceTargets == true
|
||||||
|
// so this just for speedup places in else
|
||||||
|
caster = IsSpellWithCasterSourceTargetsOnly(spellInfo) ? unitTarget : m_caster;
|
||||||
|
}
|
||||||
|
|
||||||
unitTarget->CastSpell(unitTarget,spellInfo,true,NULL,NULL,m_originalCasterGUID);
|
caster->CastSpell(unitTarget,spellInfo,true,NULL,NULL,m_originalCasterGUID);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Spell::EffectTriggerMissileSpell(uint32 effect_idx)
|
void Spell::EffectTriggerMissileSpell(uint32 effect_idx)
|
||||||
|
|
|
||||||
|
|
@ -240,9 +240,18 @@ inline bool IsCasterSourceTarget(uint32 target)
|
||||||
inline bool IsSpellWithCasterSourceTargetsOnly(SpellEntry const* spellInfo)
|
inline bool IsSpellWithCasterSourceTargetsOnly(SpellEntry const* spellInfo)
|
||||||
{
|
{
|
||||||
for(int i = 0; i < 3; ++i)
|
for(int i = 0; i < 3; ++i)
|
||||||
if(uint32 target = spellInfo->EffectImplicitTargetA[i])
|
{
|
||||||
if(!IsCasterSourceTarget(target))
|
uint32 targetA = spellInfo->EffectImplicitTargetA[i];
|
||||||
|
if(targetA && !IsCasterSourceTarget(targetA))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
uint32 targetB = spellInfo->EffectImplicitTargetB[i];
|
||||||
|
if(targetB && !IsCasterSourceTarget(targetB))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if(!targetA && !targetB)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "8368"
|
#define REVISION_NR "8369"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue