mirror of
https://github.com/azerothcore/azerothcore-wotlk.git
synced 2025-11-10 20:34:53 +08:00
fix(Script/HoL): General Bjarngrim starting location, timings and pathing corrected (#23416)
This commit is contained in:
parent
e6984c0672
commit
d44c7e309d
@ -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
|
||||
EVENT_ARC_WELD = 41,
|
||||
EVENT_RENEW_STEEL = 42,
|
||||
|
||||
// CHARGE UP
|
||||
EVENT_CHARGE_UP = 51,
|
||||
};
|
||||
|
||||
enum Yells
|
||||
@ -110,27 +113,22 @@ struct boss_bjarngrim : public npc_escortAI
|
||||
boss_bjarngrim(Creature* creature) : npc_escortAI(creature), summons(creature)
|
||||
{
|
||||
m_pInstance = creature->GetInstanceScript();
|
||||
|
||||
// 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);
|
||||
|
||||
InitializeWaypoints();
|
||||
me->SetWalk(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
|
||||
{
|
||||
events.Reset();
|
||||
@ -139,12 +137,12 @@ struct boss_bjarngrim : public npc_escortAI
|
||||
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()))
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
me->RemoveAllAuras();
|
||||
me->CastSpell(me, SPELL_TEMPORARY_ELECTRICAL_CHARGE, true);
|
||||
|
||||
if (m_pInstance)
|
||||
m_pInstance->SetBossState(DATA_BJARNGRIM, NOT_STARTED);
|
||||
@ -271,14 +269,48 @@ struct boss_bjarngrim : public npc_escortAI
|
||||
|
||||
void WaypointReached(uint32 Point) override
|
||||
{
|
||||
if (Point == 1 || Point == 8)
|
||||
DoCastSelf(SPELL_TEMPORARY_ELECTRICAL_CHARGE, true);
|
||||
else if (Point == 7 || Point == 14)
|
||||
if (Point == 1)
|
||||
{
|
||||
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);
|
||||
}
|
||||
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
|
||||
{
|
||||
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())
|
||||
return;
|
||||
|
||||
@ -289,8 +321,6 @@ struct boss_bjarngrim : public npc_escortAI
|
||||
return;
|
||||
}
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
return;
|
||||
|
||||
@ -303,6 +333,11 @@ struct boss_bjarngrim : public npc_escortAI
|
||||
events.Repeat(20s);
|
||||
break;
|
||||
|
||||
case EVENT_CHARGE_UP:
|
||||
DoCastSelf(SPELL_CHARGE_UP, true);
|
||||
DoCastSelf(SPELL_TEMPORARY_ELECTRICAL_CHARGE, true);
|
||||
break;
|
||||
|
||||
// DEFENSIVE STANCE
|
||||
case EVENT_BJARNGRIM_REFLECTION:
|
||||
DoCastSelf(SPELL_BJARNGRIM_REFLETION, true);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user