diff options
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 dd5cb8ec621..00990b08d1f 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2601,8 +2601,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 cb02f0df035..3edb8f86a61 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp @@ -339,6 +339,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 a97653ec317..44e0178fa06 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -251,6 +251,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)) @@ -440,7 +448,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); @@ -472,7 +479,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])) @@ -708,6 +714,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]; |