diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 324436441..5ad1104d1 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -5557,6 +5557,15 @@ void Spell::EffectScriptEffect(SpellEffectIndex eff_idx) unitTarget->CastSpell(unitTarget, 41131, true); break; } + case 43365: // The Cleansing: Shrine Cast + { + if (m_caster->GetTypeId() != TYPEID_PLAYER) + return; + + // Script Effect Player Cast Mirror Image + m_caster->CastSpell(m_caster, 50217, true); + return; + } case 44455: // Character Script Effect Reverse Cast { if (!unitTarget || unitTarget->GetTypeId() != TYPEID_UNIT) @@ -5753,6 +5762,60 @@ void Spell::EffectScriptEffect(SpellEffectIndex eff_idx) // Torture the Torturer: High Executor's Branding Iron Impact unitTarget->CastSpell(unitTarget, 48614, true); return; + case 50217: // The Cleansing: Script Effect Player Cast Mirror Image + { + // Summon Your Inner Turmoil + m_caster->CastSpell(m_caster, 50167, true); + + // Spell 50218 has TARGET_SCRIPT, but other wild summons near may exist, and then target can become wrong + // Only way to make this safe is to get the actual summoned by m_caster + + // Your Inner Turmoil's Mirror Image Aura + m_caster->CastSpell(m_caster, 50218, true); + + return; + } + case 50218: // The Cleansing: Your Inner Turmoil's Mirror Image Aura + { + if (!m_originalCaster || m_originalCaster->GetTypeId() != TYPEID_PLAYER || !unitTarget) + return; + + // determine if and what weapons can be copied + switch(eff_idx) + { + case EFFECT_INDEX_1: + if (((Player*)m_originalCaster)->GetWeaponForAttack(BASE_ATTACK)) + unitTarget->CastSpell(m_originalCaster, m_spellInfo->CalculateSimpleValue(eff_idx), true); + + return; + case EFFECT_INDEX_2: + if (((Player*)m_originalCaster)->GetWeaponForAttack(OFF_ATTACK)) + unitTarget->CastSpell(m_originalCaster, m_spellInfo->CalculateSimpleValue(eff_idx), true); + + return; + default: + return; + } + return; + } + case 50238: // The Cleansing: Your Inner Turmoil's On Death Cast on Master + { + if (m_caster->GetTypeId() != TYPEID_UNIT) + return; + + if (((Creature*)m_caster)->isTemporarySummon()) + { + TemporarySummon* pSummon = (TemporarySummon*)m_caster; + + if (pSummon->GetSummonerGuid().IsPlayer()) + { + if (Player* pSummoner = sObjectMgr.GetPlayer(pSummon->GetSummonerGuid())) + pSummoner->CastSpell(pSummoner, m_spellInfo->CalculateSimpleValue(eff_idx), true); + } + } + + return; + } case 51770: // Emblazon Runeblade { Unit* caster = GetAffectiveCaster(); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 5a5dc6c42..93795537c 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 "10003" + #define REVISION_NR "10004" #endif // __REVISION_NR_H__