From 619c9384d412d397b300eb1cff0cd25359de823c Mon Sep 17 00:00:00 2001 From: avarishd <46330494+avarishd@users.noreply.github.com> Date: Sun, 9 Apr 2023 21:54:33 +0300 Subject: [PATCH] fix(Script/ToC5): Remove hardcoded text(s) and some minor adjustments. (#15046) * remove hardcode + fix db incorrect duplicates * cs * cs2 * dual wield google translate (fix zhCN locale) * doxygen todo * /// --- .../rev_1676378706913010600.sql | 135 ++++++++++++++++++ .../boss_argent_challenge.cpp | 32 ++--- .../TrialOfTheChampion/boss_black_knight.cpp | 17 +-- .../boss_grand_champions.cpp | 17 +-- .../instance_trial_of_the_champion.cpp | 52 ++++--- .../trial_of_the_champion.cpp | 44 +++--- .../trial_of_the_champion.h | 117 +++++++-------- 7 files changed, 274 insertions(+), 140 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1676378706913010600.sql diff --git a/data/sql/updates/pending_db_world/rev_1676378706913010600.sql b/data/sql/updates/pending_db_world/rev_1676378706913010600.sql new file mode 100644 index 000000000..1e0909dc2 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1676378706913010600.sql @@ -0,0 +1,135 @@ +-- Populate creature_text for Highlord Tirion Fordring (ToC5) from ToC25 (34996) Should probably be 34996 for both, needs a sniff. +DELETE FROM `creature_text` WHERE `CreatureID`=33628; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(33628, 21, 0, 'Welcome, champions. Today, before the eyes of your leaders and peers, you will prove yourselves worthy combatants.', 14, 0, 100, 1, 0, 0, 35321, 0, 'Highlord Tirion Fordring - SAY_TIRION_CHAMPION_INTRO_1'), +(33628, 22, 0, 'You will first be facing three of the Grand Champions of the Tournament! These fierce contenders have beaten out all others to reach the pinnacle of skill in the joust.', 14, 0, 100, 0, 0, 0, 35330, 0, 'Highlord Tirion Fordring - SAY_TIRION_CHAMPION_INTRO_2'), +(33628, 23, 0, 'Begin!', 14, 0, 100, 0, 0, 8574, 35331, 0, 'Highlord Tirion Fordring - SAY_TIRION_CHAMPION_BEGIN'), +(33628, 24, 0, 'Well fought! Your next challenge comes from the Crusade\'s own ranks. You will be tested against their considerable prowess.', 14, 0, 100, 0, 0, 15882, 35541, 0, 'Highlord Tirion Fordring - SAY_TIRION_PALETRESS_INTRO_1'), +(33628, 31, 0, 'Well done. You have proven yourself today-', 14, 0, 100, 0, 0, 0, 35544, 0, 'Highlord Tirion Fordring - SAY_TIRION_KNIGHT_INTRO_2'), +(33628, 34, 0, 'What is the meaning of this?', 14, 0, 100, 0, 0, 0, 35547, 0, 'Highlord Tirion Fordring - SAY_TIRION_KNIGHT_INTRO_2'), +(33628, 41, 0, 'You may begin!', 14, 0, 100, 22, 0, 8574, 35677, 0, 'Highlord Tirion Fordring - SAY_TIRION_YOU_MAY_BEGIN'); + +-- Alliance Announcer - Arelas Brightstar +DELETE FROM `creature_text` WHERE `creatureID`=35005; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(35005, 0, 0, 'Entering the arena, a paladin who is no stranger to the battlefield or tournament ground, the Grand Champion of the Argent Crusade, Eadric the Pure!', 14, 0, 100, 0, 0, 8574, 35542, 0, 'Arelas Brightstar - SAY_EADRIC_INTRO'), +(35005, 1, 0, 'The next combatant is second to none in her passion for upholding the Light. I give you Argent Confessor Paletress!', 14, 0, 100, 0, 0, 8574, 35543, 0, 'Arelas Brightstar - SAY_ARELAS_PALETRESS_INTRO'), +(35005, 2, 0, 'The Silver Covenant is pleased to present their contenders for this event, Highlord.', 14, 0, 100, 396, 0, 8574, 35259, 0, 'Arelas Brightstar - SAY_ARELAS_GRAND_CHAMPIONS_INTRO_1'), +(35005, 3, 0, 'Coming out of the gate is Eressea Dawnsinger, skilled mage and Grand Champion of Silvermoon!\n', 12, 0, 100, 0, 0, 8573, 35338, 0, 'Arelas Brightstar - SAY_ARELAS_GRAND_CHAMPIONS_INTRO_2'), +(35005, 4, 0, 'Entering the arena is the lean and dangerous Zul\'tore, Grand Champion of Sen\'jin!\n', 12, 0, 100, 0, 0, 8573, 35335, 0, 'Arelas Brightstar - SAY_ARELAS_GRAND_CHAMPIONS_INTRO_2'), +(35005, 5, 0, 'Presenting the fierce Grand Champion of Orgrimmar, Mokra the Skullcrusher!\n', 12, 0, 100, 0, 0, 8573, 35334, 0, 'Arelas Brightstar - SAY_ARELAS_GRAND_CHAMPIONS_INTRO_2'), +(35005, 6, 0, 'Representing the tenacity of the Forsaken, here is the Grand Champion of the Undercity, Deathstalker Visceri!\n', 12, 0, 100, 0, 0, 8573, 35337, 0, 'Arelas Brightstar - SAY_ARELAS_GRAND_CHAMPIONS_INTRO_2'), +(35005, 7, 0, 'Tall in the saddle of his kodo, here is the venerable Runok Wildmane, Grand Champion of Thunder Bluff!\n', 12, 0, 100, 0, 0, 8573, 35336, 0, 'Arelas Brightstar - SAY_ARELAS_GRAND_CHAMPIONS_INTRO_2'), +(35005, 8, 0, 'What\'s that, up near the rafters?', 12, 0, 100, 25, 0, 0, 35545, 0, 'Arelas Brightstar - SAY_ARELAS_KNIGHT_INTRO'); + +DELETE FROM `creature_text_locale` WHERE `CreatureID`=35005 AND `Locale`='zhCN'; +INSERT INTO `creature_text_locale` (`CreatureID`, `GroupID`, `ID`, `Locale`, `Text`) VALUES +(35005, 0, 0, 'zhCN', '正在走进竞技场的是一位对于战场和比武场都绝不陌生的圣骑士——银色十字军的总冠军,纯洁者耶德瑞克!'), +(35005, 1, 0, 'zhCN', '接下来出场的是圣光最忠实的追随者!银色神官帕尔崔丝!'), +(35005, 2, 0, 'zhCN', '银色盟约们很高兴地在此介绍他们的斗士,大领主。'), +(35005, 3, 0, 'zhCN', '从大门中走出来的是埃蕾希·晨歌,强大的法师!银月城总冠军!'), +(35005, 4, 0, 'zhCN', '进入竞技场的是削瘦却极度危险的祖尔托,森金村的总冠军!'), +(35005, 5, 0, 'zhCN', '现在请注意,强大的奥格瑞姆总冠军,碎颅者莫克拉出场!'), +(35005, 6, 0, 'zhCN', '我们现在要介绍的是幽暗城的总冠军,强韧的亡灵,死亡猎手维赛里!'), +(35005, 7, 0, 'zhCN', '高高地骑坐在科多兽上的是雷霆崖的总冠军,令人敬畏的鲁诺克·蛮鬃!'), +(35005, 8, 0, 'zhCN', '那些椽子旁边是什么?'); + + +-- Horde Announcer - Jaeren Sunsworn, reverse matching the BroadcastTextId +DELETE FROM `creature_text` WHERE `creatureID`=35004; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(35004, 0, 0, 'Entering the arena, a paladin who is no stranger to the battlefield or tournament ground, the Grand Champion of the Argent Crusade, Eadric the Pure!', 14, 0, 100, 0, 0, 8574, 35542, 0, 'Jaeren Sunsworn - SAY_JAEREN_INTRO'), +(35004, 1, 0, 'The next combatant is second to none in her passion for upholding the Light. I give you Argent Confessor Paletress!', 14, 0, 100, 0, 0, 8574, 35543, 0, 'Jaeren Sunsworn - SAY_JAEREN_PALETRESS_INTRO'), +(35004, 2, 0, 'The Sunreavers are proud to present their representatives in this trial by combat.', 14, 0, 100, 396, 0, 8574, 35260, 0, 'Jaeren Sunsworn - SAY_JAEREN_GRAND_CHAMPIONS_INTRO_1'), +(35004, 3, 0, 'Here comes the small but deadly Ambrose Boltspark, Grand Champion of Gnomeregan!', 12, 0, 100, 0, 0, 8573, 35248, 0, 'Jaeren Sunsworn - SAY_JAEREN_GRAND_CHAMPIONS_INTRO_2'), +(35004, 4, 0, 'Entering the arena is the Grand Champion of Darnassus, the skilled sentinel Jaelyne Evensong!', 12, 0, 100, 0, 0, 8573, 35249, 0, 'Jaeren Sunsworn - SAY_JAEREN_GRAND_CHAMPIONS_INTRO_2'), +(35004, 5, 0, 'Proud and strong, give a cheer for Marshal Jacob Alerius, the Grand Champion of Stormwind!', 12, 0, 100, 0, 0, 8573, 35245, 0, 'Jaeren Sunsworn - SAY_JAEREN_GRAND_CHAMPIONS_INTRO_2'), +(35004, 6, 0, 'The might of the dwarves is represented today by the Grand Champion of Ironforge, Lana Stouthammer!', 12, 0, 100, 0, 0, 8573, 35246, 0, 'Jaeren Sunsworn - SAY_JAEREN_GRAND_CHAMPIONS_INTRO_2'), +(35004, 7, 0, 'Coming out of the gate is Colosos, the towering Grand Champion of the Exodar!', 12, 0, 100, 0, 0, 8573, 35247, 0, 'Jaeren Sunsworn - SAY_JAEREN_GRAND_CHAMPIONS_INTRO_2'), +(35004, 8, 0, 'What\'s that, up near the rafters?', 12, 0, 100, 25, 0, 0, 35545, 0, 'Jaeren Sunsworn - SAY_JAEREN_KNIGHT_INTRO'); + +DELETE FROM `creature_text_locale` WHERE `CreatureID`=35004 AND `Locale`='zhCN'; +INSERT INTO `creature_text_locale` (`CreatureID`, `GroupID`, `ID`, `Locale`, `Text`) VALUES +(35004, 0, 0, 'zhCN', '正在走进竞技场的是一位对于战场和比武场都绝不陌生的圣骑士——银色十字军的总冠军,纯洁者耶德瑞克!'), +(35004, 1, 0, 'zhCN', '接下来出场的是圣光最忠实的追随者!银色神官帕尔崔丝!'), +(35004, 2, 0, 'zhCN', '夺日者们自豪地介绍他们在这场竞赛中的代表。'), +(35004, 3, 0, 'zhCN', '现在出场的是矮小却极度致命的安布罗斯·雷钉,诺莫瑞根的总冠军!'), +(35004, 4, 0, 'zhCN', '进入竞技场的是达纳苏斯的总冠军,战技非凡的娅琳·永歌!'), +(35004, 5, 0, 'zhCN', '请向骄傲而强壮的暴风城总冠军,雅克布·奥勒留斯元帅欢呼吧!'), +(35004, 6, 0, 'zhCN', '今天,矮人的力量将在铁炉堡的总冠军,拉娜·硬锤的身上得以展现!'), +(35004, 7, 0, 'zhCN', '从大门中走出来的是克罗索斯,埃索达强大的总冠军!'), +(35004, 8, 0, 'zhCN', '那些椽子旁边是什么?'); + +-- Argent Confessor Paletress remove empty BroadcastTextId duplicates +DELETE FROM `creature_text` WHERE `CreatureID`=34928; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(34928, 0, 0, 'Thank you, good herald. Your words are too kind.', 12, 0, 100, 2, 0, 16245, 35762, 0, 'Argent Confessor Paletress - SAY_INTRO_1'), +(34928, 1, 0, 'May the Light give me strength to provide a worthy challenge.', 12, 0, 100, 16, 0, 16246, 35763, 0, 'Argent Confessor Paletress - SAY_INTRO_2'), +(34928, 2, 0, 'Well, then. Let us begin.', 14, 0, 100, 0, 0, 16247, 35229, 0, 'Argent Confessor Paletress - SAY_AGGRO'), +(34928, 3, 0, 'Take this time to consider your past deeds.', 14, 0, 100, 0, 0, 16248, 35764, 0, 'Argent Confessor Paletress - SAY_MEMORY_SUMMON'), +(34928, 4, 0, 'Even the darkest memory fades when confronted!', 14, 0, 100, 0, 0, 16249, 35231, 0, 'Argent Confessor Paletress - SAY_MEMORY_DEATH'), +(34928, 5, 0, 'Take your rest.', 14, 0, 100, 0, 0, 16250, 35765, 0, 'Argent Confessor Paletress - SAY_KILL_PLAYER'), +(34928, 5, 1, 'Be at ease.', 14, 0, 100, 0, 0, 16251, 35766, 0, 'Argent Confessor Paletress - SAY_KILL_PLAYER'), +(34928, 6, 0, 'Excellent work!', 14, 0, 100, 0, 0, 16252, 35232, 0, 'Argent Confessor Paletress - SAY_DEFEATED'); + +DELETE FROM `creature_text_locale` WHERE `CreatureID`=34928 AND `Locale`='zhCN'; +INSERT INTO `creature_text_locale` (`CreatureID`, `GroupID`, `ID`, `Locale`, `Text`) VALUES +(34928, 0, 0, 'zhCN', '感谢你,传讯者,你的话真令我高兴。'), +(34928, 1, 0, 'zhCN', '愿圣光赐我力量,让我不负众望。'), +(34928, 2, 0, 'zhCN', '好,那么,让我们开始吧。'), +(34928, 3, 0, 'zhCN', '现在,让时光在你脑中倒流。'), +(34928, 4, 0, 'zhCN', '只要敢于面对,即使是最黑暗的回忆也将不再可怕!'), +(34928, 5, 0, 'zhCN', '下去休息吧。'), +(34928, 5, 1, 'zhCN', '安心的去吧。'), +(34928, 6, 0, 'zhCN', '真是精彩!'); + + +-- Eadric the Pure remove empty BroadcastTextId duplicates +DELETE FROM `creature_text` WHERE `CreatureID`=35119; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(35119, 0, 0, 'Are you up to the challenge? I will not hold back.', 12, 0, 100, 397, 0, 16134, 35347, 0, 'Eadric the Pure - SAY_INTRO'), +(35119, 1, 0, 'Prepare yourselves!', 14, 0, 100, 0, 0, 16135, 35758, 0, 'Eadric the Pure - SAY_AGGRO'), +(35119, 2, 0, '%s begins to radiate light. Shield your eyes!', 41, 0, 100, 0, 0, 0, 35415, 0, 'Eadric the Pure - EMOTE_RADIANCE'), +(35119, 3, 0, '%s targets $n with the Hammer of the Righteous!', 41, 0, 100, 0, 0, 16136, 35408, 0, 'Eadric the Pure - EMOTE_HAMMER_RIGHTEOUS'), +(35119, 4, 0, 'Hammer of the Righteous!', 14, 0, 100, 0, 0, 16136, 35442, 0, 'Eadric the Pure - SAY_HAMMER_RIGHTEOUS'), +(35119, 5, 0, 'You! You need more practice.', 14, 0, 100, 0, 0, 16137, 35759, 0, 'Eadric the Pure - SAY_KILL_PLAYER'), +(35119, 5, 1, 'Nay, nay, and I say yet again nay! Not good enough.', 14, 0, 100, 0, 0, 16138, 35760, 0, 'Eadric the Pure - SAY_KILL_PLAYER'), +(35119, 6, 0, 'I yield! I submit. Excellent work. May I run away now?', 14, 0, 100, 0, 0, 16139, 35761, 0, 'Eadric the Pure - SAY_DEFEATED'); + +DELETE FROM `creature_text_locale` WHERE `CreatureID`=35119 AND `Locale`='zhCN'; +INSERT INTO `creature_text_locale` (`CreatureID`, `GroupID`, `ID`, `Locale`, `Text`) VALUES +(35119, 0, 0, 'zhCN', '你们准备好了吗?我会全力以赴。'), +(35119, 1, 0, 'zhCN', '做好准备!'), +(35119, 2, 0, 'zhCN', '%s开始向四周放射光芒!赶快遮住你的眼睛!'), +(35119, 3, 0, 'zhCN', '%s用正义之锤对准了$n!'), +(35119, 4, 0, 'zhCN', '正义之锤!'), +(35119, 5, 0, 'zhCN', '呃!你!回去再练练吧。'), +(35119, 5, 1, 'zhCN', '不!不!我再说一遍,不!还不够好。'), +(35119, 6, 0, 'zhCN', '我认输!我投降。你做的很好。我可以走了吧?'); + + +-- The Black Knight remove empty BroadcastTextId duplicates +DELETE FROM `creature_text` WHERE `CreatureID`=35451; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(35451, 0, 0, 'You spoiled my grand entrance, rat.', 12, 0, 100, 0, 0, 16256, 35546, 0, 'The Black Knight - SAY_INTRO_1'), +(35451, 1, 0, 'Did you honestly think an agent of the Lich King would be bested on the field of your pathetic little tournament?', 12, 0, 100, 396, 0, 16257, 35548, 0, 'The Black Knight - SAY_INTRO_2'), +(35451, 2, 0, 'I\'ve come to finish my task.', 12, 0, 100, 396, 0, 16258, 35549, 0, 'The Black Knight - SAY_INTRO_3'), +(35451, 3, 0, 'This farce ends here!', 14, 0, 100, 0, 0, 16259, 35767, 0, 'The Black Knight - SAY_AGGRO'), +(35451, 4, 0, 'My rotting flesh was just getting in the way!', 14, 0, 100, 0, 0, 16262, 35771, 0, 'The Black Knight - SAY_PHASE_2'), +(35451, 5, 0, 'I have no need for bones to best you!', 14, 0, 100, 0, 0, 16263, 35772, 0, 'The Black Knight - SAY_PHASE_3'), +(35451, 6, 0, 'Pathetic.', 14, 0, 100, 0, 0, 16260, 35768, 0, 'The Black Knight - SAY_KILL_PLAYER'), +(35451, 6, 1, 'A waste of flesh.', 14, 0, 100, 0, 0, 16261, 35769, 0, 'The Black Knight - SAY_KILL_PLAYER'), +(35451, 7, 0, 'No! I must not fail... again...', 14, 0, 100, 0, 0, 16264, 35770, 0, 'The Black Knight - SAY_DEATH'); + +DELETE FROM `creature_text_locale` WHERE `CreatureID`=35451 AND `Locale`='zhCN'; +INSERT INTO `creature_text_locale` (`CreatureID`, `GroupID`, `ID`, `Locale`, `Text`) VALUES +(35451, 0, 0, 'zhCN', '你搞砸了我的盛大登场,鼠辈。'), +(35451, 1, 0, 'zhCN', '你们真以为,巫妖王的战士会败在你们那可怜的比武场上?'), +(35451, 2, 0, 'zhCN', '我是来做个了断的。'), +(35451, 3, 0, 'zhCN', '这场闹剧该结束了!'), +(35451, 4, 0, 'zhCN', '我的烂肉还真碍事!'), +(35451, 5, 0, 'zhCN', '我可不需要用骨头来打败你!'), +(35451, 6, 0, 'zhCN', '可怜。'), +(35451, 6, 1, 'zhCN', '真是对生命的浪费。'), +(35451, 7, 0, 'zhCN', '不!我绝不能再……失败了……'); + diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp index f57ed75da..fb1c34a10 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp @@ -85,8 +85,6 @@ enum PaletressEvents EVENT_SPELL_WAKING_NIGHTMARE, }; -#define TEXT_RADIATE "Eadric the Pure begins to radiate light. Shield your eyes!" - class boss_eadric : public CreatureScript { public: @@ -119,10 +117,7 @@ public: { if( who->GetTypeId() == TYPEID_PLAYER ) { - if( urand(0, 1) ) - Talk(TEXT_EADRIC_SLAIN_1); - else - Talk(TEXT_EADRIC_SLAIN_2); + Talk(SAY_EADRIC_KILL_PLAYER); } } @@ -131,7 +126,7 @@ public: events.Reset(); events.ScheduleEvent(EVENT_SPELL_RADIANCE, 16000); events.ScheduleEvent(EVENT_SPELL_HAMMER_RIGHTEOUS, 25000); - Talk(TEXT_EADRIC_AGGRO); + Talk(SAY_EADRIC_AGGRO); me->CastSpell(me, SPELL_VENGEANCE, false); if( pInstance ) pInstance->SetData(BOSS_ARGENT_CHALLENGE, IN_PROGRESS); @@ -154,7 +149,7 @@ public: me->GetMap()->UpdateEncounterState(ENCOUNTER_CREDIT_CAST_SPELL, 68574, me); // paletress' spell credits encounter, but shouldn't credit achievements me->SetFaction(FACTION_FRIENDLY); events.Reset(); - Talk(TEXT_EADRIC_DEATH); + Talk(SAY_EADRIC_DEFEATED); me->GetThreatMgr().clearReferences(); me->SetRegeneratingHealth(false); _EnterEvadeMode(); @@ -182,16 +177,14 @@ public: break; case EVENT_SPELL_RADIANCE: me->CastSpell((Unit*)nullptr, SPELL_RADIANCE, false); - me->TextEmote(TEXT_RADIATE, nullptr, true); + Talk(SAY_EADRIC_EMOTE_RADIANCE); events.Repeat(16s); break; case EVENT_SPELL_HAMMER_RIGHTEOUS: if( Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 55.0f, true) ) { - char buffer[100]; - snprintf(buffer, sizeof(buffer), "Eadric the Pure targets %s with the Hammer of the Righteous!", target->GetName().c_str()); - me->TextEmote(buffer, nullptr, true); - Talk(TEXT_EADRIC_HAMMER); + Talk(SAY_EADRIC_EMOTE_HAMMER_RIGHTEOUS, target); + Talk(SAY_EADRIC_HAMMER_RIGHTEOUS); me->CastSpell(target, SPELL_HAMMER_JUSTICE, true); me->CastSpell(target, SPELL_HAMMER_RIGHTEOUS, false); } @@ -251,10 +244,7 @@ public: { if( who->GetTypeId() == TYPEID_PLAYER ) { - if( urand(0, 1) ) - Talk(TEXT_PALETRESS_SLAIN_1); - else - Talk(TEXT_PALETRESS_SLAIN_2); + Talk(SAY_PALETRESS_KILL_PLAYER); } } @@ -264,7 +254,7 @@ public: events.ScheduleEvent(EVENT_SPELL_HOLY_FIRE, 9s, 12s); events.ScheduleEvent(EVENT_SPELL_SMITE, 2s, 3s); me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING); - Talk(TEXT_PALETRESS_AGGRO); + Talk(SAY_PALETRESS_AGGRO); if( pInstance ) pInstance->SetData(BOSS_ARGENT_CHALLENGE, IN_PROGRESS); } @@ -275,7 +265,7 @@ public: { MemoryGUID.Clear(); me->RemoveAura(SPELL_SHIELD); - Talk(TEXT_PALETRESS_MEMORY_DEFEATED); + Talk(SAY_PALETRESS_MEMORY_DEATH); } else if( param == (-1) ) { @@ -302,7 +292,7 @@ public: me->CastSpell((Unit*)nullptr, 68574, true); // achievements me->SetFaction(FACTION_FRIENDLY); events.Reset(); - Talk(TEXT_PALETRESS_DEATH); + Talk(SAY_PALETRESS_DEFEATED); me->GetThreatMgr().clearReferences(); me->SetRegeneratingHealth(false); _EnterEvadeMode(); @@ -341,7 +331,7 @@ public: if( !summoned && HealthBelowPct(25) ) { me->InterruptNonMeleeSpells(true); - Talk(TEXT_PALETRESS_MEMORY_SUMMON); + Talk(SAY_PALETRESS_MEMORY_SUMMON); me->CastSpell((Unit*)nullptr, SPELL_HOLY_NOVA, false); me->CastSpell(me, SPELL_SHIELD, false); me->CastSpell((Unit*)nullptr, SPELL_SUMMON_MEMORY, false); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp index c6e600c05..81ae2cb8d 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp @@ -174,7 +174,7 @@ public: return; pInstance->SetData(BOSS_BLACK_KNIGHT, IN_PROGRESS); - Talk(TEXT_BK_AGGRO); + Talk(SAY_BK_AGGRO); me->CastSpell((Unit*)nullptr, (pInstance->GetData(DATA_TEAMID_IN_INSTANCE) == TEAM_HORDE ? SPELL_RAISE_DEAD_JAEREN : SPELL_RAISE_DEAD_ARELAS), false); if( Creature* announcer = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_ANNOUNCER)) ) announcer->DespawnOrUnsummon(); @@ -209,7 +209,7 @@ public: { case 2: me->SetDisplayId(MODEL_SKELETON); - Talk(TEXT_BK_SKELETON_RES); + Talk(SAY_BK_PHASE_2); me->CastSpell(me, SPELL_ARMY_DEAD, false); events.Reset(); @@ -220,7 +220,7 @@ public: break; case 3: me->SetDisplayId(MODEL_GHOST); - Talk(TEXT_BK_GHOST_RES); + Talk(SAY_BK_PHASE_3); events.Reset(); events.ScheduleEvent(EVENT_SPELL_DEATH_BITE, 2s); @@ -251,8 +251,8 @@ public: case EVENT_ANNOUNCER_SAY_ZOMBIE: if( pInstance && !summons.empty() ) if( Creature* ghoul = pInstance->instance->GetCreature(*summons.begin()) ) - ghoul->Yell("[Zombie] .... . Brains ....", LANG_UNIVERSAL); - + if (urand(0, 1)) + ghoul->Yell("[Zombie] .... . Brains ....", LANG_UNIVERSAL); /// @todo: Multiple variations + not always happening, from video sources, needs sniff to transition from DB. break; case EVENT_SPELL_PLAGUE_STRIKE: if( me->GetVictim() ) @@ -307,17 +307,14 @@ public: { if( victim->GetTypeId() == TYPEID_PLAYER ) { - if( urand(0, 1) ) - Talk(TEXT_BK_SLAIN_1); - else - Talk(TEXT_BK_SLAIN_2); + Talk(SAY_BK_KILL_PLAYER); } } void JustDied(Unit* /*killer*/) override { me->CastSpell((Unit*)nullptr, SPELL_BK_KILL_CREDIT, true); - Talk(TEXT_BK_DEATH); + Talk(SAY_BK_DEATH); if( pInstance ) pInstance->SetData(BOSS_BLACK_KNIGHT, DONE); if( me->ToTempSummon() ) diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp index 120599520..83e97383a 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp @@ -90,6 +90,11 @@ enum ChampionSpells SPELL_ROLLING_THROW = 67546, // not implemented yet! }; +enum Texts +{ + SAY_TRAMPLED = 0, +}; + #define SPELL_FIREBALL DUNGEON_MODE(SPELL_FIREBALL_N, SPELL_FIREBALL_H) #define SPELL_BLAST_WAVE DUNGEON_MODE(SPELL_BLAST_WAVE_N, SPELL_BLAST_WAVE_H) #define SPELL_POLYMORPH DUNGEON_MODE(SPELL_POLYMORPH_N, SPELL_POLYMORPH_H) @@ -647,16 +652,8 @@ public: void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override { - switch( spell->Id ) - { - case SPELL_TRAMPLE_STUN: - { - char buffer[50]; - snprintf(buffer, sizeof(buffer), "%s is trampled!", me->GetName().c_str()); - me->TextEmote(buffer); - } - break; - } + if (spell->Id == SPELL_TRAMPLE_STUN) + Talk(SAY_TRAMPLED, me); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp index 9292e7860..11345c86d 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp @@ -25,6 +25,17 @@ const Position SpawnPosition = {746.67f, 684.08f, 412.5f, 4.65f}; #define CLEANUP_CHECK_INTERVAL 5000 +/** + * @todo: Missing dialog/RP (already populated in DB) && spawns (can use ToC25 locations?) for: + * + * Garrosh Hellscream 34995 + * King Varian Wrynn 34990 + * Lady Jaina Proudmoore 34992 (missing in DB) + * Thrall 34994 + * + * And possibly NPC_TIRION 33628 is wrong (should be 34996, from ToC25, needs a sniff to confirm, check .h) + */ + class Group; class instance_trial_of_the_champion : public InstanceMapScript @@ -523,9 +534,9 @@ public: { Counter = urand(0, 1); if( Counter ) - announcer->AI()->Talk(TEXT_INTRODUCE_EADRIC); + announcer->AI()->Talk(SAY_EADRIC_INTRO_ANNOUNCER); else - announcer->AI()->Talk(TEXT_INTRODUCE_PALETRESS); + announcer->AI()->Talk(SAY_JAEREN_PALETRESS_INTRO); } HandleGameObject(GO_EnterGateGUID, false); events.RescheduleEvent(EVENT_START_ARGENT_CHALLENGE_INTRO, 0ms); @@ -702,27 +713,27 @@ public: case 0: CHAMPION_TO_SUMMON = NPC_MOKRA; MINION_TO_SUMMON = NPC_ORGRIMMAR_MINION; - TEXT_ID = TEXT_MOKRA_SKILLCRUSHER; + TEXT_ID = SAY_GRAND_CHAMPIONS_INTRO_SKULLCRUSHER; break; case 1: CHAMPION_TO_SUMMON = NPC_ERESSEA; MINION_TO_SUMMON = NPC_SILVERMOON_MINION; - TEXT_ID = TEXT_ERESSEA_DAWNSINGER; + TEXT_ID = SAY_GRAND_CHAMPIONS_INTRO_DAWNSINGER; break; case 2: CHAMPION_TO_SUMMON = NPC_RUNOK; MINION_TO_SUMMON = NPC_THUNDER_BLUFF_MINION; - TEXT_ID = TEXT_RUNOK_WILDMANE; + TEXT_ID = SAY_GRAND_CHAMPIONS_INTRO_WILDMANE; break; case 3: CHAMPION_TO_SUMMON = NPC_ZULTORE; MINION_TO_SUMMON = NPC_SENJIN_MINION; - TEXT_ID = TEXT_ZUL_TORE; + TEXT_ID = SAY_GRAND_CHAMPIONS_INTRO_ZULTORE; break; case 4: CHAMPION_TO_SUMMON = NPC_VISCERI; MINION_TO_SUMMON = NPC_UNDERCITY_MINION; - TEXT_ID = TEXT_DEATHSTALKER_VESCERI; + TEXT_ID = SAY_GRAND_CHAMPIONS_INTRO_DEATHSTALKER; break; default: return; @@ -767,10 +778,7 @@ public: if (!shortver) if( Creature* announcer = instance->GetCreature(NPC_AnnouncerGUID) ) { - if( TeamIdInInstance == TEAM_HORDE ) - TEXT_ID -= 10; - announcer->AI()->Talk(TEXT_ID); - announcer->AI()->Talk(TEXT_ID + 1); + announcer->AI()->Talk(TEXT_ID); /// @todo: Missing Argent Raid Spectator cheers. } } @@ -1007,16 +1015,6 @@ public: HandleGameObject(GO_MainGateGUID, true, gate); HandleGameObject(GO_EnterGateGUID, false, gate); } - if( Counter ) - { - announcer->AI()->Talk(TEXT_CHEER_EADRIC_1); - announcer->AI()->Talk(TEXT_CHEER_EADRIC_2); - } - else - { - announcer->AI()->Talk(TEXT_CHEER_PALETRESS_1); - announcer->AI()->Talk(TEXT_CHEER_PALETRESS_2); - } } for( int8 i = 0; i < 3; ++i ) @@ -1060,7 +1058,7 @@ public: case EVENT_ARGENT_CHALLENGE_SAY_1: { if( Creature* ac = instance->GetCreature(NPC_ArgentChampionGUID) ) - ac->AI()->Talk(Counter ? TEXT_EADRIC_SAY_1 : TEXT_PALETRESS_SAY_1); + ac->AI()->Talk(Counter ? SAY_EADRIC_INTRO : SAY_PALETRESS_INTRO_1); if( !Counter ) events.ScheduleEvent(EVENT_ARGENT_CHALLENGE_SAY_2, 6s); } @@ -1068,7 +1066,7 @@ public: case EVENT_ARGENT_CHALLENGE_SAY_2: { if( Creature* ac = instance->GetCreature(NPC_ArgentChampionGUID) ) - ac->AI()->Talk(TEXT_PALETRESS_SAY_2); + ac->AI()->Talk(SAY_PALETRESS_INTRO_2); } break; case EVENT_ARGENT_SOLDIER_GROUP_ATTACK: @@ -1163,7 +1161,7 @@ public: } announcer->SetFacingToObject(bk_vehicle); - announcer->AI()->Talk(TEXT_BK_RAFTERS); + announcer->AI()->Talk(SAY_KNIGHT_INTRO); } } break; @@ -1174,7 +1172,7 @@ public: Position exitPos = { 751.003357f, 638.145508f, 411.570129f, M_PI }; bk->ExitVehicle(/*&exitPos*/); bk->GetMotionMaster()->MoveJump(exitPos, 2.0f, 2.0f); - bk->AI()->Talk(TEXT_BK_SPOILED); + bk->AI()->Talk(SAY_BK_INTRO_1); } events.ScheduleEvent(EVENT_BLACK_KNIGHT_CAST_ANNOUNCER, 2s); } @@ -1212,7 +1210,7 @@ public: { bk->SetUnitMovementFlags(MOVEMENTFLAG_WALKING); bk->GetMotionMaster()->MovePoint(0, 746.81f, 623.15f, 411.42f); - bk->AI()->Talk(TEXT_BK_LICH); + bk->AI()->Talk(SAY_BK_INTRO_2); } if( Creature* announcer = instance->GetCreature(NPC_AnnouncerGUID) ) if (announcer->IsAlive()) @@ -1225,7 +1223,7 @@ public: if( Creature* bk = instance->GetCreature(NPC_BlackKnightGUID) ) { bk->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING); - bk->AI()->Talk(TEXT_BK_TASK); + bk->AI()->Talk(SAY_BK_INTRO_3); } events.ScheduleEvent(EVENT_BLACK_KNIGHT_ATTACK, 5s); } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp index 38edfc409..4713f9f43 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp @@ -21,10 +21,23 @@ #include "ScriptedCreature.h" #include "ScriptedGossip.h" -#define GOSSIP_START_EVENT1a "I am ready." -#define GOSSIP_START_EVENT1b "I am ready. However I'd like to skip the pageantry." -#define GOSSIP_START_EVENT2 "I'm ready for the next challenge." -#define GOSSIP_START_EVENT3 "I'm ready." +enum Texts +{ + NPC_TEXT_NOT_MOUNTED_H = 15043, // Horde text + NPC_TEXT_NOT_MOUNTED_A = 14757, // Alliance text + + NPC_TEXT_CHALLENGE_1 = 14688, + NPC_TEXT_CHALLENGE_2 = 14737, + NPC_TEXT_CHALLENGE_3 = 14738, + + GOSSIP_MENU_STAGE = 10614, + + GOSSIP_START_EVENT_1A = 0, + GOSSIP_START_EVENT_1B = 3, // Skip roleplay + GOSSIP_START_EVENT_2 = 1, + GOSSIP_START_EVENT_3 = 2, + +}; class npc_announcer_toc5 : public CreatureScript { @@ -47,29 +60,28 @@ public: if (!player->GetVehicle()) { if (pInstance->GetData(DATA_TEAMID_IN_INSTANCE) == TEAM_HORDE) - gossipTextId = 15043; //Horde text + gossipTextId = NPC_TEXT_NOT_MOUNTED_H; else - gossipTextId = 14757; //Alliance text + gossipTextId = NPC_TEXT_NOT_MOUNTED_A; } else { - gossipTextId = 14688; - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1a, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1338); - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1b, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1341); + gossipTextId = NPC_TEXT_CHALLENGE_1; + AddGossipItemFor(player, GOSSIP_MENU_STAGE, GOSSIP_START_EVENT_1A, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, GOSSIP_MENU_STAGE, GOSSIP_START_EVENT_1B, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); } break; case INSTANCE_PROGRESS_CHAMPIONS_DEAD: - gossipTextId = 14737; - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1339); + gossipTextId = NPC_TEXT_CHALLENGE_2; + AddGossipItemFor(player, GOSSIP_MENU_STAGE, GOSSIP_START_EVENT_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); break; case INSTANCE_PROGRESS_ARGENT_CHALLENGE_DIED: - gossipTextId = 14738; - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1340); + gossipTextId = NPC_TEXT_CHALLENGE_3; + AddGossipItemFor(player, GOSSIP_MENU_STAGE, GOSSIP_START_EVENT_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); break; default: return true; } - SendGossipMenuFor(player, gossipTextId, creature->GetGUID()); return true; } @@ -83,9 +95,9 @@ public: if(!pInstance) return true; - if(uiAction == GOSSIP_ACTION_INFO_DEF + 1338 || uiAction == GOSSIP_ACTION_INFO_DEF + 1341 || uiAction == GOSSIP_ACTION_INFO_DEF + 1339 || uiAction == GOSSIP_ACTION_INFO_DEF + 1340) + if(uiAction == GOSSIP_ACTION_INFO_DEF + 1 || uiAction == GOSSIP_ACTION_INFO_DEF + 2 || uiAction == GOSSIP_ACTION_INFO_DEF + 3 || uiAction == GOSSIP_ACTION_INFO_DEF + 4) { - pInstance->SetData(DATA_ANNOUNCER_GOSSIP_SELECT, (uiAction == GOSSIP_ACTION_INFO_DEF + 1341 ? 1 : 0)); + pInstance->SetData(DATA_ANNOUNCER_GOSSIP_SELECT, (uiAction == GOSSIP_ACTION_INFO_DEF + 2 ? 1 : 0)); creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h index 8d41e0f7e..be0dfa453 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h @@ -141,11 +141,28 @@ enum eNpcs NPC_BLACK_KNIGHT = 35451, - NPC_JAEREN = 35004, - NPC_ARELAS = 35005, + NPC_JAEREN = 35004, // Horde + NPC_ARELAS = 35005, // Alliance NPC_RISEN_JAEREN = 35545, NPC_RISEN_ARELAS = 35564, - NPC_TIRION = 33628, + NPC_TIRION = 33628, // Possibly wrong npc here, 34996 had already populated creature_text (from ToC25) that matches. Needs a sniff to confirm. + + /// @todo: Argent Raid Spectator - FX - Missing spawns for Toc5 (map 650), ToC25 probably matches positions, needs a sniff to confirm. + // Horde + NPC_SPECTATOR_HORDE = 34883, + NPC_SPECTATOR_BELF = 34904, + NPC_SPECTATOR_TAUREN = 34903, + NPC_SPECTATOR_TROLL = 34902, + NPC_SPECTATOR_ORC = 34901, + NPC_SPECTATOR_UNDEAD = 34905, + + // Alliance + NPC_SPECTATOR_ALLIANCE = 34887, + NPC_SPECTATOR_DWARF = 34906, + NPC_SPECTATOR_GNOME = 34910, + NPC_SPECTATOR_HUMAN = 34900, + NPC_SPECTATOR_NELF = 34909, + NPC_SPECTATOR_DRAENEI = 34908, }; enum eGameObjects @@ -175,69 +192,57 @@ enum eVehicles enum eTexts { - TEXT_LANA_STOUTHAMMER = 1, - TEXT_CHEER_LANA_STOUTHAMMER = 2, - TEXT_COLOSOS = 3, - TEXT_CHEER_COLOSOS = 4, - TEXT_EVENSONG = 5, - TEXT_CHEER_EVENSONG = 6, - TEXT_MARSHAL_JACOB_ALERIUS = 7, - TEXT_CHEER_MARSHAL_JACOB_ALERIUS = 8, - TEXT_AMBROSE_BOLTSPARK = 9, - TEXT_CHEER_AMBROSE_BOLTSPARK = 10, + // Spectators + SAY_SPECTATOR_CHEER = 0, - TEXT_DEATHSTALKER_VESCERI = 11, - TEXT_CHEER_DEATHSTALKER_VESCERI = 12, - TEXT_RUNOK_WILDMANE = 13, - TEXT_CHEER_RUNOK_WILDMANE = 14, - TEXT_ZUL_TORE = 15, - TEXT_CHEER_ZUL_TORE = 16, - TEXT_MOKRA_SKILLCRUSHER = 17, - TEXT_CHEER_MOKRA_SKILLCRUSHER = 18, - TEXT_ERESSEA_DAWNSINGER = 19, - TEXT_CHEER_ERESSEA_DAWNSINGER = 20, + // Announcers: Alliance Announcer - Arelas Brightstar && Horde Announcer - Jaeren Sunsworn + SAY_EADRIC_INTRO_ANNOUNCER = 0, + SAY_JAEREN_PALETRESS_INTRO = 1, + SAY_GRAND_CHAMPIONS_INTRO_1 = 2, + SAY_GRAND_CHAMPIONS_INTRO_DAWNSINGER = 3, // Boltspark + SAY_GRAND_CHAMPIONS_INTRO_ZULTORE = 4, // Jaelyne + SAY_GRAND_CHAMPIONS_INTRO_SKULLCRUSHER = 5, // Jacob + SAY_GRAND_CHAMPIONS_INTRO_DEATHSTALKER = 6, // Lana + SAY_GRAND_CHAMPIONS_INTRO_WILDMANE = 7, // Colosos + SAY_KNIGHT_INTRO = 8, + // Eadric + SAY_EADRIC_INTRO = 0, + SAY_EADRIC_AGGRO = 1, + SAY_EADRIC_EMOTE_RADIANCE = 2, + SAY_EADRIC_EMOTE_HAMMER_RIGHTEOUS = 3, + SAY_EADRIC_HAMMER_RIGHTEOUS = 4, + SAY_EADRIC_KILL_PLAYER = 5, // "You! You need more practice." && "Nay, nay, and I say yet again nay! Not good enough." + SAY_EADRIC_DEFEATED = 6, + + // Confessor Paletress + SAY_PALETRESS_INTRO_1 = 0, + SAY_PALETRESS_INTRO_2 = 1, + SAY_PALETRESS_AGGRO = 2, + SAY_PALETRESS_MEMORY_SUMMON = 3, + SAY_PALETRESS_MEMORY_DEATH = 4, + SAY_PALETRESS_KILL_PLAYER = 5, // "Take your rest. "&& "Be at ease." + SAY_PALETRESS_DEFEATED = 6, + + // Tirion TEXT_WELCOME = 21, TEXT_WELCOME_2 = 22, TEXT_BEGIN = 23, TEXT_GRATZ_SLAIN_CHAMPIONS = 24, - TEXT_INTRODUCE_EADRIC = 25, - TEXT_INTRODUCE_PALETRESS = 26, - TEXT_CHEER_EADRIC_1 = 27, - TEXT_CHEER_EADRIC_2 = 28, - TEXT_EADRIC_SAY_1 = 39, - TEXT_CHEER_PALETRESS_1 = 29, - TEXT_CHEER_PALETRESS_2 = 30, - TEXT_PALETRESS_SAY_1 = 37, - TEXT_PALETRESS_SAY_2 = 38, TEXT_YOU_MAY_BEGIN = 41, - + // Tirion - The Black Knight Interactions TEXT_BK_INTRO = 31, - TEXT_BK_RAFTERS = 32, - TEXT_BK_SPOILED = 33, TEXT_BK_MEANING = 34, - TEXT_BK_LICH = 35, - TEXT_BK_TASK = 36, - TEXT_EADRIC_AGGRO = 42, - TEXT_EADRIC_HAMMER = 43, - TEXT_EADRIC_SLAIN_1 = 44, - TEXT_EADRIC_SLAIN_2 = 45, - TEXT_EADRIC_DEATH = 46, - - TEXT_PALETRESS_AGGRO = 47, - TEXT_PALETRESS_MEMORY_SUMMON = 48, - TEXT_PALETRESS_MEMORY_DEFEATED = 51, - TEXT_PALETRESS_SLAIN_1 = 49, - TEXT_PALETRESS_SLAIN_2 = 50, - TEXT_PALETRESS_DEATH = 52, - - TEXT_BK_AGGRO = 53, - TEXT_BK_SLAIN_1 = 57, - TEXT_BK_SLAIN_2 = 58, - TEXT_BK_SKELETON_RES = 54, - TEXT_BK_GHOST_RES = 55, - TEXT_BK_DEATH = 56, + // The Black Knight + SAY_BK_INTRO_1 = 0, + SAY_BK_INTRO_2 = 1, + SAY_BK_INTRO_3 = 2, + SAY_BK_AGGRO = 3, + SAY_BK_PHASE_2 = 4, // Skeleton + SAY_BK_PHASE_3 = 5, // Ghost + SAY_BK_KILL_PLAYER = 6, // "Pathetic." && "A waste of flesh." + SAY_BK_DEATH = 7, }; template