diff options
author | offl <11556157+offl@users.noreply.github.com> | 2021-03-20 17:00:12 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-03-07 20:59:28 +0100 |
commit | f87aa64a14b321ebbc41f320a7d261a3a0f58797 (patch) | |
tree | 5ae8c62372fa54d50a3f6a3bfe71b5f79d2a5731 | |
parent | 77d320b9fc881f196789bfb99ef539c95311ad55 (diff) |
Scripts/Ahn'kahet: Herald Volazj texts (#26202)
Co-authored-by: Giacomo Pozzoni <giacomopoz@gmail.com>
(cherry picked from commit 1a624cad36f3067481ca54563a322cb85f90ad11)
-rw-r--r-- | sql/updates/world/master/2022_03_07_19_world_2021_03_20_00_world.sql | 29 | ||||
-rw-r--r-- | src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp | 144 |
2 files changed, 149 insertions, 24 deletions
diff --git a/sql/updates/world/master/2022_03_07_19_world_2021_03_20_00_world.sql b/sql/updates/world/master/2022_03_07_19_world_2021_03_20_00_world.sql new file mode 100644 index 00000000000..064b2adba20 --- /dev/null +++ b/sql/updates/world/master/2022_03_07_19_world_2021_03_20_00_world.sql @@ -0,0 +1,29 @@ +-- +DELETE FROM `spell_script_names` WHERE `spell_id` IN (60291,60292,60293,60294,60295,60296,60297) AND `ScriptName` = "spell_volazj_whisper"; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(60291,"spell_volazj_whisper"), +(60292,"spell_volazj_whisper"), +(60293,"spell_volazj_whisper"), +(60294,"spell_volazj_whisper"), +(60295,"spell_volazj_whisper"), +(60296,"spell_volazj_whisper"), +(60297,"spell_volazj_whisper"); + +-- SLAY_ based on https://wow.gamepedia.com/Herald_Volazj and https://wow.gamepedia.com/Shath%27Yar no sniffs for obvious reasons +DELETE FROM `creature_text` WHERE `CreatureID` = 29311; +INSERT INTO `creature_text` (`CreatureID`,`GroupID`,`ID`,`Text`,`Type`,`Language`,`Probability`,`Emote`,`Duration`,`Sound`,`BroadcastTextId`,`TextRange`,`comment`) VALUES +/* 0 */ (29311,0,0,"Shgla'yos plahf mh'naus.",14,0,100,0,0,14043,32596,0,"Herald Volazj SAY_AGGRO"), +/* 0 */ (29311,1,0,"Gul'kafh an'shel. Yoq'al shn ky ywaq nuul.",14,0,100,0,0,14044,32603,0,"Herald Volazj SAY_INSANITY"), +/* 0 */ (29311,2,0,"Ywaq ma phgwa'cul hnakf.",14,0,100,0,0,14045,32598,0,"Herald Volazj SAY_SLAY_1"), +/* 0 */ (29311,3,0,"Uulwi gag erh'ongg w'ssh.",14,0,100,0,0,14046,32599,0,"Herald Volazj SAY_SLAY_2"), +/* 0 */ (29311,4,0,"Ywaq puul skshgn: on'ma yeh'glu zuq.",14,0,100,0,0,14047,32600,0,"Herald Volazj SAY_SLAY_3"), +/* 0 */ (29311,5,0,"Iilth vwah, uhn'agth fhssh za.",14,0,100,0,0,14048,32601,0,"Herald Volazj SAY_DEATH_1"), +/* 0 */ (29311,6,0,"Ywaq maq oou; ywaq maq ssaggh. Ywaq ma shg'fhn.",14,0,100,0,0,14049,32602,0,"Herald Volazj SAY_DEATH_2"), + +/* 60291 */ (29311,7,0,"They who dine on lost souls know only hunger.",15,0,100,0,0,0,32597,0,"Herald Volazj WHISPER_AGGRO"), +/* 60292 */ (29311,8,0,"Gaze into the void. It is the perpetuity in which they dwell.",15,0,100,0,0,0,32604,0,"Herald Volazj WHISPER_INSANITY"), +/* 60293 */ (29311,9,0,"They are the whisper on the shivering wind.",15,0,100,0,0,0,32605,0,"Herald Volazj WHISPER_SLAY_1"), +/* 60294 */ (29311,10,0,"Their shadow will choke the land for eternity.",15,0,100,0,0,0,32606,0,"Herald Volazj WHISPER_SLAY_2"), +/* 60295 */ (29311,11,0,"They drink your fear: it is the blood of life.",15,0,100,0,0,0,32607,0,"Herald Volazj WHISPER_SLAY_3"), +/* 60296 */ (29311,12,0,"Where one falls, many shall take its place.",15,0,100,0,0,0,32608,0,"Herald Volazj WHISPER_DEATH_1"), +/* 60297 */ (29311,13,0,"They do not die; they do not live. They are outside the cycle.",15,0,100,0,0,0,32609,0,"Herald Volazj WHISPER_DEATH_2"); diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp index 7c2d2479dba..9597d42f872 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp @@ -27,36 +27,56 @@ #include "PhasingHandler.h" #include "Player.h" #include "ScriptedCreature.h" +#include "SpellScript.h" #include "SpellInfo.h" #include "TemporarySummon.h" -enum Spells +enum VolazjTexts { - SPELL_INSANITY = 57496, //Dummy - INSANITY_VISUAL = 57561, - SPELL_INSANITY_TARGET = 57508, - SPELL_MIND_FLAY = 57941, - SPELL_SHADOW_BOLT_VOLLEY = 57942, - SPELL_SHIVER = 57949, - SPELL_CLONE_PLAYER = 57507, //cast on player during insanity - SPELL_INSANITY_PHASING_1 = 57508, - SPELL_INSANITY_PHASING_2 = 57509, - SPELL_INSANITY_PHASING_3 = 57510, - SPELL_INSANITY_PHASING_4 = 57511, - SPELL_INSANITY_PHASING_5 = 57512 + SAY_AGGRO = 0, + SAY_INSANITY = 1, + SAY_SLAY_1 = 2, + SAY_SLAY_2 = 3, + SAY_SLAY_3 = 4, + SAY_DEATH_1 = 5, + SAY_DEATH_2 = 6, + + WHISPER_AGGRO = 7, + WHISPER_INSANITY = 8, + WHISPER_SLAY_1 = 9, + WHISPER_SLAY_2 = 10, + WHISPER_SLAY_3 = 11, + WHISPER_DEATH_1 = 12, + WHISPER_DEATH_2 = 13 }; -enum Yells +enum VolazjSpells { - SAY_AGGRO = 0, - SAY_SLAY = 1, - SAY_DEATH = 2, - SAY_PHASE = 3 + SPELL_INSANITY = 57496, // Dummy + INSANITY_VISUAL = 57561, + SPELL_INSANITY_TARGET = 57508, + SPELL_MIND_FLAY = 57941, + SPELL_SHADOW_BOLT_VOLLEY = 57942, + SPELL_SHIVER = 57949, + SPELL_CLONE_PLAYER = 57507, // cast on player during insanity + SPELL_INSANITY_PHASING_1 = 57508, + SPELL_INSANITY_PHASING_2 = 57509, + SPELL_INSANITY_PHASING_3 = 57510, + SPELL_INSANITY_PHASING_4 = 57511, + SPELL_INSANITY_PHASING_5 = 57512, + + SPELL_WHISPER_AGGRO = 60291, + SPELL_WHISPER_INSANITY = 60292, + SPELL_WHISPER_SLAY_1 = 60293, + SPELL_WHISPER_SLAY_2 = 60294, + SPELL_WHISPER_SLAY_3 = 60295, + SPELL_WHISPER_DEATH_1 = 60296, + SPELL_WHISPER_DEATH_2 = 60297 }; -enum Achievements +enum VolazjAchievements { - ACHIEV_QUICK_DEMISE_START_EVENT = 20382, + ACHIEV_QUICK_DEMISE_START_EVENT = 20382, }; struct boss_volazj : public BossAI @@ -146,6 +166,8 @@ struct boss_volazj : public BossAI { // Channel visual DoCast(me, INSANITY_VISUAL, true); + Talk(SAY_INSANITY); + DoCastSelf(SPELL_WHISPER_INSANITY, true); // Unattackable me->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE); me->SetControlled(true, UNIT_STATE_STUNNED); @@ -187,6 +209,7 @@ struct boss_volazj : public BossAI { BossAI::JustEngagedWith(who); Talk(SAY_AGGRO); + DoCastSelf(SPELL_WHISPER_AGGRO); _instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_QUICK_DEMISE_START_EVENT); } @@ -285,15 +308,41 @@ struct boss_volazj : public BossAI void JustDied(Unit* killer) override { BossAI::JustDied(killer); - - Talk(SAY_DEATH); ResetPlayersPhaseMask(); + + switch (urand(0, 1)) + { + case 0: + Talk(SAY_DEATH_1); + DoCastSelf(SPELL_WHISPER_DEATH_1, true); + break; + case 1: + Talk(SAY_DEATH_2); + DoCastSelf(SPELL_WHISPER_DEATH_2, true); + break; + } } void KilledUnit(Unit* who) override { - if (who->GetTypeId() == TYPEID_PLAYER) - Talk(SAY_SLAY); + if (who->GetTypeId() != TYPEID_PLAYER) + return; + + switch (urand(0, 2)) + { + case 0: + Talk(SAY_SLAY_1); + DoCastSelf(SPELL_WHISPER_SLAY_1); + break; + case 1: + Talk(SAY_SLAY_2); + DoCastSelf(SPELL_WHISPER_SLAY_2); + break; + case 2: + Talk(SAY_SLAY_3); + DoCastSelf(SPELL_WHISPER_SLAY_3); + break; + } } private: @@ -302,7 +351,54 @@ private: uint32 _insanityHandled; }; +class spell_volazj_whisper : public SpellScript +{ + PrepareSpellScript(spell_volazj_whisper); + + bool Validate(SpellInfo const* /*spell*/) override + { + return ValidateSpellInfo( + { + SPELL_WHISPER_AGGRO, + SPELL_WHISPER_INSANITY, + SPELL_WHISPER_SLAY_1, + SPELL_WHISPER_SLAY_2, + SPELL_WHISPER_SLAY_3, + SPELL_WHISPER_DEATH_1, + SPELL_WHISPER_DEATH_2 + }); + } + + void HandleScriptEffect(SpellEffIndex /* effIndex */) + { + Unit* target = GetHitPlayer(); + Creature* caster = GetCaster()->ToCreature(); + if (!target || !caster) + return; + + uint32 text = 0; + switch (GetSpellInfo()->Id) + { + case SPELL_WHISPER_AGGRO: text = WHISPER_AGGRO; break; + case SPELL_WHISPER_INSANITY: text = WHISPER_INSANITY; break; + case SPELL_WHISPER_SLAY_1: text = WHISPER_SLAY_1; break; + case SPELL_WHISPER_SLAY_2: text = WHISPER_SLAY_2; break; + case SPELL_WHISPER_SLAY_3: text = WHISPER_SLAY_3; break; + case SPELL_WHISPER_DEATH_1: text = WHISPER_DEATH_1; break; + case SPELL_WHISPER_DEATH_2: text = WHISPER_DEATH_2; break; + default: return; + } + caster->AI()->Talk(text, target); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_volazj_whisper::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_boss_volazj() { RegisterAhnKahetCreatureAI(boss_volazj); + RegisterSpellScript(spell_volazj_whisper); } |