diff options
| author | amed80 <amed80@live.com> | 2024-06-08 12:07:39 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-08 13:07:39 +0200 |
| commit | eed20b4647fb890bc980b55e8f9b2a94debe7c39 (patch) | |
| tree | 7c45937c8ad61c8d12d9a92272c280c321c76fe5 /src/server/scripts/Kalimdor | |
| parent | bb69f1c3ec48bab8369c024297732604c7f5c224 (diff) | |
fix(Scripts/Hyjal): Change the spawn and the movement of Doomfire (#19027)
* Doomfire_spirit_speed
* Update boss_archimonde.cpp
* Rename
Diffstat (limited to 'src/server/scripts/Kalimdor')
| -rw-r--r-- | src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp index 932e50325c..b1851451d0 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp @@ -97,7 +97,7 @@ uint32 const availableChargeAurasAndSpells[3][2] = { Position const nordrassilPosition = { 5503.713f, -3523.436f, 1608.781f, 0.0f }; -float const DOOMFIRE_OFFSET = 25.0f; +float const DOOMFIRE_OFFSET = 15.0f; uint8 const WISP_OFFSET = 40; uint8 NEAR_POINT = 0; @@ -158,14 +158,26 @@ struct npc_doomfire_spirit : public ScriptedAI void Reset() override { + Position randomPosition; + scheduler.CancelAll(); - ScheduleTimedEvent(0s, [&]{ - if (Creature* archimonde = _instance->GetCreature(DATA_ARCHIMONDE)) - { - Position randomNearPosition = archimonde->GetRandomNearPosition(200.0f); - me->GetMotionMaster()->MovePoint(NEAR_POINT, randomNearPosition); - } - }, 6s); + ScheduleTimedEvent(0s, [&] { + DoomfireMovement(randomPosition, me->GetPosition()); + + me->GetMotionMaster()->MovePoint(NEAR_POINT, randomPosition); + }, 1500ms); + } + + void DoomfireMovement(Position& targetPos, Position mePos) + { + float angle = mePos.GetOrientation(); + float distance = 100.0f; + float newAngle = angle + ((rand() % 181) - 90) * M_PI / 180; + float x = mePos.GetPositionX() + distance * cos(newAngle); + float y = mePos.GetPositionY() + distance * sin(newAngle); + + targetPos = Position(x, y, me->GetPositionZ()); + return; } void UpdateAI(uint32 diff) override @@ -430,8 +442,11 @@ struct boss_archimonde : public BossAI { // hack because spell doesn't work? Talk(SAY_DOOMFIRE); - Position spiritPosition = me->GetRandomNearPosition(DOOMFIRE_OFFSET); - Position doomfirePosition = me->GetRandomNearPosition(DOOMFIRE_OFFSET); + float angle = 2 * M_PI * rand() / RAND_MAX; + float x = me->GetPositionX() + DOOMFIRE_OFFSET * cos(angle); + float y = me->GetPositionY() + DOOMFIRE_OFFSET * sin(angle); + Position spiritPosition = Position(x, y, me->GetPositionZ()); + Position doomfirePosition = Position(x, y, me->GetPositionZ()); if (Creature* doomfireSpirit = me->SummonCreature(CREATURE_DOOMFIRE_SPIRIT, spiritPosition, TEMPSUMMON_TIMED_DESPAWN, 27000)) { if (Creature* doomfire = me->SummonCreature(CREATURE_DOOMFIRE, doomfirePosition, TEMPSUMMON_TIMED_DESPAWN, 27000)) |
