aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtamedes <ownedned123@gmail.com>2019-09-06 14:09:47 -0400
committerGiacomo Pozzoni <giacomopoz@gmail.com>2019-09-06 20:09:47 +0200
commit876a8487301088fec1580e7c9ef6bf98783d9d7d (patch)
treee59ca4be326cf0700e98e9c29c971298b14c6bba
parent832c95fa4f3bb8897481b0c65975b14674bbf7ee (diff)
Scripts/Ulduar: Fix Stormcaller Brundir walking into walls (#23755)
* Scripts/Ulduar: Fix Stormcaller Brundir walking into walls * Cleanup and fix logic + review * Review: remove autos
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
index 080723d580c..a6a10319c40 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
@@ -495,6 +495,9 @@ class boss_stormcaller_brundir : public CreatureScript
events.ScheduleEvent(EVENT_BERSERK, 15min);
events.ScheduleEvent(EVENT_CHAIN_LIGHTNING, 4s);
events.ScheduleEvent(EVENT_OVERLOAD, urand(60000, 120000));
+
+ if (Creature* trigger = me->FindNearestCreature(NPC_WORLD_TRIGGER, 100.0f))
+ m_TriggerGUID = trigger->GetGUID();
}
void DoAction(int32 action) override
@@ -626,11 +629,20 @@ class boss_stormcaller_brundir : public CreatureScript
{
float x = float(irand(-25, 25));
float y = float(irand(-25, 25));
- me->GetMotionMaster()->MovePoint(0, me->GetPositionX() + x, me->GetPositionY() + y, me->GetPositionZ());
+
+ Position pos = me->GetPosition();
+
+ pos.m_positionX += x;
+ pos.m_positionY += y;
+
// Prevention to go outside the room or into the walls
- if (Creature* trigger = me->FindNearestCreature(NPC_WORLD_TRIGGER, 100.0f, true))
- if (me->GetDistance(trigger) >= 50.0f)
+ if (Creature* trigger = ObjectAccessor::GetCreature(*me, m_TriggerGUID))
+ {
+ if (pos.GetExactDist2d(trigger) >= 50.0f)
me->GetMotionMaster()->MovePoint(0, *trigger);
+ else
+ me->GetMotionMaster()->MovePoint(0, pos);
+ }
}
events.ScheduleEvent(EVENT_MOVE_POSITION, urand(7500, 10000));
break;
@@ -644,6 +656,9 @@ class boss_stormcaller_brundir : public CreatureScript
DoMeleeAttackIfReady();
}
+
+ private:
+ ObjectGuid m_TriggerGUID;
};
CreatureAI* GetAI(Creature* creature) const override