*Halls of Stone: Sjonnir The Ironshaper, blizzlike add spawning, by Tartalo

--HG--
branch : trunk
This commit is contained in:
maximius
2009-10-14 14:24:33 -07:00
parent ae71c40669
commit 0f1d8513b2

View File

@@ -45,6 +45,11 @@ enum Creatures
CREATURE_FORGED_IRON_DWARF = 27982
};
enum Misc
{
DATA_TIME_BEFORE_OOZE = 150000 //2min 30 secs
};
struct Locations
{
float x, y, z;
@@ -56,6 +61,8 @@ static Locations PipeLocations[] =
{1297.7, 595.6, 199.9} //right
};
static Locations CenterPoint = {295.21, 667.157, 189.691};
struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
{
boss_sjonnirAI(Creature *c) : ScriptedAI(c)
@@ -71,6 +78,7 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
uint32 uiLightningRingTimer;
uint32 uiSummonTimer;
uint32 uiFrenzyTimer;
uint32 uiEncounterTimer;
ScriptedInstance* pInstance;
@@ -78,6 +86,7 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
{
bIsFrenzy = false;
uiEncounterTimer = 0;
uiChainLightningTimer = 3000 + rand()%5000;
uiLightningShieldTimer = 20000 + rand()%5000;
uiStaticChargeTimer = 20000 + rand()%5000;
@@ -93,6 +102,8 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
{
DoScriptText(SAY_AGGRO, m_creature);
uiEncounterTimer = 0;
if (pInstance)
pInstance->SetData(DATA_SJONNIR_EVENT, IN_PROGRESS);
}
@@ -136,7 +147,8 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
if (uiSummonTimer < diff)
{
uint32 uiSummonPipe = rand()%2;
m_creature->SummonCreature(RAND(CREATURE_FORGED_IRON_DWARF,CREATURE_FORGED_IRON_TROGG,CREATURE_MALFORMED_OOZE),
m_creature->SummonCreature(uiEncounterTimer > DATA_TIME_BEFORE_OOZE ? CREATURE_MALFORMED_OOZE :
RAND(CREATURE_FORGED_IRON_DWARF,CREATURE_FORGED_IRON_TROGG),
PipeLocations[uiSummonPipe].x, PipeLocations[uiSummonPipe].y, PipeLocations[uiSummonPipe].z, 0.0f,
TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
uiSummonTimer = 20000;
@@ -151,17 +163,20 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
}
else uiFrenzyTimer -= diff;
}
uiEncounterTimer +=diff;
DoMeleeAttackIfReady();
}
void JustSummoned(Creature* summon)
{
summon->GetMotionMaster()->MovePoint(0, CenterPoint.x, CenterPoint.y, CenterPoint.z);
Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);
while (pTarget && pTarget->GetTypeId() != TYPEID_PLAYER)
/*while (pTarget && pTarget->GetTypeId() != TYPEID_PLAYER)
pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);
if (pTarget)
summon->AI()->AttackStart(pTarget);
summon->AI()->AttackStart(pTarget);*/
}
void JustDied(Unit* killer)