mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Scripts/ICC: Prevent Professor Putricide from displaying weird behavior during the Rotface/Festergut encounters as a result of his boss boundary
This commit is contained in:
@@ -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())
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user