aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp8
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp111
2 files changed, 109 insertions, 10 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 80d326e2c7a..ac3f12ed8c5 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -4114,14 +4114,6 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex)
}
break;
}
- case 66545: //Summon Memory
- {
- uint8 uiRandom = urand(0, 25);
- uint32 uiSpells[26] = {66704, 66705, 66706, 66707, 66709, 66710, 66711, 66712, 66713, 66714, 66715, 66708, 66708, 66691, 66692, 66694, 66695, 66696, 66697, 66698, 66699, 66700, 66701, 66702, 66703, 66543};
-
- m_caster->CastSpell(m_caster, uiSpells[uiRandom], true);
- break;
- }
case 45668: // Ultra-Advanced Proto-Typical Shortening Blaster
{
if (!unitTarget || unitTarget->GetTypeId() != TYPEID_UNIT)
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
index 9bc9afa4fa8..5a1bf00a3fc 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
@@ -61,7 +61,7 @@ enum Spells
SPELL_RADIANCE = 66935,
SPELL_VENGEANCE = 66865,
- //Paletress
+ // Paletress
SPELL_SMITE = 66536,
SPELL_SMITE_H = 67674,
SPELL_HOLY_FIRE = 66538,
@@ -73,7 +73,34 @@ enum Spells
SPELL_CONFESS = 66680,
SPELL_SUMMON_MEMORY = 66545,
- //Memory
+ // Merory of X (Summon)
+ SPELL_MEMORY_ALGALON = 66715,
+ SPELL_MEMORY_ARCHIMONDE = 66715,
+ SPELL_MEMORY_CHROMAGGUS = 66697,
+ SPELL_MEMORY_CYANIGOSA = 66697,
+ SPELL_MEMORY_DELRISSA = 66706,
+ SPELL_MEMORY_ECK = 66710,
+ SPELL_MEMORY_ENTROPIUS = 66707,
+ SPELL_MEMORY_GRUUL = 66702,
+ SPELL_MEMORY_HAKKAR = 66698,
+ SPELL_MEMORY_HEIGAN = 66712,
+ SPELL_MEMORY_HEROD = 66694,
+ SPELL_MEMORY_HOGGER = 66543,
+ SPELL_MEMORY_IGNIS = 66713,
+ SPELL_MEMORY_ILLIDAN = 66705,
+ SPELL_MEMORY_INGVAR = 66708,
+ SPELL_MEMORY_KALITHRESH = 66700,
+ SPELL_MEMORY_LUCIFRON = 66695,
+ SPELL_MEMORY_MALCHEZAAR = 66701,
+ SPELL_MEMORY_MUTANUS = 66692,
+ SPELL_MEMORY_ONYXIA = 66711,
+ SPELL_MEMORY_THUNDERAAN = 66696,
+ SPELL_MEMORY_VANCLEEF = 66691,
+ SPELL_MEMORY_VASHJ = 66703,
+ SPELL_MEMORY_VEKNILASH = 66699,
+ SPELL_MEMORY_VEZAX = 66714,
+
+ // Memory
SPELL_OLD_WOUNDS = 66620,
SPELL_OLD_WOUNDS_H = 67679,
SPELL_SHADOWS_PAST = 66619,
@@ -566,6 +593,85 @@ public:
}
};
+uint32 const memorySpellId[25] =
+{
+ SPELL_MEMORY_ALGALON,
+ SPELL_MEMORY_ARCHIMONDE,
+ SPELL_MEMORY_CHROMAGGUS,
+ SPELL_MEMORY_CYANIGOSA,
+ SPELL_MEMORY_DELRISSA,
+ SPELL_MEMORY_ECK,
+ SPELL_MEMORY_ENTROPIUS,
+ SPELL_MEMORY_GRUUL,
+ SPELL_MEMORY_HAKKAR,
+ SPELL_MEMORY_HEIGAN,
+ SPELL_MEMORY_HEROD,
+ SPELL_MEMORY_HOGGER,
+ SPELL_MEMORY_IGNIS,
+ SPELL_MEMORY_ILLIDAN,
+ SPELL_MEMORY_INGVAR,
+ SPELL_MEMORY_KALITHRESH,
+ SPELL_MEMORY_LUCIFRON,
+ SPELL_MEMORY_MALCHEZAAR,
+ SPELL_MEMORY_MUTANUS,
+ SPELL_MEMORY_ONYXIA,
+ SPELL_MEMORY_THUNDERAAN,
+ SPELL_MEMORY_VANCLEEF,
+ SPELL_MEMORY_VASHJ,
+ SPELL_MEMORY_VEKNILASH,
+ SPELL_MEMORY_VEZAX
+};
+
+// 66545 - Summon Memory
+class spell_summon_memory : public SpellScriptLoader
+{
+ public:
+ spell_summon_memory() : SpellScriptLoader("spell_summon_memory") { }
+
+ class spell_summon_memory_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_summon_memory_SpellScript);
+
+
+ bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
+ {
+ for (uint8 i = 0; i < 25; ++i)
+ if (!sSpellMgr->GetSpellInfo(memorySpellId[i]))
+ return false;
+ return true;
+ }
+
+ void FilterTargets(std::list<WorldObject*>& targets)
+ {
+ if (targets.empty())
+ return;
+
+ WorldObject* target = Trinity::Containers::SelectRandomContainerElement(targets);
+ targets.clear();
+ targets.push_back(target);
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+
+ if (Player* target = GetHitPlayer())
+ caster->CastSpell(target, memorySpellId[urand(0, 24)], true);
+ }
+
+ void Register() OVERRIDE
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_summon_memory_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
+ OnEffectHitTarget += SpellEffectFn(spell_summon_memory_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+ };
+
+ SpellScript* GetSpellScript() const OVERRIDE
+ {
+ return new spell_summon_memory_SpellScript();
+ }
+};
+
void AddSC_boss_argent_challenge()
{
new boss_eadric();
@@ -573,4 +679,5 @@ void AddSC_boss_argent_challenge()
new boss_paletress();
new npc_memory();
new npc_argent_soldier();
+ new spell_summon_memory();
}