*Implemented doors for nightbane event

--HG--
branch : trunk
This commit is contained in:
Blaymoira
2009-01-03 16:48:56 +01:00
parent ba74539ac4
commit 59f85167ab
3 changed files with 37 additions and 39 deletions
@@ -16,7 +16,7 @@
/* ScriptData /* ScriptData
SDName: Boss_Nightbane SDName: Boss_Nightbane
SD%Complete: 70 SD%Complete: 80
SDComment: SDComment: skelleton adds need 2 more, timers, SDComment: SDComment: skelleton adds need 2 more, timers,
SDCategory: Karazhan SDCategory: Karazhan
EndScriptData */ EndScriptData */
@@ -26,7 +26,7 @@ EndScriptData */
//phase 1 //phase 1
#define SPELL_BELLOWING_ROAR 39427 #define SPELL_BELLOWING_ROAR 39427
#define SPELL_CHARRED_EARTH 30129 //Also 30209 (Target Charred Earth) triggers this #define SPELL_CHARRED_EARTH 30129
#define SPELL_DISTRACTING_ASH 30130 #define SPELL_DISTRACTING_ASH 30130
#define SPELL_SMOLDERING_BREATH 30210 #define SPELL_SMOLDERING_BREATH 30210
#define SPELL_TAIL_SWEEP 25653 #define SPELL_TAIL_SWEEP 25653
@@ -123,11 +123,10 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
m_creature->setActive(true); m_creature->setActive(true);
if(pInstance)
pInstance->SetData(DATA_NIGHTBANE_EVENT, NOT_STARTED);
if(pInstance->GetData(DATA_NIGHTBANE_EVENT) == DONE) if(pInstance->GetData(DATA_NIGHTBANE_EVENT) == DONE)
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
else
pInstance->SetData(DATA_NIGHTBANE_EVENT, NOT_STARTED);
HandleTerraceDoors(true); HandleTerraceDoors(true);
@@ -143,10 +142,10 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
void HandleTerraceDoors(bool open) void HandleTerraceDoors(bool open)
{ {
//if(GameObject *Door = GameObject::GetGameObject((*m_creature),pInstance->GetData64(DATA_MASTERS_TERRACE_DOOR_1))) if(GameObject *Door = GameObject::GetGameObject((*m_creature),pInstance->GetData64(DATA_MASTERS_TERRACE_DOOR_1)))
// Door->SetUInt32Value(GAMEOBJECT_STATE, open ? 0 : 1); Door->SetUInt32Value(GAMEOBJECT_STATE, open ? 0 : 1);
//if(GameObject *Door = GameObject::GetGameObject((*m_creature),pInstance->GetData64(DATA_MASTERS_TERRACE_DOOR_2))) if(GameObject *Door = GameObject::GetGameObject((*m_creature),pInstance->GetData64(DATA_MASTERS_TERRACE_DOOR_2)))
// Door->SetUInt32Value(GAMEOBJECT_STATE, open ? 0 : 1); Door->SetUInt32Value(GAMEOBJECT_STATE, open ? 0 : 1);
} }
void Aggro(Unit *who) void Aggro(Unit *who)
@@ -319,16 +318,14 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
if (CharredEarthTimer < diff) if (CharredEarthTimer < diff)
{ {
Unit* target = NULL; if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
target = SelectUnit(SELECT_TARGET_RANDOM,0);
DoCast(target,SPELL_CHARRED_EARTH); DoCast(target,SPELL_CHARRED_EARTH);
CharredEarthTimer = 20000; //timer CharredEarthTimer = 20000; //timer
}else CharredEarthTimer -= diff; }else CharredEarthTimer -= diff;
if (TailSweepTimer < diff) if (TailSweepTimer < diff)
{ {
Unit* target = NULL; if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
target = SelectUnit(SELECT_TARGET_RANDOM,0);
if (!m_creature->HasInArc( M_PI, target)) if (!m_creature->HasInArc( M_PI, target))
DoCast(target,SPELL_TAIL_SWEEP); DoCast(target,SPELL_TAIL_SWEEP);
TailSweepTimer = 15000;//timer TailSweepTimer = 15000;//timer
@@ -336,8 +333,7 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
if (SearingCindersTimer < diff) if (SearingCindersTimer < diff)
{ {
Unit* target = NULL; if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
target = SelectUnit(SELECT_TARGET_RANDOM,0);
DoCast(target,SPELL_SEARING_CINDERS); DoCast(target,SPELL_SEARING_CINDERS);
SearingCindersTimer = 10000; //timer SearingCindersTimer = 10000; //timer
}else SearingCindersTimer -= diff; }else SearingCindersTimer -= diff;
@@ -379,8 +375,7 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
if (DistractingAshTimer < diff) if (DistractingAshTimer < diff)
{ {
Unit* target = NULL; if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
target = SelectUnit(SELECT_TARGET_RANDOM,0);
DoCast(target,SPELL_DISTRACTING_ASH); DoCast(target,SPELL_DISTRACTING_ASH);
DistractingAshTimer = 2000;//timer wrong DistractingAshTimer = 2000;//timer wrong
}else DistractingAshTimer -= diff; }else DistractingAshTimer -= diff;
@@ -397,8 +392,7 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
if (FireballBarrageTimer < diff) if (FireballBarrageTimer < diff)
{ {
Unit* target = NULL; if (Unit* target = SelectUnit(SELECT_TARGET_FARTHEST, 0))
target = SelectUnit(SELECT_TARGET_FARTHEST,0);
DoCast(target,SPELL_FIREBALL_BARRAGE); DoCast(target,SPELL_FIREBALL_BARRAGE);
FireballBarrageTimer = 20000; //Timer FireballBarrageTimer = 20000; //Timer
}else FireballBarrageTimer -= diff; }else FireballBarrageTimer -= diff;
@@ -31,6 +31,8 @@
#define DATA_GAMEOBJECT_GAME_DOOR 24 #define DATA_GAMEOBJECT_GAME_DOOR 24
#define DATA_GAMEOBJECT_GAME_EXIT_DOOR 25 #define DATA_GAMEOBJECT_GAME_EXIT_DOOR 25
#define DATA_IMAGE_OF_MEDIVH 26 #define DATA_IMAGE_OF_MEDIVH 26
#define DATA_MASTERS_TERRACE_DOOR_1 27
#define DATA_MASTERS_TERRACE_DOOR_2 28
// Opera Performances // Opera Performances
#define EVENT_OZ 1 #define EVENT_OZ 1
@@ -149,6 +149,8 @@ struct TRINITY_DLL_DECL instance_karazhan : public ScriptedInstance
case DATA_GAMEOBJECT_GAME_DOOR: return GamesmansDoor; case DATA_GAMEOBJECT_GAME_DOOR: return GamesmansDoor;
case DATA_GAMEOBJECT_GAME_EXIT_DOOR: return GamesmansExitDoor; case DATA_GAMEOBJECT_GAME_EXIT_DOOR: return GamesmansExitDoor;
case DATA_GAMEOBJECT_NETHER_DOOR: return NetherspaceDoor; case DATA_GAMEOBJECT_NETHER_DOOR: return NetherspaceDoor;
case DATA_MASTERS_TERRACE_DOOR_1: return MastersTerraceDoor[0];
case DATA_MASTERS_TERRACE_DOOR_2: return MastersTerraceDoor[1];
} }
return 0; return 0;