fix(Script/HoL): General Bjarngrim starting location, timings and pathing corrected (#23416)
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
--
|
||||||
|
UPDATE `creature` SET `position_x` = 1262.0, `position_y` = -26.9, `position_z` = 33.5 WHERE `guid` = 126981;
|
||||||
@@ -90,6 +90,9 @@ enum BjarngrimEvents
|
|||||||
// STORMFORGED LIEUTENANT
|
// STORMFORGED LIEUTENANT
|
||||||
EVENT_ARC_WELD = 41,
|
EVENT_ARC_WELD = 41,
|
||||||
EVENT_RENEW_STEEL = 42,
|
EVENT_RENEW_STEEL = 42,
|
||||||
|
|
||||||
|
// CHARGE UP
|
||||||
|
EVENT_CHARGE_UP = 51,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Yells
|
enum Yells
|
||||||
@@ -110,27 +113,22 @@ struct boss_bjarngrim : public npc_escortAI
|
|||||||
boss_bjarngrim(Creature* creature) : npc_escortAI(creature), summons(creature)
|
boss_bjarngrim(Creature* creature) : npc_escortAI(creature), summons(creature)
|
||||||
{
|
{
|
||||||
m_pInstance = creature->GetInstanceScript();
|
m_pInstance = creature->GetInstanceScript();
|
||||||
|
InitializeWaypoints();
|
||||||
// Init waypoints
|
|
||||||
AddWaypoint(1, 1262.18f, 99.3f, 33.5f, 0);
|
|
||||||
AddWaypoint(2, 1281.6f, 99.5f, 33.5f, 0);
|
|
||||||
AddWaypoint(3, 1311.7f, 99.4f, 40.1f, 0);
|
|
||||||
AddWaypoint(4, 1332.5f, 99.7f, 40.18f, 0);
|
|
||||||
AddWaypoint(5, 1311.7f, 99.4f, 40.1f, 0);
|
|
||||||
AddWaypoint(6, 1281.6f, 99.5f, 33.5f, 0);
|
|
||||||
AddWaypoint(7, 1262.18f, 99.3f, 33.5f, 0);
|
|
||||||
AddWaypoint(8, 1262, -26.9f, 33.5f, 0);
|
|
||||||
AddWaypoint(9, 1281.2f, -26.8f, 33.5f, 0);
|
|
||||||
AddWaypoint(10, 1311.3f, -26.9f, 40.03f, 0);
|
|
||||||
AddWaypoint(11, 1332, -26.6f, 40.18f, 0);
|
|
||||||
AddWaypoint(12, 1311.3f, -26.9f, 40.03f, 0);
|
|
||||||
AddWaypoint(13, 1281.2f, -26.8f, 33.5f, 0);
|
|
||||||
AddWaypoint(14, 1262, -26.9f, 33.5f, 0);
|
|
||||||
|
|
||||||
me->SetWalk(true);
|
me->SetWalk(true);
|
||||||
Start(true, ObjectGuid::Empty, nullptr, false, true);
|
Start(true, ObjectGuid::Empty, nullptr, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void InitializeWaypoints()
|
||||||
|
{
|
||||||
|
AddWaypoint(1, 1262.0f, -26.9f, 33.5f, 10000);
|
||||||
|
AddWaypoint(2, 1262.18f, 99.3f, 33.5f, 10000);
|
||||||
|
AddWaypoint(3, 1262.0f, -26.9f, 33.5f, 0);
|
||||||
|
AddWaypoint(4, 1332.0f, -26.6f, 40.18f, 10000);
|
||||||
|
AddWaypoint(5, 1395.092f, 36.6425f, 50.038f, 10000);
|
||||||
|
AddWaypoint(6, 1332.0f, -26.6f, 40.18f, 0);
|
||||||
|
AddWaypoint(7, 1262.0f, -26.9f, 33.5f, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
events.Reset();
|
events.Reset();
|
||||||
@@ -139,12 +137,12 @@ struct boss_bjarngrim : public npc_escortAI
|
|||||||
for (uint8 i = 0; i < 2; ++i)
|
for (uint8 i = 0; i < 2; ++i)
|
||||||
if (Creature* dwarf = me->SummonCreature(NPC_STORMFORGED_LIEUTENANT, me->GetPositionX() + urand(4, 12), me->GetPositionY() + urand(4, 12), me->GetPositionZ()))
|
if (Creature* dwarf = me->SummonCreature(NPC_STORMFORGED_LIEUTENANT, me->GetPositionX() + urand(4, 12), me->GetPositionY() + urand(4, 12), me->GetPositionZ()))
|
||||||
{
|
{
|
||||||
dwarf->GetMotionMaster()->MoveFollow(me, 3, rand_norm() * 2 * 3.14f);
|
float angle = i == 0 ? 2.5f : 3.78f;
|
||||||
|
dwarf->GetMotionMaster()->MoveFollow(me, 3, angle);
|
||||||
summons.Summon(dwarf);
|
summons.Summon(dwarf);
|
||||||
}
|
}
|
||||||
|
|
||||||
me->RemoveAllAuras();
|
me->RemoveAllAuras();
|
||||||
me->CastSpell(me, SPELL_TEMPORARY_ELECTRICAL_CHARGE, true);
|
|
||||||
|
|
||||||
if (m_pInstance)
|
if (m_pInstance)
|
||||||
m_pInstance->SetBossState(DATA_BJARNGRIM, NOT_STARTED);
|
m_pInstance->SetBossState(DATA_BJARNGRIM, NOT_STARTED);
|
||||||
@@ -271,14 +269,48 @@ struct boss_bjarngrim : public npc_escortAI
|
|||||||
|
|
||||||
void WaypointReached(uint32 Point) override
|
void WaypointReached(uint32 Point) override
|
||||||
{
|
{
|
||||||
if (Point == 1 || Point == 8)
|
if (Point == 1)
|
||||||
DoCastSelf(SPELL_TEMPORARY_ELECTRICAL_CHARGE, true);
|
{
|
||||||
else if (Point == 7 || Point == 14)
|
events.CancelEvent(EVENT_CHARGE_UP);
|
||||||
|
events.ScheduleEvent(EVENT_CHARGE_UP, 2500ms, 0);
|
||||||
|
}
|
||||||
|
else if (Point == 2)
|
||||||
|
{
|
||||||
|
events.CancelEvent(EVENT_CHARGE_UP);
|
||||||
|
}
|
||||||
|
else if (Point == 3)
|
||||||
|
{
|
||||||
me->RemoveAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE);
|
me->RemoveAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE);
|
||||||
|
}
|
||||||
|
else if (Point == 4)
|
||||||
|
{
|
||||||
|
events.CancelEvent(EVENT_CHARGE_UP);
|
||||||
|
events.ScheduleEvent(EVENT_CHARGE_UP, 2500ms, 0);
|
||||||
|
}
|
||||||
|
else if (Point == 5)
|
||||||
|
{
|
||||||
|
events.CancelEvent(EVENT_CHARGE_UP);
|
||||||
|
}
|
||||||
|
else if (Point == 6)
|
||||||
|
{
|
||||||
|
me->RemoveAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateEscortAI(uint32 diff) override
|
void UpdateEscortAI(uint32 diff) override
|
||||||
{
|
{
|
||||||
|
events.Update(diff);
|
||||||
|
|
||||||
|
if (uint32 eventId = events.ExecuteEvent())
|
||||||
|
{
|
||||||
|
if (eventId == EVENT_CHARGE_UP)
|
||||||
|
{
|
||||||
|
me->CastSpell(me, SPELL_CHARGE_UP, true);
|
||||||
|
me->CastSpell(me, SPELL_TEMPORARY_ELECTRICAL_CHARGE, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!me->IsInCombat())
|
if (!me->IsInCombat())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -289,8 +321,6 @@ struct boss_bjarngrim : public npc_escortAI
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
events.Update(diff);
|
|
||||||
|
|
||||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -303,6 +333,11 @@ struct boss_bjarngrim : public npc_escortAI
|
|||||||
events.Repeat(20s);
|
events.Repeat(20s);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case EVENT_CHARGE_UP:
|
||||||
|
DoCastSelf(SPELL_CHARGE_UP, true);
|
||||||
|
DoCastSelf(SPELL_TEMPORARY_ELECTRICAL_CHARGE, true);
|
||||||
|
break;
|
||||||
|
|
||||||
// DEFENSIVE STANCE
|
// DEFENSIVE STANCE
|
||||||
case EVENT_BJARNGRIM_REFLECTION:
|
case EVENT_BJARNGRIM_REFLECTION:
|
||||||
DoCastSelf(SPELL_BJARNGRIM_REFLETION, true);
|
DoCastSelf(SPELL_BJARNGRIM_REFLETION, true);
|
||||||
|
|||||||
Reference in New Issue
Block a user