Violet Hold: Add 5 secs intervale between waves

--HG--
branch : trunk
This commit is contained in:
tartalo
2009-12-10 21:06:17 +01:00
parent 3257d30d3b
commit ee7d3d1e48
@@ -70,6 +70,8 @@ struct TRINITY_DLL_DECL instance_violet_hold : public ScriptedInstance
uint64 uiActivationCrystal[3]; uint64 uiActivationCrystal[3];
uint32 uiActivationTimer;
uint8 uiWaveCount; uint8 uiWaveCount;
uint8 uiLocation; uint8 uiLocation;
uint8 uiFirstBoss; uint8 uiFirstBoss;
@@ -79,7 +81,7 @@ struct TRINITY_DLL_DECL instance_violet_hold : public ScriptedInstance
uint8 uiCountErekemGuards; uint8 uiCountErekemGuards;
uint8 uiCountActivationCrystals; uint8 uiCountActivationCrystals;
bool HeroicMode; bool bActive;
std::string str_data; std::string str_data;
@@ -111,6 +113,10 @@ struct TRINITY_DLL_DECL instance_violet_hold : public ScriptedInstance
uiCountErekemGuards = 0; uiCountErekemGuards = 0;
uiCountActivationCrystals = 0; uiCountActivationCrystals = 0;
uiActivationTimer = 5000;
bActive = false;
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
} }
@@ -220,32 +226,25 @@ struct TRINITY_DLL_DECL instance_violet_hold : public ScriptedInstance
break; break;
case DATA_WAVE_COUNT: case DATA_WAVE_COUNT:
uiWaveCount = data; uiWaveCount = data;
switch(data) bActive = true;
{
case 6:
uiFirstBoss = rand()%6;
StartBossEncounter(uiFirstBoss);
break;
case 12:
uiSecondBoss = rand()%6;
while (uiSecondBoss == uiFirstBoss)
uiSecondBoss = rand()%6;
StartBossEncounter(uiSecondBoss);
break;
case 18:
{
Creature *pSinclari = instance->GetCreature(uiSinclari);
if (pSinclari)
pSinclari->SummonCreature(CREATURE_CYANIGOSA,PortalLocation[0].x,PortalLocation[0].y,
PortalLocation[0].z,PortalLocation[0].orientation,TEMPSUMMON_DEAD_DESPAWN,0);
break; break;
} }
case 1:
{
if (GameObject* pMainDoor = instance->GetGameObject(uiMainDoor))
pMainDoor->SetGoState(GO_STATE_READY);
} }
default:
uint32 GetData(uint32 type)
{
switch(type)
{
case DATA_1ST_BOSS_EVENT: return m_auiEncounter[0];
case DATA_2ND_BOSS_EVENT: return m_auiEncounter[1];
case DATA_CYANIGOSA_EVENT: return m_auiEncounter[2];
case DATA_WAVE_COUNT: return uiWaveCount;
}
return 0;
}
void SpawnPortal()
{ {
Creature *pSinclari = instance->GetCreature(uiSinclari); Creature *pSinclari = instance->GetCreature(uiSinclari);
if (pSinclari) if (pSinclari)
@@ -263,23 +262,6 @@ struct TRINITY_DLL_DECL instance_violet_hold : public ScriptedInstance
} }
} }
} }
}
break;
}
}
uint32 GetData(uint32 type)
{
switch(type)
{
case DATA_1ST_BOSS_EVENT: return m_auiEncounter[0];
case DATA_2ND_BOSS_EVENT: return m_auiEncounter[1];
case DATA_CYANIGOSA_EVENT: return m_auiEncounter[2];
case DATA_WAVE_COUNT: return uiWaveCount;
}
return 0;
}
void StartBossEncounter(uint8 uiBoss) void StartBossEncounter(uint8 uiBoss)
{ {
@@ -349,6 +331,39 @@ struct TRINITY_DLL_DECL instance_violet_hold : public ScriptedInstance
} }
} }
void AddWave()
{
switch(uiWaveCount)
{
case 6:
uiFirstBoss = rand()%6;
StartBossEncounter(uiFirstBoss);
break;
case 12:
uiSecondBoss = rand()%6;
while (uiSecondBoss == uiFirstBoss)
uiSecondBoss = rand()%6;
StartBossEncounter(uiSecondBoss);
break;
case 18:
{
Creature *pSinclari = instance->GetCreature(uiSinclari);
if (pSinclari)
pSinclari->SummonCreature(CREATURE_CYANIGOSA,PortalLocation[0].x,PortalLocation[0].y,
PortalLocation[0].z,PortalLocation[0].orientation,TEMPSUMMON_DEAD_DESPAWN,0);
break;
}
case 1:
{
if (GameObject* pMainDoor = instance->GetGameObject(uiMainDoor))
pMainDoor->SetGoState(GO_STATE_READY);
}
default:
SpawnPortal();
}
bActive = true;
}
uint64 GetData64(uint32 identifier) uint64 GetData64(uint32 identifier)
{ {
switch(identifier) switch(identifier)
@@ -423,6 +438,19 @@ struct TRINITY_DLL_DECL instance_violet_hold : public ScriptedInstance
OUT_LOAD_INST_DATA_COMPLETE; OUT_LOAD_INST_DATA_COMPLETE;
} }
void Update(uint32 diff)
{
if (bActive)
{
if (uiActivationTimer < diff)
{
AddWave();
bActive = false;
uiActivationTimer = 5000;
} else uiActivationTimer -= diff;
}
}
}; };
InstanceData* GetInstanceData_instance_violet_hold(Map* pMap) InstanceData* GetInstanceData_instance_violet_hold(Map* pMap)