mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-21 20:56:23 +00:00
fix(script/LBRS): Urok Doomhowl improvements (#7960)
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1631974777295481100');
|
||||
UPDATE `creature_template` SET `flags_extra` = 0, `faction` = 40 WHERE (`entry` IN (10601, 10602));
|
||||
|
||||
-- extend duration of mobs alive, without increasing Urok. spawn all circles at once
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 17558400);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(17558400, 9, 0, 0, 0, 0, 100, 0, 500, 500, 0, 0, 0, 50, 175571, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, -14.36, -389.37, 48.78, 0, 'Script9 - Summon GO'),
|
||||
(17558400, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 50, 175571, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, -27.43, -372.86, 49.36, 0, 'Script9 - Summon GO'),
|
||||
(17558400, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 50, 175571, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, -19.78, -372.75, 49.25, 0, 'Script9 - Summon GO'),
|
||||
(17558400, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 50, 175571, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, -31.67, -385.91, 48.65, 0, 'Script9 - Summon GO'),
|
||||
(17558400, 9, 4, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 50, 175571, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, -37.13, -369.65, 50.63, 0, 'Script9 - Summon GO'),
|
||||
(17558400, 9, 5, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 50, 175571, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, -46.26, -376.98, 50.51, 0, 'Script9 - Summon GO'),
|
||||
(17558400, 9, 6, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 0, 12, 10601, 4, 120000, 0, 0, 0, 8, 0, 0, 0, 0, -19.78, -372.75, 49.25, 0, 'Script9 - Summon Creature ogre'),
|
||||
(17558400, 9, 7, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 12, 10601, 4, 120000, 0, 0, 0, 8, 0, 0, 0, 0, -31.67, -385.91, 48.65, 0, 'Script9 - Summon Creature ogre'),
|
||||
(17558400, 9, 8, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 12, 10602, 4, 120000, 0, 0, 0, 8, 0, 0, 0, 0, -37.13, -369.65, 50.63, 0, 'Script9 - Summon Creature ogre'),
|
||||
(17558400, 9, 9, 0, 0, 0, 100, 0, 15000, 15000, 0, 0, 0, 12, 10601, 4, 120000, 0, 0, 0, 8, 0, 0, 0, 0, -14.36, -389.37, 48.78, 0, 'Script9 - Summon Creature ogre'),
|
||||
(17558400, 9, 10, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 12, 10602, 4, 120000, 0, 0, 0, 8, 0, 0, 0, 0, -27.43, -372.86, 49.36, 0, 'Script9 - Summon Creature ogre'),
|
||||
(17558400, 9, 11, 0, 0, 0, 100, 0, 10000, 10000, 0, 0, 0, 12, 10602, 4, 120000, 0, 0, 0, 8, 0, 0, 0, 0, -31.67, -385.91, 48.65, 0, 'Script9 - Summon Creature ogre'),
|
||||
(17558400, 9, 12, 0, 0, 0, 100, 0, 15000, 15000, 0, 0, 0, 12, 10601, 4, 120000, 0, 0, 0, 8, 0, 0, 0, 0, -46.26, -376.98, 50.51, 0, 'Script9 - Summon Creature ogre'),
|
||||
(17558400, 9, 13, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 12, 10602, 4, 120000, 0, 0, 0, 8, 0, 0, 0, 0, -37.13, -369.65, 50.63, 0, 'Script9 - Summon Creature ogre'),
|
||||
(17558400, 9, 14, 0, 0, 0, 100, 0, 10000, 10000, 0, 0, 0, 12, 10601, 4, 120000, 0, 0, 0, 8, 0, 0, 0, 0, -27.43, -372.86, 49.36, 0, 'Script9 - Summon Creature ogre'),
|
||||
(17558400, 9, 15, 0, 0, 0, 100, 0, 15000, 15000, 0, 0, 0, 12, 10602, 4, 120000, 0, 0, 0, 8, 0, 0, 0, 0, -46.26, -376.98, 50.51, 0, 'Script9 - Summon Creature ogre'),
|
||||
(17558400, 9, 16, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 12, 10601, 4, 120000, 0, 0, 0, 8, 0, 0, 0, 0, -14.36, -389.37, 48.78, 0, 'Script9 - Summon Creature ogre'),
|
||||
(17558400, 9, 17, 0, 0, 0, 100, 0, 15000, 15000, 0, 0, 0, 12, 10584, 4, 30000, 0, 0, 0, 8, 0, 0, 0, 0, -28.57, -395.78, 48.78, 1.41, 'Script9 - Summon Creature Urok'),
|
||||
(17558400, 9, 18, 0, 0, 0, 100, 0, 60000, 60000, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Script9 - Delete Self');
|
||||
|
||||
-- add urok data fail + despawn to urok enforcer and ogre magus
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 10601;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 10601) AND (`source_type` = 0) AND (`id` IN (1, 2, 20));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(10601, 0, 1, 2, 1, 0, 100, 0, 30000, 30000, 0, 0, 0, 34, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'OOC update - Set Urok fail after timer'),
|
||||
(10601, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Link - despawn self after fail'),
|
||||
(10601, 0, 20, 21, 54, 0, 100, 1, 0, 0, 0, 0, 0, 11, 12980, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'On Update - Cast Spell');
|
||||
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 10602;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 10602) AND (`source_type` = 0) AND (`id` IN (4, 3, 20));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(10602, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Link - self despawn'),
|
||||
(10602, 0, 3, 4, 1, 0, 100, 0, 30000, 30000, 0, 0, 0, 34, 4, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'OOC update - set Urok to fail'),
|
||||
(10602, 0, 20, 21, 54, 0, 100, 1, 0, 0, 0, 0, 0, 11, 12980, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'On spawn - Cast Spell');
|
||||
|
||||
-- despawn circles after 2 minutes
|
||||
UPDATE `gameobject_template` SET `AIName` = 'SmartGameObjectAI' WHERE `entry` = 175571;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 175571) AND (`source_type` = 1) AND (`id` IN (0));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(175571, 1, 0, 0, 1, 0, 100, 0, 0, 0, 0, 0, 0, 41, 120000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, '');
|
||||
@@ -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