fix(Script/PitOfSaron): Pit of Saron - Remove hardcode and duplicated texts in DB (#15160)

This commit is contained in:
avarishd
2023-03-04 22:42:45 +02:00
committed by GitHub
parent 349d590d7a
commit 6e61f38454
6 changed files with 200 additions and 73 deletions

View File

@@ -27,18 +27,16 @@
enum Yells
{
SAY_AGGRO = 14,
SAY_SLAY_1 = 15,
SAY_DEATH = 17,
SAY_FORGE_1 = 18,
SAY_FORGE_2 = 19,
SAY_BOULDER_HIT = 16,
EMOTE_DEEP_FREEZE = 23,
SAY_AGGRO = 0,
SAY_HP_66 = 1,
SAY_HP_33 = 2,
SAY_DEATH = 3,
SAY_SLAY = 4,
SAY_BOULDER_HIT = 5,
WHISPER_BOULDER = 6,
EMOTE_DEEP_FREEZE = 7,
};
#define EMOTE_THROW_SARONITE "%s hurls a massive saronite boulder at you!"
enum MiscData
{
EQUIP_ID_SWORD = 49345,
@@ -158,14 +156,14 @@ public:
{
me->SetControlled(true, UNIT_STATE_ROOT);
me->CastSpell(me, SPELL_FORGE_BLADE, false);
Talk(SAY_FORGE_1);
Talk(SAY_HP_66);
}
else if (phase == 2)
{
me->SetControlled(true, UNIT_STATE_ROOT);
me->RemoveAurasDueToSpell(SPELL_FORGE_BLADE);
me->CastSpell(me, SPELL_FORGE_MACE, false);
Talk(SAY_FORGE_2);
Talk(SAY_HP_33);
}
}
@@ -244,9 +242,7 @@ public:
bCanSayBoulderHit = true;
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 140.0f, true))
{
WorldPacket data;
ChatHandler::BuildChatPacket(data, CHAT_MSG_RAID_BOSS_EMOTE, LANG_UNIVERSAL, me, nullptr, EMOTE_THROW_SARONITE);
target->ToPlayer()->GetSession()->SendPacket(&data);
Talk(WHISPER_BOULDER, target);
me->CastSpell(target, SPELL_THROW_SARONITE, false);
}
events.RepeatEvent(urand(12500, 20000));
@@ -286,7 +282,7 @@ public:
void KilledUnit(Unit* who) override
{
if (who->GetTypeId() == TYPEID_PLAYER)
Talk(SAY_SLAY_1);
Talk(SAY_SLAY);
}
void EnterEvadeMode(EvadeReason why) override

View File

@@ -28,19 +28,18 @@
enum Yells
{
SAY_AGGRO = 24,
SAY_SLAY_1 = 25,
SAY_SLAY_2 = 26,
SAY_ORDER_STOP = 27,
SAY_ORDER_BLOW = 28,
SAY_TARGET_1 = 29,
SAY_TARGET_2 = 30,
SAY_TARGET_3 = 31,
EMOTE_KRICK_MINES = 32,
EMOTE_ICK_POISON = 33,
};
// Ick
EMOTE_ICK_POISON_NOVA = 0,
EMOTE_ICK_CHASE = 1,
#define EMOTE_ICK_CHASING "%s is chasing you!"
// Krick
SAY_AGGRO = 0,
SAY_SLAY = 1,
SAY_BARRAGE_1 = 2,
SAY_BARRAGE_2 = 3,
SAY_POISON_NOVA = 4,
SAY_CHASE = 5,
};
enum Spells
{
@@ -119,11 +118,7 @@ public:
return;
if (spell->Id == SPELL_PURSUIT && target->GetTypeId() == TYPEID_PLAYER)
{
WorldPacket data;
ChatHandler::BuildChatPacket(data, CHAT_MSG_RAID_BOSS_EMOTE, LANG_UNIVERSAL, me, nullptr, EMOTE_ICK_CHASING);
target->ToPlayer()->GetSession()->SendPacket(&data);
Talk(EMOTE_ICK_CHASE, target);
AttackStart(target);
me->SetReactState(REACT_PASSIVE);
events.RescheduleEvent(EVENT_SET_REACT_AGGRESSIVE, 12000);
@@ -222,23 +217,23 @@ public:
{
case 0: // Pursuit
if (Creature* k = GetKrick())
k->AI()->Talk(RAND(SAY_TARGET_1, SAY_TARGET_2, SAY_TARGET_3));
k->AI()->Talk(SAY_CHASE);
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 70.0f, true))
me->CastSpell(target, SPELL_PURSUIT, false);
break;
case 1: // Poison Nova
if (Creature* k = GetKrick())
{
k->AI()->Talk(SAY_ORDER_BLOW);
Talk(EMOTE_ICK_POISON);
k->AI()->Talk(SAY_POISON_NOVA);
Talk(EMOTE_ICK_POISON_NOVA);
}
me->CastSpell(me, SPELL_POISON_NOVA, false);
break;
case 2: // Explosive Barrage
if (Creature* k = GetKrick())
{
k->AI()->Talk(SAY_ORDER_STOP);
k->AI()->Talk(EMOTE_KRICK_MINES);
k->AI()->Talk(SAY_BARRAGE_1);
k->AI()->Talk(SAY_BARRAGE_2);
k->InterruptNonMeleeSpells(false);
me->InterruptNonMeleeSpells(false);
k->CastSpell(k, SPELL_EXPLOSIVE_BARRAGE_KRICK, false);
@@ -270,7 +265,7 @@ public:
if (who->GetTypeId() == TYPEID_PLAYER)
if (Creature* k = GetKrick())
k->AI()->Talk(RAND(SAY_SLAY_1, SAY_SLAY_2));
k->AI()->Talk(SAY_SLAY);
}
void JustSummoned(Creature* /*summon*/) override

View File

@@ -22,14 +22,13 @@
enum Texts
{
SAY_AGGRO = 53,
SAY_SLAY_1 = 54,
SAY_SLAY_2 = 55,
SAY_DEATH = 56,
SAY_MARK = 57,
SAY_SMASH = 58,
EMOTE_RIMEFANG_ICEBOLT = 59,
EMOTE_SMASH = 60,
SAY_AGGRO = 2,
SAY_SLAY = 3,
SAY_DEATH = 4,
SAY_MARK = 5,
EMOTE_MARK = 6,
SAY_DARK_MIGHT = 7,
EMOTE_DARK_MIGHT = 8,
};
enum Spells
@@ -166,8 +165,8 @@ public:
events.RepeatEvent(3000);
break;
case EVENT_SPELL_UNHOLY_POWER:
Talk(SAY_SMASH);
Talk(EMOTE_SMASH);
Talk(SAY_DARK_MIGHT);
Talk(EMOTE_DARK_MIGHT);
me->CastSpell(me, SPELL_UNHOLY_POWER, false);
events.ScheduleEvent(EVENT_SPELL_FORCEFUL_SMASH, urand(40000, 48000));
@@ -188,7 +187,7 @@ public:
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_RIMEFANG_GUID)))
{
Talk(SAY_MARK);
c->AI()->Talk(EMOTE_RIMEFANG_ICEBOLT, target);
Talk(EMOTE_MARK, target);
c->CastSpell(target, RIMEFANG_SPELL_HOARFROST, false);
}
events.RepeatEvent(25000);
@@ -211,7 +210,7 @@ public:
void KilledUnit(Unit* who) override
{
if (who->GetTypeId() == TYPEID_PLAYER)
Talk(RAND(SAY_SLAY_1, SAY_SLAY_2));
Talk(SAY_SLAY);
}
bool CanAIAttack(Unit const* who) const override

View File

@@ -175,7 +175,7 @@ public:
events.RescheduleEvent(7, 5000);
break;
case 7:
case 7: /// @todo: (Initial RP, when zoning in the instance) is not complete.
if (pInstance)
{
if (Creature* n1 = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_NECROLYTE_1_GUID)))
@@ -929,7 +929,7 @@ public:
if (pInstance)
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_GUID)))
{
c->AI()->Talk(SAY_PREFIGHT_1);
c->AI()->Talk(SAY_BOSS_TYRANNUS_INTRO_1);
c->SetImmuneToPC(false);
c->SetReactState(REACT_AGGRESSIVE);
//c->ClearUnitState(UNIT_STATE_ONVEHICLE);
@@ -1034,7 +1034,7 @@ public:
case 3:
if (pInstance)
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_GUID)))
c->AI()->Talk(SAY_PREFIGHT_2);
c->AI()->Talk(SAY_BOSS_TYRANNUS_INTRO_2);
me->SetFacingTo(5.26f);
me->SetOrientation(5.26f);
@@ -1203,7 +1203,9 @@ public:
break;
case 1:
if (me->GetEntry() == NPC_JAINA_PART2)
{
Talk(SAY_JAINA_OUTRO_3);
}
break;
case 6:
me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);

View File

@@ -145,16 +145,17 @@ enum eSpells
*** INTRO:
************/
enum eIntroTexts
// Tyrannus speaker - NPC_TYRANNUS_EVENT
enum eIntroTexts // Before Cave
{
SAY_TYRANNUS_INTRO_1 = 1,
SAY_TYRANNUS_INTRO_1 = 4,
SAY_JAINA_INTRO_1 = 2,
SAY_SYLVANAS_INTRO_1 = 3,
SAY_TYRANNUS_INTRO_2 = 4,
SAY_TYRANNUS_INTRO_3 = 5,
SAY_TYRANNUS_INTRO_2 = 5,
SAY_TYRANNUS_INTRO_3 = 6,
SAY_JAINA_INTRO_2 = 6,
SAY_SYLVANAS_INTRO_2 = 7,
SAY_TYRANNUS_INTRO_4 = 8,
SAY_TYRANNUS_INTRO_4 = 7,
SAY_JAINA_INTRO_3 = 9,
SAY_JAINA_INTRO_4 = 10,
SAY_SYLVANAS_INTRO_3 = 11,
@@ -206,7 +207,7 @@ const ChampionPosition introPositions[] =
enum eFBSTexts
{
SAY_GENERAL_GARFROST = 21,
SAY_TYRANNUS_GARFROST = 20,
SAY_TYRANNUS_GARFROST = 0,
};
const Position FBSSpawnPos = {695.685f, -118.825f, 513.877f, 3 * M_PI / 2};
@@ -240,18 +241,18 @@ const Position SBSTyrannusStartPos = {781.127f, 265.825f, 552.31f, 0.0f};
const Position SBSLeaderStartPos = {772.716f, 111.517f, 510.81f, 0.0f};
const Position SBSLeaderEndPos = {823.2f, -4.4497f, 509.49f, 0.86f};
enum eSBSTexts
enum eSBSTexts // Ick outro
{
SAY_OUTRO_KRICK_1 = 35,
SAY_OUTRO_KRICK_1 = 6,
SAY_JAINA_KRICK_1 = 36,
SAY_SYLVANAS_KRICK_1 = 37,
SAY_OUTRO_KRICK_2 = 38,
SAY_OUTRO_KRICK_2 = 7,
SAY_JAINA_KRICK_2 = 39,
SAY_SYLVANAS_KRICK_2 = 40,
SAY_OUTRO_KRICK_3 = 41,
SAY_TYRANNUS_KRICK_1 = 42,
SAY_OUTRO_KRICK_4 = 43,
SAY_TYRANNUS_KRICK_2 = 44,
SAY_OUTRO_KRICK_3 = 8,
SAY_TYRANNUS_KRICK_1 = 0,
SAY_OUTRO_KRICK_4 = 9,
SAY_TYRANNUS_KRICK_2 = 1,
SAY_JAINA_KRICK_3 = 45,
SAY_SYLVANAS_KRICK_3 = 46,
};
@@ -266,9 +267,9 @@ const Position PTSTyrannusWaitPos3 = {1117.93f, -125.16f, 760.34f, 0.10f};
enum ePTSTexts
{
SAY_TYRANNUS_AMBUSH_1 = 47,
SAY_TYRANNUS_AMBUSH_2 = 48,
SAY_TYRANNUS_TRAP_TUNNEL = 49,
SAY_TYRANNUS_AMBUSH_1 = 2, // NPC_TYRANNUS_EVENT
SAY_TYRANNUS_AMBUSH_2 = 3, // NPC_TYRANNUS_EVENT
SAY_TYRANNUS_TRAP_TUNNEL = 1, // NPC_TYRANNUS_VOICE
};
/************
@@ -313,10 +314,9 @@ const TSPosition TSData[] =
enum eTSTexts
{
SAY_PREFIGHT_1 = 50,
SAY_BOSS_TYRANNUS_INTRO_1 = 0,
SAY_GENERAL_HORDE_TRASH = 51,
SAY_PREFIGHT_2 = 52,
SAY_PREFIGHT_AGGRO = 53,
SAY_BOSS_TYRANNUS_INTRO_2 = 1,
SAY_GENERAL_HORDE_OUTRO_1 = 61,
SAY_GENERAL_OUTRO_2 = 62,