mirror of
https://github.com/azerothcore/azerothcore-wotlk.git
synced 2025-12-06 02:30:26 -08:00
fix(Scripts/Northrend): Rework 'The Cleansing' quest (#23942)
Co-authored-by: offl <11556157+offl@users.noreply.github.com>
This commit is contained in:
parent
d6e03b45db
commit
e58683b78b
4 changed files with 246 additions and 127 deletions
|
|
@ -0,0 +1,89 @@
|
|||
--
|
||||
DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=-43351 AND `spell_effect`=50167 AND `type`=0;
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 43365 AND `ScriptName` = 'spell_the_cleansing_shrine_cast');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 43351 AND (`ScriptName` = 'spell_the_cleansing_cleansing_soul' OR `ScriptName` = 'spell_q11322_q11317_the_cleansing'));
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 50217 AND `ScriptName` = 'spell_the_cleansing_mirror_image_script_effect');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 50238 AND `ScriptName` = 'spell_the_cleansing_on_death_cast_on_master');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 39823 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 39825 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 40201 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 40203 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 40204 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 40205 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 40206 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 40207 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 40208 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 40210 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 40213 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 40217 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 40218 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 40233 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 40252 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 40352 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 50014 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 50023 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 50219 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 50221 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 50222 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 50223 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 53374 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 60807 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 60811 AND `ScriptName` = 'spell_gen_whisper_to_controller');
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(43365, 'spell_the_cleansing_shrine_cast'),
|
||||
(43351, 'spell_the_cleansing_cleansing_soul'),
|
||||
(50217, 'spell_the_cleansing_mirror_image_script_effect'),
|
||||
(50238, 'spell_the_cleansing_on_death_cast_on_master'),
|
||||
(39823, 'spell_gen_whisper_to_controller'),
|
||||
(39825, 'spell_gen_whisper_to_controller'),
|
||||
(40201, 'spell_gen_whisper_to_controller'),
|
||||
(40203, 'spell_gen_whisper_to_controller'),
|
||||
(40204, 'spell_gen_whisper_to_controller'),
|
||||
(40205, 'spell_gen_whisper_to_controller'),
|
||||
(40206, 'spell_gen_whisper_to_controller'),
|
||||
(40207, 'spell_gen_whisper_to_controller'),
|
||||
(40208, 'spell_gen_whisper_to_controller'),
|
||||
(40210, 'spell_gen_whisper_to_controller'),
|
||||
(40213, 'spell_gen_whisper_to_controller'),
|
||||
(40217, 'spell_gen_whisper_to_controller'),
|
||||
(40218, 'spell_gen_whisper_to_controller'),
|
||||
(40233, 'spell_gen_whisper_to_controller'),
|
||||
(40252, 'spell_gen_whisper_to_controller'),
|
||||
(40352, 'spell_gen_whisper_to_controller'),
|
||||
(50014, 'spell_gen_whisper_to_controller'),
|
||||
(50023, 'spell_gen_whisper_to_controller'),
|
||||
(50219, 'spell_gen_whisper_to_controller'),
|
||||
(50221, 'spell_gen_whisper_to_controller'),
|
||||
(50222, 'spell_gen_whisper_to_controller'),
|
||||
(50223, 'spell_gen_whisper_to_controller'),
|
||||
(53374, 'spell_gen_whisper_to_controller'),
|
||||
(60807, 'spell_gen_whisper_to_controller'),
|
||||
(60811, 'spell_gen_whisper_to_controller');
|
||||
|
||||
DELETE FROM `creature_text` WHERE `CreatureID` = 27959;
|
||||
|
||||
UPDATE `creature_template` SET `ScriptName` = '', `AIName` = 'SmartAI' WHERE `entry` = 27959;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` = 27959 AND `source_type` = 0;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` = 2795900 AND `source_type` = 9;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`event_param5`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
|
||||
(27959, 0, 0, 0, 37, 0, 100, 0, 0, 0, 0, 0, 0, 116, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - On Initialize - Set Corpse Delay to 2s'),
|
||||
(27959, 0, 1, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 80, 2795900, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - On Respawn - Run Script'),
|
||||
(27959, 0, 2, 0, 2, 0, 100, 1, 0, 50, 0, 0, 0, 11, 50222, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - Between 0-50% Health - Cast \'The Cleansing: Your Inner Turmoil`s Whisper to Controller - On Health 50%\' (No Repeat)'),
|
||||
(27959, 0, 3, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 11, 50223, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - On Just Died - Cast \'The Cleansing: Your Inner Turmoil`s Whisper to Controller - On Death\''),
|
||||
(27959, 0, 4, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 11, 50238, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - On Just Died - Cast \'The Cleansing: Your Inner Turmoil`s On Death Cast on Master\''),
|
||||
-- It has SPELL_ATTR3_DEATH_PERSISTENT but actually is removed after death, maybe not manually
|
||||
-- Kinda odd because it makes creature invisible, but Copy Weapon auras are not removed, so only weapons are visible without body
|
||||
(27959, 0, 5, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 28, 50218, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - On Just Died - Remove Aura \'The Cleansing: Your Inner Turmoil`s Mirror Image Aura\''),
|
||||
(2795900, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 11, 50217, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - Actionlist - Cast \'The Cleansing: Script Effect Player Cast Mirror Image\''),
|
||||
(2795900, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 11, 41408, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - Actionlist - Cast \'Shadowform\''),
|
||||
(2795900, 9, 2, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - Actionlist - Set Orientation Owner Or Summoner'),
|
||||
(2795900, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 11, 50219, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - Actionlist - Cast \'The Cleansing: Your Inner Turmoil`s Whisper to Controller - Spawn 01\''),
|
||||
(2795900, 9, 4, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - Actionlist - Play Emote 1'),
|
||||
(2795900, 9, 5, 0, 0, 0, 100, 0, 6000, 6000, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - Actionlist - Set Orientation Owner Or Summoner'),
|
||||
(2795900, 9, 6, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 11, 50221, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - Actionlist - Cast \'The Cleansing: Your Inner Turmoil`s Whisper to Controller - Spawn 02\''),
|
||||
(2795900, 9, 7, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 5, 25, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - Actionlist - Play Emote 25'),
|
||||
-- Yes, again
|
||||
(2795900, 9, 8, 0, 0, 0, 100, 0, 6000, 6000, 0, 0, 0, 11, 50217, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - Actionlist - Cast \'The Cleansing: Script Effect Player Cast Mirror Image\''),
|
||||
(2795900, 9, 9, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 19, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - Actionlist - Remove Flags Immune To NPC\'s'),
|
||||
(2795900, 9, 10, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Your Inner Turmoil - Actionlist - Start Attacking');
|
||||
|
|
@ -66,109 +66,6 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
// The cleansing
|
||||
enum TurmoilTexts
|
||||
{
|
||||
SAY_TURMOIL_0 = 0,
|
||||
SAY_TURMOIL_1 = 1,
|
||||
SAY_TURMOIL_HALF_HP = 2,
|
||||
SAY_TURMOIL_DEATH = 3,
|
||||
};
|
||||
|
||||
class npc_your_inner_turmoil : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_your_inner_turmoil() : CreatureScript("npc_your_inner_turmoil") { }
|
||||
|
||||
struct npc_your_inner_turmoilAI : public ScriptedAI
|
||||
{
|
||||
npc_your_inner_turmoilAI(Creature* creature) : ScriptedAI(creature) {}
|
||||
|
||||
uint32 timer;
|
||||
short phase;
|
||||
bool health50;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
timer = 0;
|
||||
phase = 0;
|
||||
health50 = false;
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (timer >= 6000 && phase < 2)
|
||||
{
|
||||
phase++;
|
||||
setphase(phase);
|
||||
timer = 0;
|
||||
}
|
||||
|
||||
timer += diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
void DamageTaken(Unit*, uint32& /*damage*/, DamageEffectType /*damagetype*/, SpellSchoolMask /*damageSchoolMask*/) override
|
||||
{
|
||||
if (HealthBelowPct(50) && !health50)
|
||||
{
|
||||
if (TempSummon const* tempSummon = me->ToTempSummon())
|
||||
{
|
||||
if (WorldObject* summoner = tempSummon->GetSummonerUnit())
|
||||
{
|
||||
Talk(SAY_TURMOIL_HALF_HP, summoner);
|
||||
}
|
||||
}
|
||||
|
||||
health50 = true;
|
||||
}
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (TempSummon const* tempSummon = me->ToTempSummon())
|
||||
{
|
||||
if (WorldObject* summoner = tempSummon->GetSummonerUnit())
|
||||
{
|
||||
Talk(SAY_TURMOIL_DEATH, summoner);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void setphase(short newPhase)
|
||||
{
|
||||
Unit* summoner = me->ToTempSummon() ? me->ToTempSummon()->GetSummonerUnit() : nullptr;
|
||||
if (!summoner || !summoner->IsPlayer())
|
||||
return;
|
||||
|
||||
switch (newPhase)
|
||||
{
|
||||
case 1:
|
||||
Talk(SAY_TURMOIL_0, summoner->ToPlayer());
|
||||
return;
|
||||
case 2:
|
||||
{
|
||||
Talk(SAY_TURMOIL_1, summoner->ToPlayer());
|
||||
me->SetLevel(summoner->GetLevel());
|
||||
me->SetFaction(FACTION_MONSTER);
|
||||
if (me->GetExactDist(summoner) < 50.0f)
|
||||
{
|
||||
me->UpdatePosition(summoner->GetPositionX(), summoner->GetPositionY(), summoner->GetPositionZ(), 0.0f, true);
|
||||
summoner->CastSpell(me, 50218, true); // clone caster
|
||||
AttackStart(summoner);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_your_inner_turmoilAI(creature);
|
||||
}
|
||||
};
|
||||
|
||||
/*######
|
||||
## npc_apothecary_hanes
|
||||
######*/
|
||||
|
|
@ -457,13 +354,145 @@ class spell_hawk_hunting : public SpellScript
|
|||
}
|
||||
};
|
||||
|
||||
/*######
|
||||
## Quest 11317, 11322: The Cleansing
|
||||
######*/
|
||||
|
||||
enum TheCleansing
|
||||
{
|
||||
SPELL_CLEANSING_SOUL = 43351,
|
||||
SPELL_SUMMON_INNER_TURMOIL = 50167,
|
||||
SPELL_RECENT_MEDITATION = 61720,
|
||||
SPELL_MIRROR_IMAGE_AURA = 50218,
|
||||
|
||||
QUEST_THE_CLEANSING_H = 11317,
|
||||
QUEST_THE_CLEANSING_A = 11322
|
||||
};
|
||||
|
||||
// 43365 - The Cleansing: Shrine Cast
|
||||
class spell_the_cleansing_shrine_cast : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_the_cleansing_shrine_cast);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_RECENT_MEDITATION, SPELL_CLEANSING_SOUL }) &&
|
||||
sObjectMgr->GetQuestTemplate(QUEST_THE_CLEANSING_H) &&
|
||||
sObjectMgr->GetQuestTemplate(QUEST_THE_CLEANSING_A);
|
||||
}
|
||||
|
||||
SpellCastResult CheckCast()
|
||||
{
|
||||
// Error is correct for quest check but may be not correct for aura and this may be a wrong place to send error
|
||||
if (Player* target = GetExplTargetUnit()->ToPlayer())
|
||||
{
|
||||
if (target->HasAura(SPELL_RECENT_MEDITATION) || (!(target->GetQuestStatus(QUEST_THE_CLEANSING_H) == QUEST_STATUS_INCOMPLETE ||
|
||||
target->GetQuestStatus(QUEST_THE_CLEANSING_A) == QUEST_STATUS_INCOMPLETE)))
|
||||
{
|
||||
Spell::SendCastResult(target, GetSpellInfo(), 0, SPELL_FAILED_FIZZLE);
|
||||
return SPELL_FAILED_FIZZLE;
|
||||
}
|
||||
}
|
||||
return SPELL_CAST_OK;
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
GetHitUnit()->CastSpell(GetHitUnit(), SPELL_CLEANSING_SOUL, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnCheckCast += SpellCheckCastFn(spell_the_cleansing_shrine_cast::CheckCast);
|
||||
OnEffectHitTarget += SpellEffectFn(spell_the_cleansing_shrine_cast::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
// 43351 - Cleansing Soul
|
||||
class spell_the_cleansing_cleansing_soul : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_the_cleansing_cleansing_soul);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_SUMMON_INNER_TURMOIL, SPELL_RECENT_MEDITATION });
|
||||
}
|
||||
|
||||
void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
GetTarget()->SetStandState(UNIT_STAND_STATE_SIT);
|
||||
}
|
||||
|
||||
void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
target->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
target->CastSpell(target, SPELL_SUMMON_INNER_TURMOIL, true);
|
||||
target->CastSpell(target, SPELL_RECENT_MEDITATION, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
AfterEffectApply += AuraEffectApplyFn(spell_the_cleansing_cleansing_soul::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
AfterEffectRemove += AuraEffectRemoveFn(spell_the_cleansing_cleansing_soul::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
}
|
||||
};
|
||||
|
||||
// 50217 - The Cleansing: Script Effect Player Cast Mirror Image
|
||||
class spell_the_cleansing_mirror_image_script_effect : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_the_cleansing_mirror_image_script_effect);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_MIRROR_IMAGE_AURA });
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
GetHitUnit()->CastSpell(GetHitUnit(), SPELL_MIRROR_IMAGE_AURA, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_the_cleansing_mirror_image_script_effect::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
// 50238 - The Cleansing: Your Inner Turmoil's On Death Cast on Master
|
||||
class spell_the_cleansing_on_death_cast_on_master : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_the_cleansing_on_death_cast_on_master);
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) });
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (Unit* caster = GetCaster())
|
||||
if (TempSummon* casterSummon = caster->ToTempSummon())
|
||||
if (Unit* summoner = casterSummon->GetSummonerUnit())
|
||||
summoner->CastSpell(summoner, GetSpellInfo()->Effects[EFFECT_0].CalcValue(), true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHit += SpellEffectFn(spell_the_cleansing_on_death_cast_on_master::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_howling_fjord()
|
||||
{
|
||||
new npc_attracted_reef_bull();
|
||||
new npc_your_inner_turmoil();
|
||||
new npc_apothecary_hanes();
|
||||
new npc_plaguehound_tracker();
|
||||
new npc_razael_and_lyana();
|
||||
RegisterCreatureAI(npc_rodin_lightning_enabler);
|
||||
RegisterSpellScript(spell_hawk_hunting);
|
||||
RegisterSpellScript(spell_the_cleansing_shrine_cast);
|
||||
RegisterSpellScript(spell_the_cleansing_cleansing_soul);
|
||||
RegisterSpellScript(spell_the_cleansing_mirror_image_script_effect);
|
||||
RegisterSpellScript(spell_the_cleansing_on_death_cast_on_master);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5673,6 +5673,29 @@ class spell_gen_bm_on : public SpellScript
|
|||
}
|
||||
};
|
||||
|
||||
class spell_gen_whisper_to_controller : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_gen_whisper_to_controller);
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return sObjectMgr->GetBroadcastText(uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()));
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (Unit* caster = GetCaster())
|
||||
if (TempSummon* casterSummon = caster->ToTempSummon())
|
||||
if (Player* target = casterSummon->GetSummonerUnit()->ToPlayer())
|
||||
casterSummon->Unit::Whisper(uint32(GetEffectValue()), target, false);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHit += SpellEffectFn(spell_gen_whisper_to_controller::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_generic_spell_scripts()
|
||||
{
|
||||
RegisterSpellScript(spell_silithyst);
|
||||
|
|
@ -5846,4 +5869,5 @@ void AddSC_generic_spell_scripts()
|
|||
RegisterSpellScript(spell_gen_invis_on);
|
||||
RegisterSpellScript(spell_gen_bm_on);
|
||||
RegisterSpellScript(spell_gen_bm_off);
|
||||
RegisterSpellScript(spell_gen_whisper_to_controller);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -247,28 +247,6 @@ class spell_q10525_vision_guide : public AuraScript
|
|||
}
|
||||
};
|
||||
|
||||
class spell_q11322_q11317_the_cleansing : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_q11322_q11317_the_cleansing)
|
||||
|
||||
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
Unit* ar = GetCaster();
|
||||
if (ar && ar->ToPlayer())
|
||||
{
|
||||
if (ar->ToPlayer()->GetQuestStatus(11317) == QUEST_STATUS_INCOMPLETE || ar->ToPlayer()->GetQuestStatus(11322) == QUEST_STATUS_INCOMPLETE)
|
||||
ar->SummonCreature(27959, 3032.0f, -5095.0f, 723.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000);
|
||||
|
||||
ar->SetStandState(UNIT_STAND_STATE_SIT);
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectApply += AuraEffectApplyFn(spell_q11322_q11317_the_cleansing::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_q10714_on_spirits_wings : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_q10714_on_spirits_wings);
|
||||
|
|
@ -2499,7 +2477,6 @@ void AddSC_quest_spell_scripts()
|
|||
RegisterSpellScript(spell_q12014_steady_as_a_rock);
|
||||
RegisterSpellAndAuraScriptPair(spell_q11026_a11051_banish_the_demons, spell_q11026_a11051_banish_the_demons_aura);
|
||||
RegisterSpellScript(spell_q10525_vision_guide);
|
||||
RegisterSpellScript(spell_q11322_q11317_the_cleansing);
|
||||
RegisterSpellScript(spell_q10714_on_spirits_wings);
|
||||
RegisterSpellScript(spell_q10720_the_smallest_creature);
|
||||
RegisterSpellScript(spell_q13086_last_line_of_defence);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue