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

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