aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp5
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp1
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp23
3 files changed, 25 insertions, 4 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 8c9e6538ce0..9457b8bfde7 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -2427,8 +2427,9 @@ bool Creature::CanCreatureAttack(Unit const* victim, bool /*force*/) const
if (!victim->isInAccessiblePlaceFor(this))
return false;
- if (IsAIEnabled() && !AI()->CanAIAttack(victim))
- return false;
+ if (CreatureAI* ai = AI())
+ if (!ai->CanAIAttack(victim))
+ return false;
// we cannot attack in evade mode
if (IsInEvadeMode())
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
index cd2552458c3..2f06d6f0d09 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
@@ -340,6 +340,7 @@ class boss_lord_marrowgar : public CreatureScript
_boneSpikeImmune.clear();
break;
case ACTION_TALK_ENTER_ZONE:
+ if (me->IsAlive())
Talk(SAY_ENTER_ZONE);
break;
default:
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
index 24f30d24ba8..f0093e7ca6b 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
@@ -254,6 +254,14 @@ class boss_professor_putricide : public CreatureScript
}
}
+ void EnterEvadeMode(EvadeReason why = EVADE_REASON_OTHER) override
+ {
+ if (why == EVADE_REASON_BOUNDARY && (events.IsInPhase(PHASE_ROTFACE) || events.IsInPhase(PHASE_FESTERGUT)))
+ return;
+
+ BossAI::EnterEvadeMode(why);
+ }
+
void JustEngagedWith(Unit* who) override
{
if (events.IsInPhase(PHASE_ROTFACE) || events.IsInPhase(PHASE_FESTERGUT))
@@ -443,7 +451,6 @@ class boss_professor_putricide : public CreatureScript
events.ScheduleEvent(EVENT_FESTERGUT_DIES, 4s, 0, PHASE_FESTERGUT);
break;
case ACTION_ROTFACE_COMBAT:
- {
SetPhase(PHASE_ROTFACE);
me->SetSpeedRate(MOVE_RUN, _baseSpeed*2.0f);
me->GetMotionMaster()->MovePoint(POINT_ROTFACE, rotfaceWatchPos);
@@ -475,7 +482,6 @@ class boss_professor_putricide : public CreatureScript
}
}
break;
- }
case ACTION_ROTFACE_OOZE:
Talk(SAY_ROTFACE_OOZE_FLOOD);
if (Creature* dummy = ObjectAccessor::GetCreature(*me, _oozeFloodDummyGUIDs[_oozeFloodStage]))
@@ -710,6 +716,19 @@ class boss_professor_putricide : public CreatureScript
{
_phase = newPhase;
events.SetPhase(newPhase);
+
+ switch (newPhase)
+ {
+ case PHASE_FESTERGUT:
+ SetBoundary(instance->GetBossBoundary(DATA_FESTERGUT));
+ break;
+ case PHASE_ROTFACE:
+ SetBoundary(instance->GetBossBoundary(DATA_ROTFACE));
+ break;
+ default:
+ SetBoundary(instance->GetBossBoundary(DATA_PROFESSOR_PUTRICIDE));
+ break;
+ }
}
ObjectGuid _oozeFloodDummyGUIDs[4];