aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTartalo <none@none>2010-06-26 22:35:23 +0200
committerTartalo <none@none>2010-06-26 22:35:23 +0200
commit3da0d1d5b2177816250a8f0e27350fc210deae47 (patch)
tree94c76c6446b4e1f70fa3b3d9cce905a17bba87f9 /src
parent1b95df41942dd862c6873a4fb9ed206875b20e6b (diff)
Violet Hold: Cyanigosa's pre-fight animation, by DenissRassmann
From issue #2810 --HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp56
1 files changed, 55 insertions, 1 deletions
diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
index 962af54de1e..cec9b8800cf 100644
--- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
+++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
@@ -51,6 +51,20 @@ const Position BossStartMove4 = {1853.618286, 758.557617, 38.657505};
const Position BossStartMove5 = {1906.683960, 842.348022, 38.637459};
const Position BossStartMove6 = {1928.207031, 852.864441, 47.200813};
+const Position CyanigosasSpawnLocation = {1930.281250, 804.407715, 52.410946, 3.139621};
+const Position MiddleRoomLocation = {1892.291260, 805.696838, 38.438862, 3.139621};
+
+//Cyanigosa's prefight event data
+enum Yells
+{
+ CYANIGOSA_SAY_SPAWN = -1608005
+};
+enum Spells
+{
+ CYANIGOSA_SPELL_TRANSFORM = 58668,
+ CYANIGOSA_BLUE_AURA = 47759,
+};
+
struct instance_violet_hold : public ScriptedInstance
{
instance_violet_hold(Map* pMap) : ScriptedInstance(pMap) {Initialize();};
@@ -79,6 +93,7 @@ struct instance_violet_hold : public ScriptedInstance
uint64 uiActivationCrystal[3];
uint32 uiActivationTimer;
+ uint32 uiCyanigosaEventTimer;
uint8 uiWaveCount;
uint8 uiLocation;
@@ -93,6 +108,7 @@ struct instance_violet_hold : public ScriptedInstance
uint8 m_auiEncounter[MAX_ENCOUNTER];
uint8 uiCountErekemGuards;
uint8 uiCountActivationCrystals;
+ uint8 uiCyanigosaEventPhase;
bool bActive;
bool bWiped;
@@ -135,9 +151,11 @@ struct instance_violet_hold : public ScriptedInstance
uiSecondBoss = 0;
uiCountErekemGuards = 0;
uiCountActivationCrystals = 0;
+ uiCyanigosaEventPhase = 1;
uiActivationTimer = 5000;
uiDoorSpellTimer = 2000;
+ uiCyanigosaEventTimer = 3*IN_MILISECONDS;
bActive = false;
bIsDoorSpellCasted = false;
@@ -184,6 +202,7 @@ struct instance_violet_hold : public ScriptedInstance
break;
case CREATURE_CYANIGOSA:
uiCyanigosa = pCreature->GetGUID();
+ pCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE|UNIT_FLAG_NON_ATTACKABLE);
break;
case CREATURE_SINCLARI:
uiSinclari = pCreature->GetGUID();
@@ -465,7 +484,7 @@ struct instance_violet_hold : public ScriptedInstance
{
Creature *pSinclari = instance->GetCreature(uiSinclari);
if (pSinclari)
- pSinclari->SummonCreature(CREATURE_CYANIGOSA,PortalLocation[0],TEMPSUMMON_DEAD_DESPAWN);
+ pSinclari->SummonCreature(CREATURE_CYANIGOSA,CyanigosasSpawnLocation,TEMPSUMMON_DEAD_DESPAWN);
break;
}
case 1:
@@ -595,6 +614,41 @@ struct instance_violet_hold : public ScriptedInstance
}
}
+ // Cyanigosa is spawned but not tranformed, prefight event
+ Creature *pCyanigosa = instance->GetCreature(uiCyanigosa);
+ if (pCyanigosa && !pCyanigosa->HasAura(CYANIGOSA_SPELL_TRANSFORM))
+ {
+ if (uiCyanigosaEventTimer <= diff)
+ {
+ switch(uiCyanigosaEventPhase)
+ {
+ case 1:
+ pCyanigosa->CastSpell(pCyanigosa, CYANIGOSA_BLUE_AURA, false);
+ DoScriptText(CYANIGOSA_SAY_SPAWN, pCyanigosa);
+ uiCyanigosaEventTimer = 7*IN_MILISECONDS;
+ ++uiCyanigosaEventPhase;
+ break;
+ case 2:
+ pCyanigosa->GetMotionMaster()->MoveJump(MiddleRoomLocation.GetPositionX(), MiddleRoomLocation.GetPositionY(), MiddleRoomLocation.GetPositionZ(), 10.0f, 20.0f);
+ pCyanigosa->CastSpell(pCyanigosa, CYANIGOSA_BLUE_AURA, false);
+ uiCyanigosaEventTimer = 7*IN_MILISECONDS;
+ ++uiCyanigosaEventPhase;
+ break;
+ case 3:
+ pCyanigosa->RemoveAurasDueToSpell(CYANIGOSA_BLUE_AURA);
+ pCyanigosa->CastSpell(pCyanigosa, CYANIGOSA_SPELL_TRANSFORM, 0);
+ pCyanigosa->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE|UNIT_FLAG_NON_ATTACKABLE);
+ pCyanigosa->SetReactState(REACT_AGGRESSIVE);
+ uiCyanigosaEventTimer = 2*IN_MILISECONDS;
+ ++uiCyanigosaEventPhase;
+ break;
+ case 4:
+ uiCyanigosaEventPhase = 0;
+ break;
+ }
+ } else uiCyanigosaEventTimer -= diff;
+ }
+
// if there are NPCs in front of the prison door, which are casting the door seal spell and doors are active
if(GetData(DATA_NPC_PRESENCE_AT_DOOR) && (GetData(DATA_MAIN_DOOR) == GO_STATE_READY))
{