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:
Treeston
2018-02-15 12:23:05 +01:00
committed by Ovahlord
parent 7bbc603efa
commit bd0408ff1a
2 changed files with 7 additions and 14 deletions

View File

@@ -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

View File

@@ -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);
}