mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Scripts/Ahn'kahet: Herald Volazj texts (#26202)
Co-authored-by: Giacomo Pozzoni <giacomopoz@gmail.com>
(cherry picked from commit 1a624cad36)
This commit is contained in:
@@ -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");
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user