*Halls of Stone: Sjonnir The Ironshaper, blizzlike add spawning, by Tartalo
--HG-- branch : trunk
This commit is contained in:
@@ -45,6 +45,11 @@ enum Creatures
|
|||||||
CREATURE_FORGED_IRON_DWARF = 27982
|
CREATURE_FORGED_IRON_DWARF = 27982
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum Misc
|
||||||
|
{
|
||||||
|
DATA_TIME_BEFORE_OOZE = 150000 //2min 30 secs
|
||||||
|
};
|
||||||
|
|
||||||
struct Locations
|
struct Locations
|
||||||
{
|
{
|
||||||
float x, y, z;
|
float x, y, z;
|
||||||
@@ -56,6 +61,8 @@ static Locations PipeLocations[] =
|
|||||||
{1297.7, 595.6, 199.9} //right
|
{1297.7, 595.6, 199.9} //right
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static Locations CenterPoint = {295.21, 667.157, 189.691};
|
||||||
|
|
||||||
struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
|
struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
boss_sjonnirAI(Creature *c) : ScriptedAI(c)
|
boss_sjonnirAI(Creature *c) : ScriptedAI(c)
|
||||||
@@ -71,6 +78,7 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
|
|||||||
uint32 uiLightningRingTimer;
|
uint32 uiLightningRingTimer;
|
||||||
uint32 uiSummonTimer;
|
uint32 uiSummonTimer;
|
||||||
uint32 uiFrenzyTimer;
|
uint32 uiFrenzyTimer;
|
||||||
|
uint32 uiEncounterTimer;
|
||||||
|
|
||||||
ScriptedInstance* pInstance;
|
ScriptedInstance* pInstance;
|
||||||
|
|
||||||
@@ -78,6 +86,7 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
bIsFrenzy = false;
|
bIsFrenzy = false;
|
||||||
|
|
||||||
|
uiEncounterTimer = 0;
|
||||||
uiChainLightningTimer = 3000 + rand()%5000;
|
uiChainLightningTimer = 3000 + rand()%5000;
|
||||||
uiLightningShieldTimer = 20000 + rand()%5000;
|
uiLightningShieldTimer = 20000 + rand()%5000;
|
||||||
uiStaticChargeTimer = 20000 + rand()%5000;
|
uiStaticChargeTimer = 20000 + rand()%5000;
|
||||||
@@ -93,6 +102,8 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
DoScriptText(SAY_AGGRO, m_creature);
|
DoScriptText(SAY_AGGRO, m_creature);
|
||||||
|
|
||||||
|
uiEncounterTimer = 0;
|
||||||
|
|
||||||
if (pInstance)
|
if (pInstance)
|
||||||
pInstance->SetData(DATA_SJONNIR_EVENT, IN_PROGRESS);
|
pInstance->SetData(DATA_SJONNIR_EVENT, IN_PROGRESS);
|
||||||
}
|
}
|
||||||
@@ -136,7 +147,8 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
|
|||||||
if (uiSummonTimer < diff)
|
if (uiSummonTimer < diff)
|
||||||
{
|
{
|
||||||
uint32 uiSummonPipe = rand()%2;
|
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,
|
PipeLocations[uiSummonPipe].x, PipeLocations[uiSummonPipe].y, PipeLocations[uiSummonPipe].z, 0.0f,
|
||||||
TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
|
TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
|
||||||
uiSummonTimer = 20000;
|
uiSummonTimer = 20000;
|
||||||
@@ -151,17 +163,20 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
else uiFrenzyTimer -= diff;
|
else uiFrenzyTimer -= diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uiEncounterTimer +=diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustSummoned(Creature* summon)
|
void JustSummoned(Creature* summon)
|
||||||
{
|
{
|
||||||
|
summon->GetMotionMaster()->MovePoint(0, CenterPoint.x, CenterPoint.y, CenterPoint.z);
|
||||||
Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
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);
|
pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
if (pTarget)
|
if (pTarget)
|
||||||
summon->AI()->AttackStart(pTarget);
|
summon->AI()->AttackStart(pTarget);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit* killer)
|
void JustDied(Unit* killer)
|
||||||
|
|||||||
Reference in New Issue
Block a user