aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp80
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp4
2 files changed, 46 insertions, 38 deletions
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp
index c8049ac066d..888edb38a77 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp
@@ -15,45 +15,48 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ScriptMgr.h"
+#include "ahnkahet.h"
+#include "AreaBoundary.h"
#include "ScriptedCreature.h"
+#include "ScriptMgr.h"
#include "SpellAuras.h"
#include "SpellScript.h"
-#include "ahnkahet.h"
enum NadoxTexts
{
- SAY_AGGRO = 0,
- SAY_SLAY = 1,
- SAY_DEATH = 2,
- SAY_EGG_SAC = 3,
- EMOTE_HATCHES = 4
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_EGG_SAC = 3,
+ EMOTE_HATCHES = 4
};
enum NadoxSpells
{
// Elder Nadox
- SPELL_BROOD_PLAGUE = 56130,
- H_SPELL_BROOD_RAGE = 59465,
- SPELL_ENRAGE = 26662, // Enraged if too far away from home
- SPELL_SUMMON_SWARMERS = 56119, // 2x 30178 -- 2x every 10secs
- SPELL_SUMMON_SWARM_GUARD = 56120, // 1x 30176
+ SPELL_BROOD_PLAGUE = 56130,
+ SPELL_BROOD_RAGE = 59465,
+ SPELL_BERSERK = 26662, // Enraged if too far away from home
+ SPELL_SUMMON_SWARMERS = 56119, // 2x 30178 -- 2x every 10secs
+ SPELL_SUMMON_SWARM_GUARD = 56120, // 1x 30176
// Adds
- SPELL_SWARM_BUFF = 56281,
- SPELL_SPRINT = 56354
+ SPELL_SWARM_BUFF = 56281,
+ SPELL_SPRINT = 56354
};
enum NadoxEvents
{
EVENT_PLAGUE = 1,
- EVENT_RAGE,
+ EVENT_BROOD_RAGE,
EVENT_SUMMON_SWARMER,
EVENT_CHECK_ENRAGE,
EVENT_SPRINT,
DATA_RESPECT_YOUR_ELDERS
};
+ParallelogramBoundary const ElderNadoxRoomBoundary = ParallelogramBoundary(Position(690.96f, -858.93f, -25.69f), Position(571.f, -937.f, -25.69f), Position(722.93f, -908.05f, -25.69f));
+
struct boss_elder_nadox : public BossAI
{
boss_elder_nadox(Creature* creature) : BossAI(creature, DATA_ELDER_NADOX)
@@ -63,8 +66,8 @@ struct boss_elder_nadox : public BossAI
void Initialize()
{
- GuardianSummoned = false;
- GuardianDied = false;
+ _guardianSummoned = false;
+ _guardianDied = false;
}
void Reset() override
@@ -83,7 +86,7 @@ struct boss_elder_nadox : public BossAI
if (IsHeroic())
{
- events.ScheduleEvent(EVENT_RAGE, 12s);
+ events.ScheduleEvent(EVENT_BROOD_RAGE, 12s);
events.ScheduleEvent(EVENT_CHECK_ENRAGE, 5s);
}
}
@@ -91,13 +94,13 @@ struct boss_elder_nadox : public BossAI
void SummonedCreatureDies(Creature* summon, Unit* /*killer*/) override
{
if (summon->GetEntry() == NPC_AHNKAHAR_GUARDIAN)
- GuardianDied = true;
+ _guardianDied = true;
}
uint32 GetData(uint32 type) const override
{
if (type == DATA_RESPECT_YOUR_ELDERS)
- return !GuardianDied ? 1 : 0;
+ return !_guardianDied ? 1 : 0;
return 0;
}
@@ -126,46 +129,51 @@ struct boss_elder_nadox : public BossAI
switch (eventId)
{
case EVENT_PLAGUE:
- DoCast(SelectTarget(SelectTargetMethod::Random, 0, 100, true), SPELL_BROOD_PLAGUE, true);
- events.ScheduleEvent(EVENT_PLAGUE, 15s);
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
+ DoCast(target, SPELL_BROOD_PLAGUE, true);
+ events.Repeat(15s);
break;
- case EVENT_RAGE:
- DoCast(H_SPELL_BROOD_RAGE);
- events.ScheduleEvent(EVENT_RAGE, 10s, 50s);
+ case EVENT_BROOD_RAGE:
+ DoCast(SPELL_BROOD_RAGE);
+ events.Repeat(10s, 50s);
break;
case EVENT_SUMMON_SWARMER:
/// @todo: summoned by egg
DoCast(me, SPELL_SUMMON_SWARMERS);
- if (urand(1, 3) == 3) // 33% chance of dialog
+ if (roll_chance_i(33)) // 33% chance of dialog
Talk(SAY_EGG_SAC);
- events.ScheduleEvent(EVENT_SUMMON_SWARMER, 10s);
+ events.Repeat(10s);
break;
case EVENT_CHECK_ENRAGE:
- if (me->HasAura(SPELL_ENRAGE))
+ if (me->HasAura(SPELL_BERSERK))
return;
- if (me->GetPositionZ() < 24.0f)
- DoCast(me, SPELL_ENRAGE, true);
- events.ScheduleEvent(EVENT_CHECK_ENRAGE, 5s);
+ if (!ElderNadoxRoomBoundary.IsWithinBoundary(me))
+ DoCast(me, SPELL_BERSERK, true);
+ else
+ events.Repeat(5s);
break;
default:
break;
}
+
+ if (me->HasUnitState(UNIT_STATE_CASTING))
+ return;
}
- if (!GuardianSummoned && me->HealthBelowPct(50))
+ if (!_guardianSummoned && me->HealthBelowPct(50))
{
/// @todo: summoned by egg
Talk(EMOTE_HATCHES, me);
- DoCast(me, SPELL_SUMMON_SWARM_GUARD);
- GuardianSummoned = true;
+ DoCastSelf(SPELL_SUMMON_SWARM_GUARD);
+ _guardianSummoned = true;
}
DoMeleeAttackIfReady();
}
private:
- bool GuardianSummoned;
- bool GuardianDied;
+ bool _guardianSummoned;
+ bool _guardianDied;
};
struct npc_ahnkahar_nerubian : public ScriptedAI
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp
index c7fd83add06..762368bf61b 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp
@@ -15,13 +15,13 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ScriptMgr.h"
-#include "AreaBoundary.h"
#include "ahnkahet.h"
+#include "AreaBoundary.h"
#include "Creature.h"
#include "GameObject.h"
#include "InstanceScript.h"
#include "Map.h"
+#include "ScriptMgr.h"
#include "SpellInfo.h"
#include "SpellScript.h"