summaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/ahnkahet/ahnkahet.h1
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp14
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp36
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp10
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp1
-rw-r--r--src/server/scripts/Northrend/VioletHold/violet_hold.cpp5
-rw-r--r--src/server/scripts/Northrend/VioletHold/violet_hold.h3
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,