aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2021-03-20 17:00:12 +0200
committerShauren <shauren.trinity@gmail.com>2022-03-07 20:59:28 +0100
commitf87aa64a14b321ebbc41f320a7d261a3a0f58797 (patch)
tree5ae8c62372fa54d50a3f6a3bfe71b5f79d2a5731
parent77d320b9fc881f196789bfb99ef539c95311ad55 (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.sql29
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp144
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);
}