diff options
Diffstat (limited to 'src/server/scripts')
7 files changed, 42 insertions, 28 deletions
diff --git a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/ahnkahet.h b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/ahnkahet.h index 8b1dd67366..c2ddd3b7e2 100644 --- a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/ahnkahet.h +++ b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/ahnkahet.h @@ -44,6 +44,7 @@ enum AhnKahetCreatures NPC_AMANITAR = 30258, // Teldaram and Jedoga encounter related NPC_JEDOGA_CONTROLLER = 30181, + NPC_TWILIGHT_WORSHIPPER = 30111 }; enum AhnkahetSpells diff --git a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp index adc26fcc97..6392a738ed 100644 --- a/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp @@ -90,6 +90,7 @@ enum SummonGroups { SUMMON_GROUP_OOC = 0, SUMMON_GROUP_OOC_TRIGGERS = 1, + SUMMON_GROUP_IC_WORSHIPPERS = 2 }; enum Points @@ -217,7 +218,7 @@ struct boss_jedoga_shadowseeker : public BossAI void JustSummoned(Creature* summon) override { - if (summon->GetEntry() == NPC_JEDOGA_CONTROLLER) + if (summon->EntryEquals(NPC_JEDOGA_CONTROLLER, NPC_TWILIGHT_WORSHIPPER)) { summons.Summon(summon); } @@ -326,6 +327,17 @@ struct boss_jedoga_shadowseeker : public BossAI _JustEngagedWith(); Talk(SAY_AGGRO); ReschedulleCombatEvents(); + + std::list<TempSummon*> tempSummons; + me->SummonCreatureGroup(SUMMON_GROUP_IC_WORSHIPPERS, &tempSummons); + if (!tempSummons.empty()) + { + for (TempSummon* summon : tempSummons) + { + if (summon) + summon->SetStandState(UNIT_STAND_STATE_KNEEL); + } + } } void KilledUnit(Unit* who) override diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp index 78e10f8074..1a240ce158 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp @@ -59,7 +59,6 @@ enum Misc EVENT_SPELL_EYE_BEAM = 4, EVENT_SPELL_LIGHTNING_BREATH = 5, EVENT_SPELL_POISON_CLOUD = 6, - EVENT_SPELL_TURN_FLESH = 7, EVENT_TURN_FLESH_REAL = 9, EVENT_TURN_BONES_REAL = 10, EVENT_KILL_TALK = 11 @@ -77,9 +76,7 @@ public: struct boss_tharon_jaAI : public BossAI { - boss_tharon_jaAI(Creature* creature) : BossAI(creature, DATA_THARON_JA) - { - } + boss_tharon_jaAI(Creature* creature) : BossAI(creature, DATA_THARON_JA) { } void Reset() override { @@ -88,15 +85,23 @@ public: me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK_DEST, true); me->SetDisplayId(me->GetNativeDisplayId()); me->CastSpell(me, SPELL_CLEAR_GIFT, true); + + ScheduleHealthCheckEvent(55, [&] { + Talk(SAY_FLESH); + me->GetThreatMgr().ResetAllThreat(); + me->CastSpell((Unit*)nullptr, SPELL_TURN_FLESH, false); + + events.Reset(); + events.ScheduleEvent(EVENT_TURN_FLESH_REAL, 3s); + }, false); } void JustEngagedWith(Unit* who) override { Talk(SAY_AGGRO); BossAI::JustEngagedWith(who); - events.ScheduleEvent(EVENT_SPELL_CURSE_OF_LIFE, 5s); - events.ScheduleEvent(EVENT_SPELL_SHADOW_VOLLEY, 8s, 10s); - events.ScheduleEvent(EVENT_SPELL_TURN_FLESH, 1s); + events.ScheduleEvent(EVENT_SPELL_CURSE_OF_LIFE, 13s, 24s); + events.ScheduleEvent(EVENT_SPELL_SHADOW_VOLLEY, 6s, 29s); } void KilledUnit(Unit* /*victim*/) override @@ -144,24 +149,11 @@ public: { case EVENT_SPELL_CURSE_OF_LIFE: DoCastRandomTarget(SPELL_CURSE_OF_LIFE, 0, 30.0f, false); - events.ScheduleEvent(EVENT_SPELL_CURSE_OF_LIFE, 13s); + events.ScheduleEvent(EVENT_SPELL_CURSE_OF_LIFE, 11s, 28s); break; case EVENT_SPELL_SHADOW_VOLLEY: DoCastAOE(SPELL_SHADOW_VOLLEY); - events.ScheduleEvent(EVENT_SPELL_SHADOW_VOLLEY, 9s); - break; - case EVENT_SPELL_TURN_FLESH: - if (me->HealthBelowPct(50)) - { - Talk(SAY_FLESH); - me->GetThreatMgr().ResetAllThreat(); - me->CastSpell((Unit*)nullptr, SPELL_TURN_FLESH, false); - - events.Reset(); - events.ScheduleEvent(EVENT_TURN_FLESH_REAL, 3s); - return; - } - events.ScheduleEvent(EVENT_SPELL_TURN_FLESH, 1s); + events.ScheduleEvent(EVENT_SPELL_SHADOW_VOLLEY, 6s, 29s); break; case EVENT_TURN_FLESH_REAL: DoCastSelf(SPELL_DUMMY, true); diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp index c75c8966b8..8380f1caae 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp @@ -130,6 +130,12 @@ public: if (!UpdateVictim()) return; + if (!CheckInRoom()) + { + EnterEvadeMode(EVADE_REASON_BOUNDARY); + return; + } + events.Update(diff); if (me->HasUnitState(UNIT_STATE_CASTING)) return; @@ -159,9 +165,9 @@ public: DoMeleeAttackIfReady(); } - bool CheckEvadeIfOutOfCombatArea() const override + bool CheckInRoom() override { - return me->GetHomePosition().GetExactDist2d(me) > 60.0f; + return (me->GetPositionY() >= -700.0f && me->GetPositionY() <= -628.0f); } private: diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp index a783794652..f9612cf600 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp @@ -413,6 +413,7 @@ public: DoCast(me, 58506, false); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY_UNARMED); me->SendMovementFlagUpdate(); + me->SetImmuneToAll(true); break; case ACTION_START_SJONNIR_FIGHT: SetEscortPaused(false); diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp index 29398075ad..4d1bc0924f 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp @@ -182,7 +182,7 @@ public: case EVENT_SUMMON_KEEPER_OR_GUARDIAN: bKorG = true; spawned = true; - if (Creature* c = DoSummon(RAND(NPC_PORTAL_GUARDIAN, NPC_PORTAL_KEEPER), me, 2.0f, 0, TEMPSUMMON_DEAD_DESPAWN)) + if (Creature* c = DoSummon(RAND(NPC_PORTAL_GUARDIAN, NPC_PORTAL_KEEPER_1, NPC_PORTAL_KEEPER_2), me, 2.0f, 0, TEMPSUMMON_DEAD_DESPAWN)) me->CastSpell(c, SPELL_PORTAL_CHANNEL, false); events.RescheduleEvent(EVENT_SUMMON_KEEPER_TRASH, 20s); break; @@ -220,11 +220,12 @@ public: if (pInstance) for (SummonList::iterator itr = listOfMobs.begin(); itr != listOfMobs.end(); ++itr) if (Creature* c = pInstance->instance->GetCreature(*itr)) - if (c->IsAlive() && (c->GetEntry() == NPC_PORTAL_GUARDIAN || c->GetEntry() == NPC_PORTAL_KEEPER)) + if (c->IsAlive() && c->EntryEquals(NPC_PORTAL_GUARDIAN, NPC_PORTAL_KEEPER_1, NPC_PORTAL_KEEPER_2)) { me->CastSpell(c, SPELL_PORTAL_CHANNEL, false); return; } + Unit::Kill(me, me, false); } } diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.h b/src/server/scripts/Northrend/VioletHold/violet_hold.h index 229319087a..a21142afd7 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.h +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.h @@ -47,7 +47,8 @@ enum Creatures NPC_CYANIGOSA = 31134, NPC_PORTAL_GUARDIAN = 30660, - NPC_PORTAL_KEEPER = 30695, + NPC_PORTAL_KEEPER_1 = 30695, + NPC_PORTAL_KEEPER_2 = 30893, NPC_AZURE_INVADER_1 = 30661, NPC_AZURE_INVADER_2 = 30961, NPC_AZURE_SPELLBREAKER_1 = 30662, |
