Naxxramas: Gothik the Harvester: Cleanup + timer correction + add heroic info for waves + open middle door in case of a wipe

--HG--
branch : trunk
This commit is contained in:
tartalo
2009-10-19 21:55:53 +02:00
parent 2fc8b2134f
commit d072fada10
@@ -17,58 +17,92 @@
#include "precompiled.h" #include "precompiled.h"
#include "def_naxxramas.h" #include "def_naxxramas.h"
#define SAY_SPEECH -1533040 enum Yells
#define SAY_KILL -1533041 {
#define SAY_DEATH -1533042 SAY_SPEECH = -1533040,
#define SAY_TELEPORT -1533043 SAY_KILL = -1533041,
SAY_DEATH = -1533042,
SAY_TELEPORT = -1533043
};
//Gothik //Gothik
#define SPELL_HARVEST_SOUL 28679 enum Spells
#define SPELL_SHADOW_BOLT HEROIC(29317,56405) {
SPELL_HARVEST_SOUL = 28679,
#define SPELL_INFORM_LIVE_TRAINEE 27892 SPELL_SHADOW_BOLT = 29317,
#define SPELL_INFORM_LIVE_KNIGHT 27928 H_SPELL_SHADOW_BOLT = 56405,
#define SPELL_INFORM_LIVE_RIDER 27935 SPELL_INFORM_LIVE_TRAINEE = 27892,
#define SPELL_INFORM_DEAD_TRAINEE 27915 SPELL_INFORM_LIVE_KNIGHT = 27928,
#define SPELL_INFORM_DEAD_KNIGHT 27931 SPELL_INFORM_LIVE_RIDER = 27935,
#define SPELL_INFORM_DEAD_RIDER 27937 SPELL_INFORM_DEAD_TRAINEE = 27915,
SPELL_INFORM_DEAD_KNIGHT = 27931,
#define MOB_LIVE_TRAINEE 16124 SPELL_INFORM_DEAD_RIDER = 27937
#define MOB_LIVE_KNIGHT 16125 };
#define MOB_LIVE_RIDER 16126 enum Creatures
#define MOB_DEAD_TRAINEE 16127 {
#define MOB_DEAD_KNIGHT 16148 MOB_LIVE_TRAINEE = 16124,
#define MOB_DEAD_RIDER 16150 MOB_LIVE_KNIGHT = 16125,
#define MOB_DEAD_HORSE 16149 MOB_LIVE_RIDER = 16126,
MOB_DEAD_TRAINEE = 16127,
const struct Waves { uint32 entry, number, time; } MOB_DEAD_KNIGHT = 16148,
waves[] = MOB_DEAD_RIDER = 16150,
MOB_DEAD_HORSE = 16149
};
struct Waves { uint32 entry, number, time; };
const Waves waves[] =
{ {
{MOB_LIVE_TRAINEE, 2, 20000}, {MOB_LIVE_TRAINEE, 2, 20000},
{MOB_LIVE_TRAINEE, 2, 20000}, {MOB_LIVE_TRAINEE, 2, 20000},
{MOB_LIVE_TRAINEE, 2, 10000}, {MOB_LIVE_TRAINEE, 2, 10000},
{MOB_LIVE_KNIGHT, 1, 10000}, {MOB_LIVE_KNIGHT, 1, 10000},
{MOB_LIVE_TRAINEE, 2, 15000}, {MOB_LIVE_TRAINEE, 2, 15000},
{MOB_LIVE_KNIGHT, 1, 10000}, {MOB_LIVE_KNIGHT, 1, 5000},
{MOB_LIVE_TRAINEE, 2, 15000}, {MOB_LIVE_TRAINEE, 2, 20000},
{MOB_LIVE_TRAINEE, 2, 0}, {MOB_LIVE_TRAINEE, 2, 0},
{MOB_LIVE_KNIGHT, 1, 10000}, {MOB_LIVE_KNIGHT, 1, 10000},
{MOB_LIVE_RIDER, 1, 10000}, {MOB_LIVE_RIDER, 1, 10000},
{MOB_LIVE_TRAINEE, 2, 5000}, {MOB_LIVE_TRAINEE, 2, 5000},
{MOB_LIVE_KNIGHT, 1, 15000}, {MOB_LIVE_KNIGHT, 1, 15000},
{MOB_LIVE_TRAINEE, 2, 0}, {MOB_LIVE_TRAINEE, 2, 0},
{MOB_LIVE_RIDER, 1, 10000}, {MOB_LIVE_RIDER, 1, 10000},
{MOB_LIVE_KNIGHT, 2, 10000}, {MOB_LIVE_KNIGHT, 2, 10000},
{MOB_LIVE_TRAINEE, 2, 10000}, {MOB_LIVE_TRAINEE, 2, 10000},
{MOB_LIVE_RIDER, 1, 5000}, {MOB_LIVE_RIDER, 1, 5000},
{MOB_LIVE_KNIGHT, 1, 5000}, {MOB_LIVE_KNIGHT, 1, 5000},
{MOB_LIVE_TRAINEE, 2, 20000}, {MOB_LIVE_TRAINEE, 2, 20000},
{MOB_LIVE_TRAINEE, 2, 0}, {MOB_LIVE_TRAINEE, 2, 0},
{MOB_LIVE_KNIGHT, 1, 0}, {MOB_LIVE_KNIGHT, 1, 0},
{MOB_LIVE_RIDER, 1, 15000}, {MOB_LIVE_RIDER, 1, 15000},
{MOB_LIVE_TRAINEE, 2, 29000}, {MOB_LIVE_TRAINEE, 2, 29000},
{0, 0, 0}, {0, 0, 0},
}; };
const Waves wavesHeroic[] =
{
{MOB_LIVE_TRAINEE, 3, 20000},
{MOB_LIVE_TRAINEE, 3, 20000},
{MOB_LIVE_TRAINEE, 3, 10000},
{MOB_LIVE_KNIGHT, 2, 10000},
{MOB_LIVE_TRAINEE, 3, 15000},
{MOB_LIVE_KNIGHT, 2, 5000},
{MOB_LIVE_TRAINEE, 3, 20000},
{MOB_LIVE_TRAINEE, 3, 0},
{MOB_LIVE_KNIGHT, 2, 10000},
{MOB_LIVE_TRAINEE, 3, 10000},
{MOB_LIVE_RIDER, 1, 5000},
{MOB_LIVE_TRAINEE, 3, 15000},
{MOB_LIVE_RIDER, 1, 10000},
{MOB_LIVE_KNIGHT, 2, 10000},
{MOB_LIVE_RIDER, 1, 10000},
{MOB_LIVE_RIDER, 1, 0},
{MOB_LIVE_TRAINEE, 3, 5000},
{MOB_LIVE_KNIGHT, 1, 0},
{MOB_LIVE_TRAINEE, 3, 5000},
{MOB_LIVE_RIDER, 1, 0},
{MOB_LIVE_TRAINEE, 3, 20000},
{MOB_LIVE_KNIGHT, 2, 0},
{MOB_LIVE_RIDER, 1, 0},
{MOB_LIVE_TRAINEE, 3, 29000},
{0, 0, 0},
};
#define POS_Y_GATE -3360.78f #define POS_Y_GATE -3360.78f
@@ -78,9 +112,11 @@ enum Events
EVENT_HARVEST, EVENT_HARVEST,
EVENT_BOLT, EVENT_BOLT,
}; };
enum Pos
#define POS_LIVE 3 {
#define POS_DEAD 5 POS_LIVE = 3,
POS_DEAD = 5
};
const Position PosSummonLive[POS_LIVE] = const Position PosSummonLive[POS_LIVE] =
{ {
@@ -115,6 +151,8 @@ struct TRINITY_DLL_DECL boss_gothikAI : public BossAI
deadTrigger.clear(); deadTrigger.clear();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
me->SetReactState(REACT_PASSIVE); me->SetReactState(REACT_PASSIVE);
if (instance)
instance->SetData(DATA_GOTHIK_GATE, GO_STATE_ACTIVE);
_Reset(); _Reset();
} }
@@ -141,7 +179,7 @@ struct TRINITY_DLL_DECL boss_gothikAI : public BossAI
DoTeleportTo(PosPlatform); DoTeleportTo(PosPlatform);
DoScriptText(SAY_SPEECH, me); DoScriptText(SAY_SPEECH, me);
if (instance) if (instance)
instance->SetData(DATA_GOTHIK_GATE, 1); instance->SetData(DATA_GOTHIK_GATE, GO_STATE_READY);
} }
void JustSummoned(Creature *summon) void JustSummoned(Creature *summon)
@@ -243,7 +281,7 @@ struct TRINITY_DLL_DECL boss_gothikAI : public BossAI
me->SetReactState(REACT_AGGRESSIVE); me->SetReactState(REACT_AGGRESSIVE);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
if (instance) if (instance)
instance->SetData(DATA_GOTHIK_GATE, 0); instance->SetData(DATA_GOTHIK_GATE, GO_STATE_ACTIVE);
summons.DoAction(0, 0); summons.DoAction(0, 0);
summons.DoZoneInCombat(); summons.DoZoneInCombat();
events.ScheduleEvent(EVENT_BOLT, 1000); events.ScheduleEvent(EVENT_BOLT, 1000);
@@ -251,7 +289,7 @@ struct TRINITY_DLL_DECL boss_gothikAI : public BossAI
} }
break; break;
case EVENT_BOLT: case EVENT_BOLT:
DoCast(me->getVictim(), SPELL_SHADOW_BOLT); DoCast(me->getVictim(), HEROIC(SPELL_SHADOW_BOLT,H_SPELL_SHADOW_BOLT));
events.ScheduleEvent(EVENT_BOLT, 1000); events.ScheduleEvent(EVENT_BOLT, 1000);
return; return;
case EVENT_HARVEST: case EVENT_HARVEST: