mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-28 04:42:10 +01:00
Core/Combat: Unify combat permitted checks between CvC and PvC - only require "not friendly" in all cases. Fixes Yogg-Saron encounter. Closes #21380.
Also some bonus cleanup to Yogg's script to make transition cleaner. # Conflicts: # src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
This commit is contained in:
@@ -44,16 +44,8 @@
|
||||
return false;
|
||||
if (a->HasUnitState(UNIT_STATE_IN_FLIGHT) || b->HasUnitState(UNIT_STATE_IN_FLIGHT))
|
||||
return false;
|
||||
if (a->IsControlledByPlayer() || b->IsControlledByPlayer())
|
||||
{ // PvSomething, only block friendly fire
|
||||
if (a->IsFriendlyTo(b) || b->IsFriendlyTo(a))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{ // CvC, need hostile reaction to start a fight
|
||||
if (!a->IsHostileTo(b) && !b->IsHostileTo(a))
|
||||
return false;
|
||||
}
|
||||
if (a->IsFriendlyTo(b) || b->IsFriendlyTo(a))
|
||||
return false;
|
||||
Player const* playerA = a->GetCharmerOrOwnerPlayerOrPlayerItself();
|
||||
Player const* playerB = b->GetCharmerOrOwnerPlayerOrPlayerItself();
|
||||
// ...neither of the two units must be (owned by) a player with .gm on
|
||||
|
||||
@@ -462,7 +462,7 @@ class boss_voice_of_yogg_saron : public CreatureScript
|
||||
void MoveInLineOfSight(Unit* who) override
|
||||
{
|
||||
// TODO: MoveInLineOfSight doesn't work for such a big distance
|
||||
if (who->GetTypeId() == TYPEID_PLAYER && me->GetDistance2d(who) < 99.0f && !me->IsInCombat())
|
||||
if (who->GetTypeId() == TYPEID_PLAYER && !who->ToPlayer()->IsGameMaster() && me->GetDistance2d(who) < 99.0f && !me->IsInCombat())
|
||||
me->SetInCombatWithZone();
|
||||
}
|
||||
|
||||
@@ -624,9 +624,9 @@ class boss_voice_of_yogg_saron : public CreatureScript
|
||||
me->SummonCreature(NPC_YOGG_SARON, YoggSaronSpawnPos);
|
||||
if (Creature* brain = instance->GetCreature(DATA_BRAIN_OF_YOGG_SARON))
|
||||
brain->SetInCombatWithZone();
|
||||
events.ScheduleEvent(EVENT_SUMMON_CORRUPTOR_TENTACLE, 1, EVENT_GROUP_SUMMON_TENTACLES, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_SUMMON_CONSTRICTOR_TENTACLE, 1, EVENT_GROUP_SUMMON_TENTACLES, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_SUMMON_CRUSHER_TENTACLE, 1, EVENT_GROUP_SUMMON_TENTACLES, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_SUMMON_CORRUPTOR_TENTACLE, 5s, EVENT_GROUP_SUMMON_TENTACLES, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_SUMMON_CONSTRICTOR_TENTACLE, 7s, EVENT_GROUP_SUMMON_TENTACLES, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_SUMMON_CRUSHER_TENTACLE, 5s, EVENT_GROUP_SUMMON_TENTACLES, PHASE_TWO);
|
||||
events.ScheduleEvent(EVENT_ILLUSION, 60000, 0, PHASE_TWO);
|
||||
break;
|
||||
case ACTION_TOGGLE_SHATTERED_ILLUSION:
|
||||
@@ -939,6 +939,7 @@ class boss_yogg_saron : public CreatureScript
|
||||
|
||||
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
|
||||
{
|
||||
// Val'anyr
|
||||
if (spell->Id == SPELL_IN_THE_MAWS_OF_THE_OLD_GOD)
|
||||
me->AddLootMode(32);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user