mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-08 15:58:04 +00:00
fix(Scripts/ScarletEnclave): Script Recall Eye of Acherus & fix Summo… (#22205)
This commit is contained in:
@@ -0,0 +1,10 @@
|
|||||||
|
-- Eye of Acherus
|
||||||
|
DELETE FROM `creature_template_spell` WHERE (`CreatureID` = 28511);
|
||||||
|
INSERT INTO `creature_template_spell` (`CreatureID`, `Index`, `Spell`, `VerifiedBuild`) VALUES
|
||||||
|
(28511, 0, 51859, 0),
|
||||||
|
(28511, 1, 51904, 0),
|
||||||
|
(28511, 2, 52006, 0),
|
||||||
|
(28511, 4, 52694, 0);
|
||||||
|
|
||||||
|
DELETE FROM `spell_script_names` WHERE `spell_id`=52694 AND `ScriptName`='spell_q12641_death_comes_from_on_high_recall_eye';
|
||||||
|
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (52694, 'spell_q12641_death_comes_from_on_high_recall_eye');
|
||||||
@@ -62,14 +62,14 @@ struct npc_eye_of_acherus : public ScriptedAI
|
|||||||
{
|
{
|
||||||
npc_eye_of_acherus(Creature* creature) : ScriptedAI(creature)
|
npc_eye_of_acherus(Creature* creature) : ScriptedAI(creature)
|
||||||
{
|
{
|
||||||
creature->SetDisplayFromModel(0);
|
|
||||||
creature->SetReactState(REACT_PASSIVE);
|
creature->SetReactState(REACT_PASSIVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitializeAI() override
|
void InitializeAI() override
|
||||||
{
|
{
|
||||||
DoCastSelf(SPELL_ROOT_SELF);
|
DoCastSelf(SPELL_ROOT_SELF); // Use SetControlled
|
||||||
DoCastSelf(SPELL_EYE_OF_ACHERUS_VISUAL);
|
DoCastSelf(SPELL_EYE_OF_ACHERUS_VISUAL);
|
||||||
|
DoCastSelf(SPELL_EYE_OF_ACHERUS_FLIGHT);
|
||||||
_events.ScheduleEvent(EVENT_ANNOUNCE_LAUNCH_TO_DESTINATION, 400ms);
|
_events.ScheduleEvent(EVENT_ANNOUNCE_LAUNCH_TO_DESTINATION, 400ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,10 +126,9 @@ struct npc_eye_of_acherus : public ScriptedAI
|
|||||||
case EVENT_GRANT_CONTROL:
|
case EVENT_GRANT_CONTROL:
|
||||||
if (Unit* owner = me->GetCharmerOrOwner())
|
if (Unit* owner = me->GetCharmerOrOwner())
|
||||||
{
|
{
|
||||||
Talk(SAY_EYE_UNDER_CONTROL, owner);
|
Talk(SAY_EYE_UNDER_CONTROL, owner); // This is wrong, should be when last pointId is reached.
|
||||||
}
|
}
|
||||||
me->RemoveAurasDueToSpell(SPELL_ROOT_SELF);
|
me->RemoveAurasDueToSpell(SPELL_ROOT_SELF);
|
||||||
DoCastSelf(SPELL_EYE_OF_ACHERUS_FLIGHT);
|
|
||||||
me->RemoveAurasDueToSpell(SPELL_EYE_OF_ACHERUS_FLIGHT_BOOST);
|
me->RemoveAurasDueToSpell(SPELL_EYE_OF_ACHERUS_FLIGHT_BOOST);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -159,23 +158,24 @@ private:
|
|||||||
|
|
||||||
enum DeathComesFromOnHigh
|
enum DeathComesFromOnHigh
|
||||||
{
|
{
|
||||||
SUMMON_GHOULS_ON_SCARLET_CRUSADE = 54522
|
SPELL_CALL_OF_THE_DEAD = 51900
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 51904 - Summon Ghouls On Scarlet Crusade
|
||||||
class spell_q12641_death_comes_from_on_high_summon_ghouls : public SpellScript
|
class spell_q12641_death_comes_from_on_high_summon_ghouls : public SpellScript
|
||||||
{
|
{
|
||||||
PrepareSpellScript(spell_q12641_death_comes_from_on_high_summon_ghouls);
|
PrepareSpellScript(spell_q12641_death_comes_from_on_high_summon_ghouls);
|
||||||
|
|
||||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||||
{
|
{
|
||||||
return ValidateSpellInfo({ SUMMON_GHOULS_ON_SCARLET_CRUSADE });
|
return ValidateSpellInfo({ SPELL_CALL_OF_THE_DEAD });
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleScriptEffect(SpellEffIndex effIndex)
|
void HandleScriptEffect(SpellEffIndex effIndex)
|
||||||
{
|
{
|
||||||
PreventHitEffect(effIndex);
|
PreventHitEffect(effIndex);
|
||||||
if (Unit* target = GetHitUnit())
|
if (Unit* target = GetHitUnit())
|
||||||
GetCaster()->CastSpell(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), SUMMON_GHOULS_ON_SCARLET_CRUSADE, true);
|
target->CastSpell(target, SPELL_CALL_OF_THE_DEAD, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Register() override
|
void Register() override
|
||||||
@@ -184,6 +184,35 @@ class spell_q12641_death_comes_from_on_high_summon_ghouls : public SpellScript
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 52694 - Recall Eye of Acherus
|
||||||
|
class spell_q12641_death_comes_from_on_high_recall_eye : public SpellScript
|
||||||
|
{
|
||||||
|
PrepareSpellScript(spell_q12641_death_comes_from_on_high_recall_eye);
|
||||||
|
|
||||||
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||||
|
{
|
||||||
|
return ValidateSpellInfo({ SPELL_THE_EYE_OF_ACHERUS });
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleScriptEffect(SpellEffIndex effIndex)
|
||||||
|
{
|
||||||
|
PreventHitEffect(effIndex);
|
||||||
|
Unit* caster = GetCaster();
|
||||||
|
Unit* owner = caster->GetCharmerOrOwner();
|
||||||
|
|
||||||
|
if (!caster || !owner)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (owner->HasAura(SPELL_THE_EYE_OF_ACHERUS))
|
||||||
|
owner->RemoveAurasDueToSpell(SPELL_THE_EYE_OF_ACHERUS);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Register() override
|
||||||
|
{
|
||||||
|
OnEffectHitTarget += SpellEffectFn(spell_q12641_death_comes_from_on_high_recall_eye::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
enum deathsChallenge
|
enum deathsChallenge
|
||||||
{
|
{
|
||||||
SPELL_DUEL = 52996,
|
SPELL_DUEL = 52996,
|
||||||
@@ -1302,6 +1331,7 @@ void AddSC_the_scarlet_enclave_c1()
|
|||||||
// Ours
|
// Ours
|
||||||
RegisterCreatureAI(npc_eye_of_acherus);
|
RegisterCreatureAI(npc_eye_of_acherus);
|
||||||
RegisterSpellScript(spell_q12641_death_comes_from_on_high_summon_ghouls);
|
RegisterSpellScript(spell_q12641_death_comes_from_on_high_summon_ghouls);
|
||||||
|
RegisterSpellScript(spell_q12641_death_comes_from_on_high_recall_eye);
|
||||||
new npc_death_knight_initiate();
|
new npc_death_knight_initiate();
|
||||||
RegisterSpellScript(spell_item_gift_of_the_harvester);
|
RegisterSpellScript(spell_item_gift_of_the_harvester);
|
||||||
RegisterSpellScript(spell_q12698_the_gift_that_keeps_on_giving);
|
RegisterSpellScript(spell_q12698_the_gift_that_keeps_on_giving);
|
||||||
|
|||||||
Reference in New Issue
Block a user