mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Scripts/Aberrus: Move StringIds of Kazzara Intro trigger npcs to spawn instead of template
This commit is contained in:
5
sql/updates/world/master/2023_11_25_00_world.sql
Normal file
5
sql/updates/world/master/2023_11_25_00_world.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
-- remove 'sundered_mob' string id
|
||||
UPDATE `creature_template` SET `StringId`=NULL WHERE `entry` IN(198874, 205735, 205734, 205737, 198872, 205736, 198871, 198873, 198869);
|
||||
|
||||
UPDATE `creature` SET `StringId`='kazzara_intro_trash' WHERE `guid` IN(9003990, 9003965, 9003968, 9003983, 9003992, 9003985, 9003993, 9003986);
|
||||
@@ -193,7 +193,7 @@ public:
|
||||
|
||||
if (InstanceScript* instance = conversation->GetInstanceScript())
|
||||
{
|
||||
instance->SetData(DATA_KAZZARA_INTRO_DONE, 1);
|
||||
instance->SetData(DATA_KAZZARA_INTRO_STATE, DONE);
|
||||
if (Creature* kazzara = instance->GetCreature(DATA_KAZZARA_THE_HELLFORGED))
|
||||
kazzara->AI()->DoAction(ACTION_START_KAZZARA_INTRO);
|
||||
}
|
||||
|
||||
@@ -38,11 +38,14 @@ enum AberrusDataTypes
|
||||
DATA_ECHO_OF_NELTHARION = 7,
|
||||
DATA_SCALECOMMANDER_SARKARETH = 8,
|
||||
|
||||
// Additional Data
|
||||
// Creatures
|
||||
DATA_SARKARETH_AT_KAZZARA,
|
||||
|
||||
// Gameobjects
|
||||
DATA_KAZZARA_GATE,
|
||||
|
||||
// Misc
|
||||
DATA_KAZZARA_INTRO_DONE
|
||||
DATA_KAZZARA_INTRO_STATE
|
||||
};
|
||||
|
||||
enum AberrusCreatureIds
|
||||
@@ -65,6 +68,13 @@ enum AberrusCreatureIds
|
||||
BOSS_ECHO_OF_NELTHARION = 204223,
|
||||
BOSS_SCALECOMMANDER_SARKARETH = 205319,
|
||||
|
||||
// Kazzara Trash
|
||||
NPC_SCALECOMMANDER_SARKARETH_AT_KAZZARA = 202416,
|
||||
NPC_SUNDERED_DEVASTATOR = 198869,
|
||||
NPC_SUNDERED_SCALEGUARD = 198871,
|
||||
NPC_SUNDERED_MANAWEAVER = 198872,
|
||||
NPC_SUNDERED_EDGELORD = 198873,
|
||||
|
||||
// Misc
|
||||
NPC_SABELLIAN_AT_ABERRUS_ENTRANCE = 201575
|
||||
};
|
||||
|
||||
@@ -40,7 +40,7 @@ struct boss_kazzara_the_hellforged : public BossAI
|
||||
|
||||
void JustAppeared() override
|
||||
{
|
||||
if (!instance->GetData(DATA_KAZZARA_INTRO_DONE))
|
||||
if (instance->GetData(DATA_KAZZARA_INTRO_STATE) != DONE)
|
||||
{
|
||||
me->SetUninteractible(true);
|
||||
me->SetImmuneToAll(true);
|
||||
|
||||
@@ -22,16 +22,17 @@
|
||||
|
||||
ObjectData const creatureData[] =
|
||||
{
|
||||
{ BOSS_KAZZARA_THE_HELLFORGED, DATA_KAZZARA_THE_HELLFORGED },
|
||||
{ BOSS_SHADOWFLAME_AMALGAMATION, DATA_THE_AMALGAMATION_CHAMBER },
|
||||
{ BOSS_RIONTHUS, DATA_THE_FORGOTTEN_EXPERIMENTS },
|
||||
{ BOSS_WARLORD_KAGNI, DATA_ASSAULT_OF_THE_ZAQALI },
|
||||
{ BOSS_RASHOK_THE_ELDER, DATA_RASHOK_THE_ELDER },
|
||||
{ BOSS_ZSKARN_THE_VIGILANT_STEWARD, DATA_ZSKARN_THE_VIGILANT_STEWARD },
|
||||
{ BOSS_MAGMORAX, DATA_MAGMORAX },
|
||||
{ BOSS_ECHO_OF_NELTHARION, DATA_ECHO_OF_NELTHARION },
|
||||
{ BOSS_SCALECOMMANDER_SARKARETH, DATA_SCALECOMMANDER_SARKARETH },
|
||||
{ 0, 0 } // END
|
||||
{ BOSS_KAZZARA_THE_HELLFORGED, DATA_KAZZARA_THE_HELLFORGED },
|
||||
{ BOSS_SHADOWFLAME_AMALGAMATION, DATA_THE_AMALGAMATION_CHAMBER },
|
||||
{ BOSS_RIONTHUS, DATA_THE_FORGOTTEN_EXPERIMENTS },
|
||||
{ BOSS_WARLORD_KAGNI, DATA_ASSAULT_OF_THE_ZAQALI },
|
||||
{ BOSS_RASHOK_THE_ELDER, DATA_RASHOK_THE_ELDER },
|
||||
{ BOSS_ZSKARN_THE_VIGILANT_STEWARD, DATA_ZSKARN_THE_VIGILANT_STEWARD },
|
||||
{ BOSS_MAGMORAX, DATA_MAGMORAX },
|
||||
{ BOSS_ECHO_OF_NELTHARION, DATA_ECHO_OF_NELTHARION },
|
||||
{ BOSS_SCALECOMMANDER_SARKARETH, DATA_SCALECOMMANDER_SARKARETH },
|
||||
{ NPC_SCALECOMMANDER_SARKARETH_AT_KAZZARA, DATA_SARKARETH_AT_KAZZARA },
|
||||
{ 0, 0 } // END
|
||||
};
|
||||
|
||||
DoorData const doorData[] =
|
||||
@@ -59,11 +60,6 @@ DungeonEncounterData const encounters[] =
|
||||
{ DATA_SCALECOMMANDER_SARKARETH, {{ 2685 }} }
|
||||
};
|
||||
|
||||
enum AberrusInstanceCreatureIds
|
||||
{
|
||||
NPC_SCALECOMMANDER_SARKARETH_AT_KAZZARA = 202416
|
||||
};
|
||||
|
||||
enum AberrusInstanceSpells
|
||||
{
|
||||
SPELL_ABERRUS_ENTRANCE_RP_CONVERSATION_3 = 403409 // Winglord Dezran, Sarkareth and Zskarn (Kazzara Summon)
|
||||
@@ -84,59 +80,70 @@ public:
|
||||
LoadDoorData(doorData);
|
||||
LoadDungeonEncounterData(encounters);
|
||||
|
||||
_kazzaraIntroDone = false;
|
||||
_deadSunderedMobs = 0;
|
||||
_kazzaraIntroState = NOT_STARTED;
|
||||
_kazzaraAliveIntroNPCs = 0;
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 dataId) const override
|
||||
{
|
||||
switch (dataId)
|
||||
{
|
||||
case DATA_KAZZARA_INTRO_DONE:
|
||||
return _kazzaraIntroDone ? 1 : 0;
|
||||
case DATA_KAZZARA_INTRO_STATE:
|
||||
return _kazzaraIntroState;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SetData(uint32 dataId, uint32 /*value*/) override
|
||||
void SetData(uint32 dataId, uint32 value) override
|
||||
{
|
||||
switch (dataId)
|
||||
{
|
||||
case DATA_KAZZARA_INTRO_DONE:
|
||||
_kazzaraIntroDone = true; // no need to pass value, it will never reset to false
|
||||
case DATA_KAZZARA_INTRO_STATE:
|
||||
_kazzaraIntroState = value;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature) override
|
||||
{
|
||||
InstanceScript::OnCreatureCreate(creature);
|
||||
|
||||
if (creature->HasStringId("kazzara_intro_trash"))
|
||||
_kazzaraAliveIntroNPCs++;
|
||||
}
|
||||
|
||||
void OnUnitDeath(Unit* unit) override
|
||||
{
|
||||
Creature* creature = unit->ToCreature();
|
||||
if (!creature)
|
||||
return;
|
||||
|
||||
if (creature->HasStringId("sundered_mob"))
|
||||
if (creature->HasStringId("kazzara_intro_trash"))
|
||||
{
|
||||
if (_deadSunderedMobs >= 6)
|
||||
if (_kazzaraIntroState != NOT_STARTED)
|
||||
return;
|
||||
|
||||
_deadSunderedMobs++;
|
||||
if (_deadSunderedMobs >= 6)
|
||||
{
|
||||
Creature* sarkareth = creature->FindNearestCreature(NPC_SCALECOMMANDER_SARKARETH_AT_KAZZARA, 300.0f);
|
||||
if (!sarkareth)
|
||||
return;
|
||||
sarkareth->CastSpell(nullptr, SPELL_ABERRUS_ENTRANCE_RP_CONVERSATION_3);
|
||||
}
|
||||
_kazzaraAliveIntroNPCs--;
|
||||
if (_kazzaraAliveIntroNPCs > 0)
|
||||
return;
|
||||
|
||||
_kazzaraIntroState = IN_PROGRESS;
|
||||
|
||||
Creature* sarkareth = GetCreature(DATA_SARKARETH_AT_KAZZARA);
|
||||
if (!sarkareth)
|
||||
return;
|
||||
|
||||
sarkareth->CastSpell(nullptr, SPELL_ABERRUS_ENTRANCE_RP_CONVERSATION_3);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
uint8 _deadSunderedMobs;
|
||||
bool _kazzaraIntroDone;
|
||||
uint8 _kazzaraAliveIntroNPCs;
|
||||
uint8 _kazzaraIntroState;
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||
|
||||
Reference in New Issue
Block a user