From 4a483aa3fd6e7fbc34081361b2a3c381d676b5ca Mon Sep 17 00:00:00 2001 From: Ali Khazaee Date: Sat, 22 Jun 2019 13:26:47 +0430 Subject: [PATCH] Sartharion Boundary (#1967) * Sartharion Boundary * Engage with players --- .../ObsidianSanctum/boss_sartharion.cpp | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp index 0e2fed464..a33d91910 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp @@ -146,6 +146,8 @@ enum Events EVENT_SARTHARION_CALL_TENEBRON = 30, EVENT_SARTHARION_CALL_SHADRON = 31, EVENT_SARTHARION_CALL_VESPERON = 32, + + EVENT_SARTHARION_BOUNDARY = 33 }; const Position portalPos[4] = @@ -353,6 +355,7 @@ public: events.ScheduleEvent(EVENT_SARTHARION_LAVA_STRIKE, 5000); events.ScheduleEvent(EVENT_SARTHARION_HEALTH_CHECK, 10000); events.ScheduleEvent(EVENT_SARTHARION_BERSERK, 900000); + events.ScheduleEvent(EVENT_SARTHARION_BOUNDARY, 1000); StoreDragons(); me->CallForHelp(500.0f); @@ -422,6 +425,12 @@ public: // Special events which needs to be fired immidiately switch(events.GetEvent()) { + case EVENT_SARTHARION_BOUNDARY: + if (me->GetPositionX() < 3218.86f || me->GetPositionX() > 3275.69f || me->GetPositionY() < 484.68f || me->GetPositionY() > 572.4f) // https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp#L31 + EnterEvadeMode(); + + events.RepeatEvent(1000); + break; case EVENT_SARTHARION_SUMMON_LAVA: if (!urand(0,3)) Talk(SAY_SARTHARION_SPECIAL); @@ -659,6 +668,10 @@ public: if (isSartharion || (pInstance && pInstance->GetData(BOSS_SARTHARION_EVENT) == DONE)) me->SetLootMode(0); + + if (isSartharion) + if (Unit* target = SelectTarget(SELECT_TARGET_TOPAGGRO, 1, 500, true)) + me->AI()->AttackStart(target); } void JustDied(Unit* ) @@ -910,6 +923,10 @@ public: if (isSartharion || (pInstance && pInstance->GetData(BOSS_SARTHARION_EVENT) == DONE)) me->SetLootMode(0); + + if (isSartharion) + if (Unit* target = SelectTarget(SELECT_TARGET_TOPAGGRO, 1, 500, true)) + me->AI()->AttackStart(target); } void JustDied(Unit* ) @@ -1140,6 +1157,10 @@ public: if (isSartharion || (pInstance && pInstance->GetData(BOSS_SARTHARION_EVENT) == DONE)) me->SetLootMode(0); + + if (isSartharion) + if (Unit* target = SelectTarget(SELECT_TARGET_TOPAGGRO, 1, 500, true)) + me->AI()->AttackStart(target); } void JustDied(Unit* )