aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2018-02-15 12:23:05 +0100
committerShauren <shauren.trinity@gmail.com>2021-06-21 00:07:24 +0200
commitf982f3019a1a12bdd9d85e59faf5ddb53c10761f (patch)
tree97221768b19bcc65a0290823255aaab167f77ddc /src
parent37298ca99cce901bd358c536b34aee879f72f900 (diff)
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. (cherry picked from commit 4da9321d2bdde17ddf1a55b92ab130216e9af27b)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Combat/CombatManager.cpp12
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp9
2 files changed, 7 insertions, 14 deletions
diff --git a/src/server/game/Combat/CombatManager.cpp b/src/server/game/Combat/CombatManager.cpp
index 7630e3c1d2d..fbcad98cb50 100644
--- a/src/server/game/Combat/CombatManager.cpp
+++ b/src/server/game/Combat/CombatManager.cpp
@@ -43,16 +43,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
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
index 9488e4f5b7f..f6883912491 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
@@ -461,7 +461,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())
DoZoneInCombat();
}
@@ -623,9 +623,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))
DoZoneInCombat(brain);
- 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:
@@ -938,6 +938,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);
}