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

* ///
This commit is contained in:
avarishd
2023-04-09 21:54:33 +03:00
committed by GitHub
parent d47e93830f
commit 619c9384d4
7 changed files with 274 additions and 140 deletions

View File

@@ -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', '不!我绝不能再……失败了……');

View File

@@ -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);

View File

@@ -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() )

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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 <class AI, class T>