mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-17 10:55:43 +00:00
fix(script/LBRS): Urok Doomhowl improvements (#7960)
This commit is contained in:
@@ -73,6 +73,8 @@ enum CreaturesIds
|
||||
NPC_BLACKHAND_VETERAN = 9819,
|
||||
NPC_BLACKHAND_INCARCERATOR = 10316,
|
||||
NPC_LORD_VICTOR_NEFARIUS = 10162,
|
||||
NPC_UROK_MAGUS = 10602,
|
||||
NPC_UROK_ENFORCER = 10601,
|
||||
NPC_FINKLE_EINHORN = 10776
|
||||
};
|
||||
|
||||
@@ -121,6 +123,8 @@ enum GameObjectsIds
|
||||
GO_PORTCULLIS_TOBOSSROOMS = 175186,
|
||||
// Urok Doomhowl
|
||||
GO_UROK_PILE = 175621,
|
||||
GO_UROK_CHALLENGE = 175584,
|
||||
GO_UROK_CIRCLE = 175571
|
||||
};
|
||||
|
||||
enum npcspells
|
||||
|
||||
@@ -58,6 +58,8 @@ public:
|
||||
{
|
||||
me->CastSpell(me, SPELL_UROK_SPAWN, true);
|
||||
BossAI::InitializeAI();
|
||||
Talk(SAY_SUMMON);
|
||||
DoZoneInCombat(nullptr, 100.0f);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
@@ -65,7 +67,7 @@ public:
|
||||
_EnterCombat();
|
||||
events.ScheduleEvent(SPELL_REND, urand(17000, 20000));
|
||||
events.ScheduleEvent(SPELL_STRIKE, urand(10000, 12000));
|
||||
Talk(SAY_AGGRO);
|
||||
events.ScheduleEvent(SPELL_INTIMIDATING_ROAR, urand(25000, 30000));
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -95,6 +97,10 @@ public:
|
||||
DoCastVictim(SPELL_STRIKE);
|
||||
events.ScheduleEvent(SPELL_STRIKE, urand(8000, 10000));
|
||||
break;
|
||||
case SPELL_INTIMIDATING_ROAR:
|
||||
DoCastVictim(SPELL_INTIMIDATING_ROAR);
|
||||
events.ScheduleEvent(SPELL_INTIMIDATING_ROAR, urand(40000, 45000));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -33,13 +33,7 @@ uint32 const DragonspireMobs[3] = { NPC_BLACKHAND_DREADWEAVER, NPC_BLACKHAND_SUM
|
||||
enum EventIds
|
||||
{
|
||||
EVENT_DARGONSPIRE_ROOM_STORE = 1,
|
||||
EVENT_DARGONSPIRE_ROOM_CHECK = 2,
|
||||
EVENT_UROK_DOOMHOWL_SPAWNS_1 = 3,
|
||||
EVENT_UROK_DOOMHOWL_SPAWNS_2 = 4,
|
||||
EVENT_UROK_DOOMHOWL_SPAWNS_3 = 5,
|
||||
EVENT_UROK_DOOMHOWL_SPAWNS_4 = 6,
|
||||
EVENT_UROK_DOOMHOWL_SPAWNS_5 = 7,
|
||||
EVENT_UROK_DOOMHOWL_SPAWN_IN = 8
|
||||
EVENT_DARGONSPIRE_ROOM_CHECK = 2
|
||||
};
|
||||
|
||||
enum Texts
|
||||
@@ -76,6 +70,11 @@ public:
|
||||
{
|
||||
switch (creature->GetEntry())
|
||||
{
|
||||
case NPC_UROK_MAGUS:
|
||||
[[fallthrough]];
|
||||
case NPC_UROK_ENFORCER:
|
||||
UrokMobs.push_back(creature->GetGUID());
|
||||
break;
|
||||
case NPC_HIGHLORD_OMOKK:
|
||||
HighlordOmokk = creature->GetGUID();
|
||||
break;
|
||||
@@ -239,7 +238,13 @@ public:
|
||||
HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
break;
|
||||
case GO_UROK_PILE:
|
||||
go_urok_pile = go->GetGUID();
|
||||
go_urokPile = go->GetGUID();
|
||||
break;
|
||||
case GO_UROK_CIRCLE:
|
||||
go_urokOgreCirles.push_back(go->GetGUID());
|
||||
break;
|
||||
case GO_UROK_CHALLENGE:
|
||||
go_urokChallenge = go->GetGUID();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -303,8 +308,11 @@ public:
|
||||
case EVENT_UROK_DOOMHOWL:
|
||||
if (GetBossState(DATA_UROK_DOOMHOWL) == NOT_STARTED)
|
||||
{
|
||||
if (GameObject* pile = instance->GetGameObject(go_urok_pile))
|
||||
SetBossState(DATA_UROK_DOOMHOWL, IN_PROGRESS);
|
||||
if (GameObject* pile = instance->GetGameObject(go_urokPile))
|
||||
{
|
||||
pile->SetLootState(GO_JUST_DEACTIVATED);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -322,6 +330,39 @@ public:
|
||||
if (GetBossState(DATA_DRAGONSPIRE_ROOM) != DONE)
|
||||
Events.ScheduleEvent(EVENT_DARGONSPIRE_ROOM_STORE, 1000);
|
||||
}
|
||||
break;
|
||||
case DATA_UROK_DOOMHOWL:
|
||||
if (data == FAIL)
|
||||
{
|
||||
if (!(GetBossState(DATA_UROK_DOOMHOWL) == NOT_STARTED))
|
||||
{
|
||||
SetBossState(DATA_UROK_DOOMHOWL, NOT_STARTED);
|
||||
if (GameObject* challenge = instance->GetGameObject(go_urokChallenge))
|
||||
{
|
||||
challenge->Delete();
|
||||
}
|
||||
if (GameObject* pile = instance->GetGameObject(go_urokPile))
|
||||
{
|
||||
pile->SetLootState(GO_READY);
|
||||
pile->Respawn();
|
||||
}
|
||||
for (const auto& circleGUID : go_urokOgreCirles)
|
||||
{
|
||||
if (GameObject* circle = instance->GetGameObject(circleGUID))
|
||||
{
|
||||
circle->Delete();
|
||||
}
|
||||
}
|
||||
for (const auto& mobGUID: UrokMobs)
|
||||
{
|
||||
if (Creature* mob = instance->GetCreature(mobGUID))
|
||||
{
|
||||
mob->DespawnOrUnsummon();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -592,7 +633,10 @@ public:
|
||||
GuidVector runecreaturelist[7];
|
||||
ObjectGuid go_portcullis_active;
|
||||
ObjectGuid go_portcullis_tobossrooms;
|
||||
ObjectGuid go_urok_pile;
|
||||
ObjectGuid go_urokPile;
|
||||
ObjectGuid go_urokChallenge;
|
||||
std::vector<ObjectGuid> go_urokOgreCirles;
|
||||
std::vector<ObjectGuid> UrokMobs;
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||
|
||||
Reference in New Issue
Block a user