diff options
author | Treeston <treeston.mmoc@gmail.com> | 2018-02-15 12:23:05 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-06-21 00:07:24 +0200 |
commit | f982f3019a1a12bdd9d85e59faf5ddb53c10761f (patch) | |
tree | 97221768b19bcc65a0290823255aaab167f77ddc /src | |
parent | 37298ca99cce901bd358c536b34aee879f72f900 (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.cpp | 12 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp | 9 |
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); } |