diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 41a9d77c2..ed28e00c0 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -1152,6 +1152,8 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target) // Call scripted function for AI if this spell is casted by a creature if (m_caster->GetTypeId() == TYPEID_UNIT && ((Creature*)m_caster)->AI()) ((Creature*)m_caster)->AI()->SpellHitTarget(unit, m_spellInfo); + if (real_caster && real_caster != m_caster && real_caster->GetTypeId() == TYPEID_UNIT && ((Creature*)real_caster)->AI()) + ((Creature*)real_caster)->AI()->SpellHitTarget(unit, m_spellInfo); } void Spell::DoSpellHitOnUnit(Unit *unit, uint32 effectMask) diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 849676172..ccb8a77e6 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -4849,6 +4849,8 @@ void Spell::DoSummon(SpellEffectIndex eff_idx) if (m_caster->GetTypeId() == TYPEID_UNIT && ((Creature*)m_caster)->AI()) ((Creature*)m_caster)->AI()->JustSummoned((Creature*)spawnCreature); + if (m_originalCaster && m_originalCaster != m_caster && m_originalCaster->GetTypeId() == TYPEID_UNIT && ((Creature*)m_originalCaster)->AI()) + ((Creature*)m_originalCaster)->AI()->JustSummoned((Creature*)spawnCreature); } void Spell::EffectLearnSpell(SpellEffectIndex eff_idx) @@ -5150,7 +5152,7 @@ void Spell::DoSummonWild(SpellEffectIndex eff_idx, uint32 forceFaction) } } - if (Creature *summon = m_caster->SummonCreature(creature_entry, px, py, pz, m_caster->GetOrientation(), summonType, m_duration)) + if (Creature* summon = m_caster->SummonCreature(creature_entry, px, py, pz, m_caster->GetOrientation(), summonType, m_duration)) { summon->SetUInt32Value(UNIT_CREATED_BY_SPELL, m_spellInfo->Id); @@ -5160,6 +5162,10 @@ void Spell::DoSummonWild(SpellEffectIndex eff_idx, uint32 forceFaction) if(forceFaction) summon->setFaction(forceFaction); + + // Notify original caster if not done already + if (m_originalCaster && m_originalCaster != m_caster && m_originalCaster->GetTypeId() == TYPEID_UNIT && ((Creature*)m_originalCaster)->AI()) + ((Creature*)m_originalCaster)->AI()->JustSummoned(summon); } } } @@ -5286,6 +5292,8 @@ void Spell::DoSummonGuardian(SpellEffectIndex eff_idx, uint32 forceFaction) // Notify Summoner if (m_caster->GetTypeId() == TYPEID_UNIT && ((Creature*)m_caster)->AI()) ((Creature*)m_caster)->AI()->JustSummoned(spawnCreature); + if (m_originalCaster && m_originalCaster != m_caster && m_originalCaster->GetTypeId() == TYPEID_UNIT && ((Creature*)m_originalCaster)->AI()) + ((Creature*)m_originalCaster)->AI()->JustSummoned(spawnCreature); } } @@ -6273,6 +6281,8 @@ void Spell::EffectSummonObjectWild(SpellEffectIndex eff_idx) if (m_caster->GetTypeId() == TYPEID_UNIT && ((Creature*)m_caster)->AI()) ((Creature*)m_caster)->AI()->JustSummoned(pGameObj); + if (m_originalCaster && m_originalCaster != m_caster && m_originalCaster->GetTypeId() == TYPEID_UNIT && ((Creature*)m_originalCaster)->AI()) + ((Creature*)m_originalCaster)->AI()->JustSummoned(pGameObj); } void Spell::EffectScriptEffect(SpellEffectIndex eff_idx) @@ -8421,6 +8431,8 @@ void Spell::EffectSummonObject(SpellEffectIndex eff_idx) if (m_caster->GetTypeId() == TYPEID_UNIT && ((Creature*)m_caster)->AI()) ((Creature*)m_caster)->AI()->JustSummoned(pGameObj); + if (m_originalCaster && m_originalCaster != m_caster && m_originalCaster->GetTypeId() == TYPEID_UNIT && ((Creature*)m_originalCaster)->AI()) + ((Creature*)m_originalCaster)->AI()->JustSummoned(pGameObj); } void Spell::EffectResurrect(SpellEffectIndex /*eff_idx*/) @@ -8750,6 +8762,8 @@ void Spell::DoSummonCritter(SpellEffectIndex eff_idx, uint32 forceFaction) // Notify Summoner if (m_caster->GetTypeId() == TYPEID_UNIT && ((Creature*)m_caster)->AI()) ((Creature*)m_caster)->AI()->JustSummoned(critter); + if (m_originalCaster && m_originalCaster != m_caster && m_originalCaster->GetTypeId() == TYPEID_UNIT && ((Creature*)m_originalCaster)->AI()) + ((Creature*)m_originalCaster)->AI()->JustSummoned(critter); } void Spell::EffectKnockBack(SpellEffectIndex eff_idx) @@ -9070,6 +9084,8 @@ void Spell::EffectTransmitted(SpellEffectIndex eff_idx) if (m_caster->GetTypeId() == TYPEID_UNIT && ((Creature*)m_caster)->AI()) ((Creature*)m_caster)->AI()->JustSummoned(pGameObj); + if (m_originalCaster && m_originalCaster != m_caster && m_originalCaster->GetTypeId() == TYPEID_UNIT && ((Creature*)m_originalCaster)->AI()) + ((Creature*)m_originalCaster)->AI()->JustSummoned(pGameObj); } void Spell::EffectProspecting(SpellEffectIndex /*eff_idx*/) diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index a8f3feabf..269351e4d 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "11878" + #define REVISION_NR "11879" #endif // __REVISION_NR_H__