*Merge.
--HG-- branch : trunk
This commit is contained in:
@@ -0,0 +1,14 @@
|
|||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184418 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184419 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184420 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184421 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184422 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184423 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184424 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184425 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184426 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184427 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184428 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184429 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184430 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184431 LIMIT 1;
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 38528;
|
||||||
|
|
||||||
|
INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES
|
||||||
|
( 38528,-31984, 2, 'Protection of Elune - Finger of Death'),
|
||||||
|
( 38528,-32111, 2, 'Protection of Elune - Finger of Death');
|
||||||
@@ -25,6 +25,20 @@ UPDATE `gameobject_template` SET `ScriptName`='go_crystal_prison' WHERE `entry`=
|
|||||||
UPDATE `gameobject_template` SET `ScriptName`='go_legion_obelisk' WHERE `entry` IN (185193,185195,185196,185197,185198);
|
UPDATE `gameobject_template` SET `ScriptName`='go_legion_obelisk' WHERE `entry` IN (185193,185195,185196,185197,185198);
|
||||||
UPDATE `gameobject_template` SET `ScriptName`='go_jump_a_tron' WHERE `entry`=183146;
|
UPDATE `gameobject_template` SET `ScriptName`='go_jump_a_tron' WHERE `entry`=183146;
|
||||||
UPDATE `gameobject_template` SET `ScriptName`='go_ethereum_prison' WHERE `entry`=184421;
|
UPDATE `gameobject_template` SET `ScriptName`='go_ethereum_prison' WHERE `entry`=184421;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184418 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184419 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184420 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184421 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184422 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184423 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184424 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184425 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184426 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184427 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184428 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184429 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184430 LIMIT 1;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = 'go_ethereum_prison' WHERE `entry` = 184431 LIMIT 1;
|
||||||
UPDATE `gameobject_template` SET `ScriptName`='go_sacred_fire_of_life' WHERE `entry`=175944;
|
UPDATE `gameobject_template` SET `ScriptName`='go_sacred_fire_of_life' WHERE `entry`=175944;
|
||||||
UPDATE `gameobject_template` SET `ScriptName`='go_skull_pile' WHERE `entry`=185913;
|
UPDATE `gameobject_template` SET `ScriptName`='go_skull_pile' WHERE `entry`=185913;
|
||||||
UPDATE `gameobject_template` SET `ScriptName`='go_tele_to_dalaran_crystal' WHERE entry=191230;
|
UPDATE `gameobject_template` SET `ScriptName`='go_tele_to_dalaran_crystal' WHERE entry=191230;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
-- up to TC2 2987 TC1 1434
|
-- up to TC2 3019 TC1 1434
|
||||||
|
|
||||||
-- --------
|
-- --------
|
||||||
-- LINKED
|
-- LINKED
|
||||||
@@ -104,6 +104,9 @@ INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comm
|
|||||||
( 40604, 40616, 1, 'Fel Rage Aura'),
|
( 40604, 40616, 1, 'Fel Rage Aura'),
|
||||||
( 40616, 41625, 1, 'Fel Rage Aura'),
|
( 40616, 41625, 1, 'Fel Rage Aura'),
|
||||||
( 41292, 42017, 2, 'Aura of Suffering'),
|
( 41292, 42017, 2, 'Aura of Suffering'),
|
||||||
|
-- hyjal mount
|
||||||
|
( 38528,-31984, 2, 'Protection of Elune - Finger of Death'),
|
||||||
|
( 38528,-32111, 2, 'Protection of Elune - Finger of Death'),
|
||||||
-- sunwell
|
-- sunwell
|
||||||
( 44869, 44866, 1, 'Spectral Blast Portal'),
|
( 44869, 44866, 1, 'Spectral Blast Portal'),
|
||||||
# (44869, 46648, 1, 'Spectral Blast Visual'), cause severe lag seems should be casted by go
|
# (44869, 46648, 1, 'Spectral Blast Visual'), cause severe lag seems should be casted by go
|
||||||
|
|||||||
@@ -564,7 +564,7 @@ void FillSpellSummary()
|
|||||||
if ( TempSpell->EffectImplicitTargetA[j] == TARGET_ALL_ENEMY_IN_AREA ||
|
if ( TempSpell->EffectImplicitTargetA[j] == TARGET_ALL_ENEMY_IN_AREA ||
|
||||||
TempSpell->EffectImplicitTargetA[j] == TARGET_ALL_ENEMY_IN_AREA_INSTANT ||
|
TempSpell->EffectImplicitTargetA[j] == TARGET_ALL_ENEMY_IN_AREA_INSTANT ||
|
||||||
TempSpell->EffectImplicitTargetA[j] == TARGET_DEST_CASTER ||
|
TempSpell->EffectImplicitTargetA[j] == TARGET_DEST_CASTER ||
|
||||||
TempSpell->EffectImplicitTargetA[j] == TARGET_ALL_ENEMY_IN_AREA_CHANNELED )
|
TempSpell->EffectImplicitTargetA[j] == TARGET_DEST_DYNOBJ_ENEMY )
|
||||||
SpellSummary[i].Targets |= 1 << (SELECT_TARGET_AOE_ENEMY-1);
|
SpellSummary[i].Targets |= 1 << (SELECT_TARGET_AOE_ENEMY-1);
|
||||||
|
|
||||||
//Spell targets an enemy
|
//Spell targets an enemy
|
||||||
@@ -573,7 +573,7 @@ void FillSpellSummary()
|
|||||||
TempSpell->EffectImplicitTargetA[j] == TARGET_ALL_ENEMY_IN_AREA ||
|
TempSpell->EffectImplicitTargetA[j] == TARGET_ALL_ENEMY_IN_AREA ||
|
||||||
TempSpell->EffectImplicitTargetA[j] == TARGET_ALL_ENEMY_IN_AREA_INSTANT ||
|
TempSpell->EffectImplicitTargetA[j] == TARGET_ALL_ENEMY_IN_AREA_INSTANT ||
|
||||||
TempSpell->EffectImplicitTargetA[j] == TARGET_DEST_CASTER ||
|
TempSpell->EffectImplicitTargetA[j] == TARGET_DEST_CASTER ||
|
||||||
TempSpell->EffectImplicitTargetA[j] == TARGET_ALL_ENEMY_IN_AREA_CHANNELED )
|
TempSpell->EffectImplicitTargetA[j] == TARGET_DEST_DYNOBJ_ENEMY )
|
||||||
SpellSummary[i].Targets |= 1 << (SELECT_TARGET_ANY_ENEMY-1);
|
SpellSummary[i].Targets |= 1 << (SELECT_TARGET_ANY_ENEMY-1);
|
||||||
|
|
||||||
//Spell targets a single friend(or self)
|
//Spell targets a single friend(or self)
|
||||||
|
|||||||
@@ -79,6 +79,9 @@ struct TRINITY_DLL_DECL boss_taerarAI : public ScriptedAI
|
|||||||
|
|
||||||
void SummonShades(Unit* victim)
|
void SummonShades(Unit* victim)
|
||||||
{
|
{
|
||||||
|
if(!victim)
|
||||||
|
return;
|
||||||
|
|
||||||
Rand = rand()%15;
|
Rand = rand()%15;
|
||||||
switch (rand()%2)
|
switch (rand()%2)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -69,6 +69,9 @@ struct TRINITY_DLL_DECL boss_ysondreAI : public ScriptedAI
|
|||||||
|
|
||||||
void SummonDruids(Unit* victim)
|
void SummonDruids(Unit* victim)
|
||||||
{
|
{
|
||||||
|
if(!victim)
|
||||||
|
return;
|
||||||
|
|
||||||
Rand = rand()%10;
|
Rand = rand()%10;
|
||||||
switch (rand()%2)
|
switch (rand()%2)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1426,7 +1426,7 @@ CreatureAI* GetAI_Mob_EventAI(Creature *pCreature)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (EAI_ErrorLevel > 1)
|
if (EAI_ErrorLevel > 1)
|
||||||
error_db_log("TSCR: EventMap for Creature %u is empty but creature is using Mob_EventAI.", pCreature->GetEntry());
|
error_db_log("TSCR: EventMap for Creature %u is empty but creature is using Mob_EventAI.", pCreature->GetEntry());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,8 +47,8 @@ struct TRINITY_DLL_DECL npc_testAI : public npc_escortAI
|
|||||||
{
|
{
|
||||||
m_creature->Say("Wild Felboar attack!", LANG_UNIVERSAL, 0);
|
m_creature->Say("Wild Felboar attack!", LANG_UNIVERSAL, 0);
|
||||||
Creature* temp = m_creature->SummonCreature(21878, m_creature->GetPositionX()+5, m_creature->GetPositionY()+7, m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
|
Creature* temp = m_creature->SummonCreature(21878, m_creature->GetPositionX()+5, m_creature->GetPositionY()+7, m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
|
||||||
|
if(temp)
|
||||||
temp->AI()->AttackStart(m_creature);
|
temp->AI()->AttackStart(m_creature);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -73,8 +73,10 @@ struct TRINITY_DLL_DECL npc_chicken_cluckAI : public ScriptedAI
|
|||||||
if(m_creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER))
|
if(m_creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER))
|
||||||
{
|
{
|
||||||
if(ResetFlagTimer < diff)
|
if(ResetFlagTimer < diff)
|
||||||
|
{
|
||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
else ResetFlagTimer -= diff;
|
return;
|
||||||
|
}else ResetFlagTimer -= diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(UpdateVictim())
|
if(UpdateVictim())
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ struct TRINITY_DLL_DECL npc_ravenholdtAI : public ScriptedAI
|
|||||||
|
|
||||||
void EnterCombat(Unit* who) { }
|
void EnterCombat(Unit* who) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
CreatureAI* GetAI_npc_ravenholdt(Creature *_Creature)
|
CreatureAI* GetAI_npc_ravenholdt(Creature *_Creature)
|
||||||
{
|
{
|
||||||
return new npc_ravenholdtAI (_Creature);
|
return new npc_ravenholdtAI (_Creature);
|
||||||
|
|||||||
@@ -261,7 +261,10 @@ struct TRINITY_DLL_DECL mob_ethereal_beaconAI : public ScriptedAI
|
|||||||
}else Apprentice_Timer -= diff;
|
}else Apprentice_Timer -= diff;
|
||||||
|
|
||||||
if( CanEvade )
|
if( CanEvade )
|
||||||
|
{
|
||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -154,7 +154,8 @@ struct TRINITY_DLL_DECL boss_talon_king_ikissAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
//second top aggro target in normal, random target in heroic correct?
|
//second top aggro target in normal, random target in heroic correct?
|
||||||
Unit *target = NULL;
|
Unit *target = NULL;
|
||||||
if (HeroicMode ? target = SelectUnit(SELECT_TARGET_RANDOM,0) : target = SelectUnit(SELECT_TARGET_TOPAGGRO,1))
|
target = HeroicMode ? SelectUnit(SELECT_TARGET_RANDOM,0) : SelectUnit(SELECT_TARGET_TOPAGGRO,1);
|
||||||
|
if (target)
|
||||||
DoCast(target,HeroicMode ? H_SPELL_POLYMORPH : SPELL_POLYMORPH);
|
DoCast(target,HeroicMode ? H_SPELL_POLYMORPH : SPELL_POLYMORPH);
|
||||||
Sheep_Timer = 15000+rand()%2500;
|
Sheep_Timer = 15000+rand()%2500;
|
||||||
}else Sheep_Timer -= diff;
|
}else Sheep_Timer -= diff;
|
||||||
|
|||||||
+1
-2
@@ -77,7 +77,6 @@ struct TRINITY_DLL_DECL boss_ambassador_hellmawAI : public ScriptedAI
|
|||||||
IsBanished = true;
|
IsBanished = true;
|
||||||
}
|
}
|
||||||
else pInstance->SetData(TYPE_HELLMAW,FAIL);
|
else pInstance->SetData(TYPE_HELLMAW,FAIL);
|
||||||
|
|
||||||
if (pInstance->GetData(TYPE_OVERSEER) == DONE)
|
if (pInstance->GetData(TYPE_OVERSEER) == DONE)
|
||||||
{
|
{
|
||||||
if (m_creature->HasAura(SPELL_BANISH))
|
if (m_creature->HasAura(SPELL_BANISH))
|
||||||
@@ -148,7 +147,7 @@ struct TRINITY_DLL_DECL boss_ambassador_hellmawAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if (EventCheck_Timer < diff)
|
if (EventCheck_Timer < diff)
|
||||||
{
|
{
|
||||||
if (pInstance)
|
if(pInstance)
|
||||||
{
|
{
|
||||||
if (pInstance->GetData(TYPE_OVERSEER) == DONE)
|
if (pInstance->GetData(TYPE_OVERSEER) == DONE)
|
||||||
DoIntro();
|
DoIntro();
|
||||||
|
|||||||
+8
-3
@@ -150,6 +150,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
|||||||
banish_Timer = 17000;
|
banish_Timer = 17000;
|
||||||
HelpYell = false;
|
HelpYell = false;
|
||||||
destroyPortals();
|
destroyPortals();
|
||||||
|
|
||||||
if(pInstance)
|
if(pInstance)
|
||||||
pInstance->SetData(DATA_GRANDMASTERVORPILEVENT, NOT_STARTED);
|
pInstance->SetData(DATA_GRANDMASTERVORPILEVENT, NOT_STARTED);
|
||||||
}
|
}
|
||||||
@@ -162,8 +163,11 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
Creature *Portal = NULL;
|
Creature *Portal = NULL;
|
||||||
Portal = m_creature->SummonCreature(MOB_VOID_PORTAL,VoidPortalCoords[i][0],VoidPortalCoords[i][1],VoidPortalCoords[i][2],0,TEMPSUMMON_CORPSE_DESPAWN,3000000);
|
Portal = m_creature->SummonCreature(MOB_VOID_PORTAL,VoidPortalCoords[i][0],VoidPortalCoords[i][1],VoidPortalCoords[i][2],0,TEMPSUMMON_CORPSE_DESPAWN,3000000);
|
||||||
PortalsGuid[i] = Portal->GetGUID();
|
if(Portal)
|
||||||
Portal->CastSpell(Portal,SPELL_VOID_PORTAL_VISUAL,false);
|
{
|
||||||
|
PortalsGuid[i] = Portal->GetGUID();
|
||||||
|
Portal->CastSpell(Portal,SPELL_VOID_PORTAL_VISUAL,false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
sumportals = true;
|
sumportals = true;
|
||||||
summonTraveler_Timer = 5000;
|
summonTraveler_Timer = 5000;
|
||||||
@@ -215,6 +219,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
DoScriptText(SAY_DEATH, m_creature);
|
DoScriptText(SAY_DEATH, m_creature);
|
||||||
destroyPortals();
|
destroyPortals();
|
||||||
|
|
||||||
if(pInstance)
|
if(pInstance)
|
||||||
pInstance->SetData(DATA_GRANDMASTERVORPILEVENT, DONE);
|
pInstance->SetData(DATA_GRANDMASTERVORPILEVENT, DONE);
|
||||||
}
|
}
|
||||||
@@ -228,6 +233,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
|||||||
case 2: DoScriptText(SAY_AGGRO3, m_creature); break;
|
case 2: DoScriptText(SAY_AGGRO3, m_creature); break;
|
||||||
}
|
}
|
||||||
summonPortals();
|
summonPortals();
|
||||||
|
|
||||||
if(pInstance)
|
if(pInstance)
|
||||||
pInstance->SetData(DATA_GRANDMASTERVORPILEVENT, IN_PROGRESS);
|
pInstance->SetData(DATA_GRANDMASTERVORPILEVENT, IN_PROGRESS);
|
||||||
}
|
}
|
||||||
@@ -245,7 +251,6 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
|||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ struct TRINITY_DLL_DECL mobs_spitelashesAI : public ScriptedAI
|
|||||||
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||||
m_creature->RemoveCorpse(); //you don't see any corpse on off.
|
m_creature->RemoveCorpse(); //you don't see any corpse on off.
|
||||||
EnterEvadeMode(); //spellhit will be set to false
|
EnterEvadeMode(); //spellhit will be set to false
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
// walk 5 seconds before summoning
|
// walk 5 seconds before summoning
|
||||||
if( spellhit && morphtimer<5000 )
|
if( spellhit && morphtimer<5000 )
|
||||||
|
|||||||
@@ -467,11 +467,14 @@ struct TRINITY_DLL_DECL npc_geezleAI : public ScriptedAI
|
|||||||
Step = 1;
|
Step = 1;
|
||||||
EventStarted = true;
|
EventStarted = true;
|
||||||
Creature* Spark = m_creature->SummonCreature(MOB_SPARK, SparkPos[0], SparkPos[1], SparkPos[2], 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1000);
|
Creature* Spark = m_creature->SummonCreature(MOB_SPARK, SparkPos[0], SparkPos[1], SparkPos[2], 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 1000);
|
||||||
SparkGUID = Spark->GetGUID();
|
if(Spark)
|
||||||
Spark->setActive(true);
|
{
|
||||||
Spark->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
SparkGUID = Spark->GetGUID();
|
||||||
|
Spark->setActive(true);
|
||||||
|
Spark->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||||
|
Spark->GetMotionMaster()->MovePoint(0, -5080.70, -11253.61, 0.56);
|
||||||
|
}
|
||||||
m_creature->GetMotionMaster()->MovePoint(0, -5092.26, -11252, 0.71);
|
m_creature->GetMotionMaster()->MovePoint(0, -5092.26, -11252, 0.71);
|
||||||
Spark->GetMotionMaster()->MovePoint(0, -5080.70, -11253.61, 0.56);
|
|
||||||
SayTimer = 23000;
|
SayTimer = 23000;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -488,8 +491,11 @@ struct TRINITY_DLL_DECL npc_geezleAI : public ScriptedAI
|
|||||||
return 1000;
|
return 1000;
|
||||||
case 2:
|
case 2:
|
||||||
DoScriptText(GEEZLE_SAY_1, m_creature, Spark);
|
DoScriptText(GEEZLE_SAY_1, m_creature, Spark);
|
||||||
Spark->SetInFront(m_creature);
|
if(Spark)
|
||||||
m_creature->SetInFront(Spark);
|
{
|
||||||
|
Spark->SetInFront(m_creature);
|
||||||
|
m_creature->SetInFront(Spark);
|
||||||
|
}
|
||||||
return 5000;
|
return 5000;
|
||||||
case 3: DoScriptText(SPARK_SAY_2, Spark); return 7000;
|
case 3: DoScriptText(SPARK_SAY_2, Spark); return 7000;
|
||||||
case 4: DoScriptText(SPARK_SAY_3, Spark); return 8000;
|
case 4: DoScriptText(SPARK_SAY_3, Spark); return 8000;
|
||||||
@@ -499,10 +505,12 @@ struct TRINITY_DLL_DECL npc_geezleAI : public ScriptedAI
|
|||||||
case 8: DoScriptText(GEEZLE_SAY_7, m_creature, Spark); return 2000;
|
case 8: DoScriptText(GEEZLE_SAY_7, m_creature, Spark); return 2000;
|
||||||
case 9:
|
case 9:
|
||||||
m_creature->GetMotionMaster()->MoveTargetedHome();
|
m_creature->GetMotionMaster()->MoveTargetedHome();
|
||||||
Spark->GetMotionMaster()->MovePoint(0, -5030.95, -11291.99, 7.97);
|
if(Spark)
|
||||||
|
Spark->GetMotionMaster()->MovePoint(0, -5030.95, -11291.99, 7.97);
|
||||||
return 20000;
|
return 20000;
|
||||||
case 10:
|
case 10:
|
||||||
Spark->DealDamage(Spark,Spark->GetHealth(),NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
if(Spark)
|
||||||
|
Spark->DealDamage(Spark,Spark->GetHealth(),NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||||
//DespawnNagaFlag(false);
|
//DespawnNagaFlag(false);
|
||||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||||
default: return 99999999;
|
default: return 99999999;
|
||||||
|
|||||||
@@ -149,6 +149,7 @@ struct TRINITY_DLL_DECL npc_taskmaster_fizzuleAI : public ScriptedAI
|
|||||||
if (Reset_Timer < diff)
|
if (Reset_Timer < diff)
|
||||||
{
|
{
|
||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
} else Reset_Timer -= diff;
|
} else Reset_Timer -= diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1073,7 +1073,8 @@ struct TRINITY_DLL_DECL npc_akama_illidanAI : public ScriptedAI
|
|||||||
|
|
||||||
void BeginTalk()
|
void BeginTalk()
|
||||||
{
|
{
|
||||||
pInstance->SetData(DATA_ILLIDANSTORMRAGEEVENT, IN_PROGRESS);
|
if(pInstance)
|
||||||
|
pInstance->SetData(DATA_ILLIDANSTORMRAGEEVENT, IN_PROGRESS);
|
||||||
|
|
||||||
for(uint8 i = 0; i < 2; i++)
|
for(uint8 i = 0; i < 2; i++)
|
||||||
if(GETGO(Door, DoorGUID[i]))
|
if(GETGO(Door, DoorGUID[i]))
|
||||||
@@ -1676,7 +1677,8 @@ bool GOHello_cage_trap(Player* plr, GameObject* go)
|
|||||||
CellLock<GridReadGuard> cell_lock(cell, pair);
|
CellLock<GridReadGuard> cell_lock(cell, pair);
|
||||||
cell_lock->Visit(cell_lock, cSearcher, *(plr->GetMap()));
|
cell_lock->Visit(cell_lock, cSearcher, *(plr->GetMap()));
|
||||||
|
|
||||||
((cage_trap_triggerAI*)trigger->AI())->Active = true;
|
if(trigger)
|
||||||
|
((cage_trap_triggerAI*)trigger->AI())->Active = true;
|
||||||
go->SetGoState(GO_STATE_ACTIVE);
|
go->SetGoState(GO_STATE_ACTIVE);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -387,7 +387,8 @@ struct TRINITY_DLL_DECL boss_essence_of_sufferingAI : public ScriptedAI
|
|||||||
targets.sort(TargetDistanceOrder(m_creature)); // Sort players by distance.
|
targets.sort(TargetDistanceOrder(m_creature)); // Sort players by distance.
|
||||||
targets.resize(1); // Only need closest target.
|
targets.resize(1); // Only need closest target.
|
||||||
Unit* target = targets.front(); // Get the first target.
|
Unit* target = targets.front(); // Get the first target.
|
||||||
target->CastSpell(m_creature, SPELL_FIXATE_TAUNT, true);
|
if(target)
|
||||||
|
target->CastSpell(m_creature, SPELL_FIXATE_TAUNT, true);
|
||||||
DoResetThreat();
|
DoResetThreat();
|
||||||
m_creature->AddThreat(target,1000000);
|
m_creature->AddThreat(target,1000000);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -464,7 +464,7 @@ struct TRINITY_DLL_DECL boss_shade_of_akamaAI : public ScriptedAI
|
|||||||
if(HasKilledAkama)
|
if(HasKilledAkama)
|
||||||
{
|
{
|
||||||
if(!HasKilledAkamaAndReseting)//do not let players kill Shade if Akama is dead and Shade is waiting for ResetTimer!! event would bug
|
if(!HasKilledAkamaAndReseting)//do not let players kill Shade if Akama is dead and Shade is waiting for ResetTimer!! event would bug
|
||||||
{
|
{
|
||||||
HasKilledAkamaAndReseting = true;
|
HasKilledAkamaAndReseting = true;
|
||||||
m_creature->RemoveAllAuras();
|
m_creature->RemoveAllAuras();
|
||||||
m_creature->DeleteThreatList();
|
m_creature->DeleteThreatList();
|
||||||
@@ -474,8 +474,10 @@ struct TRINITY_DLL_DECL boss_shade_of_akamaAI : public ScriptedAI
|
|||||||
m_creature->GetMotionMaster()->MoveTargetedHome();
|
m_creature->GetMotionMaster()->MoveTargetedHome();
|
||||||
}
|
}
|
||||||
if(ResetTimer < diff)
|
if(ResetTimer < diff)
|
||||||
|
{
|
||||||
EnterEvadeMode();// Reset a little while after killing Akama, evade and respawn Akama
|
EnterEvadeMode();// Reset a little while after killing Akama, evade and respawn Akama
|
||||||
else ResetTimer -= diff;
|
return;
|
||||||
|
}else ResetTimer -= diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
@@ -515,7 +517,7 @@ struct TRINITY_DLL_DECL npc_akamaAI : public ScriptedAI
|
|||||||
EndingTalkCount = 0;
|
EndingTalkCount = 0;
|
||||||
WayPointId = 0;
|
WayPointId = 0;
|
||||||
BrokenSummonIndex = 0;
|
BrokenSummonIndex = 0;
|
||||||
BrokenList.clear();
|
BrokenList.clear();
|
||||||
HasYelledOnce = false;
|
HasYelledOnce = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -545,7 +547,7 @@ struct TRINITY_DLL_DECL npc_akamaAI : public ScriptedAI
|
|||||||
DestructivePoisonTimer = 15000;
|
DestructivePoisonTimer = 15000;
|
||||||
LightningBoltTimer = 10000;
|
LightningBoltTimer = 10000;
|
||||||
CheckTimer = 2000;
|
CheckTimer = 2000;
|
||||||
|
|
||||||
if(!EventBegun)
|
if(!EventBegun)
|
||||||
{
|
{
|
||||||
m_creature->SetUInt32Value(UNIT_NPC_FLAGS, 0); // Database sometimes has very very strange values
|
m_creature->SetUInt32Value(UNIT_NPC_FLAGS, 0); // Database sometimes has very very strange values
|
||||||
@@ -615,7 +617,7 @@ struct TRINITY_DLL_DECL npc_akamaAI : public ScriptedAI
|
|||||||
EndingTalkCount = 0;
|
EndingTalkCount = 0;
|
||||||
WayPointId = 0;
|
WayPointId = 0;
|
||||||
BrokenSummonIndex = 0;
|
BrokenSummonIndex = 0;
|
||||||
BrokenList.clear();
|
BrokenList.clear();
|
||||||
HasYelledOnce = false;
|
HasYelledOnce = false;
|
||||||
Creature* Shade = Unit::GetCreature((*m_creature), ShadeGUID);
|
Creature* Shade = Unit::GetCreature((*m_creature), ShadeGUID);
|
||||||
if(Shade && Shade->isAlive())
|
if(Shade && Shade->isAlive())
|
||||||
|
|||||||
@@ -250,6 +250,7 @@ struct TRINITY_DLL_DECL npc_volcanoAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff) {}
|
void UpdateAI(const uint32 diff) {}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
CreatureAI* GetAI_boss_supremus(Creature *_Creature)
|
CreatureAI* GetAI_boss_supremus(Creature *_Creature)
|
||||||
|
|||||||
@@ -382,8 +382,12 @@ struct TRINITY_DLL_DECL boss_teron_gorefiendAI : public ScriptedAI
|
|||||||
AttackStart(pUnit);
|
AttackStart(pUnit);
|
||||||
|
|
||||||
DoZoneInCombat();
|
DoZoneInCombat();
|
||||||
}else EnterEvadeMode();
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}else AggroTimer -= diff;
|
}else AggroTimer -= diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -372,6 +372,7 @@ struct TRINITY_DLL_DECL boss_illidari_councilAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
error_log(ERROR_INST_DATA);
|
error_log(ERROR_INST_DATA);
|
||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
DoZoneInCombat();
|
DoZoneInCombat();
|
||||||
// Load GUIDs on first aggro because the creature guids are only set as the creatures are created in world-
|
// Load GUIDs on first aggro because the creature guids are only set as the creatures are created in world-
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI
|
|||||||
boss_anetheronAI(Creature *c) : hyjal_trashAI(c)
|
boss_anetheronAI(Creature *c) : hyjal_trashAI(c)
|
||||||
{
|
{
|
||||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||||
go = false;
|
go = false;
|
||||||
pos = 0;
|
pos = 0;
|
||||||
SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_SLEEP);
|
SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_SLEEP);
|
||||||
if(TempSpell && TempSpell->EffectImplicitTargetA[0] != 1)
|
if(TempSpell && TempSpell->EffectImplicitTargetA[0] != 1)
|
||||||
@@ -71,7 +71,7 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit *who)
|
void EnterCombat(Unit *who)
|
||||||
{
|
{
|
||||||
if(pInstance && IsEvent)
|
if(pInstance && IsEvent)
|
||||||
pInstance->SetData(DATA_ANETHERONEVENT, IN_PROGRESS);
|
pInstance->SetData(DATA_ANETHERONEVENT, IN_PROGRESS);
|
||||||
DoPlaySoundToSet(m_creature, SOUND_ONAGGRO);
|
DoPlaySoundToSet(m_creature, SOUND_ONAGGRO);
|
||||||
@@ -89,12 +89,12 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI
|
|||||||
case 1:
|
case 1:
|
||||||
DoPlaySoundToSet(m_creature, SOUND_ONSLAY2);
|
DoPlaySoundToSet(m_creature, SOUND_ONSLAY2);
|
||||||
DoYell(SAY_ONSLAY2, LANG_UNIVERSAL, NULL);
|
DoYell(SAY_ONSLAY2, LANG_UNIVERSAL, NULL);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
DoPlaySoundToSet(m_creature, SOUND_ONSLAY3);
|
DoPlaySoundToSet(m_creature, SOUND_ONSLAY3);
|
||||||
DoYell(SAY_ONSLAY3, LANG_UNIVERSAL, NULL);
|
DoYell(SAY_ONSLAY3, LANG_UNIVERSAL, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void WaypointReached(uint32 i)
|
void WaypointReached(uint32 i)
|
||||||
@@ -105,7 +105,7 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI
|
|||||||
Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_JAINAPROUDMOORE));
|
Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_JAINAPROUDMOORE));
|
||||||
if (target && target->isAlive())
|
if (target && target->isAlive())
|
||||||
m_creature->AddThreat(target,0.0);
|
m_creature->AddThreat(target,0.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit *victim)
|
void JustDied(Unit *victim)
|
||||||
@@ -138,7 +138,7 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI
|
|||||||
((npc_escortAI*)(m_creature->AI()))->AddWaypoint(7, 5067.23, -1789.95, 1321.17);
|
((npc_escortAI*)(m_creature->AI()))->AddWaypoint(7, 5067.23, -1789.95, 1321.17);
|
||||||
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
||||||
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,8 +162,8 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI
|
|||||||
case 1:
|
case 1:
|
||||||
DoPlaySoundToSet(m_creature, SOUND_SWARM2);
|
DoPlaySoundToSet(m_creature, SOUND_SWARM2);
|
||||||
DoYell(SAY_SWARM2, LANG_UNIVERSAL, NULL);
|
DoYell(SAY_SWARM2, LANG_UNIVERSAL, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}else SwarmTimer -= diff;
|
}else SwarmTimer -= diff;
|
||||||
|
|
||||||
if(SleepTimer < diff)
|
if(SleepTimer < diff)
|
||||||
@@ -184,13 +184,13 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI
|
|||||||
case 1:
|
case 1:
|
||||||
DoPlaySoundToSet(m_creature, SOUND_SLEEP2);
|
DoPlaySoundToSet(m_creature, SOUND_SLEEP2);
|
||||||
DoYell(SAY_SLEEP2, LANG_UNIVERSAL, NULL);
|
DoYell(SAY_SLEEP2, LANG_UNIVERSAL, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}else SleepTimer -= diff;
|
}else SleepTimer -= diff;
|
||||||
if(AuraTimer < diff)
|
if(AuraTimer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature, SPELL_VAMPIRIC_AURA,true);
|
DoCast(m_creature, SPELL_VAMPIRIC_AURA,true);
|
||||||
AuraTimer = 10000+rand()%10000;
|
AuraTimer = 10000+rand()%10000;
|
||||||
}else AuraTimer -= diff;
|
}else AuraTimer -= diff;
|
||||||
if(InfernoTimer < diff)
|
if(InfernoTimer < diff)
|
||||||
{
|
{
|
||||||
@@ -205,8 +205,8 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI
|
|||||||
case 1:
|
case 1:
|
||||||
DoPlaySoundToSet(m_creature, SOUND_INFERNO2);
|
DoPlaySoundToSet(m_creature, SOUND_INFERNO2);
|
||||||
DoYell(SAY_INFERNO2, LANG_UNIVERSAL, NULL);
|
DoYell(SAY_INFERNO2, LANG_UNIVERSAL, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}else InfernoTimer -= diff;
|
}else InfernoTimer -= diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
@@ -243,18 +243,18 @@ struct TRINITY_DLL_DECL mob_towering_infernalAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit *who)
|
void EnterCombat(Unit *who)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void KilledUnit(Unit *victim)
|
void KilledUnit(Unit *victim)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit *victim)
|
void JustDied(Unit *victim)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveInLineOfSight(Unit *who)
|
void MoveInLineOfSight(Unit *who)
|
||||||
@@ -286,7 +286,7 @@ struct TRINITY_DLL_DECL mob_towering_infernalAI : public ScriptedAI
|
|||||||
|
|
||||||
if(ImmolationTimer < diff)
|
if(ImmolationTimer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature, SPELL_IMMOLATION);
|
DoCast(m_creature, SPELL_IMMOLATION);
|
||||||
ImmolationTimer = 5000;
|
ImmolationTimer = 5000;
|
||||||
}else ImmolationTimer -= diff;
|
}else ImmolationTimer -= diff;
|
||||||
|
|
||||||
@@ -310,5 +310,5 @@ void AddSC_boss_anetheron()
|
|||||||
newscript = new Script;
|
newscript = new Script;
|
||||||
newscript->Name="mob_towering_infernal";
|
newscript->Name="mob_towering_infernal";
|
||||||
newscript->GetAI = &GetAI_mob_towering_infernal;
|
newscript->GetAI = &GetAI_mob_towering_infernal;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI
|
|||||||
boss_azgalorAI(Creature *c) : hyjal_trashAI(c)
|
boss_azgalorAI(Creature *c) : hyjal_trashAI(c)
|
||||||
{
|
{
|
||||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||||
go = false;
|
go = false;
|
||||||
pos = 0;
|
pos = 0;
|
||||||
SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_HOWL_OF_AZGALOR);
|
SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_HOWL_OF_AZGALOR);
|
||||||
if(TempSpell)
|
if(TempSpell)
|
||||||
@@ -64,7 +64,7 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit *who)
|
void EnterCombat(Unit *who)
|
||||||
{
|
{
|
||||||
if(pInstance && IsEvent)
|
if(pInstance && IsEvent)
|
||||||
pInstance->SetData(DATA_AZGALOREVENT, IN_PROGRESS);
|
pInstance->SetData(DATA_AZGALOREVENT, IN_PROGRESS);
|
||||||
DoPlaySoundToSet(m_creature, SOUND_ONAGGRO);
|
DoPlaySoundToSet(m_creature, SOUND_ONAGGRO);
|
||||||
@@ -82,12 +82,12 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI
|
|||||||
case 1:
|
case 1:
|
||||||
DoPlaySoundToSet(m_creature, SOUND_ONSLAY2);
|
DoPlaySoundToSet(m_creature, SOUND_ONSLAY2);
|
||||||
DoYell(SAY_ONSLAY2, LANG_UNIVERSAL, NULL);
|
DoYell(SAY_ONSLAY2, LANG_UNIVERSAL, NULL);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
DoPlaySoundToSet(m_creature, SOUND_ONSLAY3);
|
DoPlaySoundToSet(m_creature, SOUND_ONSLAY3);
|
||||||
DoYell(SAY_ONSLAY3, LANG_UNIVERSAL, NULL);
|
DoYell(SAY_ONSLAY3, LANG_UNIVERSAL, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void WaypointReached(uint32 i)
|
void WaypointReached(uint32 i)
|
||||||
@@ -98,7 +98,7 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI
|
|||||||
Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_THRALL));
|
Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_THRALL));
|
||||||
if (target && target->isAlive())
|
if (target && target->isAlive())
|
||||||
m_creature->AddThreat(target,0.0);
|
m_creature->AddThreat(target,0.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit *victim)
|
void JustDied(Unit *victim)
|
||||||
@@ -130,7 +130,7 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI
|
|||||||
((npc_escortAI*)(m_creature->AI()))->AddWaypoint(7, 5457.04, -2726.26, 1485.10);
|
((npc_escortAI*)(m_creature->AI()))->AddWaypoint(7, 5457.04, -2726.26, 1485.10);
|
||||||
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
||||||
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,7 +159,7 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI
|
|||||||
if(CleaveTimer < diff)
|
if(CleaveTimer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_CLEAVE);
|
DoCast(m_creature->getVictim(), SPELL_CLEAVE);
|
||||||
CleaveTimer = 10000+rand()%5000;
|
CleaveTimer = 10000+rand()%5000;
|
||||||
}else CleaveTimer -= diff;
|
}else CleaveTimer -= diff;
|
||||||
|
|
||||||
if(EnrageTimer < diff && !enraged)
|
if(EnrageTimer < diff && !enraged)
|
||||||
@@ -207,17 +207,17 @@ struct TRINITY_DLL_DECL mob_lesser_doomguardAI : public hyjal_trashAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit *who)
|
void EnterCombat(Unit *who)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void KilledUnit(Unit *victim)
|
void KilledUnit(Unit *victim)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void WaypointReached(uint32 i)
|
void WaypointReached(uint32 i)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveInLineOfSight(Unit *who)
|
void MoveInLineOfSight(Unit *who)
|
||||||
@@ -228,7 +228,7 @@ struct TRINITY_DLL_DECL mob_lesser_doomguardAI : public hyjal_trashAI
|
|||||||
|
|
||||||
void JustDied(Unit *victim)
|
void JustDied(Unit *victim)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
@@ -262,7 +262,7 @@ struct TRINITY_DLL_DECL mob_lesser_doomguardAI : public hyjal_trashAI
|
|||||||
{
|
{
|
||||||
DoCast(SelectUnit(SELECT_TARGET_RANDOM,0,100,true), SPELL_CRIPPLE);
|
DoCast(SelectUnit(SELECT_TARGET_RANDOM,0,100,true), SPELL_CRIPPLE);
|
||||||
CrippleTimer = 25000+rand()%5000;
|
CrippleTimer = 25000+rand()%5000;
|
||||||
}else CrippleTimer -= diff;
|
}else CrippleTimer -= diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI
|
|||||||
boss_kazrogalAI(Creature *c) : hyjal_trashAI(c)
|
boss_kazrogalAI(Creature *c) : hyjal_trashAI(c)
|
||||||
{
|
{
|
||||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||||
go = false;
|
go = false;
|
||||||
pos = 0;
|
pos = 0;
|
||||||
SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_MARK);
|
SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_MARK);
|
||||||
if(TempSpell && TempSpell->EffectImplicitTargetA[0] != 1)
|
if(TempSpell && TempSpell->EffectImplicitTargetA[0] != 1)
|
||||||
@@ -59,7 +59,7 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit *who)
|
void EnterCombat(Unit *who)
|
||||||
{
|
{
|
||||||
if(pInstance && IsEvent)
|
if(pInstance && IsEvent)
|
||||||
pInstance->SetData(DATA_KAZROGALEVENT, IN_PROGRESS);
|
pInstance->SetData(DATA_KAZROGALEVENT, IN_PROGRESS);
|
||||||
DoPlaySoundToSet(m_creature, SOUND_ONAGGRO);
|
DoPlaySoundToSet(m_creature, SOUND_ONAGGRO);
|
||||||
@@ -77,12 +77,12 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI
|
|||||||
case 1:
|
case 1:
|
||||||
DoPlaySoundToSet(m_creature, SOUND_ONSLAY2);
|
DoPlaySoundToSet(m_creature, SOUND_ONSLAY2);
|
||||||
DoYell(SAY_ONSLAY2, LANG_UNIVERSAL, NULL);
|
DoYell(SAY_ONSLAY2, LANG_UNIVERSAL, NULL);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
DoPlaySoundToSet(m_creature, SOUND_ONSLAY3);
|
DoPlaySoundToSet(m_creature, SOUND_ONSLAY3);
|
||||||
DoYell(SAY_ONSLAY3, LANG_UNIVERSAL, NULL);
|
DoYell(SAY_ONSLAY3, LANG_UNIVERSAL, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void WaypointReached(uint32 i)
|
void WaypointReached(uint32 i)
|
||||||
@@ -93,7 +93,7 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI
|
|||||||
Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_THRALL));
|
Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_THRALL));
|
||||||
if (target && target->isAlive())
|
if (target && target->isAlive())
|
||||||
m_creature->AddThreat(target,0.0);
|
m_creature->AddThreat(target,0.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit *victim)
|
void JustDied(Unit *victim)
|
||||||
@@ -125,7 +125,7 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI
|
|||||||
((npc_escortAI*)(m_creature->AI()))->AddWaypoint(7, 5457.04, -2726.26, 1485.10);
|
((npc_escortAI*)(m_creature->AI()))->AddWaypoint(7, 5457.04, -2726.26, 1485.10);
|
||||||
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
||||||
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,7 +136,7 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI
|
|||||||
if(CleaveTimer < diff)
|
if(CleaveTimer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature, SPELL_CLEAVE);
|
DoCast(m_creature, SPELL_CLEAVE);
|
||||||
CleaveTimer = 6000+rand()%15000;
|
CleaveTimer = 6000+rand()%15000;
|
||||||
}else CleaveTimer -= diff;
|
}else CleaveTimer -= diff;
|
||||||
|
|
||||||
if(WarStompTimer < diff)
|
if(WarStompTimer < diff)
|
||||||
@@ -150,8 +150,8 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI
|
|||||||
if(MarkTimer < diff)
|
if(MarkTimer < diff)
|
||||||
{
|
{
|
||||||
//cast dummy, useful for bos addons
|
//cast dummy, useful for bos addons
|
||||||
m_creature->CastCustomSpell(m_creature, SPELL_MARK, NULL, NULL, NULL, false, NULL, NULL, m_creature->GetGUID());
|
m_creature->CastCustomSpell(m_creature, SPELL_MARK, NULL, NULL, NULL, false, NULL, NULL, m_creature->GetGUID());
|
||||||
|
|
||||||
std::list<HostilReference *> t_list = m_creature->getThreatManager().getThreatList();
|
std::list<HostilReference *> t_list = m_creature->getThreatManager().getThreatList();
|
||||||
for(std::list<HostilReference *>::iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)
|
for(std::list<HostilReference *>::iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)
|
||||||
{
|
{
|
||||||
@@ -160,11 +160,11 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI
|
|||||||
{
|
{
|
||||||
target->CastSpell(target, SPELL_MARK,true);//only cast on mana users
|
target->CastSpell(target, SPELL_MARK,true);//only cast on mana users
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MarkTimerBase -= 5000;
|
MarkTimerBase -= 5000;
|
||||||
if(MarkTimerBase < 5500)
|
if(MarkTimerBase < 5500)
|
||||||
MarkTimerBase = 5500;
|
MarkTimerBase = 5500;
|
||||||
MarkTimer = MarkTimerBase;
|
MarkTimer = MarkTimerBase;
|
||||||
switch(rand()%3)
|
switch(rand()%3)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
@@ -174,7 +174,7 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI
|
|||||||
case 1:
|
case 1:
|
||||||
DoPlaySoundToSet(m_creature, SOUND_MARK2);
|
DoPlaySoundToSet(m_creature, SOUND_MARK2);
|
||||||
DoYell(SAY_MARK2, LANG_UNIVERSAL, NULL);
|
DoYell(SAY_MARK2, LANG_UNIVERSAL, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}else MarkTimer -= diff;
|
}else MarkTimer -= diff;
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI
|
|||||||
boss_rage_winterchillAI(Creature *c) : hyjal_trashAI(c)
|
boss_rage_winterchillAI(Creature *c) : hyjal_trashAI(c)
|
||||||
{
|
{
|
||||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||||
go = false;
|
go = false;
|
||||||
pos = 0;
|
pos = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit *who)
|
void EnterCombat(Unit *who)
|
||||||
{
|
{
|
||||||
if(pInstance && IsEvent)
|
if(pInstance && IsEvent)
|
||||||
pInstance->SetData(DATA_RAGEWINTERCHILLEVENT, IN_PROGRESS);
|
pInstance->SetData(DATA_RAGEWINTERCHILLEVENT, IN_PROGRESS);
|
||||||
DoPlaySoundToSet(m_creature, SOUND_ONAGGRO);
|
DoPlaySoundToSet(m_creature, SOUND_ONAGGRO);
|
||||||
@@ -77,8 +77,8 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI
|
|||||||
case 1:
|
case 1:
|
||||||
DoPlaySoundToSet(m_creature, SOUND_ONSLAY2);
|
DoPlaySoundToSet(m_creature, SOUND_ONSLAY2);
|
||||||
DoYell(SAY_ONSLAY2, LANG_UNIVERSAL, NULL);
|
DoYell(SAY_ONSLAY2, LANG_UNIVERSAL, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void WaypointReached(uint32 i)
|
void WaypointReached(uint32 i)
|
||||||
@@ -89,7 +89,7 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI
|
|||||||
Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_JAINAPROUDMOORE));
|
Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_JAINAPROUDMOORE));
|
||||||
if (target && target->isAlive())
|
if (target && target->isAlive())
|
||||||
m_creature->AddThreat(target,0.0);
|
m_creature->AddThreat(target,0.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit *victim)
|
void JustDied(Unit *victim)
|
||||||
@@ -122,7 +122,7 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI
|
|||||||
((npc_escortAI*)(m_creature->AI()))->AddWaypoint(7, 5067.23, -1789.95, 1321.17);
|
((npc_escortAI*)(m_creature->AI()))->AddWaypoint(7, 5067.23, -1789.95, 1321.17);
|
||||||
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
||||||
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,8 +148,8 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI
|
|||||||
case 1:
|
case 1:
|
||||||
DoPlaySoundToSet(m_creature, SOUND_DECAY2);
|
DoPlaySoundToSet(m_creature, SOUND_DECAY2);
|
||||||
DoYell(SAY_DECAY2, LANG_UNIVERSAL, NULL);
|
DoYell(SAY_DECAY2, LANG_UNIVERSAL, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}else DecayTimer -= diff;
|
}else DecayTimer -= diff;
|
||||||
if(NovaTimer < diff)
|
if(NovaTimer < diff)
|
||||||
{
|
{
|
||||||
@@ -164,7 +164,7 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI
|
|||||||
case 1:
|
case 1:
|
||||||
DoPlaySoundToSet(m_creature, SOUND_NOVA2);
|
DoPlaySoundToSet(m_creature, SOUND_NOVA2);
|
||||||
DoYell(SAY_NOVA2, LANG_UNIVERSAL, NULL);
|
DoYell(SAY_NOVA2, LANG_UNIVERSAL, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}else NovaTimer -= diff;
|
}else NovaTimer -= diff;
|
||||||
if(IceboltTimer < diff)
|
if(IceboltTimer < diff)
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ bool GossipHello_npc_tyrande_whisperwind(Player* player, Creature* _Creature)
|
|||||||
|
|
||||||
bool GossipSelect_npc_tyrande_whisperwind(Player *player, Creature *_Creature, uint32 sender, uint32 action)
|
bool GossipSelect_npc_tyrande_whisperwind(Player *player, Creature *_Creature, uint32 sender, uint32 action)
|
||||||
{
|
{
|
||||||
if (action == GOSSIP_ACTION_INFO_DEF)
|
if (action == GOSSIP_ACTION_INFO_DEF)
|
||||||
{
|
{
|
||||||
ItemPosCountVec dest;
|
ItemPosCountVec dest;
|
||||||
uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, ITEM_TEAR_OF_GODDESS, 1);
|
uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, ITEM_TEAR_OF_GODDESS, 1);
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ EndScriptData */
|
|||||||
#define SPAWN_NEAR_TOWER 2
|
#define SPAWN_NEAR_TOWER 2
|
||||||
// Locations for summoning gargoyls and frost wyrms in special cases
|
// Locations for summoning gargoyls and frost wyrms in special cases
|
||||||
float SpawnPointSpecial[3][3]=
|
float SpawnPointSpecial[3][3]=
|
||||||
{
|
{
|
||||||
{5497.08, -2493.23, 1535.72}, //spawn point for the gargoyles near the horde gate
|
{5497.08, -2493.23, 1535.72}, //spawn point for the gargoyles near the horde gate
|
||||||
{5624.53, -2548.12, 1551.54}, //spawn point for the frost wyrm near the horde gate
|
{5624.53, -2548.12, 1551.54}, //spawn point for the frost wyrm near the horde gate
|
||||||
{5604.41, -2811.98, 1547.77} //spawn point for the gargoyles and wyrms near the horde tower
|
{5604.41, -2811.98, 1547.77} //spawn point for the gargoyles and wyrms near the horde tower
|
||||||
@@ -57,7 +57,7 @@ float JainaDummySpawn[2][4]=
|
|||||||
|
|
||||||
|
|
||||||
// Locations for summoning waves in Horde base
|
// Locations for summoning waves in Horde base
|
||||||
float HordeBase[4][3]=
|
float HordeBase[4][3]=
|
||||||
{
|
{
|
||||||
{5458.01, -2340.27, 1459.60},
|
{5458.01, -2340.27, 1459.60},
|
||||||
{5466.01, -2334.69, 1460.06},
|
{5466.01, -2334.69, 1460.06},
|
||||||
@@ -66,7 +66,7 @@ float HordeBase[4][3]=
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Lady Jaina's waypoints when retreathing
|
// Lady Jaina's waypoints when retreathing
|
||||||
float JainaWPs[2][3]=
|
float JainaWPs[2][3]=
|
||||||
{
|
{
|
||||||
{5078.56, -1789.79, 1320.73},//next to the small stairs
|
{5078.56, -1789.79, 1320.73},//next to the small stairs
|
||||||
{5037.38, -1778.39, 1322.61},//center of alliance base
|
{5037.38, -1778.39, 1322.61},//center of alliance base
|
||||||
@@ -239,70 +239,70 @@ float AllianceFirePos[92][8]=//spawn points for the fire visuals (GO) in the all
|
|||||||
|
|
||||||
float HordeFirePos[65][8]=//spawn points for the fire visuals (GO) in the horde base
|
float HordeFirePos[65][8]=//spawn points for the fire visuals (GO) in the horde base
|
||||||
{
|
{
|
||||||
{5524.11, -2612.73, 1483.38, 1.96198, 0, 0, 0.831047, 0.556202},
|
{5524.11, -2612.73, 1483.38, 1.96198, 0, 0, 0.831047, 0.556202},
|
||||||
{5514.42, -2617.19, 1505.77, 1.82453, 0, 0, 0.790892, 0.611956},
|
{5514.42, -2617.19, 1505.77, 1.82453, 0, 0, 0.790892, 0.611956},
|
||||||
{5510.21, -2624.77, 1485.34, 1.71065, 0, 0, 0.754783, 0.655974},
|
{5510.21, -2624.77, 1485.34, 1.71065, 0, 0, 0.754783, 0.655974},
|
||||||
{5570.72, -2619.04, 1487.62, 0.728898, 0, 0, 0.356435, 0.93432},
|
{5570.72, -2619.04, 1487.62, 0.728898, 0, 0, 0.356435, 0.93432},
|
||||||
{5570.29, -2639.37, 1487.31, 1.49308, 0, 0, 0.679104, 0.734042},
|
{5570.29, -2639.37, 1487.31, 1.49308, 0, 0, 0.679104, 0.734042},
|
||||||
{5583.56, -2637.2, 1503.78, 1.46559, 0, 0, 0.668951, 0.743307},
|
{5583.56, -2637.2, 1503.78, 1.46559, 0, 0, 0.668951, 0.743307},
|
||||||
{5571.53, -2626.81, 1510.99, 0.362107, 0, 0, 0.180066, 0.983654},
|
{5571.53, -2626.81, 1510.99, 0.362107, 0, 0, 0.180066, 0.983654},
|
||||||
{5545.97, -2659.62, 1489.64, 5.07055, 0, 0, 0.569845, -0.821752},
|
{5545.97, -2659.62, 1489.64, 5.07055, 0, 0, 0.569845, -0.821752},
|
||||||
{5557.44, -2675.91, 1482.58, 1.70118, 0, 0, 0.751671, 0.659539},
|
{5557.44, -2675.91, 1482.58, 1.70118, 0, 0, 0.751671, 0.659539},
|
||||||
{5594.98, -2742.31, 1495.51, 4.5993, 0, 0, 0.74594, -0.666013},
|
{5594.98, -2742.31, 1495.51, 4.5993, 0, 0, 0.74594, -0.666013},
|
||||||
{5599.65, -2755.6, 1505.05, 1.66896, 0, 0, 0.740947, 0.671564},
|
{5599.65, -2755.6, 1505.05, 1.66896, 0, 0, 0.740947, 0.671564},
|
||||||
{5565.95, -2774.75, 1499.48, 6.22425, 0, 0, 0.0294611, -0.999566},
|
{5565.95, -2774.75, 1499.48, 6.22425, 0, 0, 0.0294611, -0.999566},
|
||||||
{5567.1, -2769.7, 1511.17, 5.99257, 0, 0, 0.144799, -0.989461},
|
{5567.1, -2769.7, 1511.17, 5.99257, 0, 0, 0.144799, -0.989461},
|
||||||
{5572.84, -2774.16, 1527.06, 0.836428, 0, 0, 0.406129, 0.913816},
|
{5572.84, -2774.16, 1527.06, 0.836428, 0, 0, 0.406129, 0.913816},
|
||||||
{5538.32, -2805.94, 1498.87, 4.30082, 0, 0, 0.836674, -0.547701},
|
{5538.32, -2805.94, 1498.87, 4.30082, 0, 0, 0.836674, -0.547701},
|
||||||
{5515.66, -2801.74, 1503.53, 5.57316, 0, 0, 0.347602, -0.937642},
|
{5515.66, -2801.74, 1503.53, 5.57316, 0, 0, 0.347602, -0.937642},
|
||||||
{5516.76, -2827.14, 1501.15, 0.35026, 0, 0, 0.174236, 0.984704},
|
{5516.76, -2827.14, 1501.15, 0.35026, 0, 0, 0.174236, 0.984704},
|
||||||
{5536.13, -2813.51, 1537.21, 4.51681, 0, 0, 0.772765, -0.634692},
|
{5536.13, -2813.51, 1537.21, 4.51681, 0, 0, 0.772765, -0.634692},
|
||||||
{5525.05, -2825.16, 1538.53, 0.489275, 0, 0, 0.242205, 0.970225},
|
{5525.05, -2825.16, 1538.53, 0.489275, 0, 0, 0.242205, 0.970225},
|
||||||
{5534.42, -2815.45, 1562.84, 4.62834, 0, 0, 0.736191, -0.676774},
|
{5534.42, -2815.45, 1562.84, 4.62834, 0, 0, 0.736191, -0.676774},
|
||||||
{5519.64, -2831.12, 1526.46, 0.611008, 0, 0, 0.300774, 0.953696},
|
{5519.64, -2831.12, 1526.46, 0.611008, 0, 0, 0.300774, 0.953696},
|
||||||
{5551.04, -2827.55, 1523.5, 3.35206, 0, 0, 0.994468, -0.10504},
|
{5551.04, -2827.55, 1523.5, 3.35206, 0, 0, 0.994468, -0.10504},
|
||||||
{5469.22, -2802.87, 1503.5, 4.99509, 0, 0, 0.600436, -0.799673},
|
{5469.22, -2802.87, 1503.5, 4.99509, 0, 0, 0.600436, -0.799673},
|
||||||
{5427.8, -2737.26, 1487.12, 1.78673, 0, 0, 0.779186, 0.626793},
|
{5427.8, -2737.26, 1487.12, 1.78673, 0, 0, 0.779186, 0.626793},
|
||||||
{5454.1, -2709.1, 1485.92, 3.03552, 0, 0, 0.998594, 0.0530137},
|
{5454.1, -2709.1, 1485.92, 3.03552, 0, 0, 0.998594, 0.0530137},
|
||||||
{5436.3, -2718.2, 1506.02, 2.7567, 0, 0, 0.981539, 0.191261},
|
{5436.3, -2718.2, 1506.02, 2.7567, 0, 0, 0.981539, 0.191261},
|
||||||
{5412.6, -2740.55, 1510.79, 2.98446, 0, 0, 0.996915, 0.0784832},
|
{5412.6, -2740.55, 1510.79, 2.98446, 0, 0, 0.996915, 0.0784832},
|
||||||
{5406.12, -2752.48, 1521.01, 2.05769, 0, 0, 0.856705, 0.515807},
|
{5406.12, -2752.48, 1521.01, 2.05769, 0, 0, 0.856705, 0.515807},
|
||||||
{5445.24, -2676.35, 1521.89, 2.91378, 0, 0, 0.99352, 0.113661},
|
{5445.24, -2676.35, 1521.89, 2.91378, 0, 0, 0.99352, 0.113661},
|
||||||
{5481.4, -2665.08, 1482.23, 4.30001, 0, 0, 0.836895, -0.547363},
|
{5481.4, -2665.08, 1482.23, 4.30001, 0, 0, 0.836895, -0.547363},
|
||||||
{5443.51, -2675.44, 1487.12, 2.90986, 0, 0, 0.993295, 0.115606},
|
{5443.51, -2675.44, 1487.12, 2.90986, 0, 0, 0.993295, 0.115606},
|
||||||
{5391.72, -2647.3, 1528.9, 3.76987, 0, 0, 0.951063, -0.308997},
|
{5391.72, -2647.3, 1528.9, 3.76987, 0, 0, 0.951063, -0.308997},
|
||||||
{5421.09, -2734.12, 1521.01, 2.70567, 0, 0, 0.97634, 0.216242},
|
{5421.09, -2734.12, 1521.01, 2.70567, 0, 0, 0.97634, 0.216242},
|
||||||
{5405.39, -2710.33, 1533.77, 2.51324, 0, 0, 0.951052, 0.309032},
|
{5405.39, -2710.33, 1533.77, 2.51324, 0, 0, 0.951052, 0.309032},
|
||||||
{5423.96, -2703.76, 1516.34, 2.79206, 0, 0, 0.984767, 0.173879},
|
{5423.96, -2703.76, 1516.34, 2.79206, 0, 0, 0.984767, 0.173879},
|
||||||
{5444.75, -2735.23, 1486.37, 2.22657, 0, 0, 0.897155, 0.441715},
|
{5444.75, -2735.23, 1486.37, 2.22657, 0, 0, 0.897155, 0.441715},
|
||||||
{5570.98, -2747.91, 1495.7, 5.14433, 0, 0, 0.53915, -0.84221},
|
{5570.98, -2747.91, 1495.7, 5.14433, 0, 0, 0.53915, -0.84221},
|
||||||
{5567.79, -2673.9, 1484.66, 2.72529, 0, 0, 0.978415, 0.20665},
|
{5567.79, -2673.9, 1484.66, 2.72529, 0, 0, 0.978415, 0.20665},
|
||||||
{5600.71, -2696.8, 1500.42, 0.443704, 0, 0, 0.220036, 0.975492},
|
{5600.71, -2696.8, 1500.42, 0.443704, 0, 0, 0.220036, 0.975492},
|
||||||
{5600.7, -2693.04, 1515.2, 5.16003, 0, 0, 0.532522, -0.846416},
|
{5600.7, -2693.04, 1515.2, 5.16003, 0, 0, 0.532522, -0.846416},
|
||||||
{5627.56, -2839.66, 1510.53, 5.41527, 0, 0, 0.420463, -0.907309},
|
{5627.56, -2839.66, 1510.53, 5.41527, 0, 0, 0.420463, -0.907309},
|
||||||
{5622.02, -2868.71, 1516.22, 2.25482, 0, 0, 0.903303, 0.429002},
|
{5622.02, -2868.71, 1516.22, 2.25482, 0, 0, 0.903303, 0.429002},
|
||||||
{5586.61, -2878.97, 1510.34, 4.55604, 0, 0, 0.76017, -0.649724},
|
{5586.61, -2878.97, 1510.34, 4.55604, 0, 0, 0.76017, -0.649724},
|
||||||
{5583.78, -2843.71, 1509.54, 5.35715, 0, 0, 0.44665, -0.894709},
|
{5583.78, -2843.71, 1509.54, 5.35715, 0, 0, 0.44665, -0.894709},
|
||||||
{5580.95, -2811.3, 1513.3, 3.57587, 0, 0, 0.976518, -0.215434},
|
{5580.95, -2811.3, 1513.3, 3.57587, 0, 0, 0.976518, -0.215434},
|
||||||
{5542.52, -2869.31, 1523.13, 5.23304, 0, 0, 0.501275, -0.865288},
|
{5542.52, -2869.31, 1523.13, 5.23304, 0, 0, 0.501275, -0.865288},
|
||||||
{5557.35, -2866.36, 1518.76, 4.48299, 0, 0, 0.783388, -0.621533},
|
{5557.35, -2866.36, 1518.76, 4.48299, 0, 0, 0.783388, -0.621533},
|
||||||
{5380.91, -2849.36, 1512.81, 3.90962, 0, 0, 0.927168, -0.374646},
|
{5380.91, -2849.36, 1512.81, 3.90962, 0, 0, 0.927168, -0.374646},
|
||||||
{5395.76, -2881.41, 1521.11, 4.28426, 0, 0, 0.84118, -0.540755},
|
{5395.76, -2881.41, 1521.11, 4.28426, 0, 0, 0.84118, -0.540755},
|
||||||
{5374.87, -2859.63, 1528.98, 3.30252, 0, 0, 0.996765, -0.0803745},
|
{5374.87, -2859.63, 1528.98, 3.30252, 0, 0, 0.996765, -0.0803745},
|
||||||
{5356.07, -2854.66, 1520.34, 5.83933, 0, 0, 0.220108, -0.975475},
|
{5356.07, -2854.66, 1520.34, 5.83933, 0, 0, 0.220108, -0.975475},
|
||||||
{5363.01, -2975.72, 1539.02, 4.13738, 0, 0, 0.87859, -0.477576},
|
{5363.01, -2975.72, 1539.02, 4.13738, 0, 0, 0.87859, -0.477576},
|
||||||
{5336.85, -2980.74, 1561.24, 5.11126, 0, 0, 0.553001, -0.83318},
|
{5336.85, -2980.74, 1561.24, 5.11126, 0, 0, 0.553001, -0.83318},
|
||||||
{5335.23, -2974.62, 1540.05, 5.04451, 0, 0, 0.580496, -0.814263},
|
{5335.23, -2974.62, 1540.05, 5.04451, 0, 0, 0.580496, -0.814263},
|
||||||
{5422.37, -2998.87, 1549.98, 4.51831, 0, 0, 0.772288, -0.635272},
|
{5422.37, -2998.87, 1549.98, 4.51831, 0, 0, 0.772288, -0.635272},
|
||||||
{5405.54, -3014.6, 1562.16, 5.86761, 0, 0, 0.206298, -0.978489},
|
{5405.54, -3014.6, 1562.16, 5.86761, 0, 0, 0.206298, -0.978489},
|
||||||
{5427.96, -3019.4, 1561.58, 3.53498, 0, 0, 0.980718, -0.19543},
|
{5427.96, -3019.4, 1561.58, 3.53498, 0, 0, 0.980718, -0.19543},
|
||||||
{5348.12, -2977.84, 1582.47, 3.94025, 0, 0, 0.921323, -0.388799},
|
{5348.12, -2977.84, 1582.47, 3.94025, 0, 0, 0.921323, -0.388799},
|
||||||
{5331.12, -2993.71, 1576.14, 0.0642734, 0, 0, 0.0321311, 0.999484},
|
{5331.12, -2993.71, 1576.14, 0.0642734, 0, 0, 0.0321311, 0.999484},
|
||||||
{5321.63, -2986.55, 1552.2, 5.29503, 0, 0, 0.474219, -0.880407},
|
{5321.63, -2986.55, 1552.2, 5.29503, 0, 0, 0.474219, -0.880407},
|
||||||
{5292.1, -2914.36, 1529.52, 2.9742, 0, 0, 0.996499, 0.083601},
|
{5292.1, -2914.36, 1529.52, 2.9742, 0, 0, 0.996499, 0.083601},
|
||||||
{5281.77, -2926.5, 1530.62, 1.67829, 0, 0, 0.744071, 0.6681},
|
{5281.77, -2926.5, 1530.62, 1.67829, 0, 0, 0.744071, 0.6681},
|
||||||
{5287.19, -2909.94, 1543.49, 3.31192, 0, 0, 0.996376, -0.0850591},
|
{5287.19, -2909.94, 1543.49, 3.31192, 0, 0, 0.996376, -0.0850591},
|
||||||
{5534.15, -2679.35, 1483.61, 0.428685, 0, 0, 0.212705, 0.977116},
|
{5534.15, -2679.35, 1483.61, 0.428685, 0, 0, 0.212705, 0.977116},
|
||||||
{5545.43, -2647.82, 1483.05, 5.38848, 0, 0, 0.432578, -0.901596}
|
{5545.43, -2647.82, 1483.05, 5.38848, 0, 0, 0.432578, -0.901596}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -333,7 +333,7 @@ void hyjalAI::JustSummoned(Creature *summoned)
|
|||||||
Summons.Summon(summoned);
|
Summons.Summon(summoned);
|
||||||
}
|
}
|
||||||
|
|
||||||
void hyjalAI::SummonedCreatureDespawn(Creature* summoned)
|
void hyjalAI::SummonedCreatureDespawn(Creature* summoned)
|
||||||
{
|
{
|
||||||
Summons.Despawn(summoned);
|
Summons.Despawn(summoned);
|
||||||
}
|
}
|
||||||
@@ -373,14 +373,14 @@ void hyjalAI::Reset()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Bools
|
//Bools
|
||||||
EventBegun = false;
|
EventBegun = false;
|
||||||
FirstBossDead = false;
|
FirstBossDead = false;
|
||||||
SecondBossDead = false;
|
SecondBossDead = false;
|
||||||
Summon = false;
|
Summon = false;
|
||||||
bRetreat = false;
|
bRetreat = false;
|
||||||
Debug = false;
|
Debug = false;
|
||||||
|
|
||||||
|
|
||||||
//Flags
|
//Flags
|
||||||
m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||||
@@ -388,7 +388,7 @@ void hyjalAI::Reset()
|
|||||||
//Initialize spells
|
//Initialize spells
|
||||||
memset(Spell, 0, sizeof(Spell));
|
memset(Spell, 0, sizeof(Spell));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Reset Instance Data for trash count
|
//Reset Instance Data for trash count
|
||||||
if(pInstance)
|
if(pInstance)
|
||||||
@@ -418,7 +418,7 @@ void hyjalAI::EnterEvadeMode()
|
|||||||
|
|
||||||
if(m_creature->isAlive())
|
if(m_creature->isAlive())
|
||||||
m_creature->GetMotionMaster()->MoveTargetedHome();
|
m_creature->GetMotionMaster()->MoveTargetedHome();
|
||||||
|
|
||||||
m_creature->SetLootRecipient(NULL);
|
m_creature->SetLootRecipient(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -455,7 +455,7 @@ void hyjalAI::SummonCreature(uint32 entry, float Base[4][3])
|
|||||||
}
|
}
|
||||||
Creature* pCreature = NULL;
|
Creature* pCreature = NULL;
|
||||||
switch(entry)
|
switch(entry)
|
||||||
{
|
{
|
||||||
case 17906: //GARGOYLE
|
case 17906: //GARGOYLE
|
||||||
|
|
||||||
if(!FirstBossDead && (WaveCount == 1 || WaveCount == 3))
|
if(!FirstBossDead && (WaveCount == 1 || WaveCount == 3))
|
||||||
@@ -467,7 +467,7 @@ void hyjalAI::SummonCreature(uint32 entry, float Base[4][3])
|
|||||||
pCreature = m_creature->SummonCreature(entry, SpawnPointSpecial[SPAWN_GARG_GATE][0]+irand(-10,10), SpawnPointSpecial[SPAWN_GARG_GATE][1]+irand(-10,10), SpawnPointSpecial[SPAWN_GARG_GATE][2]+irand(-10,10), 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000);
|
pCreature = m_creature->SummonCreature(entry, SpawnPointSpecial[SPAWN_GARG_GATE][0]+irand(-10,10), SpawnPointSpecial[SPAWN_GARG_GATE][1]+irand(-10,10), SpawnPointSpecial[SPAWN_GARG_GATE][2]+irand(-10,10), 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 17907: //FROST_WYRM ,
|
case 17907: //FROST_WYRM ,
|
||||||
if(FirstBossDead && WaveCount == 1)
|
if(FirstBossDead && WaveCount == 1)
|
||||||
{//summon at gate
|
{//summon at gate
|
||||||
pCreature = m_creature->SummonCreature(entry, SpawnPointSpecial[SPAWN_WYRM_GATE][0],SpawnPointSpecial[SPAWN_WYRM_GATE][1],SpawnPointSpecial[SPAWN_WYRM_GATE][2], 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000);
|
pCreature = m_creature->SummonCreature(entry, SpawnPointSpecial[SPAWN_WYRM_GATE][0],SpawnPointSpecial[SPAWN_WYRM_GATE][1],SpawnPointSpecial[SPAWN_WYRM_GATE][2], 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000);
|
||||||
@@ -475,9 +475,9 @@ void hyjalAI::SummonCreature(uint32 entry, float Base[4][3])
|
|||||||
pCreature = m_creature->SummonCreature(entry, SpawnPointSpecial[SPAWN_NEAR_TOWER][0], SpawnPointSpecial[SPAWN_NEAR_TOWER][1],SpawnPointSpecial[SPAWN_NEAR_TOWER][2], 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000);
|
pCreature = m_creature->SummonCreature(entry, SpawnPointSpecial[SPAWN_NEAR_TOWER][0], SpawnPointSpecial[SPAWN_NEAR_TOWER][1],SpawnPointSpecial[SPAWN_NEAR_TOWER][2], 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000);
|
||||||
if(pCreature)
|
if(pCreature)
|
||||||
((hyjal_trashAI*)pCreature->AI())->useFlyPath = true;
|
((hyjal_trashAI*)pCreature->AI())->useFlyPath = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 17908: //GIANT_INFERNAL
|
case 17908: //GIANT_INFERNAL
|
||||||
InfernalCount++;
|
InfernalCount++;
|
||||||
if(InfernalCount > 7)InfernalCount = 0;
|
if(InfernalCount > 7)InfernalCount = 0;
|
||||||
pCreature = m_creature->SummonCreature(entry, InfernalPos[InfernalCount][0], InfernalPos[InfernalCount][1], InfernalPos[InfernalCount][2], 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000);
|
pCreature = m_creature->SummonCreature(entry, InfernalPos[InfernalCount][0], InfernalPos[InfernalCount][1], InfernalPos[InfernalCount][2], 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000);
|
||||||
@@ -485,9 +485,9 @@ void hyjalAI::SummonCreature(uint32 entry, float Base[4][3])
|
|||||||
default:
|
default:
|
||||||
pCreature = m_creature->SummonCreature(entry, SpawnLoc[0], SpawnLoc[1], SpawnLoc[2], 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000);
|
pCreature = m_creature->SummonCreature(entry, SpawnLoc[0], SpawnLoc[1], SpawnLoc[2], 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(pCreature)
|
if(pCreature)
|
||||||
{
|
{
|
||||||
// Increment Enemy Count to be used in World States and instance script
|
// Increment Enemy Count to be used in World States and instance script
|
||||||
@@ -497,21 +497,21 @@ void hyjalAI::SummonCreature(uint32 entry, float Base[4][3])
|
|||||||
pCreature->setActive(true);
|
pCreature->setActive(true);
|
||||||
switch(entry)
|
switch(entry)
|
||||||
{
|
{
|
||||||
case NECROMANCER:
|
case NECROMANCER:
|
||||||
case ABOMINATION:
|
case ABOMINATION:
|
||||||
case GHOUL:
|
case GHOUL:
|
||||||
case BANSHEE:
|
case BANSHEE:
|
||||||
case CRYPT_FIEND:
|
case CRYPT_FIEND:
|
||||||
case GARGOYLE:
|
case GARGOYLE:
|
||||||
case FROST_WYRM:
|
case FROST_WYRM:
|
||||||
case GIANT_INFERNAL:
|
case GIANT_INFERNAL:
|
||||||
case FEL_STALKER:
|
case FEL_STALKER:
|
||||||
case RAGE_WINTERCHILL:
|
case RAGE_WINTERCHILL:
|
||||||
case ANETHERON:
|
case ANETHERON:
|
||||||
case KAZROGAL:
|
case KAZROGAL:
|
||||||
case AZGALOR:
|
case AZGALOR:
|
||||||
((hyjal_trashAI*)pCreature->AI())->IsEvent = true;
|
((hyjal_trashAI*)pCreature->AI())->IsEvent = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(pInstance)
|
if(pInstance)
|
||||||
{
|
{
|
||||||
@@ -647,12 +647,12 @@ void hyjalAI::Talk(uint32 id)
|
|||||||
void hyjalAI::UpdateWorldState(uint32 id, uint32 state)
|
void hyjalAI::UpdateWorldState(uint32 id, uint32 state)
|
||||||
{
|
{
|
||||||
Map * map = m_creature->GetMap();
|
Map * map = m_creature->GetMap();
|
||||||
|
|
||||||
if(!map->IsDungeon())
|
if(!map->IsDungeon())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Map::PlayerList const& players = map->GetPlayers();
|
Map::PlayerList const& players = map->GetPlayers();
|
||||||
|
|
||||||
if (!players.isEmpty())
|
if (!players.isEmpty())
|
||||||
{
|
{
|
||||||
for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
||||||
@@ -664,7 +664,7 @@ void hyjalAI::UpdateWorldState(uint32 id, uint32 state)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void hyjalAI::Retreat()
|
void hyjalAI::Retreat()
|
||||||
{
|
{
|
||||||
if(pInstance)
|
if(pInstance)
|
||||||
{
|
{
|
||||||
if(Faction == 0)
|
if(Faction == 0)
|
||||||
@@ -680,7 +680,7 @@ void hyjalAI::Retreat()
|
|||||||
pInstance->SetData(DATA_HORDE_RETREAT, 1);
|
pInstance->SetData(DATA_HORDE_RETREAT, 1);
|
||||||
Creature* JainaDummy = m_creature->SummonCreature(JAINA,JainaDummySpawn[0][0],JainaDummySpawn[0][1],JainaDummySpawn[0][2],JainaDummySpawn[0][3],TEMPSUMMON_TIMED_DESPAWN,60000);
|
Creature* JainaDummy = m_creature->SummonCreature(JAINA,JainaDummySpawn[0][0],JainaDummySpawn[0][1],JainaDummySpawn[0][2],JainaDummySpawn[0][3],TEMPSUMMON_TIMED_DESPAWN,60000);
|
||||||
if(JainaDummy)
|
if(JainaDummy)
|
||||||
{
|
{
|
||||||
JainaDummy->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
JainaDummy->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||||
((hyjalAI*)JainaDummy->AI())->IsDummy = true;
|
((hyjalAI*)JainaDummy->AI())->IsDummy = true;
|
||||||
DummyGuid = JainaDummy->GetGUID();
|
DummyGuid = JainaDummy->GetGUID();
|
||||||
@@ -691,7 +691,7 @@ void hyjalAI::Retreat()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
SpawnVeins();
|
SpawnVeins();
|
||||||
Overrun = true;
|
Overrun = true;
|
||||||
m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);//cant talk after overrun event started
|
m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);//cant talk after overrun event started
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -723,7 +723,7 @@ void hyjalAI::SpawnVeins()
|
|||||||
|
|
||||||
void hyjalAI::DeSpawnVeins()
|
void hyjalAI::DeSpawnVeins()
|
||||||
{
|
{
|
||||||
if(!pInstance)return;
|
if(!pInstance)return;
|
||||||
if(Faction == 1)
|
if(Faction == 1)
|
||||||
{
|
{
|
||||||
Creature* pUnit=Unit::GetCreature((*m_creature),pInstance->GetData64(DATA_JAINAPROUDMOORE));
|
Creature* pUnit=Unit::GetCreature((*m_creature),pInstance->GetData64(DATA_JAINAPROUDMOORE));
|
||||||
@@ -767,7 +767,7 @@ void hyjalAI::UpdateAI(const uint32 diff)
|
|||||||
DoHide = false;
|
DoHide = false;
|
||||||
switch(m_creature->GetEntry())
|
switch(m_creature->GetEntry())
|
||||||
{
|
{
|
||||||
case JAINA:
|
case JAINA:
|
||||||
if(pInstance->GetData(DATA_ALLIANCE_RETREAT))
|
if(pInstance->GetData(DATA_ALLIANCE_RETREAT))
|
||||||
{
|
{
|
||||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||||
@@ -775,7 +775,7 @@ void hyjalAI::UpdateAI(const uint32 diff)
|
|||||||
HideNearPos(5037.76, -1889.71);
|
HideNearPos(5037.76, -1889.71);
|
||||||
for(uint8 i = 0; i < 92; i++)//summon fires
|
for(uint8 i = 0; i < 92; i++)//summon fires
|
||||||
m_creature->SummonGameObject(FLAMEOBJECT,AllianceFirePos[i][0],AllianceFirePos[i][1],AllianceFirePos[i][2],AllianceFirePos[i][3],AllianceFirePos[i][4],AllianceFirePos[i][5],AllianceFirePos[i][6],AllianceFirePos[i][7],0);
|
m_creature->SummonGameObject(FLAMEOBJECT,AllianceFirePos[i][0],AllianceFirePos[i][1],AllianceFirePos[i][2],AllianceFirePos[i][3],AllianceFirePos[i][4],AllianceFirePos[i][5],AllianceFirePos[i][6],AllianceFirePos[i][7],0);
|
||||||
|
|
||||||
}
|
}
|
||||||
else m_creature->SetVisibility(VISIBILITY_ON);
|
else m_creature->SetVisibility(VISIBILITY_ON);
|
||||||
break;
|
break;
|
||||||
@@ -788,11 +788,11 @@ void hyjalAI::UpdateAI(const uint32 diff)
|
|||||||
HideNearPos(5542.2, -2629.36);
|
HideNearPos(5542.2, -2629.36);
|
||||||
for(uint8 i = 0; i < 65; i++)//summon fires
|
for(uint8 i = 0; i < 65; i++)//summon fires
|
||||||
m_creature->SummonGameObject(FLAMEOBJECT,HordeFirePos[i][0],HordeFirePos[i][1],HordeFirePos[i][2],HordeFirePos[i][3],HordeFirePos[i][4],HordeFirePos[i][5],HordeFirePos[i][6],HordeFirePos[i][7],0);
|
m_creature->SummonGameObject(FLAMEOBJECT,HordeFirePos[i][0],HordeFirePos[i][1],HordeFirePos[i][2],HordeFirePos[i][3],HordeFirePos[i][4],HordeFirePos[i][5],HordeFirePos[i][6],HordeFirePos[i][7],0);
|
||||||
|
|
||||||
}
|
}
|
||||||
else m_creature->SetVisibility(VISIBILITY_ON);
|
else m_creature->SetVisibility(VISIBILITY_ON);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(DoRespawn)
|
if(DoRespawn)
|
||||||
{
|
{
|
||||||
@@ -801,7 +801,7 @@ void hyjalAI::UpdateAI(const uint32 diff)
|
|||||||
DoRespawn = false;
|
DoRespawn = false;
|
||||||
RespawnNearPos(m_creature->GetPositionX(), m_creature->GetPositionY());
|
RespawnNearPos(m_creature->GetPositionX(), m_creature->GetPositionY());
|
||||||
if(Faction == 0)
|
if(Faction == 0)
|
||||||
{
|
{
|
||||||
RespawnNearPos(5037.76, -1889.71);
|
RespawnNearPos(5037.76, -1889.71);
|
||||||
}else if (Faction == 1)
|
}else if (Faction == 1)
|
||||||
{
|
{
|
||||||
@@ -831,11 +831,11 @@ void hyjalAI::UpdateAI(const uint32 diff)
|
|||||||
break;
|
break;
|
||||||
case THRALL://thrall
|
case THRALL://thrall
|
||||||
HideNearPos(5563, -2763.19);
|
HideNearPos(5563, -2763.19);
|
||||||
HideNearPos(5542.2, -2629.36);
|
HideNearPos(5542.2, -2629.36);
|
||||||
HideNearPos(5603.75, -2853.12);
|
HideNearPos(5603.75, -2853.12);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||||
}else RetreatTimer -= diff;
|
}else RetreatTimer -= diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -943,7 +943,7 @@ void hyjalAI::JustDied(Unit* killer)
|
|||||||
if(pInstance->GetData(DATA_AZGALOREVENT) == IN_PROGRESS)
|
if(pInstance->GetData(DATA_AZGALOREVENT) == IN_PROGRESS)
|
||||||
pInstance->SetData(DATA_AZGALOREVENT, NOT_STARTED);
|
pInstance->SetData(DATA_AZGALOREVENT, NOT_STARTED);
|
||||||
pInstance->SetData(DATA_RESET_RAIDDAMAGE, NULL);//reset damage on die
|
pInstance->SetData(DATA_RESET_RAIDDAMAGE, NULL);//reset damage on die
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void hyjalAI::HideNearPos(float x, float y)
|
void hyjalAI::HideNearPos(float x, float y)
|
||||||
{
|
{
|
||||||
@@ -1093,14 +1093,14 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff)
|
|||||||
case 0://alliance
|
case 0://alliance
|
||||||
for(uint8 i = 0; i < 92; i++)//summon fires
|
for(uint8 i = 0; i < 92; i++)//summon fires
|
||||||
m_creature->SummonGameObject(FLAMEOBJECT,AllianceFirePos[i][0],AllianceFirePos[i][1],AllianceFirePos[i][2],AllianceFirePos[i][3],AllianceFirePos[i][4],AllianceFirePos[i][5],AllianceFirePos[i][6],AllianceFirePos[i][7],0);
|
m_creature->SummonGameObject(FLAMEOBJECT,AllianceFirePos[i][0],AllianceFirePos[i][1],AllianceFirePos[i][2],AllianceFirePos[i][3],AllianceFirePos[i][4],AllianceFirePos[i][5],AllianceFirePos[i][6],AllianceFirePos[i][7],0);
|
||||||
|
|
||||||
for(uint8 i = 0; i < 25; i++)//summon 25 ghouls
|
for(uint8 i = 0; i < 25; i++)//summon 25 ghouls
|
||||||
{
|
{
|
||||||
uint8 r = rand()%4;
|
uint8 r = rand()%4;
|
||||||
Creature* pUnit = m_creature->SummonCreature(GHOUL, AllianceBase[r][0]+irand(-15,15), AllianceBase[r][1]+irand(-15,15), AllianceBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000);
|
Creature* pUnit = m_creature->SummonCreature(GHOUL, AllianceBase[r][0]+irand(-15,15), AllianceBase[r][1]+irand(-15,15), AllianceBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000);
|
||||||
if(pUnit)
|
if(pUnit)
|
||||||
{
|
{
|
||||||
((hyjal_trashAI*)pUnit->AI())->faction = Faction;
|
((hyjal_trashAI*)pUnit->AI())->faction = Faction;
|
||||||
((hyjal_trashAI*)pUnit->AI())->IsOverrun = true;
|
((hyjal_trashAI*)pUnit->AI())->IsOverrun = true;
|
||||||
((hyjal_trashAI*)pUnit->AI())->OverrunType = i;
|
((hyjal_trashAI*)pUnit->AI())->OverrunType = i;
|
||||||
pUnit->setActive(true);
|
pUnit->setActive(true);
|
||||||
@@ -1112,7 +1112,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff)
|
|||||||
Creature* pUnit = m_creature->SummonCreature(ABOMINATION, AllianceBase[r][0]+irand(-15,15), AllianceBase[r][1]+irand(-15,15), AllianceBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000);
|
Creature* pUnit = m_creature->SummonCreature(ABOMINATION, AllianceBase[r][0]+irand(-15,15), AllianceBase[r][1]+irand(-15,15), AllianceBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000);
|
||||||
if(pUnit)
|
if(pUnit)
|
||||||
{
|
{
|
||||||
((hyjal_trashAI*)pUnit->AI())->faction = Faction;
|
((hyjal_trashAI*)pUnit->AI())->faction = Faction;
|
||||||
((hyjal_trashAI*)pUnit->AI())->IsOverrun = true;
|
((hyjal_trashAI*)pUnit->AI())->IsOverrun = true;
|
||||||
((hyjal_trashAI*)pUnit->AI())->OverrunType = i;
|
((hyjal_trashAI*)pUnit->AI())->OverrunType = i;
|
||||||
pUnit->setActive(true);
|
pUnit->setActive(true);
|
||||||
@@ -1124,28 +1124,28 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff)
|
|||||||
if(pUnit)
|
if(pUnit)
|
||||||
{
|
{
|
||||||
pUnit->SetHomePosition(AllianceOverrunGargPos[i][0], AllianceOverrunGargPos[i][1], AllianceOverrunGargPos[i][2], AllianceOverrunGargPos[i][3]);
|
pUnit->SetHomePosition(AllianceOverrunGargPos[i][0], AllianceOverrunGargPos[i][1], AllianceOverrunGargPos[i][2], AllianceOverrunGargPos[i][3]);
|
||||||
((hyjal_trashAI*)pUnit->AI())->faction = Faction;
|
((hyjal_trashAI*)pUnit->AI())->faction = Faction;
|
||||||
((hyjal_trashAI*)pUnit->AI())->IsOverrun = true;
|
((hyjal_trashAI*)pUnit->AI())->IsOverrun = true;
|
||||||
((hyjal_trashAI*)pUnit->AI())->OverrunType = i;
|
((hyjal_trashAI*)pUnit->AI())->OverrunType = i;
|
||||||
pUnit->setActive(true);
|
pUnit->setActive(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1://horde
|
case 1://horde
|
||||||
for(uint8 i = 0; i < 65; i++)//summon fires
|
for(uint8 i = 0; i < 65; i++)//summon fires
|
||||||
m_creature->SummonGameObject(FLAMEOBJECT,HordeFirePos[i][0],HordeFirePos[i][1],HordeFirePos[i][2],HordeFirePos[i][3],HordeFirePos[i][4],HordeFirePos[i][5],HordeFirePos[i][6],HordeFirePos[i][7],0);
|
m_creature->SummonGameObject(FLAMEOBJECT,HordeFirePos[i][0],HordeFirePos[i][1],HordeFirePos[i][2],HordeFirePos[i][3],HordeFirePos[i][4],HordeFirePos[i][5],HordeFirePos[i][6],HordeFirePos[i][7],0);
|
||||||
|
|
||||||
for(uint8 i = 0; i < 26; i++)//summon infernals
|
for(uint8 i = 0; i < 26; i++)//summon infernals
|
||||||
{
|
{
|
||||||
Creature* pUnit = m_creature->SummonCreature(GIANT_INFERNAL, InfernalSPWP[i][0], InfernalSPWP[i][1], InfernalSPWP[i][2], InfernalSPWP[i][3], TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000);
|
Creature* pUnit = m_creature->SummonCreature(GIANT_INFERNAL, InfernalSPWP[i][0], InfernalSPWP[i][1], InfernalSPWP[i][2], InfernalSPWP[i][3], TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000);
|
||||||
if(pUnit)
|
if(pUnit)
|
||||||
{
|
{
|
||||||
pUnit->SetHomePosition(InfernalSPWP[i][0], InfernalSPWP[i][1], InfernalSPWP[i][2], InfernalSPWP[i][3]);
|
pUnit->SetHomePosition(InfernalSPWP[i][0], InfernalSPWP[i][1], InfernalSPWP[i][2], InfernalSPWP[i][3]);
|
||||||
((hyjal_trashAI*)pUnit->AI())->faction = Faction;
|
((hyjal_trashAI*)pUnit->AI())->faction = Faction;
|
||||||
((hyjal_trashAI*)pUnit->AI())->IsOverrun = true;
|
((hyjal_trashAI*)pUnit->AI())->IsOverrun = true;
|
||||||
((hyjal_trashAI*)pUnit->AI())->OverrunType = i;
|
((hyjal_trashAI*)pUnit->AI())->OverrunType = i;
|
||||||
pUnit->setActive(true);
|
pUnit->setActive(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(uint8 i = 0; i < 25; i++)//summon 25 ghouls
|
for(uint8 i = 0; i < 25; i++)//summon 25 ghouls
|
||||||
{
|
{
|
||||||
@@ -1153,7 +1153,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff)
|
|||||||
Creature* pUnit = m_creature->SummonCreature(GHOUL, HordeBase[r][0]+irand(-15,15), HordeBase[r][1]+irand(-15,15), HordeBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000);
|
Creature* pUnit = m_creature->SummonCreature(GHOUL, HordeBase[r][0]+irand(-15,15), HordeBase[r][1]+irand(-15,15), HordeBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000);
|
||||||
if(pUnit)
|
if(pUnit)
|
||||||
{
|
{
|
||||||
((hyjal_trashAI*)pUnit->AI())->faction = Faction;
|
((hyjal_trashAI*)pUnit->AI())->faction = Faction;
|
||||||
((hyjal_trashAI*)pUnit->AI())->IsOverrun = true;
|
((hyjal_trashAI*)pUnit->AI())->IsOverrun = true;
|
||||||
((hyjal_trashAI*)pUnit->AI())->OverrunType = i;
|
((hyjal_trashAI*)pUnit->AI())->OverrunType = i;
|
||||||
pUnit->setActive(true);
|
pUnit->setActive(true);
|
||||||
@@ -1165,7 +1165,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff)
|
|||||||
Creature* pUnit = m_creature->SummonCreature(ABOMINATION, HordeBase[r][0]+irand(-15,15), HordeBase[r][1]+irand(-15,15), HordeBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000);
|
Creature* pUnit = m_creature->SummonCreature(ABOMINATION, HordeBase[r][0]+irand(-15,15), HordeBase[r][1]+irand(-15,15), HordeBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000);
|
||||||
if(pUnit)
|
if(pUnit)
|
||||||
{
|
{
|
||||||
((hyjal_trashAI*)pUnit->AI())->faction = Faction;
|
((hyjal_trashAI*)pUnit->AI())->faction = Faction;
|
||||||
((hyjal_trashAI*)pUnit->AI())->IsOverrun = true;
|
((hyjal_trashAI*)pUnit->AI())->IsOverrun = true;
|
||||||
((hyjal_trashAI*)pUnit->AI())->OverrunType = i;
|
((hyjal_trashAI*)pUnit->AI())->OverrunType = i;
|
||||||
pUnit->setActive(true);
|
pUnit->setActive(true);
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ struct TRINITY_DLL_DECL hyjalAI : public npc_escortAI
|
|||||||
bool Summon;
|
bool Summon;
|
||||||
bool bRetreat;
|
bool bRetreat;
|
||||||
bool Debug;
|
bool Debug;
|
||||||
bool VeinsSpawned[2];
|
bool VeinsSpawned[2];
|
||||||
uint8 InfernalCount;
|
uint8 InfernalCount;
|
||||||
SummonList Summons;
|
SummonList Summons;
|
||||||
bool Overrun;
|
bool Overrun;
|
||||||
|
|||||||
@@ -30,21 +30,21 @@ float AllianceWPs[8][3]=//basic waypoints from spawn to leader
|
|||||||
{4989.16, -1716.67, 1335.74},//first WP in the base, after the gate
|
{4989.16, -1716.67, 1335.74},//first WP in the base, after the gate
|
||||||
{5026.27, -1736.89, 1323.02},
|
{5026.27, -1736.89, 1323.02},
|
||||||
{5037.77, -1770.56, 1324.36},
|
{5037.77, -1770.56, 1324.36},
|
||||||
{5067.23, -1789.95, 1321.17}
|
{5067.23, -1789.95, 1321.17}
|
||||||
};
|
};
|
||||||
|
|
||||||
float FrostWyrmWPs[3][3]=//waypoints for the frost wyrms in horde base
|
float FrostWyrmWPs[3][3]=//waypoints for the frost wyrms in horde base
|
||||||
{
|
{
|
||||||
{5580.82, -2628.83, 1528.28},
|
{5580.82, -2628.83, 1528.28},
|
||||||
{5550.90, -2667.16, 1505.45},
|
{5550.90, -2667.16, 1505.45},
|
||||||
{5459.64, -2725.91, 1484.83}
|
{5459.64, -2725.91, 1484.83}
|
||||||
};
|
};
|
||||||
|
|
||||||
float GargoyleWPs[3][3]=//waypoints for the gargoyles in horde base
|
float GargoyleWPs[3][3]=//waypoints for the gargoyles in horde base
|
||||||
{
|
{
|
||||||
{5533.66, -2634.32, 1495.33},
|
{5533.66, -2634.32, 1495.33},
|
||||||
{5517.88, -2712.05, 1490.54},
|
{5517.88, -2712.05, 1490.54},
|
||||||
{5459.64, -2725.91, 1484.83}
|
{5459.64, -2725.91, 1484.83}
|
||||||
};
|
};
|
||||||
|
|
||||||
float FlyPathWPs[3][3]=//waypoints for the gargoyls and frost wyrms in horde base in wave 1/3
|
float FlyPathWPs[3][3]=//waypoints for the gargoyls and frost wyrms in horde base in wave 1/3
|
||||||
@@ -115,7 +115,7 @@ float AllianceOverrunWP[55][3]=//waypoints in the alliance base used in the end
|
|||||||
};
|
};
|
||||||
|
|
||||||
float HordeOverrunWP[21][3]=//waypoints in the horde base used in the end in the cleaning wave
|
float HordeOverrunWP[21][3]=//waypoints in the horde base used in the end in the cleaning wave
|
||||||
{
|
{
|
||||||
{5490.72,-2702.94,1482.14},//0 start
|
{5490.72,-2702.94,1482.14},//0 start
|
||||||
{5469.77,-2741.34,1486.95},
|
{5469.77,-2741.34,1486.95},
|
||||||
{5439.47,-2771.02,1494.59},
|
{5439.47,-2771.02,1494.59},
|
||||||
@@ -160,7 +160,7 @@ void hyjal_trashAI::DamageTaken(Unit *done_by, uint32 &damage)
|
|||||||
{
|
{
|
||||||
damageTaken += damage;
|
damageTaken += damage;
|
||||||
if(pInstance)
|
if(pInstance)
|
||||||
pInstance->SetData(DATA_RAIDDAMAGE,damage);//store raid's damage
|
pInstance->SetData(DATA_RAIDDAMAGE,damage);//store raid's damage
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,7 +170,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
|
|||||||
{
|
{
|
||||||
SetupOverrun = true;
|
SetupOverrun = true;
|
||||||
if(faction == 0)
|
if(faction == 0)
|
||||||
{
|
{
|
||||||
if(m_creature->GetEntry() == GARGOYLE)
|
if(m_creature->GetEntry() == GARGOYLE)
|
||||||
{
|
{
|
||||||
DummyTarget[0] = AllianceOverrunWP[50+OverrunType][0]; //+OverrunType 0 - 4
|
DummyTarget[0] = AllianceOverrunWP[50+OverrunType][0]; //+OverrunType 0 - 4
|
||||||
@@ -191,7 +191,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
|
|||||||
AddWaypoint( 8, AllianceOverrunWP[26][0]+irand(-3,3), AllianceOverrunWP[26][1]+irand(-3,3), AllianceOverrunWP[26][2]);
|
AddWaypoint( 8, AllianceOverrunWP[26][0]+irand(-3,3), AllianceOverrunWP[26][1]+irand(-3,3), AllianceOverrunWP[26][2]);
|
||||||
AddWaypoint( 9, AllianceOverrunWP[27][0]+irand(-3,3), AllianceOverrunWP[27][1]+irand(-3,3), AllianceOverrunWP[27][2]);
|
AddWaypoint( 9, AllianceOverrunWP[27][0]+irand(-3,3), AllianceOverrunWP[27][1]+irand(-3,3), AllianceOverrunWP[27][2]);
|
||||||
AddWaypoint(10, AllianceOverrunWP[28][0]+irand(-3,3), AllianceOverrunWP[28][1]+irand(-3,3), AllianceOverrunWP[28][2]);
|
AddWaypoint(10, AllianceOverrunWP[28][0]+irand(-3,3), AllianceOverrunWP[28][1]+irand(-3,3), AllianceOverrunWP[28][2]);
|
||||||
|
|
||||||
AddWaypoint(11, AllianceOverrunWP[36][0]+irand(-3,3), AllianceOverrunWP[36][1]+irand(-3,3), AllianceOverrunWP[36][2]);
|
AddWaypoint(11, AllianceOverrunWP[36][0]+irand(-3,3), AllianceOverrunWP[36][1]+irand(-3,3), AllianceOverrunWP[36][2]);
|
||||||
AddWaypoint(12, AllianceOverrunWP[37][0]+irand(-3,3), AllianceOverrunWP[37][1]+irand(-3,3), AllianceOverrunWP[37][2]);
|
AddWaypoint(12, AllianceOverrunWP[37][0]+irand(-3,3), AllianceOverrunWP[37][1]+irand(-3,3), AllianceOverrunWP[37][2]);
|
||||||
AddWaypoint(13, AllianceOverrunWP[38][0]+irand(-3,3), AllianceOverrunWP[38][1]+irand(-3,3), AllianceOverrunWP[38][2]);
|
AddWaypoint(13, AllianceOverrunWP[38][0]+irand(-3,3), AllianceOverrunWP[38][1]+irand(-3,3), AllianceOverrunWP[38][2]);
|
||||||
@@ -307,11 +307,11 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
|
|||||||
LastOverronPos = 17;
|
LastOverronPos = 17;
|
||||||
Start(true, true, true);
|
Start(true, true, true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(faction == 1)
|
if(faction == 1)
|
||||||
{
|
{
|
||||||
if(m_creature->GetEntry() == GHOUL)
|
if(m_creature->GetEntry() == GHOUL)
|
||||||
{
|
{
|
||||||
for(uint8 i = 0; i < 6; i++)
|
for(uint8 i = 0; i < 6; i++)
|
||||||
@@ -355,7 +355,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff)
|
|||||||
AddWaypoint( i+6, HordeOverrunWP[i][0]+irand(-10,10), HordeOverrunWP[i][1]+irand(-10,10), HordeOverrunWP[i][2]);
|
AddWaypoint( i+6, HordeOverrunWP[i][0]+irand(-10,10), HordeOverrunWP[i][1]+irand(-10,10), HordeOverrunWP[i][2]);
|
||||||
SetDespawnAtEnd(true);
|
SetDespawnAtEnd(true);
|
||||||
LastOverronPos = 21;
|
LastOverronPos = 21;
|
||||||
Start(true, true, true);
|
Start(true, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -382,7 +382,7 @@ struct mob_giant_infernalAI : public hyjal_trashAI
|
|||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_INVIS);
|
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_INVIS);
|
||||||
go = false;
|
go = false;
|
||||||
pos = 0;
|
pos = 0;
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
@@ -397,7 +397,7 @@ struct mob_giant_infernalAI : public hyjal_trashAI
|
|||||||
bool imol;
|
bool imol;
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
spawnTimer = 2000;
|
spawnTimer = 2000;
|
||||||
FlameBuffetTimer= 2000;
|
FlameBuffetTimer= 2000;
|
||||||
imol = false;
|
imol = false;
|
||||||
@@ -459,7 +459,7 @@ struct mob_giant_infernalAI : public hyjal_trashAI
|
|||||||
}else if (pInstance->GetData(DATA_ALLIANCE_RETREAT) && pInstance->GetData(DATA_HORDE_RETREAT)){
|
}else if (pInstance->GetData(DATA_ALLIANCE_RETREAT) && pInstance->GetData(DATA_HORDE_RETREAT)){
|
||||||
//do overrun
|
//do overrun
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else spawnTimer -= diff;
|
}else spawnTimer -= diff;
|
||||||
}
|
}
|
||||||
if(!CanMove)return;
|
if(!CanMove)return;
|
||||||
@@ -510,7 +510,7 @@ struct mob_abominationAI : public hyjal_trashAI
|
|||||||
mob_abominationAI(Creature* c) : hyjal_trashAI(c)
|
mob_abominationAI(Creature* c) : hyjal_trashAI(c)
|
||||||
{
|
{
|
||||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||||
go = false;
|
go = false;
|
||||||
pos = 0;
|
pos = 0;
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
@@ -557,7 +557,7 @@ struct mob_abominationAI : public hyjal_trashAI
|
|||||||
if(IsEvent || IsOverrun)
|
if(IsEvent || IsOverrun)
|
||||||
npc_escortAI::UpdateAI(diff);
|
npc_escortAI::UpdateAI(diff);
|
||||||
if (IsEvent)
|
if (IsEvent)
|
||||||
{
|
{
|
||||||
if(!go)
|
if(!go)
|
||||||
{
|
{
|
||||||
go = true;
|
go = true;
|
||||||
@@ -576,7 +576,7 @@ struct mob_abominationAI : public hyjal_trashAI
|
|||||||
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
||||||
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!m_creature->HasAura(SPELL_DISEASE_CLOUD))
|
if(!m_creature->HasAura(SPELL_DISEASE_CLOUD))
|
||||||
@@ -605,7 +605,7 @@ struct mob_ghoulAI : public hyjal_trashAI
|
|||||||
mob_ghoulAI(Creature* c) : hyjal_trashAI(c)
|
mob_ghoulAI(Creature* c) : hyjal_trashAI(c)
|
||||||
{
|
{
|
||||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||||
go = false;
|
go = false;
|
||||||
pos = 0;
|
pos = 0;
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
@@ -646,7 +646,7 @@ struct mob_ghoulAI : public hyjal_trashAI
|
|||||||
m_creature->setDeathState(DEAD);
|
m_creature->setDeathState(DEAD);
|
||||||
m_creature->RemoveCorpse();
|
m_creature->RemoveCorpse();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -677,14 +677,14 @@ struct mob_ghoulAI : public hyjal_trashAI
|
|||||||
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
||||||
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(FrenzyTimer<diff)
|
if(FrenzyTimer<diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature,SPELL_FRENZY);
|
DoCast(m_creature,SPELL_FRENZY);
|
||||||
FrenzyTimer = 15000+rand()%15000;
|
FrenzyTimer = 15000+rand()%15000;
|
||||||
}else FrenzyTimer -= diff;
|
}else FrenzyTimer -= diff;
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -708,7 +708,7 @@ struct mob_necromancerAI : public hyjal_trashAI
|
|||||||
mob_necromancerAI(Creature* c) : hyjal_trashAI(c), summons(m_creature)
|
mob_necromancerAI(Creature* c) : hyjal_trashAI(c), summons(m_creature)
|
||||||
{
|
{
|
||||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||||
go = false;
|
go = false;
|
||||||
pos = 0;
|
pos = 0;
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
@@ -796,8 +796,8 @@ struct mob_necromancerAI : public hyjal_trashAI
|
|||||||
((npc_escortAI*)(m_creature->AI()))->Start(true, true, true);
|
((npc_escortAI*)(m_creature->AI()))->Start(true, true, true);
|
||||||
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
return;
|
return;
|
||||||
@@ -805,7 +805,7 @@ struct mob_necromancerAI : public hyjal_trashAI
|
|||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(),SPELL_SHADOW_BOLT);
|
DoCast(m_creature->getVictim(),SPELL_SHADOW_BOLT);
|
||||||
ShadowBoltTimer = 20000+rand()%10000;
|
ShadowBoltTimer = 20000+rand()%10000;
|
||||||
}else ShadowBoltTimer -= diff;
|
}else ShadowBoltTimer -= diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
@@ -826,7 +826,7 @@ struct mob_bansheeAI : public hyjal_trashAI
|
|||||||
mob_bansheeAI(Creature* c) : hyjal_trashAI(c)
|
mob_bansheeAI(Creature* c) : hyjal_trashAI(c)
|
||||||
{
|
{
|
||||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||||
go = false;
|
go = false;
|
||||||
pos = 0;
|
pos = 0;
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
@@ -888,8 +888,8 @@ struct mob_bansheeAI : public hyjal_trashAI
|
|||||||
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
||||||
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
return;
|
return;
|
||||||
@@ -925,7 +925,7 @@ struct mob_crypt_fiendAI : public hyjal_trashAI
|
|||||||
mob_crypt_fiendAI(Creature* c) : hyjal_trashAI(c)
|
mob_crypt_fiendAI(Creature* c) : hyjal_trashAI(c)
|
||||||
{
|
{
|
||||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||||
go = false;
|
go = false;
|
||||||
pos = 0;
|
pos = 0;
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
@@ -984,8 +984,8 @@ struct mob_crypt_fiendAI : public hyjal_trashAI
|
|||||||
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
return;
|
return;
|
||||||
@@ -1011,7 +1011,7 @@ struct mob_fel_stalkerAI : public hyjal_trashAI
|
|||||||
mob_fel_stalkerAI(Creature* c) : hyjal_trashAI(c)
|
mob_fel_stalkerAI(Creature* c) : hyjal_trashAI(c)
|
||||||
{
|
{
|
||||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||||
go = false;
|
go = false;
|
||||||
pos = 0;
|
pos = 0;
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
@@ -1070,8 +1070,8 @@ struct mob_fel_stalkerAI : public hyjal_trashAI
|
|||||||
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
return;
|
return;
|
||||||
@@ -1110,7 +1110,7 @@ struct mob_frost_wyrmAI : public hyjal_trashAI
|
|||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
FrostBreathTimer = 5000;
|
FrostBreathTimer = 5000;
|
||||||
MoveTimer = 0;
|
MoveTimer = 0;
|
||||||
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1125,7 +1125,7 @@ struct mob_frost_wyrmAI : public hyjal_trashAI
|
|||||||
m_creature->AddThreat(target,0.0);
|
m_creature->AddThreat(target,0.0);
|
||||||
DoCast(target,SPELL_FROST_BREATH,true);
|
DoCast(target,SPELL_FROST_BREATH,true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit *victim)
|
void JustDied(Unit *victim)
|
||||||
@@ -1150,8 +1150,8 @@ struct mob_frost_wyrmAI : public hyjal_trashAI
|
|||||||
((hyjal_trashAI*)m_creature->AI())->SetCanMelee(false);
|
((hyjal_trashAI*)m_creature->AI())->SetCanMelee(false);
|
||||||
npc_escortAI::UpdateAI(diff);
|
npc_escortAI::UpdateAI(diff);
|
||||||
}
|
}
|
||||||
if (IsEvent)
|
if (IsEvent)
|
||||||
{
|
{
|
||||||
if(!go)
|
if(!go)
|
||||||
{
|
{
|
||||||
go = true;
|
go = true;
|
||||||
@@ -1169,8 +1169,8 @@ struct mob_frost_wyrmAI : public hyjal_trashAI
|
|||||||
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
||||||
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
return;
|
return;
|
||||||
@@ -1181,7 +1181,7 @@ struct mob_frost_wyrmAI : public hyjal_trashAI
|
|||||||
MoveTimer = 2000;
|
MoveTimer = 2000;
|
||||||
}else MoveTimer-=diff;
|
}else MoveTimer-=diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(FrostBreathTimer<diff)
|
if(FrostBreathTimer<diff)
|
||||||
{
|
{
|
||||||
if(m_creature->GetDistance(m_creature->getVictim()) < 25)
|
if(m_creature->GetDistance(m_creature->getVictim()) < 25)
|
||||||
@@ -1190,7 +1190,7 @@ struct mob_frost_wyrmAI : public hyjal_trashAI
|
|||||||
m_creature->StopMoving();
|
m_creature->StopMoving();
|
||||||
m_creature->GetMotionMaster()->Clear();
|
m_creature->GetMotionMaster()->Clear();
|
||||||
FrostBreathTimer = 4000;
|
FrostBreathTimer = 4000;
|
||||||
}
|
}
|
||||||
}else FrostBreathTimer -= diff;
|
}else FrostBreathTimer -= diff;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1219,15 +1219,15 @@ struct mob_gargoyleAI : public hyjal_trashAI
|
|||||||
uint32 pos;
|
uint32 pos;
|
||||||
uint32 MoveTimer;
|
uint32 MoveTimer;
|
||||||
float Zpos;
|
float Zpos;
|
||||||
bool forcemove;
|
bool forcemove;
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
forcemove = true;
|
forcemove = true;
|
||||||
Zpos = 10.0;
|
Zpos = 10.0;
|
||||||
StrikeTimer = 2000+rand()%5000;
|
StrikeTimer = 2000+rand()%5000;
|
||||||
MoveTimer = 0;
|
MoveTimer = 0;
|
||||||
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WaypointReached(uint32 i)
|
void WaypointReached(uint32 i)
|
||||||
@@ -1241,7 +1241,7 @@ struct mob_gargoyleAI : public hyjal_trashAI
|
|||||||
m_creature->AddThreat(target,0.0);
|
m_creature->AddThreat(target,0.0);
|
||||||
DoCast(target,SPELL_GARGOYLE_STRIKE,true);
|
DoCast(target,SPELL_GARGOYLE_STRIKE,true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit *victim)
|
void JustDied(Unit *victim)
|
||||||
@@ -1251,7 +1251,7 @@ struct mob_gargoyleAI : public hyjal_trashAI
|
|||||||
z = m_creature->GetMap()->GetVmapHeight(x, y, z, true);
|
z = m_creature->GetMap()->GetVmapHeight(x, y, z, true);
|
||||||
m_creature->GetMotionMaster()->MovePoint(0,x,y,z);
|
m_creature->GetMotionMaster()->MovePoint(0,x,y,z);
|
||||||
m_creature->Relocate(x,y,z,0);
|
m_creature->Relocate(x,y,z,0);
|
||||||
hyjal_trashAI::JustDied(victim);
|
hyjal_trashAI::JustDied(victim);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
@@ -1281,8 +1281,8 @@ struct mob_gargoyleAI : public hyjal_trashAI
|
|||||||
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
((npc_escortAI*)(m_creature->AI()))->Start(false, true, true);
|
||||||
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
((npc_escortAI*)(m_creature->AI()))->SetDespawnAtEnd(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(IsOverrun && !UpdateVictim())
|
if(IsOverrun && !UpdateVictim())
|
||||||
{
|
{
|
||||||
@@ -1290,7 +1290,7 @@ struct mob_gargoyleAI : public hyjal_trashAI
|
|||||||
{
|
{
|
||||||
if(StrikeTimer<diff)
|
if(StrikeTimer<diff)
|
||||||
{
|
{
|
||||||
m_creature->CastSpell(DummyTarget[0],DummyTarget[1],DummyTarget[2],SPELL_GARGOYLE_STRIKE,false);
|
m_creature->CastSpell(DummyTarget[0],DummyTarget[1],DummyTarget[2],SPELL_GARGOYLE_STRIKE,false);
|
||||||
StrikeTimer = 2000+rand()%1000;
|
StrikeTimer = 2000+rand()%1000;
|
||||||
}else StrikeTimer -= diff;
|
}else StrikeTimer -= diff;
|
||||||
}
|
}
|
||||||
@@ -1312,10 +1312,10 @@ struct mob_gargoyleAI : public hyjal_trashAI
|
|||||||
m_creature->getVictim()->GetPosition(x,y,z);
|
m_creature->getVictim()->GetPosition(x,y,z);
|
||||||
m_creature->GetMotionMaster()->MovePoint(0,x,y,z+Zpos);
|
m_creature->GetMotionMaster()->MovePoint(0,x,y,z+Zpos);
|
||||||
Zpos-=1.0;
|
Zpos-=1.0;
|
||||||
if(Zpos<=0)Zpos=0;
|
if(Zpos<=0)Zpos=0;
|
||||||
MoveTimer = 2000;
|
MoveTimer = 2000;
|
||||||
}else MoveTimer-=diff;
|
}else MoveTimer-=diff;
|
||||||
}
|
}
|
||||||
if(StrikeTimer<diff)
|
if(StrikeTimer<diff)
|
||||||
{
|
{
|
||||||
if(m_creature->GetDistance(m_creature->getVictim()) < 20)
|
if(m_creature->GetDistance(m_creature->getVictim()) < 20)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ struct TRINITY_DLL_DECL hyjal_trashAI : public npc_escortAI
|
|||||||
|
|
||||||
void DamageTaken(Unit *done_by, uint32 &damage);
|
void DamageTaken(Unit *done_by, uint32 &damage);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ScriptedInstance* pInstance;
|
ScriptedInstance* pInstance;
|
||||||
bool IsEvent;
|
bool IsEvent;
|
||||||
uint32 Delay;
|
uint32 Delay;
|
||||||
|
|||||||
@@ -95,18 +95,18 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance
|
|||||||
}
|
}
|
||||||
|
|
||||||
void OnObjectCreate(GameObject *go)
|
void OnObjectCreate(GameObject *go)
|
||||||
{
|
{
|
||||||
switch(go->GetEntry())
|
switch(go->GetEntry())
|
||||||
{
|
{
|
||||||
case 182060:
|
case 182060:
|
||||||
HordeGate = go->GetGUID();
|
HordeGate = go->GetGUID();
|
||||||
if(allianceRetreat)
|
if(allianceRetreat)
|
||||||
go->SetGoState(GO_STATE_ACTIVE);
|
go->SetGoState(GO_STATE_ACTIVE);
|
||||||
else
|
else
|
||||||
go->SetGoState(GO_STATE_READY);
|
go->SetGoState(GO_STATE_READY);
|
||||||
break;
|
break;
|
||||||
case 182061:
|
case 182061:
|
||||||
ElfGate = go->GetGUID();
|
ElfGate = go->GetGUID();
|
||||||
if(hordeRetreat)
|
if(hordeRetreat)
|
||||||
go->SetGoState(GO_STATE_ACTIVE);
|
go->SetGoState(GO_STATE_ACTIVE);
|
||||||
else
|
else
|
||||||
@@ -157,23 +157,23 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance
|
|||||||
switch(type)
|
switch(type)
|
||||||
{
|
{
|
||||||
case DATA_RAGEWINTERCHILLEVENT: Encounters[0] = data; break;
|
case DATA_RAGEWINTERCHILLEVENT: Encounters[0] = data; break;
|
||||||
case DATA_ANETHERONEVENT:
|
case DATA_ANETHERONEVENT:
|
||||||
Encounters[1] = data;
|
Encounters[1] = data;
|
||||||
break;
|
break;
|
||||||
case DATA_KAZROGALEVENT: Encounters[2] = data; break;
|
case DATA_KAZROGALEVENT: Encounters[2] = data; break;
|
||||||
case DATA_AZGALOREVENT:
|
case DATA_AZGALOREVENT:
|
||||||
{
|
{
|
||||||
Encounters[3] = data;
|
Encounters[3] = data;
|
||||||
if(data==DONE)
|
if(data==DONE)
|
||||||
{
|
{
|
||||||
if(ArchiYell)break;
|
if(ArchiYell)break;
|
||||||
ArchiYell = true;
|
ArchiYell = true;
|
||||||
|
|
||||||
Creature* pCreature = instance->GetCreature(Azgalor);
|
Creature* pCreature = instance->GetCreature(Azgalor);
|
||||||
if(pCreature)
|
if(pCreature)
|
||||||
{
|
{
|
||||||
Creature* pUnit = pCreature->SummonCreature(21987,pCreature->GetPositionX(),pCreature->GetPositionY(),pCreature->GetPositionZ(),0,TEMPSUMMON_TIMED_DESPAWN,10000);
|
Creature* pUnit = pCreature->SummonCreature(21987,pCreature->GetPositionX(),pCreature->GetPositionY(),pCreature->GetPositionZ(),0,TEMPSUMMON_TIMED_DESPAWN,10000);
|
||||||
|
|
||||||
Map *map = pCreature->GetMap();
|
Map *map = pCreature->GetMap();
|
||||||
if (map->IsDungeon() && pUnit)
|
if (map->IsDungeon() && pUnit)
|
||||||
{
|
{
|
||||||
@@ -181,12 +181,12 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance
|
|||||||
Map::PlayerList const &PlayerList = map->GetPlayers();
|
Map::PlayerList const &PlayerList = map->GetPlayers();
|
||||||
if (PlayerList.isEmpty())
|
if (PlayerList.isEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||||
{
|
{
|
||||||
if (i->getSource())
|
if (i->getSource())
|
||||||
{
|
{
|
||||||
WorldPacket data(SMSG_MESSAGECHAT, 200);
|
WorldPacket data(SMSG_MESSAGECHAT, 200);
|
||||||
pUnit->BuildMonsterChat(&data,CHAT_MSG_MONSTER_YELL,"All of your efforts have been in vain, for the draining of the World Tree has already begun. Soon the heart of your world will beat no more.",0,"Archimonde",i->getSource()->GetGUID());
|
pUnit->BuildMonsterChat(&data,CHAT_MSG_MONSTER_YELL,"All of your efforts have been in vain, for the draining of the World Tree has already begun. Soon the heart of your world will beat no more.",0,"Archimonde",i->getSource()->GetGUID());
|
||||||
i->getSource()->GetSession()->SendPacket(&data);
|
i->getSource()->GetSession()->SendPacket(&data);
|
||||||
|
|
||||||
@@ -208,12 +208,12 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance
|
|||||||
else Trash--;
|
else Trash--;
|
||||||
UpdateWorldState(WORLD_STATE_ENEMYCOUNT, Trash);
|
UpdateWorldState(WORLD_STATE_ENEMYCOUNT, Trash);
|
||||||
break;
|
break;
|
||||||
case DATA_ALLIANCE_RETREAT:
|
case DATA_ALLIANCE_RETREAT:
|
||||||
allianceRetreat = data;
|
allianceRetreat = data;
|
||||||
OpenDoor(HordeGate,true);
|
OpenDoor(HordeGate,true);
|
||||||
SaveToDB();
|
SaveToDB();
|
||||||
break;
|
break;
|
||||||
case DATA_HORDE_RETREAT:
|
case DATA_HORDE_RETREAT:
|
||||||
hordeRetreat = data;
|
hordeRetreat = data;
|
||||||
OpenDoor(ElfGate,true);
|
OpenDoor(ElfGate,true);
|
||||||
SaveToDB();
|
SaveToDB();
|
||||||
@@ -268,7 +268,7 @@ struct TRINITY_DLL_DECL instance_mount_hyjal : public ScriptedInstance
|
|||||||
void UpdateWorldState(uint32 id, uint32 state)
|
void UpdateWorldState(uint32 id, uint32 state)
|
||||||
{
|
{
|
||||||
Map::PlayerList const& players = instance->GetPlayers();
|
Map::PlayerList const& players = instance->GetPlayers();
|
||||||
|
|
||||||
if (!players.isEmpty())
|
if (!players.isEmpty())
|
||||||
{
|
{
|
||||||
for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
||||||
|
|||||||
@@ -561,8 +561,11 @@ bool GossipSelect_npc_thrall_old_hillsbrad(Player *player, Creature *_Creature,
|
|||||||
{
|
{
|
||||||
case GOSSIP_ACTION_INFO_DEF+1:
|
case GOSSIP_ACTION_INFO_DEF+1:
|
||||||
player->CLOSE_GOSSIP_MENU();
|
player->CLOSE_GOSSIP_MENU();
|
||||||
pInstance->SetData(TYPE_THRALL_EVENT,IN_PROGRESS);
|
if(pInstance)
|
||||||
pInstance->SetData(TYPE_THRALL_PART1,IN_PROGRESS);
|
{
|
||||||
|
pInstance->SetData(TYPE_THRALL_EVENT,IN_PROGRESS);
|
||||||
|
pInstance->SetData(TYPE_THRALL_PART1,IN_PROGRESS);
|
||||||
|
}
|
||||||
|
|
||||||
DoScriptText(SAY_TH_START_EVENT_PART1, _Creature);
|
DoScriptText(SAY_TH_START_EVENT_PART1, _Creature);
|
||||||
|
|
||||||
@@ -580,7 +583,8 @@ bool GossipSelect_npc_thrall_old_hillsbrad(Player *player, Creature *_Creature,
|
|||||||
case GOSSIP_ACTION_INFO_DEF+20:
|
case GOSSIP_ACTION_INFO_DEF+20:
|
||||||
player->SEND_GOSSIP_MENU(GOSSIP_ID_SKARLOC3, _Creature->GetGUID());
|
player->SEND_GOSSIP_MENU(GOSSIP_ID_SKARLOC3, _Creature->GetGUID());
|
||||||
_Creature->SummonCreature(SKARLOC_MOUNT,2038.81,270.26,63.20,5.41,TEMPSUMMON_TIMED_DESPAWN,12000);
|
_Creature->SummonCreature(SKARLOC_MOUNT,2038.81,270.26,63.20,5.41,TEMPSUMMON_TIMED_DESPAWN,12000);
|
||||||
pInstance->SetData(TYPE_THRALL_PART2,IN_PROGRESS);
|
if(pInstance)
|
||||||
|
pInstance->SetData(TYPE_THRALL_PART2,IN_PROGRESS);
|
||||||
|
|
||||||
DoScriptText(SAY_TH_START_EVENT_PART2, _Creature);
|
DoScriptText(SAY_TH_START_EVENT_PART2, _Creature);
|
||||||
|
|
||||||
@@ -589,7 +593,8 @@ bool GossipSelect_npc_thrall_old_hillsbrad(Player *player, Creature *_Creature,
|
|||||||
|
|
||||||
case GOSSIP_ACTION_INFO_DEF+3:
|
case GOSSIP_ACTION_INFO_DEF+3:
|
||||||
player->CLOSE_GOSSIP_MENU();
|
player->CLOSE_GOSSIP_MENU();
|
||||||
pInstance->SetData(TYPE_THRALL_PART3,IN_PROGRESS);
|
if(pInstance)
|
||||||
|
pInstance->SetData(TYPE_THRALL_PART3,IN_PROGRESS);
|
||||||
((npc_thrall_old_hillsbradAI*)_Creature->AI())->StartWP();
|
((npc_thrall_old_hillsbradAI*)_Creature->AI())->StartWP();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -668,7 +673,8 @@ bool GossipSelect_npc_taretha(Player *player, Creature *_Creature, uint32 sender
|
|||||||
|
|
||||||
if( pInstance->GetData(TYPE_THRALL_EVENT) == IN_PROGRESS )
|
if( pInstance->GetData(TYPE_THRALL_EVENT) == IN_PROGRESS )
|
||||||
{
|
{
|
||||||
pInstance->SetData(TYPE_THRALL_PART4,IN_PROGRESS);
|
if(pInstance)
|
||||||
|
pInstance->SetData(TYPE_THRALL_PART4,IN_PROGRESS);
|
||||||
if(pInstance->GetData64(DATA_EPOCH) == 0)
|
if(pInstance->GetData64(DATA_EPOCH) == 0)
|
||||||
_Creature->SummonCreature(ENTRY_EPOCH,2639.13,698.55,65.43,4.59,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,120000);
|
_Creature->SummonCreature(ENTRY_EPOCH,2639.13,698.55,65.43,4.59,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,120000);
|
||||||
|
|
||||||
|
|||||||
+9
-10
@@ -131,18 +131,17 @@ struct TRINITY_DLL_DECL boss_fathomlord_karathressAI : public ScriptedAI
|
|||||||
Creature* pAdvisor = NULL;
|
Creature* pAdvisor = NULL;
|
||||||
for( int i=0; i<3; i++ )
|
for( int i=0; i<3; i++ )
|
||||||
|
|
||||||
|
if(RAdvisors[i])
|
||||||
if(RAdvisors[i])
|
|
||||||
{
|
|
||||||
pAdvisor = (Unit::GetCreature((*m_creature), RAdvisors[i]));
|
|
||||||
if(pAdvisor && !pAdvisor->isAlive())
|
|
||||||
{
|
{
|
||||||
pAdvisor->Respawn();
|
pAdvisor = (Unit::GetCreature((*m_creature), RAdvisors[i]));
|
||||||
pAdvisor->AI()->EnterEvadeMode();
|
if(pAdvisor && !pAdvisor->isAlive())
|
||||||
pAdvisor->GetMotionMaster()->MoveTargetedHome();
|
{
|
||||||
|
pAdvisor->Respawn();
|
||||||
|
pAdvisor->AI()->EnterEvadeMode();
|
||||||
|
pAdvisor->GetMotionMaster()->MoveTargetedHome();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
pInstance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED);
|
||||||
pInstance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -213,7 +213,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
|
|||||||
float ny = y;
|
float ny = y;
|
||||||
float o = 2.4f;
|
float o = 2.4f;
|
||||||
if (i == 0) {nx += 10; ny -= 5; o=2.5f;}
|
if (i == 0) {nx += 10; ny -= 5; o=2.5f;}
|
||||||
if (i == 1) {nx -= 8; ny -= 7; o=0.9f;}
|
if (i == 1) {nx -= 8; ny -= 7; o=0.9f;}
|
||||||
if (i == 2) {nx -= 3; ny += 9; o=5.0f;}
|
if (i == 2) {nx -= 3; ny += 9; o=5.0f;}
|
||||||
Creature* binder = m_creature->SummonCreature(MOB_SPELLBINDER,nx,ny,z,o,TEMPSUMMON_DEAD_DESPAWN,0);
|
Creature* binder = m_creature->SummonCreature(MOB_SPELLBINDER,nx,ny,z,o,TEMPSUMMON_DEAD_DESPAWN,0);
|
||||||
if (binder)
|
if (binder)
|
||||||
|
|||||||
+5
-3
@@ -76,7 +76,8 @@ struct TRINITY_DLL_DECL boss_the_lurker_belowAI : public Scripted_NoMovementAI
|
|||||||
{
|
{
|
||||||
boss_the_lurker_belowAI(Creature *c) : Scripted_NoMovementAI(c), Summons(m_creature)
|
boss_the_lurker_belowAI(Creature *c) : Scripted_NoMovementAI(c), Summons(m_creature)
|
||||||
{
|
{
|
||||||
pInstance = ((ScriptedInstance*)c->GetInstanceData()); SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_SPOUT_ANIM);
|
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||||
|
SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_SPOUT_ANIM);
|
||||||
if(TempSpell)
|
if(TempSpell)
|
||||||
{
|
{
|
||||||
TempSpell->Effect[0] = 0;//remove all spell effect, only anim is needed
|
TempSpell->Effect[0] = 0;//remove all spell effect, only anim is needed
|
||||||
@@ -227,7 +228,7 @@ struct TRINITY_DLL_DECL boss_the_lurker_belowAI : public Scripted_NoMovementAI
|
|||||||
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||||
{
|
{
|
||||||
Player *target = i->getSource();
|
Player *target = i->getSource();
|
||||||
if(target->isAlive() && m_creature->HasInArc((double)diff/20000*(double)M_PI*2,target) && m_creature->GetDistance(target) <= SPOUT_DIST && !target->IsInWater())
|
if(target && target->isAlive() && m_creature->HasInArc((double)diff/20000*(double)M_PI*2,target) && m_creature->GetDistance(target) <= SPOUT_DIST && !target->IsInWater())
|
||||||
DoCast(target,SPELL_SPOUT,true);//only knock back palyers in arc, in 100yards, not in water
|
DoCast(target,SPELL_SPOUT,true);//only knock back palyers in arc, in 100yards, not in water
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -370,7 +371,8 @@ struct TRINITY_DLL_DECL boss_the_lurker_belowAI : public Scripted_NoMovementAI
|
|||||||
Summoned = m_creature->SummonCreature(MOB_COILFANG_AMBUSHER,AddPos[i][0],AddPos[i][1],AddPos[i][2], 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
Summoned = m_creature->SummonCreature(MOB_COILFANG_AMBUSHER,AddPos[i][0],AddPos[i][1],AddPos[i][2], 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||||
else Summoned = m_creature->SummonCreature(MOB_COILFANG_GUARDIAN,AddPos[i][0],AddPos[i][1],AddPos[i][2], 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
else Summoned = m_creature->SummonCreature(MOB_COILFANG_GUARDIAN,AddPos[i][0],AddPos[i][1],AddPos[i][2], 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||||
|
|
||||||
Summons.Summon(Summoned);
|
if(Summoned)
|
||||||
|
Summons.Summon(Summoned);
|
||||||
Spawned = true;
|
Spawned = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -206,7 +206,8 @@ struct TRINITY_DLL_DECL boss_morogrim_tidewalkerAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
Creature* Murloc = m_creature->SummonCreature(MurlocCords[i][0],MurlocCords[i][1],MurlocCords[i][2],MurlocCords[i][3],MurlocCords[i][4], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000);
|
Creature* Murloc = m_creature->SummonCreature(MurlocCords[i][0],MurlocCords[i][1],MurlocCords[i][2],MurlocCords[i][3],MurlocCords[i][4], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000);
|
||||||
Murloc->AI()->AttackStart(target);
|
if(target && Murloc)
|
||||||
|
Murloc->AI()->AttackStart(target);
|
||||||
}
|
}
|
||||||
DoScriptText(EMOTE_EARTHQUAKE, m_creature);
|
DoScriptText(EMOTE_EARTHQUAKE, m_creature);
|
||||||
Earthquake = false;
|
Earthquake = false;
|
||||||
|
|||||||
@@ -63,6 +63,9 @@ struct TRINITY_DLL_DECL instance_deadmines : public ScriptedInstance
|
|||||||
|
|
||||||
virtual void Update(uint32 diff)
|
virtual void Update(uint32 diff)
|
||||||
{
|
{
|
||||||
|
if(!IronCladDoor || !DefiasCannon || !DoorLever)
|
||||||
|
return;
|
||||||
|
|
||||||
switch(State)
|
switch(State)
|
||||||
{
|
{
|
||||||
case CANNON_GUNPOWDER_USED:
|
case CANNON_GUNPOWDER_USED:
|
||||||
@@ -107,6 +110,9 @@ struct TRINITY_DLL_DECL instance_deadmines : public ScriptedInstance
|
|||||||
|
|
||||||
void MoveCreaturesInside()
|
void MoveCreaturesInside()
|
||||||
{
|
{
|
||||||
|
if(!DefiasPirate1 || !DefiasPirate2 || !DefiasCompanion)
|
||||||
|
return;
|
||||||
|
|
||||||
MoveCreatureInside(DefiasPirate1);
|
MoveCreatureInside(DefiasPirate1);
|
||||||
MoveCreatureInside(DefiasPirate2);
|
MoveCreatureInside(DefiasPirate2);
|
||||||
MoveCreatureInside(DefiasCompanion);
|
MoveCreatureInside(DefiasCompanion);
|
||||||
|
|||||||
@@ -62,7 +62,10 @@ struct TRINITY_DLL_DECL npc_narm_faulkAI : public ScriptedAI
|
|||||||
if (m_creature->IsStandState())
|
if (m_creature->IsStandState())
|
||||||
{
|
{
|
||||||
if(lifeTimer < diff)
|
if(lifeTimer < diff)
|
||||||
m_creature->AI()->EnterEvadeMode();
|
{
|
||||||
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
lifeTimer -= diff;
|
lifeTimer -= diff;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,7 +62,10 @@ struct TRINITY_DLL_DECL npc_henze_faulkAI : public ScriptedAI
|
|||||||
if (m_creature->IsStandState())
|
if (m_creature->IsStandState())
|
||||||
{
|
{
|
||||||
if(lifeTimer < diff)
|
if(lifeTimer < diff)
|
||||||
m_creature->AI()->EnterEvadeMode();
|
{
|
||||||
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
lifeTimer -= diff;
|
lifeTimer -= diff;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ struct TRINITY_DLL_DECL npc_ranger_lilathaAI : public npc_escortAI
|
|||||||
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||||
GameObject* Cage = FindGameObject(GO_CAGE, 20, m_creature);
|
GameObject* Cage = FindGameObject(GO_CAGE, 20, m_creature);
|
||||||
if(Cage)
|
if(Cage)
|
||||||
Cage->SetGoState(GO_STATE_ACTIVE);
|
Cage->SetGoState(GO_STATE_ACTIVE);
|
||||||
DoScriptText(SAY_START, m_creature, player);
|
DoScriptText(SAY_START, m_creature, player);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -186,8 +186,11 @@ struct TRINITY_DLL_DECL npc_ranger_lilathaAI : public npc_escortAI
|
|||||||
DoScriptText(SAY_PROGRESS3, m_creature, player);
|
DoScriptText(SAY_PROGRESS3, m_creature, player);
|
||||||
Creature* Summ1 = m_creature->SummonCreature(16342, 7627.083984, -7532.538086, 152.128616, 1.082733, TEMPSUMMON_DEAD_DESPAWN, 0);
|
Creature* Summ1 = m_creature->SummonCreature(16342, 7627.083984, -7532.538086, 152.128616, 1.082733, TEMPSUMMON_DEAD_DESPAWN, 0);
|
||||||
Creature* Summ2 = m_creature->SummonCreature(16343, 7620.432129, -7532.550293, 152.454865, 0.827478, TEMPSUMMON_DEAD_DESPAWN, 0);
|
Creature* Summ2 = m_creature->SummonCreature(16343, 7620.432129, -7532.550293, 152.454865, 0.827478, TEMPSUMMON_DEAD_DESPAWN, 0);
|
||||||
Summ1->Attack(m_creature, true);
|
if(Summ1 && Summ2)
|
||||||
Summ2->Attack(player, true);
|
{
|
||||||
|
Summ1->Attack(m_creature, true);
|
||||||
|
Summ2->Attack(player, true);
|
||||||
|
}
|
||||||
m_creature->AI()->AttackStart(Summ1);
|
m_creature->AI()->AttackStart(Summ1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -250,8 +250,8 @@ struct TRINITY_DLL_DECL boss_high_king_maulgarAI : public ScriptedAI
|
|||||||
//Whirlwind_Timer
|
//Whirlwind_Timer
|
||||||
if (Whirlwind_Timer < diff)
|
if (Whirlwind_Timer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_WHIRLWIND);
|
DoCast(m_creature->getVictim(), SPELL_WHIRLWIND);
|
||||||
Whirlwind_Timer = 55000;
|
Whirlwind_Timer = 55000;
|
||||||
}else Whirlwind_Timer -= diff;
|
}else Whirlwind_Timer -= diff;
|
||||||
|
|
||||||
//MightyBlow_Timer
|
//MightyBlow_Timer
|
||||||
@@ -280,18 +280,19 @@ struct TRINITY_DLL_DECL boss_high_king_maulgarAI : public ScriptedAI
|
|||||||
Unit* target = NULL;
|
Unit* target = NULL;
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
if (target)
|
if (target)
|
||||||
|
{
|
||||||
AttackStart(target);
|
AttackStart(target);
|
||||||
DoCast(target, SPELL_BERSERKER_C);
|
DoCast(target, SPELL_BERSERKER_C);
|
||||||
|
}
|
||||||
Charging_Timer = 20000;
|
Charging_Timer = 20000;
|
||||||
}else Charging_Timer -= diff;
|
}else Charging_Timer -= diff;
|
||||||
|
|
||||||
//Intimidating Roar
|
//Intimidating Roar
|
||||||
if(Roar_Timer < diff)
|
if(Roar_Timer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature, SPELL_ROAR);
|
DoCast(m_creature, SPELL_ROAR);
|
||||||
Roar_Timer = 40000+(rand()%10000);
|
Roar_Timer = 40000+(rand()%10000);
|
||||||
}else Roar_Timer -= diff;
|
}else Roar_Timer -= diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
@@ -316,7 +317,7 @@ struct TRINITY_DLL_DECL boss_olm_the_summonerAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
DarkDecay_Timer = 10000;
|
DarkDecay_Timer = 10000;
|
||||||
Summon_Timer = 15000;
|
Summon_Timer = 15000;
|
||||||
DeathCoil_Timer = 20000;
|
DeathCoil_Timer = 20000;
|
||||||
|
|
||||||
//reset encounter
|
//reset encounter
|
||||||
if (pInstance)
|
if (pInstance)
|
||||||
@@ -381,19 +382,19 @@ struct TRINITY_DLL_DECL boss_olm_the_summonerAI : public ScriptedAI
|
|||||||
//Summon_Timer
|
//Summon_Timer
|
||||||
if(Summon_Timer < diff)
|
if(Summon_Timer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature, SPELL_SUMMON_WFH);
|
DoCast(m_creature, SPELL_SUMMON_WFH);
|
||||||
Summon_Timer = 30000;
|
Summon_Timer = 30000;
|
||||||
}else Summon_Timer -= diff;
|
}else Summon_Timer -= diff;
|
||||||
|
|
||||||
//DeathCoil Timer /need correct timer
|
//DeathCoil Timer /need correct timer
|
||||||
if(DeathCoil_Timer < diff)
|
if(DeathCoil_Timer < diff)
|
||||||
{
|
{
|
||||||
Unit* target = NULL;
|
Unit* target = NULL;
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
if(target)
|
if(target)
|
||||||
DoCast(target, SPELL_DEATH_COIL);
|
DoCast(target, SPELL_DEATH_COIL);
|
||||||
DeathCoil_Timer = 20000;
|
DeathCoil_Timer = 20000;
|
||||||
}else DeathCoil_Timer -= diff;
|
}else DeathCoil_Timer -= diff;
|
||||||
|
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
@@ -445,9 +446,9 @@ struct TRINITY_DLL_DECL boss_kiggler_the_crazedAI : public ScriptedAI
|
|||||||
|
|
||||||
if(Maulgar)
|
if(Maulgar)
|
||||||
((boss_high_king_maulgarAI*)Maulgar->AI())->AddDeath();
|
((boss_high_king_maulgarAI*)Maulgar->AI())->AddDeath();
|
||||||
|
|
||||||
if(CheckAllBossDied(pInstance, m_creature))
|
if(CheckAllBossDied(pInstance, m_creature))
|
||||||
pInstance->SetData(DATA_MAULGAREVENT, DONE);
|
pInstance->SetData(DATA_MAULGAREVENT, DONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -553,7 +554,7 @@ struct TRINITY_DLL_DECL boss_blindeye_the_seerAI : public ScriptedAI
|
|||||||
|
|
||||||
if(Maulgar)
|
if(Maulgar)
|
||||||
((boss_high_king_maulgarAI*)Maulgar->AI())->AddDeath();
|
((boss_high_king_maulgarAI*)Maulgar->AI())->AddDeath();
|
||||||
|
|
||||||
if(CheckAllBossDied(pInstance, m_creature))
|
if(CheckAllBossDied(pInstance, m_creature))
|
||||||
pInstance->SetData(DATA_MAULGAREVENT, DONE);
|
pInstance->SetData(DATA_MAULGAREVENT, DONE);
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-2
@@ -308,9 +308,11 @@ struct TRINITY_DLL_DECL boss_vazruden_the_heraldAI : public ScriptedAI
|
|||||||
if(!summoned)
|
if(!summoned)
|
||||||
{
|
{
|
||||||
Creature* Vazruden = m_creature->SummonCreature(ENTRY_VAZRUDEN,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,6000000);
|
Creature* Vazruden = m_creature->SummonCreature(ENTRY_VAZRUDEN,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,6000000);
|
||||||
VazrudenGUID = Vazruden->GetGUID();
|
if(Vazruden)
|
||||||
|
VazrudenGUID = Vazruden->GetGUID();
|
||||||
Creature* Nazan = m_creature->SummonCreature(ENTRY_NAZAN,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,6000000);
|
Creature* Nazan = m_creature->SummonCreature(ENTRY_NAZAN,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,6000000);
|
||||||
NazanGUID = Nazan->GetGUID();
|
if(Nazan)
|
||||||
|
NazanGUID = Nazan->GetGUID();
|
||||||
summoned = true;
|
summoned = true;
|
||||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||||
m_creature->addUnitState(UNIT_STAT_ROOT);
|
m_creature->addUnitState(UNIT_STAT_ROOT);
|
||||||
@@ -391,6 +393,7 @@ struct TRINITY_DLL_DECL boss_vazruden_the_heraldAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
UnsummonAdds();
|
UnsummonAdds();
|
||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
|
|||||||
+1
@@ -280,6 +280,7 @@ struct TRINITY_DLL_DECL boss_warchief_kargath_bladefistAI : public ScriptedAI
|
|||||||
if (tempx > 255 || tempx < 205)
|
if (tempx > 255 || tempx < 205)
|
||||||
{
|
{
|
||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
resetcheck_timer = 5000;
|
resetcheck_timer = 5000;
|
||||||
}else resetcheck_timer -= diff;
|
}else resetcheck_timer -= diff;
|
||||||
|
|||||||
@@ -104,9 +104,6 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
|
|||||||
|
|
||||||
void StartEvent()
|
void StartEvent()
|
||||||
{
|
{
|
||||||
if(!pInstance)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if(pInstance)
|
if(pInstance)
|
||||||
pInstance->SetData(DATA_MOROES_EVENT, IN_PROGRESS);
|
pInstance->SetData(DATA_MOROES_EVENT, IN_PROGRESS);
|
||||||
}
|
}
|
||||||
@@ -266,7 +263,10 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if(pInstance && !pInstance->GetData(DATA_MOROES_EVENT))
|
if(pInstance && !pInstance->GetData(DATA_MOROES_EVENT))
|
||||||
|
{
|
||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(!Enrage && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 30)
|
if(!Enrage && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 30)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -117,7 +117,12 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||||
m_creature->RemoveCorpse();
|
m_creature->RemoveCorpse();
|
||||||
}else pInstance->SetData(DATA_NIGHTBANE_EVENT, NOT_STARTED);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(pInstance)
|
||||||
|
pInstance->SetData(DATA_NIGHTBANE_EVENT, NOT_STARTED);
|
||||||
|
}
|
||||||
|
|
||||||
HandleTerraceDoors(true);
|
HandleTerraceDoors(true);
|
||||||
|
|
||||||
|
|||||||
@@ -293,6 +293,7 @@ struct TRINITY_DLL_DECL npc_barnesAI : public npc_escortAI
|
|||||||
{
|
{
|
||||||
RaidWiped = true;
|
RaidWiped = true;
|
||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
WipeTimer = 15000;
|
WipeTimer = 15000;
|
||||||
@@ -533,6 +534,8 @@ struct TRINITY_DLL_DECL npc_image_of_medivhAI : public ScriptedAI
|
|||||||
Step = 1;
|
Step = 1;
|
||||||
EventStarted = true;
|
EventStarted = true;
|
||||||
Creature* Arcanagos = m_creature->SummonCreature(MOB_ARCANAGOS,ArcanagosPos[0],ArcanagosPos[1],ArcanagosPos[2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
Creature* Arcanagos = m_creature->SummonCreature(MOB_ARCANAGOS,ArcanagosPos[0],ArcanagosPos[1],ArcanagosPos[2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||||
|
if(!Arcanagos)
|
||||||
|
return;
|
||||||
ArcanagosGUID = Arcanagos->GetGUID();
|
ArcanagosGUID = Arcanagos->GetGUID();
|
||||||
Arcanagos->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
Arcanagos->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
||||||
(*Arcanagos).GetMotionMaster()->MovePoint(0,ArcanagosPos[0],ArcanagosPos[1],ArcanagosPos[2]);
|
(*Arcanagos).GetMotionMaster()->MovePoint(0,ArcanagosPos[0],ArcanagosPos[1],ArcanagosPos[2]);
|
||||||
|
|||||||
@@ -159,6 +159,7 @@ struct TRINITY_DLL_DECL boss_vexallusAI : public ScriptedAI
|
|||||||
if (ArcaneShockTimer < diff)
|
if (ArcaneShockTimer < diff)
|
||||||
{
|
{
|
||||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||||
|
if(target)
|
||||||
DoCast(target, SPELL_ARCANE_SHOCK);
|
DoCast(target, SPELL_ARCANE_SHOCK);
|
||||||
|
|
||||||
ArcaneShockTimer = 8000;
|
ArcaneShockTimer = 8000;
|
||||||
|
|||||||
@@ -65,10 +65,10 @@ struct TRINITY_DLL_DECL boss_golemaggAI : public ScriptedAI
|
|||||||
|
|
||||||
void JustDied(Unit* Killer)
|
void JustDied(Unit* Killer)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(pInstance)
|
if(pInstance)
|
||||||
pInstance->SetData(DATA_GOLEMAGG_DEATH, 0);
|
pInstance->SetData(DATA_GOLEMAGG_DEATH, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
|
|||||||
@@ -224,9 +224,12 @@ struct TRINITY_DLL_DECL boss_ragnarosAI : public Scripted_NoMovementAI
|
|||||||
for(int i = 0; i < 9;i++)
|
for(int i = 0; i < 9;i++)
|
||||||
{
|
{
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||||
Summoned = m_creature->SummonCreature(12143,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000);
|
if(target)
|
||||||
if (Summoned)
|
{
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
Summoned = m_creature->SummonCreature(12143,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000);
|
||||||
|
if(Summoned)
|
||||||
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HasSubmergedOnce = true;
|
HasSubmergedOnce = true;
|
||||||
@@ -242,9 +245,12 @@ struct TRINITY_DLL_DECL boss_ragnarosAI : public Scripted_NoMovementAI
|
|||||||
for(int i = 0; i < 9;i++)
|
for(int i = 0; i < 9;i++)
|
||||||
{
|
{
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||||
Summoned = m_creature->SummonCreature(12143,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000);
|
if(target)
|
||||||
if (Summoned)
|
{
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
Summoned = m_creature->SummonCreature(12143,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000);
|
||||||
|
if(Summoned)
|
||||||
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WasBanished = true;
|
WasBanished = true;
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ struct TRINITY_DLL_DECL npc_kyle_frenziedAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
Unit *plr = Unit::GetUnit((*m_creature),player);
|
Unit *plr = Unit::GetUnit((*m_creature),player);
|
||||||
if(plr)
|
if(plr)
|
||||||
m_creature->SetOrientation(m_creature->GetAngle(plr));
|
m_creature->SetOrientation(m_creature->GetAngle(plr));
|
||||||
m_creature->HandleEmoteCommand(EMOTE_STATE_USESTANDING); //eat
|
m_creature->HandleEmoteCommand(EMOTE_STATE_USESTANDING); //eat
|
||||||
WorldPacket data;
|
WorldPacket data;
|
||||||
m_creature->BuildHeartBeatMsg(&data);
|
m_creature->BuildHeartBeatMsg(&data);
|
||||||
|
|||||||
@@ -157,6 +157,7 @@ struct TRINITY_DLL_DECL mob_lumpAI : public ScriptedAI
|
|||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
bReset = false;
|
bReset = false;
|
||||||
m_creature->setFaction(1711); //hostile
|
m_creature->setFaction(1711); //hostile
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else Reset_Timer -= diff;
|
else Reset_Timer -= diff;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,66 +77,7 @@ I also don't know the emotes
|
|||||||
|
|
||||||
//common needed defines
|
//common needed defines
|
||||||
#define NAXXRAMAS_MAP 533
|
#define NAXXRAMAS_MAP 533
|
||||||
//Positional defines
|
//Positional defines
|
||||||
#define ADDX_LEFT_FAR 3783.272705
|
|
||||||
#define ADDY_LEFT_FAR -5062.697266
|
|
||||||
#define ADDZ_LEFT_FAR 143.711203
|
|
||||||
#define ADDO_LEFT_FAR 3.617599
|
|
||||||
|
|
||||||
#define ADDX_LEFT_MIDDLE 3730.291260
|
|
||||||
#define ADDY_LEFT_MIDDLE -5027.239258
|
|
||||||
#define ADDZ_LEFT_MIDDLE 143.956909
|
|
||||||
#define ADDO_LEFT_MIDDLE 4.461900
|
|
||||||
|
|
||||||
#define ADDX_LEFT_NEAR 3683.868652
|
|
||||||
#define ADDY_LEFT_NEAR -5057.281250
|
|
||||||
#define ADDZ_LEFT_NEAR 143.183884
|
|
||||||
#define ADDO_LEFT_NEAR 5.237086
|
|
||||||
|
|
||||||
#define ADDX_RIGHT_FAR 3759.355225
|
|
||||||
#define ADDY_RIGHT_FAR -5174.128418
|
|
||||||
#define ADDZ_RIGHT_FAR 143.802383
|
|
||||||
#define ADDO_RIGHT_FAR 2.170104
|
|
||||||
|
|
||||||
#define ADDX_RIGHT_MIDDLE 370.724365
|
|
||||||
#define ADDY_RIGHT_MIDDLE -5185.123047
|
|
||||||
#define ADDZ_RIGHT_MIDDLE 143.928024
|
|
||||||
#define ADDO_RIGHT_MIDDLE 1.309310
|
|
||||||
|
|
||||||
#define ADDX_RIGHT_NEAR 3665.121094
|
|
||||||
#define ADDY_RIGHT_NEAR -5138.679199
|
|
||||||
#define ADDZ_RIGHT_NEAR 143.183212
|
|
||||||
#define ADDO_RIGHT_NEAR 0.604023
|
|
||||||
|
|
||||||
#define WALKX_LEFT_FAR 3754.431396
|
|
||||||
#define WALKY_LEFT_FAR -5080.727734
|
|
||||||
#define WALKZ_LEFT_FAR 142.036316
|
|
||||||
#define WALKO_LEFT_FAR 3.736189
|
|
||||||
|
|
||||||
#define WALKX_LEFT_MIDDLE 3724.396484
|
|
||||||
#define WALKY_LEFT_MIDDLE -5061.330566
|
|
||||||
#define WALKZ_LEFT_MIDDLE 142.032700
|
|
||||||
#define WALKO_LEFT_MIDDLE 4.564785
|
|
||||||
|
|
||||||
#define WALKX_LEFT_NEAR 3687.158424
|
|
||||||
#define WALKY_LEFT_NEAR -5076.834473
|
|
||||||
#define WALKZ_LEFT_NEAR 142.017319
|
|
||||||
#define WALKO_LEFT_NEAR 5.237086
|
|
||||||
|
|
||||||
#define WALKX_RIGHT_FAR 3687.571777
|
|
||||||
#define WALKY_RIGHT_FAR -5126.831055
|
|
||||||
#define WALKZ_RIGHT_FAR 142.017807
|
|
||||||
#define WALKO_RIGHT_FAR 0.604023
|
|
||||||
|
|
||||||
#define WALKX_RIGHT_MIDDLE 3707.990733
|
|
||||||
#define WALKY_RIGHT_MIDDLE -5151.450195
|
|
||||||
#define WALKZ_RIGHT_MIDDLE 142.032562
|
|
||||||
#define WALKO_RIGHT_MIDDLE 1.376855
|
|
||||||
|
|
||||||
#define WALKX_RIGHT_NEAR 3739.500000
|
|
||||||
#define WALKY_RIGHT_NEAR -5141.883989
|
|
||||||
#define WALKZ_RIGHT_NEAR 142.0141130
|
|
||||||
#define WALKO_RIGHT_NEAR 2.121412
|
|
||||||
|
|
||||||
//spells to be casted
|
//spells to be casted
|
||||||
#define SPELL_FROST_BOLT 28478
|
#define SPELL_FROST_BOLT 28478
|
||||||
@@ -149,6 +90,31 @@ I also don't know the emotes
|
|||||||
#define SPELL_SHADOW_FISURE 27810
|
#define SPELL_SHADOW_FISURE 27810
|
||||||
#define SPELL_FROST_BLAST 27808
|
#define SPELL_FROST_BLAST 27808
|
||||||
|
|
||||||
|
#define NORMAL_RAID 10
|
||||||
|
|
||||||
|
//creature needed summoned
|
||||||
|
#define MOB_SUMMON_WASTE 16427 //Soldiers of the Frozen Wastes
|
||||||
|
#define MOB_SUMMON_ABOMINATION 16428 //Unstoppable Abominations
|
||||||
|
#define MOB_SUMMON_WEAVER 16429//Soul Weavers
|
||||||
|
#define MOB_SUMMON_FISSURE 16129 // Shadow Fissure
|
||||||
|
#define MOB_SUMMON_ICECROWN 16441// Guardians of Icecrown
|
||||||
|
|
||||||
|
float Pos[12][4] =
|
||||||
|
{
|
||||||
|
{3783.272705, -5062.697266, 143.711203,3.617599},//LEFT_FAR
|
||||||
|
{3730.291260, -5027.239258,143.956909,4.461900},//LEFT_MIDDLE
|
||||||
|
{3683.868652,-5057.281250,143.183884,5.237086},//LEFT_NEAR
|
||||||
|
{3759.355225,-5174.128418,143.802383,2.170104},//RIGHT_FAR
|
||||||
|
{370.724365,-5185.123047,143.928024,1.309310},//RIGHT_MIDDLE
|
||||||
|
{3665.121094,-5138.679199,143.183212,0.604023},//RIGHT_NEAR
|
||||||
|
{3754.431396,-5080.727734,142.036316,3.736189},//LEFT_FAR
|
||||||
|
{3724.396484, -5061.330566,142.032700, 4.564785},//LEFT_MIDDLE
|
||||||
|
{3687.158424,-5076.834473,142.017319,5.237086},//LEFT_NEAR
|
||||||
|
{3687.571777,-5126.831055,142.017807,0.604023},//RIGHT_FAR
|
||||||
|
{3707.990733,-5151.450195,142.032562,1.376855},//RIGHT_MIDDLE
|
||||||
|
{3739.500000,-5141.883989,142.0141130, 2.121412}//RIGHT_NEAR
|
||||||
|
};
|
||||||
|
|
||||||
struct TRINITY_DLL_DECL boss_kelthuzadAI : public ScriptedAI
|
struct TRINITY_DLL_DECL boss_kelthuzadAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
boss_kelthuzadAI(Creature* c) : ScriptedAI(c)
|
boss_kelthuzadAI(Creature* c) : ScriptedAI(c)
|
||||||
@@ -164,20 +130,30 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public ScriptedAI
|
|||||||
uint64 GuardiansOfIcecrown[5];
|
uint64 GuardiansOfIcecrown[5];
|
||||||
uint32 GuardiansOfIcecrown_Count;
|
uint32 GuardiansOfIcecrown_Count;
|
||||||
uint32 GuardiansOfIcecrown_Timer;
|
uint32 GuardiansOfIcecrown_Timer;
|
||||||
|
|
||||||
|
//phase==1 summon_timer
|
||||||
|
uint32 SummonWasters_Timer;
|
||||||
|
uint32 SummonAbominations_Timer;
|
||||||
|
uint32 SummonAWeavers_Timer;
|
||||||
|
|
||||||
|
//phase==2,spell_timer
|
||||||
uint32 FrostBolt_Timer;
|
uint32 FrostBolt_Timer;
|
||||||
uint32 FrostBoltNova_Timer;
|
uint32 FrostBoltNova_Timer;
|
||||||
uint32 ChainsOfKelthuzad_Timer;
|
uint32 ChainsOfKelthuzad_Timer;
|
||||||
uint32 ManaDetonation_Timer;
|
uint32 ManaDetonation_Timer;
|
||||||
uint32 ShadowFisure_Timer;
|
uint32 ShadowFisure_Timer;
|
||||||
uint32 FrostBlast_Timer;
|
uint32 FrostBlast_Timer;
|
||||||
uint32 ChainsOfKelthuzad_Targets;
|
|
||||||
uint32 Phase1_Timer;
|
uint32 Phase1_Timer;
|
||||||
bool Phase2;
|
uint32 Phase;
|
||||||
bool Phase3;
|
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
FrostBolt_Timer = (rand()%60)*1000; //It won't be more than a minute without cast it
|
SummonWasters_Timer=3000; // 3s summon waster
|
||||||
|
SummonAbominations_Timer=25000; //25s summon abomination
|
||||||
|
SummonAWeavers_Timer=20000; //20s summon Weavers
|
||||||
|
|
||||||
|
FrostBolt_Timer = 2000; //2s CD
|
||||||
FrostBoltNova_Timer = 15000; //Cast every 15 seconds
|
FrostBoltNova_Timer = 15000; //Cast every 15 seconds
|
||||||
ChainsOfKelthuzad_Timer = (rand()%30+30)*1000; //Cast no sooner than once every 30 seconds
|
ChainsOfKelthuzad_Timer = (rand()%30+30)*1000; //Cast no sooner than once every 30 seconds
|
||||||
ManaDetonation_Timer = 20000; //Seems to cast about every 20 seconds
|
ManaDetonation_Timer = 20000; //Seems to cast about every 20 seconds
|
||||||
@@ -188,18 +164,17 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public ScriptedAI
|
|||||||
for(int i=0; i<5; i++)
|
for(int i=0; i<5; i++)
|
||||||
{
|
{
|
||||||
if(GuardiansOfIcecrown[i])
|
if(GuardiansOfIcecrown[i])
|
||||||
{
|
{
|
||||||
//delete creature
|
//delete creature
|
||||||
Unit* pUnit = Unit::GetUnit((*m_creature), GuardiansOfIcecrown[i]);
|
Unit* pUnit = Unit::GetUnit((*m_creature), GuardiansOfIcecrown[i]);
|
||||||
if (pUnit && pUnit->isAlive())
|
if (pUnit && pUnit->isAlive())
|
||||||
pUnit->DealDamage(pUnit, pUnit->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
pUnit->DealDamage(pUnit, pUnit->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||||
GuardiansOfIcecrown[i] = 0;
|
GuardiansOfIcecrown[i] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Phase1_Timer = 310000; //Phase 1 lasts 5 minutes and 10 seconds
|
Phase1_Timer = 228000; //Phase 1 lasts 3 minutes and 48 seconds
|
||||||
Phase2 = false;
|
Phase=0;
|
||||||
Phase3 = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void KilledUnit()
|
void KilledUnit()
|
||||||
@@ -213,52 +188,7 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public ScriptedAI
|
|||||||
void JustDied(Unit* Killer)
|
void JustDied(Unit* Killer)
|
||||||
{
|
{
|
||||||
DoScriptText(SAY_DEATH, m_creature);
|
DoScriptText(SAY_DEATH, m_creature);
|
||||||
for(int i=0; i<5; i++)
|
|
||||||
if(GuardiansOfIcecrown[i])
|
|
||||||
{
|
|
||||||
Unit* pUnit = Unit::GetUnit((*m_creature), GuardiansOfIcecrown[i]);
|
|
||||||
if (!pUnit || !pUnit->isAlive())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
pUnit->CombatStop();
|
|
||||||
float Walk_Pos_X;
|
|
||||||
float Walk_Pos_Y;
|
|
||||||
float Walk_Pos_Z;
|
|
||||||
switch(rand()%6)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
Walk_Pos_X = ADDX_LEFT_FAR;
|
|
||||||
Walk_Pos_Y = ADDY_LEFT_FAR;
|
|
||||||
Walk_Pos_Z = ADDZ_LEFT_FAR;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
Walk_Pos_X = ADDX_LEFT_MIDDLE;
|
|
||||||
Walk_Pos_Y = ADDY_LEFT_MIDDLE;
|
|
||||||
Walk_Pos_Z = ADDZ_LEFT_MIDDLE;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
Walk_Pos_X = ADDX_LEFT_NEAR;
|
|
||||||
Walk_Pos_Y = ADDY_LEFT_NEAR;
|
|
||||||
Walk_Pos_Z = ADDZ_LEFT_NEAR;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
Walk_Pos_X = ADDX_RIGHT_FAR;
|
|
||||||
Walk_Pos_Y = ADDY_RIGHT_FAR;
|
|
||||||
Walk_Pos_Z = ADDZ_RIGHT_FAR;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
Walk_Pos_X = ADDX_RIGHT_MIDDLE;
|
|
||||||
Walk_Pos_Y = ADDY_RIGHT_MIDDLE;
|
|
||||||
Walk_Pos_Z = ADDZ_RIGHT_MIDDLE;
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
Walk_Pos_X = ADDX_RIGHT_NEAR;
|
|
||||||
Walk_Pos_Y = ADDY_RIGHT_NEAR;
|
|
||||||
Walk_Pos_Z = ADDZ_RIGHT_NEAR;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
pUnit->SendMonsterMoveWithSpeed(Walk_Pos_X, Walk_Pos_Y, Walk_Pos_Z);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit* who)
|
void EnterCombat(Unit* who)
|
||||||
@@ -269,21 +199,103 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public ScriptedAI
|
|||||||
case 1: DoScriptText(SAY_AGGRO2, m_creature); break;
|
case 1: DoScriptText(SAY_AGGRO2, m_creature); break;
|
||||||
case 2: DoScriptText(SAY_AGGRO3, m_creature); break;
|
case 2: DoScriptText(SAY_AGGRO3, m_creature); break;
|
||||||
}
|
}
|
||||||
|
Phase=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
return;
|
return;
|
||||||
|
if (Phase1_Timer<diff && Phase==1)
|
||||||
if(m_creature->getVictim() && m_creature->isAlive())
|
|
||||||
{
|
{
|
||||||
|
Phase=2;
|
||||||
|
}else Phase1_Timer-=diff;
|
||||||
|
|
||||||
|
if(Phase == 1)
|
||||||
|
{
|
||||||
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
|
EnterEvadeMode();
|
||||||
|
//SummonWasters_Timer at far positon
|
||||||
|
if ( SummonWasters_Timer< diff)
|
||||||
|
{
|
||||||
|
|
||||||
|
Creature *Waster = NULL;
|
||||||
|
switch(rand()%4)
|
||||||
|
{
|
||||||
|
case 0: Waster = m_creature->SummonCreature(MOB_SUMMON_WASTE,Pos[0][0], Pos[0][1], Pos[0][2], Pos[0][3], TEMPSUMMON_CORPSE_DESPAWN, 0); break;
|
||||||
|
case 1: Waster = m_creature->SummonCreature(MOB_SUMMON_WASTE,Pos[3][0], Pos[3][1], Pos[3][2], Pos[3][3], TEMPSUMMON_CORPSE_DESPAWN, 0); break;
|
||||||
|
case 2: Waster = m_creature->SummonCreature(MOB_SUMMON_WASTE,Pos[6][0], Pos[6][1], Pos[6][2], Pos[6][3], TEMPSUMMON_CORPSE_DESPAWN, 0); break;
|
||||||
|
case 3: Waster = m_creature->SummonCreature(MOB_SUMMON_WASTE,Pos[9][0], Pos[9][1], Pos[9][2], Pos[9][3], TEMPSUMMON_CORPSE_DESPAWN, 0); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Waster)
|
||||||
|
{
|
||||||
|
Unit *target = NULL;
|
||||||
|
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
|
if(target)
|
||||||
|
Waster->AI()->AttackStart(target);
|
||||||
|
}
|
||||||
|
SummonWasters_Timer=3000;
|
||||||
|
}else SummonWasters_Timer-=diff;
|
||||||
|
|
||||||
|
//MOB_SUMMON_ABOMINATION at middle positon
|
||||||
|
if ( SummonAbominations_Timer< diff)
|
||||||
|
{
|
||||||
|
|
||||||
|
Creature *Abominations = NULL;
|
||||||
|
switch(rand()%4)
|
||||||
|
{
|
||||||
|
case 0: Abominations = m_creature->SummonCreature(MOB_SUMMON_ABOMINATION,Pos[1][0], Pos[1][1], Pos[1][2], Pos[1][3], TEMPSUMMON_CORPSE_DESPAWN, 0); break;
|
||||||
|
case 1: Abominations = m_creature->SummonCreature(MOB_SUMMON_ABOMINATION,Pos[4][0], Pos[4][1], Pos[4][2], Pos[4][3], TEMPSUMMON_CORPSE_DESPAWN, 0); break;
|
||||||
|
case 2: Abominations = m_creature->SummonCreature(MOB_SUMMON_ABOMINATION,Pos[7][0], Pos[7][1], Pos[7][2], Pos[7][3], TEMPSUMMON_CORPSE_DESPAWN, 0); break;
|
||||||
|
case 3: Abominations = m_creature->SummonCreature(MOB_SUMMON_ABOMINATION,Pos[10][0], Pos[10][1], Pos[10][2], Pos[10][3], TEMPSUMMON_CORPSE_DESPAWN, 0); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Abominations)
|
||||||
|
{
|
||||||
|
Unit *target = NULL;
|
||||||
|
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
|
if(target)
|
||||||
|
Abominations->AI()->AttackStart(target);
|
||||||
|
}
|
||||||
|
SummonAbominations_Timer=25000;
|
||||||
|
}else SummonAbominations_Timer-=diff;
|
||||||
|
|
||||||
|
//SummonAWeavers_Timer at far positon
|
||||||
|
if ( SummonAWeavers_Timer< diff)
|
||||||
|
{
|
||||||
|
|
||||||
|
Creature *Weavers = NULL;
|
||||||
|
switch(rand()%4)
|
||||||
|
{
|
||||||
|
case 0: Weavers = m_creature->SummonCreature(MOB_SUMMON_WEAVER,Pos[0][0], Pos[0][1], Pos[0][2], Pos[0][3], TEMPSUMMON_CORPSE_DESPAWN, 0); break;
|
||||||
|
case 1: Weavers = m_creature->SummonCreature(MOB_SUMMON_WEAVER,Pos[3][0], Pos[3][1], Pos[3][2], Pos[3][3], TEMPSUMMON_CORPSE_DESPAWN, 0); break;
|
||||||
|
case 2: Weavers = m_creature->SummonCreature(MOB_SUMMON_WEAVER,Pos[6][0], Pos[6][1], Pos[6][2], Pos[6][3], TEMPSUMMON_CORPSE_DESPAWN, 0); break;
|
||||||
|
case 3: Weavers = m_creature->SummonCreature(MOB_SUMMON_WEAVER,Pos[9][0], Pos[9][1], Pos[9][2], Pos[9][3], TEMPSUMMON_CORPSE_DESPAWN, 0); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Weavers)
|
||||||
|
{
|
||||||
|
Unit *target = NULL;
|
||||||
|
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
|
if(target)
|
||||||
|
Weavers->AI()->AttackStart(target);
|
||||||
|
}
|
||||||
|
SummonAWeavers_Timer=30000;
|
||||||
|
}else SummonAWeavers_Timer-=diff;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if( Phase!=1 && m_creature->getVictim() && m_creature->isAlive())
|
||||||
|
{
|
||||||
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
|
|
||||||
//Check for Frost Bolt
|
//Check for Frost Bolt
|
||||||
if(FrostBolt_Timer < diff)
|
if(FrostBolt_Timer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(),SPELL_FROST_BOLT);
|
DoCast(m_creature->getVictim(),SPELL_FROST_BOLT);
|
||||||
//Cast again on time
|
//Cast again on time
|
||||||
FrostBolt_Timer = (rand()%60)*1000;
|
FrostBolt_Timer = 2000;
|
||||||
}else FrostBolt_Timer -= diff;
|
}else FrostBolt_Timer -= diff;
|
||||||
|
|
||||||
//Check for Frost Bolt Nova
|
//Check for Frost Bolt Nova
|
||||||
@@ -293,135 +305,135 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public ScriptedAI
|
|||||||
FrostBoltNova_Timer = 15000;
|
FrostBoltNova_Timer = 15000;
|
||||||
}else FrostBoltNova_Timer -= diff;
|
}else FrostBoltNova_Timer -= diff;
|
||||||
|
|
||||||
//Check for Chains Of Kelthuzad
|
//Cast Chains Of Kelthuzad only on the Heroic instance
|
||||||
|
/*
|
||||||
if(ChainsOfKelthuzad_Timer < diff)
|
if(ChainsOfKelthuzad_Timer < diff)
|
||||||
{
|
{
|
||||||
//DoCast(m_creature->getVictim(),SPELL_CHAINS_OF_KELTHUZAD);
|
//DoCast(m_creature->getVictim(),SPELL_CHAINS_OF_KELTHUZAD);
|
||||||
|
|
||||||
//if(rand()%2 == 0)
|
//if(rand()%2 == 0)
|
||||||
//DoScriptText(SAY_CHAIN1, m_creature);
|
//DoScriptText(SAY_CHAIN1, m_creature);
|
||||||
//else
|
//else
|
||||||
//DoScriptText(SAY_CHAIN2, m_creature);
|
//DoScriptText(SAY_CHAIN2, m_creature);
|
||||||
ChainsOfKelthuzad_Timer = (rand()%30+30)*1000;
|
ChainsOfKelthuzad_Timer = (rand()%30+30)*1000;
|
||||||
}else ChainsOfKelthuzad_Timer -= diff;
|
}else ChainsOfKelthuzad_Timer -= diff;
|
||||||
|
*/
|
||||||
|
|
||||||
//Check for Mana Detonation
|
//Check for Mana Detonation
|
||||||
if(ManaDetonation_Timer < diff)
|
if(ManaDetonation_Timer < diff)
|
||||||
{
|
{
|
||||||
//time to cast
|
Unit* target;
|
||||||
DoCast(m_creature->getVictim(),SPELL_MANA_DETONATION);
|
//select a manaplayer during 10 raid ,how to make sure we can succed in finding a manaplayer or it's safty if there is no manaplayer in raid
|
||||||
|
for(uint8 i = 0; i <NORMAL_RAID; i++)
|
||||||
if (rand()%2)
|
{
|
||||||
DoScriptText(SAY_SPECIAL1_MANA_DET, m_creature);
|
if (target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
|
{
|
||||||
|
//check if the target is a manaplayer
|
||||||
|
if ( ((Player*)target)->getPowerType()==POWER_MANA )
|
||||||
|
{
|
||||||
|
// if yes cast the SPELL_MANA_DETONATION
|
||||||
|
DoCast(m_creature->getVictim(),SPELL_MANA_DETONATION);
|
||||||
|
//Obviously the damage of this spell would be invalidation
|
||||||
|
break;
|
||||||
|
//exit the circle
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (rand()%2)
|
||||||
|
DoScriptText(SAY_SPECIAL1_MANA_DET, m_creature);
|
||||||
ManaDetonation_Timer = 20000;
|
ManaDetonation_Timer = 20000;
|
||||||
}else ManaDetonation_Timer -= diff;
|
}else ManaDetonation_Timer -= diff;
|
||||||
|
|
||||||
//Check for Shadow Fissure
|
//Summons a Shadow Fissure underneath a random player.
|
||||||
|
//The fissure will stay inactive for about 3 seconds, after which it will become a beam of purple energy,
|
||||||
|
//instantly killing the player if they remain in it.
|
||||||
|
|
||||||
if(ShadowFisure_Timer < diff)
|
if(ShadowFisure_Timer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(),SPELL_SHADOW_FISURE);
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
|
{
|
||||||
|
//get the position of the target x,y,z,ang.
|
||||||
|
float x,y,z,ang;
|
||||||
|
x=target->GetPositionX();
|
||||||
|
y=target->GetPositionY();
|
||||||
|
z=target->GetPositionZ();
|
||||||
|
ang=target->GetOrientation();
|
||||||
|
//summon the MOB_SUMMON_FISSURE at this positon
|
||||||
|
Creature *Fissure= m_creature->SummonCreature(MOB_SUMMON_FISSURE,x,y,z,ang, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||||
|
if(Fissure)
|
||||||
|
{
|
||||||
|
DoCast(target,SPELL_SHADOW_FISURE);
|
||||||
|
Fissure->AI()->AttackStart(target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (rand()%2)
|
if (rand()%2)
|
||||||
DoScriptText(SAY_SPECIAL3_MANA_DET, m_creature);
|
DoScriptText(SAY_SPECIAL3_MANA_DET, m_creature);
|
||||||
ShadowFisure_Timer = 25000;
|
ShadowFisure_Timer = 25000;
|
||||||
}else ShadowFisure_Timer -= diff;
|
}else ShadowFisure_Timer -= diff;
|
||||||
|
|
||||||
//Check for Frost Blast
|
//cast Frost Blast to a random player
|
||||||
if(FrostBlast_Timer < diff)
|
if(FrostBlast_Timer < diff)
|
||||||
{
|
{
|
||||||
//time to cast
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
DoCast(m_creature->getVictim(),SPELL_FROST_BLAST);
|
{
|
||||||
|
DoCast(target,SPELL_FROST_BLAST);
|
||||||
|
//obviously the spell doesn't work like the description
|
||||||
|
//So, we need script this spell?
|
||||||
|
}
|
||||||
if(rand()%2 == 0)
|
if(rand()%2 == 0)
|
||||||
DoScriptText(SAY_FROST_BLAST, m_creature);
|
DoScriptText(SAY_FROST_BLAST, m_creature);
|
||||||
FrostBlast_Timer = (rand()%30+30)*1000;
|
FrostBlast_Timer = (rand()%30+30)*1000;
|
||||||
}else FrostBlast_Timer -= diff;
|
}else FrostBlast_Timer -= diff;
|
||||||
|
|
||||||
//start phase 3 when we are 40% health
|
//start phase 3 when we are 40% health
|
||||||
if(!Phase3 && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 40)
|
if( Phase!=3 && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 40)
|
||||||
{
|
{
|
||||||
Phase3 = true;
|
Phase = 3 ;
|
||||||
DoScriptText(SAY_REQUEST_AID, m_creature);
|
DoScriptText(SAY_REQUEST_AID, m_creature);
|
||||||
//here Lich King should respond to KelThuzad but I don't know which creature to make talk
|
//here Lich King should respond to KelThuzad but I don't know which creature to make talk
|
||||||
//so for now just make Kelthuzad says it.
|
//so for now just make Kelthuzad says it.
|
||||||
DoScriptText(SAY_ANSWER_REQUEST, m_creature);
|
DoScriptText(SAY_ANSWER_REQUEST, m_creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Phase3 && (GuardiansOfIcecrown_Count < 5))
|
if(Phase==3 && (GuardiansOfIcecrown_Count < 2)) //in normal raid ,only two Icecrown
|
||||||
if(GuardiansOfIcecrown_Timer < diff)
|
if(GuardiansOfIcecrown_Timer < diff)
|
||||||
{
|
|
||||||
//Summon a Guardian of Icecrown in a random alcove (Creature # 16441)
|
|
||||||
//uint32 TimeToWalk;
|
|
||||||
Unit* pUnit = NULL;
|
|
||||||
float Walk_Pos_X;
|
|
||||||
float Walk_Pos_Y;
|
|
||||||
float Walk_Pos_Z;
|
|
||||||
switch(rand()%6)
|
|
||||||
{
|
{
|
||||||
|
//Summon a Guardian of Icecrown in a random alcove
|
||||||
|
TempSummon* pUnit = NULL;
|
||||||
|
switch(rand()%3)
|
||||||
|
{
|
||||||
case 0:
|
case 0:
|
||||||
pUnit = m_creature->SummonCreature(16441,ADDX_LEFT_FAR,ADDY_LEFT_FAR,ADDZ_LEFT_FAR,ADDO_LEFT_FAR,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,1000);
|
pUnit = m_creature->SummonCreature(MOB_SUMMON_ICECROWN,Pos[2][0],Pos[2][1],Pos[2][2],Pos[2][3],TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,1000);
|
||||||
//Setting walk position
|
|
||||||
Walk_Pos_X = WALKX_LEFT_FAR;
|
|
||||||
Walk_Pos_Y = WALKY_LEFT_FAR;
|
|
||||||
Walk_Pos_Z = WALKZ_LEFT_FAR;
|
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
pUnit = m_creature->SummonCreature(16441,ADDX_LEFT_MIDDLE,ADDY_LEFT_MIDDLE,ADDZ_LEFT_MIDDLE,ADDO_LEFT_MIDDLE,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,1000);
|
pUnit = m_creature->SummonCreature(MOB_SUMMON_ICECROWN,Pos[5][0],Pos[5][1],Pos[5][2],Pos[5][3],TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,1000);
|
||||||
//Start moving guardian towards the center of the room
|
|
||||||
Walk_Pos_X = WALKX_LEFT_MIDDLE;
|
|
||||||
Walk_Pos_Y = WALKY_LEFT_MIDDLE;
|
|
||||||
Walk_Pos_Z = WALKZ_LEFT_MIDDLE;
|
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
pUnit = m_creature->SummonCreature(16441,ADDX_LEFT_NEAR,ADDY_LEFT_NEAR,ADDZ_LEFT_NEAR,ADDO_LEFT_NEAR,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,1000);
|
pUnit = m_creature->SummonCreature(MOB_SUMMON_ICECROWN,Pos[8][0],Pos[8][1],Pos[8][2],Pos[8][3],TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,1000);
|
||||||
//Start moving guardian towards the center of the room
|
break;
|
||||||
Walk_Pos_X = WALKX_LEFT_NEAR;
|
}
|
||||||
Walk_Pos_Y = WALKY_LEFT_NEAR;
|
|
||||||
Walk_Pos_Z = WALKZ_LEFT_NEAR;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
|
|
||||||
pUnit = m_creature->SummonCreature(16441,ADDX_RIGHT_FAR,ADDY_RIGHT_FAR,ADDZ_RIGHT_FAR,ADDO_RIGHT_FAR,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,1000);
|
if (pUnit)
|
||||||
//Start moving guardian towards the center of the room
|
{
|
||||||
Walk_Pos_X = WALKX_RIGHT_FAR;
|
|
||||||
Walk_Pos_Y = WALKY_RIGHT_FAR;
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
Walk_Pos_Z = WALKZ_RIGHT_FAR;
|
{
|
||||||
break;
|
pUnit->AI()->AttackStart(target);
|
||||||
case 4:
|
}
|
||||||
pUnit = m_creature->SummonCreature(16441,ADDX_RIGHT_MIDDLE,ADDY_RIGHT_MIDDLE,ADDZ_RIGHT_MIDDLE,ADDO_RIGHT_MIDDLE,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,1000);
|
//Safe storing of creatures
|
||||||
//Start moving guardian towards the center of the room
|
GuardiansOfIcecrown[GuardiansOfIcecrown_Count] = pUnit->GetGUID();
|
||||||
Walk_Pos_X = WALKX_RIGHT_MIDDLE;
|
|
||||||
Walk_Pos_Y = WALKY_RIGHT_MIDDLE;
|
//Update guardian count
|
||||||
Walk_Pos_Z = WALKZ_RIGHT_MIDDLE;
|
GuardiansOfIcecrown_Count++;
|
||||||
break;
|
|
||||||
case 5:
|
}
|
||||||
pUnit = m_creature->SummonCreature(16441,ADDX_RIGHT_NEAR,ADDY_RIGHT_NEAR,ADDZ_RIGHT_NEAR,ADDO_RIGHT_NEAR,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,1000);
|
//5 seconds until summoning next guardian
|
||||||
//Start moving guardian towards the center of the room
|
GuardiansOfIcecrown_Timer = 5000;
|
||||||
Walk_Pos_X = WALKX_RIGHT_NEAR;
|
|
||||||
Walk_Pos_Y = WALKY_RIGHT_NEAR;
|
|
||||||
Walk_Pos_Z = WALKZ_RIGHT_NEAR;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
else GuardiansOfIcecrown_Timer -= diff;
|
||||||
|
|
||||||
if (pUnit)
|
DoMeleeAttackIfReady();
|
||||||
{
|
|
||||||
//if we find no one to figth walk to the center
|
|
||||||
if(!pUnit->isInCombat())
|
|
||||||
pUnit->SendMonsterMoveWithSpeed(Walk_Pos_X,Walk_Pos_Y,Walk_Pos_Z);
|
|
||||||
|
|
||||||
//Safe storing of creatures
|
|
||||||
GuardiansOfIcecrown[GuardiansOfIcecrown_Count] = pUnit->GetGUID();
|
|
||||||
|
|
||||||
//Update guardian count
|
|
||||||
GuardiansOfIcecrown_Count++;
|
|
||||||
|
|
||||||
}
|
|
||||||
//5 seconds until summoning next guardian
|
|
||||||
GuardiansOfIcecrown_Timer = 5000;
|
|
||||||
}
|
|
||||||
else GuardiansOfIcecrown_Timer -= diff;
|
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -433,11 +445,9 @@ CreatureAI* GetAI_boss_kelthuzadAI(Creature *_Creature)
|
|||||||
|
|
||||||
void AddSC_boss_kelthuzad()
|
void AddSC_boss_kelthuzad()
|
||||||
{
|
{
|
||||||
|
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
newscript = new Script;
|
newscript = new Script;
|
||||||
newscript->Name="boss_kelthuzad";
|
newscript->Name="boss_kelthuzad";
|
||||||
newscript->GetAI = &GetAI_boss_kelthuzadAI;
|
newscript->GetAI = &GetAI_boss_kelthuzadAI;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -75,7 +75,8 @@ struct TRINITY_DLL_DECL mob_webwrapAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
Unit* victim = NULL;
|
Unit* victim = NULL;
|
||||||
victim = Unit::GetUnit((*m_creature), victimGUID);
|
victim = Unit::GetUnit((*m_creature), victimGUID);
|
||||||
victim->RemoveAurasDueToSpell(SPELL_WEBTRAP);
|
if(victim)
|
||||||
|
victim->RemoveAurasDueToSpell(SPELL_WEBTRAP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,8 +30,12 @@ EndScriptData */
|
|||||||
#define SPELL_FROST_BREATH 29318
|
#define SPELL_FROST_BREATH 29318
|
||||||
#define SPELL_FROST_AURA 28531
|
#define SPELL_FROST_AURA 28531
|
||||||
#define SPELL_LIFE_DRAIN 28542
|
#define SPELL_LIFE_DRAIN 28542
|
||||||
|
//#define SPELL_CHILL 28560
|
||||||
#define SPELL_BLIZZARD 28547
|
#define SPELL_BLIZZARD 28547
|
||||||
#define SPELL_BESERK 26662
|
#define SPELL_BESERK 26662
|
||||||
|
#define SPELL_CLEAVE 19983
|
||||||
|
#define SPELL_TAIL_SWEEP 55697
|
||||||
|
|
||||||
|
|
||||||
struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI
|
struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
@@ -43,6 +47,8 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI
|
|||||||
uint32 FrostAura_Timer;
|
uint32 FrostAura_Timer;
|
||||||
uint32 LifeDrain_Timer;
|
uint32 LifeDrain_Timer;
|
||||||
uint32 Blizzard_Timer;
|
uint32 Blizzard_Timer;
|
||||||
|
uint32 Tail_Sweep_Timer;
|
||||||
|
uint32 Cleave_Timer;
|
||||||
uint32 Fly_Timer;
|
uint32 Fly_Timer;
|
||||||
uint32 Fly2_Timer;
|
uint32 Fly2_Timer;
|
||||||
uint32 Beserk_Timer;
|
uint32 Beserk_Timer;
|
||||||
@@ -55,6 +61,8 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI
|
|||||||
FrostAura_Timer = 2000;
|
FrostAura_Timer = 2000;
|
||||||
LifeDrain_Timer = 24000;
|
LifeDrain_Timer = 24000;
|
||||||
Blizzard_Timer = 20000;
|
Blizzard_Timer = 20000;
|
||||||
|
Tail_Sweep_Timer=(rand()%2+9)*1000;
|
||||||
|
Cleave_Timer=10000;
|
||||||
Fly_Timer = 45000;
|
Fly_Timer = 45000;
|
||||||
Icebolt_Timer = 4000;
|
Icebolt_Timer = 4000;
|
||||||
land_Timer = 0;
|
land_Timer = 0;
|
||||||
@@ -75,93 +83,113 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI
|
|||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(phase == 1)
|
if(phase == 1)
|
||||||
|
{
|
||||||
|
if(FrostAura_Timer < diff)
|
||||||
{
|
{
|
||||||
if(FrostAura_Timer < diff)
|
DoCast(m_creature->getVictim(),SPELL_FROST_AURA);
|
||||||
{
|
FrostAura_Timer = 5000;
|
||||||
DoCast(m_creature->getVictim(),SPELL_FROST_AURA);
|
}else FrostAura_Timer -= diff;
|
||||||
FrostAura_Timer = 5000;
|
|
||||||
}else FrostAura_Timer -= diff;
|
|
||||||
|
|
||||||
if(LifeDrain_Timer < diff)
|
if(LifeDrain_Timer < diff)
|
||||||
{
|
{
|
||||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
DoCast(target,SPELL_LIFE_DRAIN);
|
DoCast(target,SPELL_LIFE_DRAIN);
|
||||||
LifeDrain_Timer = 24000;
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
}else LifeDrain_Timer -= diff;
|
DoCast(target,SPELL_LIFE_DRAIN);
|
||||||
|
|
||||||
if(Blizzard_Timer < diff)
|
LifeDrain_Timer = 24000;
|
||||||
{
|
}else LifeDrain_Timer -= diff;
|
||||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
|
||||||
DoCast(target,SPELL_BLIZZARD);
|
|
||||||
Blizzard_Timer = 20000;
|
|
||||||
}else Blizzard_Timer -= diff;
|
|
||||||
|
|
||||||
if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() > 10)
|
if(Blizzard_Timer < diff)
|
||||||
{
|
{
|
||||||
if(Fly_Timer < diff)
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
{
|
{
|
||||||
phase = 2;
|
DoCast(target,SPELL_BLIZZARD);
|
||||||
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
|
//It seems NO damage?
|
||||||
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
|
||||||
m_creature->GetMotionMaster()->Clear(false);
|
|
||||||
m_creature->GetMotionMaster()->MoveIdle();
|
|
||||||
m_creature->SetHover(true);
|
|
||||||
Icebolt_Timer = 4000;
|
|
||||||
Icebolt_Count = 0;
|
|
||||||
IsInFly = true;
|
|
||||||
}else Fly_Timer -= diff;
|
|
||||||
}
|
}
|
||||||
|
Blizzard_Timer = 20000;
|
||||||
|
}else Blizzard_Timer -= diff;
|
||||||
|
|
||||||
|
//SPELL_CLEAVE
|
||||||
|
if(Cleave_Timer < diff)
|
||||||
|
{
|
||||||
|
DoCast(m_creature->getVictim(),SPELL_CLEAVE);
|
||||||
|
Cleave_Timer = 10000;
|
||||||
|
}else Cleave_Timer -= diff;
|
||||||
|
|
||||||
|
//Tail Sweep_Timer,
|
||||||
|
if(Tail_Sweep_Timer < diff)
|
||||||
|
{
|
||||||
|
DoCast(m_creature,SPELL_TAIL_SWEEP);
|
||||||
|
Tail_Sweep_Timer=(rand()%2+9)*1000;
|
||||||
|
}else Tail_Sweep_Timer -= diff;
|
||||||
|
|
||||||
|
if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() > 10)
|
||||||
|
{
|
||||||
|
if(Fly_Timer < diff)
|
||||||
|
{
|
||||||
|
phase = 2;
|
||||||
|
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
|
||||||
|
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
||||||
|
m_creature->GetMotionMaster()->Clear(false);
|
||||||
|
m_creature->GetMotionMaster()->MoveIdle();
|
||||||
|
m_creature->SetHover(true);
|
||||||
|
Icebolt_Timer = 4000;
|
||||||
|
Icebolt_Count = 0;
|
||||||
|
IsInFly = true;
|
||||||
|
}else Fly_Timer -= diff;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (phase == 2)
|
if (phase == 2)
|
||||||
|
{
|
||||||
|
if(Icebolt_Timer < diff && Icebolt_Count < 5)
|
||||||
|
{
|
||||||
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
{
|
{
|
||||||
if(Icebolt_Timer < diff && Icebolt_Count < 5)
|
DoCast(target,SPELL_ICEBOLT);
|
||||||
{
|
++Icebolt_Count;
|
||||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
error_log("Count incremented");
|
||||||
{
|
|
||||||
DoCast(target,SPELL_ICEBOLT);
|
|
||||||
++Icebolt_Count;
|
|
||||||
error_log("Count incremented");
|
|
||||||
}
|
|
||||||
FrostBreath_Timer = 6000;
|
|
||||||
Icebolt_Timer = 4000;
|
|
||||||
}else Icebolt_Timer -= diff;
|
|
||||||
|
|
||||||
if(Icebolt_Count == 5 && IsInFly && FrostBreath_Timer < diff )
|
|
||||||
{
|
|
||||||
DoScriptText(EMOTE_BREATH, m_creature);
|
|
||||||
DoCast(m_creature->getVictim(),SPELL_FROST_BREATH);
|
|
||||||
land_Timer = 2000;
|
|
||||||
IsInFly = false;
|
|
||||||
FrostBreath_Timer = 6000;
|
|
||||||
}else FrostBreath_Timer -= diff;
|
|
||||||
|
|
||||||
if(!IsInFly && land_Timer < diff)
|
|
||||||
{
|
|
||||||
phase = 1;
|
|
||||||
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LAND);
|
|
||||||
m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
|
||||||
m_creature->GetMotionMaster()->Clear(false);
|
|
||||||
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
|
|
||||||
m_creature->SetHover(true);
|
|
||||||
land_Timer = 0;
|
|
||||||
Fly_Timer = 67000;
|
|
||||||
}else land_Timer -= diff;
|
|
||||||
}
|
}
|
||||||
|
FrostBreath_Timer = 6000;
|
||||||
|
Icebolt_Timer = 4000;
|
||||||
|
}else Icebolt_Timer -= diff;
|
||||||
|
|
||||||
if ((m_creature->GetHealth()*100) / m_creature->GetMaxHealth() <= 10)
|
if(Icebolt_Count == 5 && IsInFly && FrostBreath_Timer < diff )
|
||||||
{
|
{
|
||||||
if (Beserk_Timer < diff)
|
DoScriptText(EMOTE_BREATH, m_creature);
|
||||||
{
|
DoCast(m_creature->getVictim(),SPELL_FROST_BREATH);
|
||||||
DoScriptText(EMOTE_ENRAGE, m_creature);
|
land_Timer = 2000;
|
||||||
DoCast(m_creature,SPELL_BESERK);
|
IsInFly = false;
|
||||||
Beserk_Timer = 300000;
|
FrostBreath_Timer = 6000;
|
||||||
}else Beserk_Timer -= diff;
|
}else FrostBreath_Timer -= diff;
|
||||||
}
|
|
||||||
|
|
||||||
if (phase!=2)
|
if(!IsInFly && land_Timer < diff)
|
||||||
DoMeleeAttackIfReady();
|
{
|
||||||
|
phase = 1;
|
||||||
|
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LAND);
|
||||||
|
m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
||||||
|
m_creature->GetMotionMaster()->Clear(false);
|
||||||
|
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
|
||||||
|
m_creature->SetHover(true);
|
||||||
|
land_Timer = 0;
|
||||||
|
Fly_Timer = 67000;
|
||||||
|
}else land_Timer -= diff;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((m_creature->GetHealth()*100) / m_creature->GetMaxHealth() <= 10)
|
||||||
|
{
|
||||||
|
if (Beserk_Timer < diff)
|
||||||
|
{
|
||||||
|
DoScriptText(EMOTE_ENRAGE, m_creature);
|
||||||
|
DoCast(m_creature,SPELL_BESERK);
|
||||||
|
Beserk_Timer = 300000;
|
||||||
|
}else Beserk_Timer -= diff;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (phase!=2)
|
||||||
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -178,4 +206,3 @@ void AddSC_boss_sapphiron()
|
|||||||
newscript->GetAI = &GetAI_boss_sapphiron;
|
newscript->GetAI = &GetAI_boss_sapphiron;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -224,6 +224,7 @@ struct TRINITY_DLL_DECL mob_headAI : public ScriptedAI
|
|||||||
DoScriptText(textEntry, m_creature, target);
|
DoScriptText(textEntry, m_creature, target);
|
||||||
//DoCast(m_creature,SPELL_HEAD_SPEAKS,true);
|
//DoCast(m_creature,SPELL_HEAD_SPEAKS,true);
|
||||||
Creature *speaker = DoSpawnCreature(HELPER,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN,1000);
|
Creature *speaker = DoSpawnCreature(HELPER,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN,1000);
|
||||||
|
if(speaker)
|
||||||
speaker->CastSpell(speaker,SPELL_HEAD_SPEAKS,false);
|
speaker->CastSpell(speaker,SPELL_HEAD_SPEAKS,false);
|
||||||
laugh += 3000;
|
laugh += 3000;
|
||||||
}
|
}
|
||||||
@@ -295,6 +296,7 @@ struct TRINITY_DLL_DECL mob_headAI : public ScriptedAI
|
|||||||
DoPlaySoundToSet(m_creature, RandomLaught[rand()%3]);
|
DoPlaySoundToSet(m_creature, RandomLaught[rand()%3]);
|
||||||
//DoCast(m_creature,SPELL_HEAD_SPEAKS,true); //this spell remove buff "head"
|
//DoCast(m_creature,SPELL_HEAD_SPEAKS,true); //this spell remove buff "head"
|
||||||
Creature *speaker = DoSpawnCreature(HELPER,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN,1000);
|
Creature *speaker = DoSpawnCreature(HELPER,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN,1000);
|
||||||
|
if(speaker)
|
||||||
speaker->CastSpell(speaker,SPELL_HEAD_SPEAKS,false);
|
speaker->CastSpell(speaker,SPELL_HEAD_SPEAKS,false);
|
||||||
DoTextEmote("laughts",NULL);
|
DoTextEmote("laughts",NULL);
|
||||||
} else laugh -= diff;
|
} else laugh -= diff;
|
||||||
@@ -421,8 +423,9 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
|||||||
m_creature->SetVisibility(VISIBILITY_ON);break;
|
m_creature->SetVisibility(VISIBILITY_ON);break;
|
||||||
case 1: {
|
case 1: {
|
||||||
Creature *smoke = m_creature->SummonCreature(HELPER,Spawn[1].x,Spawn[1].y,Spawn[1].z,0,TEMPSUMMON_TIMED_DESPAWN,20000);
|
Creature *smoke = m_creature->SummonCreature(HELPER,Spawn[1].x,Spawn[1].y,Spawn[1].z,0,TEMPSUMMON_TIMED_DESPAWN,20000);
|
||||||
|
if(smoke)
|
||||||
((mob_wisp_invisAI*)smoke->AI())->SetType(3);
|
((mob_wisp_invisAI*)smoke->AI())->SetType(3);
|
||||||
DoCast(m_creature,SPELL_RHYME_BIG);
|
DoCast(m_creature,SPELL_RHYME_BIG);
|
||||||
break;}
|
break;}
|
||||||
case 6:
|
case 6:
|
||||||
if(pInstance)
|
if(pInstance)
|
||||||
@@ -515,8 +518,10 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
|||||||
//m_creature->GetMotionMaster()->MoveIdle(); test
|
//m_creature->GetMotionMaster()->MoveIdle(); test
|
||||||
SaySound(SAY_DEATH);
|
SaySound(SAY_DEATH);
|
||||||
Creature *flame = DoSpawnCreature(HELPER,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN,60000);
|
Creature *flame = DoSpawnCreature(HELPER,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN,60000);
|
||||||
|
if(flame)
|
||||||
flame->CastSpell(flame,SPELL_BODY_FLAME,false);
|
flame->CastSpell(flame,SPELL_BODY_FLAME,false);
|
||||||
Creature *wisp = DoSpawnCreature(WISP_INVIS,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN,60000);
|
Creature *wisp = DoSpawnCreature(WISP_INVIS,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN,60000);
|
||||||
|
if(wisp)
|
||||||
((mob_wisp_invisAI*)wisp->AI())->SetType(4);
|
((mob_wisp_invisAI*)wisp->AI())->SetType(4);
|
||||||
if(pInstance)
|
if(pInstance)
|
||||||
pInstance->SetData(DATA_HORSEMAN_EVENT, DONE);
|
pInstance->SetData(DATA_HORSEMAN_EVENT, DONE);
|
||||||
@@ -592,11 +597,15 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
|||||||
say_timer = 3000;
|
say_timer = 3000;
|
||||||
Player *plr = SelectRandomPlayer(100.0f,false);
|
Player *plr = SelectRandomPlayer(100.0f,false);
|
||||||
if (count < 3)
|
if (count < 3)
|
||||||
plr->Say(Text[count].text,0);
|
if(plr)
|
||||||
|
plr->Say(Text[count].text,0);
|
||||||
else {
|
else {
|
||||||
DoCast(m_creature,SPELL_RHYME_BIG);
|
DoCast(m_creature,SPELL_RHYME_BIG);
|
||||||
plr->Say(Text[count].text,0);
|
if(plr)
|
||||||
plr->HandleEmoteCommand(ANIM_EMOTE_SHOUT);
|
{
|
||||||
|
plr->Say(Text[count].text,0);
|
||||||
|
plr->HandleEmoteCommand(ANIM_EMOTE_SHOUT);
|
||||||
|
}
|
||||||
wp_reached = true;
|
wp_reached = true;
|
||||||
IsFlying = true;
|
IsFlying = true;
|
||||||
count = 0;
|
count = 0;
|
||||||
@@ -618,8 +627,9 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
|||||||
if(burn < diff)
|
if(burn < diff)
|
||||||
{
|
{
|
||||||
Creature *flame = m_creature->SummonCreature(HELPER,Spawn[0].x,Spawn[0].y,Spawn[0].z,0,TEMPSUMMON_TIMED_DESPAWN,17000);
|
Creature *flame = m_creature->SummonCreature(HELPER,Spawn[0].x,Spawn[0].y,Spawn[0].z,0,TEMPSUMMON_TIMED_DESPAWN,17000);
|
||||||
|
if(flame)
|
||||||
((mob_wisp_invisAI*)flame->AI())->SetType(2);
|
((mob_wisp_invisAI*)flame->AI())->SetType(2);
|
||||||
burned = true;
|
burned = true;
|
||||||
}else burn -= diff;
|
}else burn -= diff;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
@@ -727,10 +737,13 @@ struct TRINITY_DLL_DECL mob_pulsing_pumpkinAI : public ScriptedAI
|
|||||||
m_creature->Relocate(x,y,z + 0.35f);
|
m_creature->Relocate(x,y,z + 0.35f);
|
||||||
Despawn();
|
Despawn();
|
||||||
Creature *debuff = DoSpawnCreature(HELPER,0,0,0,0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,14500);
|
Creature *debuff = DoSpawnCreature(HELPER,0,0,0,0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,14500);
|
||||||
|
if(debuff)
|
||||||
|
{
|
||||||
debuff->SetDisplayId(m_creature->GetDisplayId());
|
debuff->SetDisplayId(m_creature->GetDisplayId());
|
||||||
debuff->CastSpell(debuff,SPELL_PUMPKIN_AURA_GREEN,false);
|
debuff->CastSpell(debuff,SPELL_PUMPKIN_AURA_GREEN,false);
|
||||||
((mob_wisp_invisAI*)debuff->AI())->SetType(1);
|
((mob_wisp_invisAI*)debuff->AI())->SetType(1);
|
||||||
debuffGUID = debuff->GetGUID();
|
debuffGUID = debuff->GetGUID();
|
||||||
|
}
|
||||||
sprouted = false;
|
sprouted = false;
|
||||||
DoCast(m_creature,SPELL_PUMPKIN_AURA,true);
|
DoCast(m_creature,SPELL_PUMPKIN_AURA,true);
|
||||||
DoCast(m_creature,SPELL_SPROUTING);
|
DoCast(m_creature,SPELL_SPROUTING);
|
||||||
@@ -792,8 +805,11 @@ bool GOHello_go_loosely_turned_soil(Player *plr, GameObject* soil)
|
|||||||
{ */
|
{ */
|
||||||
plr->AreaExploredOrEventHappens(11405);
|
plr->AreaExploredOrEventHappens(11405);
|
||||||
Creature *horseman = soil->SummonCreature(HH_MOUNTED,FlightPoint[20].x,FlightPoint[20].y,FlightPoint[20].z,0,TEMPSUMMON_MANUAL_DESPAWN,0);
|
Creature *horseman = soil->SummonCreature(HH_MOUNTED,FlightPoint[20].x,FlightPoint[20].y,FlightPoint[20].z,0,TEMPSUMMON_MANUAL_DESPAWN,0);
|
||||||
|
if(horseman)
|
||||||
|
{
|
||||||
((boss_headless_horsemanAI*)horseman->AI())->playerGUID = plr->GetGUID();
|
((boss_headless_horsemanAI*)horseman->AI())->playerGUID = plr->GetGUID();
|
||||||
((boss_headless_horsemanAI*)horseman->AI())->FlyMode();
|
((boss_headless_horsemanAI*)horseman->AI())->FlyMode();
|
||||||
|
}
|
||||||
//}
|
//}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,80 +126,80 @@ struct TRINITY_DLL_DECL boss_darkmaster_gandlingAI : public ScriptedAI
|
|||||||
case 0:
|
case 0:
|
||||||
DoTeleportPlayer(target, 250.0696,0.3921,84.8408,3.149);
|
DoTeleportPlayer(target, 250.0696,0.3921,84.8408,3.149);
|
||||||
Summoned = m_creature->SummonCreature(16119,254.2325,0.3417,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,254.2325,0.3417,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
Summoned = m_creature->SummonCreature(16119,257.7133,4.0226,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,257.7133,4.0226,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
Summoned = m_creature->SummonCreature(16119,258.6702,-2.60656,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,258.6702,-2.60656,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
DoTeleportPlayer(target, 181.4220,-91.9481,84.8410,1.608);
|
DoTeleportPlayer(target, 181.4220,-91.9481,84.8410,1.608);
|
||||||
Summoned = m_creature->SummonCreature(16119,184.0519,-73.5649,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,184.0519,-73.5649,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
Summoned = m_creature->SummonCreature(16119,179.5951,-73.7045,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,179.5951,-73.7045,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
Summoned = m_creature->SummonCreature(16119,180.6452,-78.2143,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,180.6452,-78.2143,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
Summoned = m_creature->SummonCreature(16119,283.2274,-78.1518,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,283.2274,-78.1518,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
DoTeleportPlayer(target, 95.1547,-1.8173,85.2289,0.043);
|
DoTeleportPlayer(target, 95.1547,-1.8173,85.2289,0.043);
|
||||||
Summoned = m_creature->SummonCreature(16119,100.9404,-1.8016,85.2289,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,100.9404,-1.8016,85.2289,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
Summoned = m_creature->SummonCreature(16119,101.3729,0.4882,85.2289,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,101.3729,0.4882,85.2289,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
Summoned = m_creature->SummonCreature(16119,101.4596,-4.4740,85.2289,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,101.4596,-4.4740,85.2289,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
DoTeleportPlayer(target, 250.0696,0.3921,72.6722,3.149);
|
DoTeleportPlayer(target, 250.0696,0.3921,72.6722,3.149);
|
||||||
Summoned = m_creature->SummonCreature(16119,240.34481,0.7368,72.6722,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,240.34481,0.7368,72.6722,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
Summoned = m_creature->SummonCreature(16119,240.3633,-2.9520,72.6722,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,240.3633,-2.9520,72.6722,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
Summoned = m_creature->SummonCreature(16119,240.6702,3.34949,72.6722,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,240.6702,3.34949,72.6722,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
DoTeleportPlayer(target, 181.4220,-91.9481,70.7734,1.608);
|
DoTeleportPlayer(target, 181.4220,-91.9481,70.7734,1.608);
|
||||||
Summoned = m_creature->SummonCreature(16119,184.0519,-73.5649,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,184.0519,-73.5649,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
Summoned = m_creature->SummonCreature(16119,179.5951,-73.7045,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,179.5951,-73.7045,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
Summoned = m_creature->SummonCreature(16119,180.6452,-78.2143,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,180.6452,-78.2143,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
Summoned = m_creature->SummonCreature(16119,283.2274,-78.1518,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,283.2274,-78.1518,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
DoTeleportPlayer(target, 106.1541,-1.8994,75.3663,0.043);
|
DoTeleportPlayer(target, 106.1541,-1.8994,75.3663,0.043);
|
||||||
Summoned = m_creature->SummonCreature(16119,115.3945,-1.5555,75.3663,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,115.3945,-1.5555,75.3663,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
Summoned = m_creature->SummonCreature(16119,257.7133,1.8066,75.3663,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,257.7133,1.8066,75.3663,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
Summoned = m_creature->SummonCreature(16119,258.6702,-5.1001,75.3663,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
Summoned = m_creature->SummonCreature(16119,258.6702,-5.1001,75.3663,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||||
if (Summoned)
|
if(Summoned)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,7 +122,8 @@ struct TRINITY_DLL_DECL boss_jandicebarovAI : public ScriptedAI
|
|||||||
for(int i = 0; i < 10;i++)
|
for(int i = 0; i < 10;i++)
|
||||||
{
|
{
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||||
SummonIllusions(target);
|
if(target)
|
||||||
|
SummonIllusions(target);
|
||||||
}
|
}
|
||||||
Invisible = true;
|
Invisible = true;
|
||||||
Invisible_Timer = 3000;
|
Invisible_Timer = 3000;
|
||||||
|
|||||||
@@ -74,7 +74,8 @@ struct TRINITY_DLL_DECL boss_kormokAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
Rand1 = 0;
|
Rand1 = 0;
|
||||||
SummonedMinions = DoSpawnCreature(16119, Rand1X, Rand1Y, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 120000);
|
SummonedMinions = DoSpawnCreature(16119, Rand1X, Rand1Y, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 120000);
|
||||||
((CreatureAI*)SummonedMinions->AI())->AttackStart(victim);
|
if(SummonedMinions)
|
||||||
|
((CreatureAI*)SummonedMinions->AI())->AttackStart(victim);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SummonMages(Unit* victim)
|
void SummonMages(Unit* victim)
|
||||||
@@ -94,7 +95,8 @@ struct TRINITY_DLL_DECL boss_kormokAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
Rand2 = 0;
|
Rand2 = 0;
|
||||||
SummonedMages = DoSpawnCreature(16120, Rand2X, Rand2Y, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 120000);
|
SummonedMages = DoSpawnCreature(16120, Rand2X, Rand2Y, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 120000);
|
||||||
((CreatureAI*)SummonedMages->AI())->AttackStart(victim);
|
if(SummonedMages)
|
||||||
|
((CreatureAI*)SummonedMages->AI())->AttackStart(victim);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
|
|||||||
@@ -141,8 +141,10 @@ struct TRINITY_DLL_DECL mob_mature_netherwing_drakeAI : public ScriptedAI
|
|||||||
|
|
||||||
if(Evade)
|
if(Evade)
|
||||||
if(ResetTimer < diff)
|
if(ResetTimer < diff)
|
||||||
|
{
|
||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
else ResetTimer -= diff;
|
return;
|
||||||
|
}else ResetTimer -= diff;
|
||||||
|
|
||||||
if(!UpdateVictim())
|
if(!UpdateVictim())
|
||||||
return;
|
return;
|
||||||
@@ -697,12 +699,16 @@ struct TRINITY_DLL_DECL npc_overlord_morghorAI : public ScriptedAI
|
|||||||
m_creature->SetUInt32Value(UNIT_NPC_FLAGS, 0);
|
m_creature->SetUInt32Value(UNIT_NPC_FLAGS, 0);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);
|
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);
|
||||||
Unit* Illidan = m_creature->SummonCreature(C_ILLIDAN, -5107.83, 602.584, 85.2393, 4.92598, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
Unit* Illidan = m_creature->SummonCreature(C_ILLIDAN, -5107.83, 602.584, 85.2393, 4.92598, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||||
IllidanGUID = Illidan->GetGUID();
|
if(Illidan)
|
||||||
Illidan->SetVisibility(VISIBILITY_OFF);
|
{
|
||||||
|
IllidanGUID = Illidan->GetGUID();
|
||||||
|
Illidan->SetVisibility(VISIBILITY_OFF);
|
||||||
|
}
|
||||||
if(PlayerGUID)
|
if(PlayerGUID)
|
||||||
{
|
{
|
||||||
Player* player = Unit::GetPlayer(PlayerGUID);
|
Player* player = Unit::GetPlayer(PlayerGUID);
|
||||||
DoScriptText(OVERLORD_SAY_1, m_creature, player);
|
if(player)
|
||||||
|
DoScriptText(OVERLORD_SAY_1, m_creature, player);
|
||||||
}
|
}
|
||||||
ConversationTimer = 4200;
|
ConversationTimer = 4200;
|
||||||
Step = 0;
|
Step = 0;
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ struct TRINITY_DLL_DECL mob_yennikuAI : public ScriptedAI
|
|||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
bReset = false;
|
bReset = false;
|
||||||
m_creature->setFaction(28); //troll, bloodscalp
|
m_creature->setFaction(28); //troll, bloodscalp
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else Reset_Timer -= diff;
|
else Reset_Timer -= diff;
|
||||||
|
|
||||||
|
|||||||
@@ -177,7 +177,6 @@ CreatureAI* GetAI_boss_baron_rivendare(Creature *_Creature)
|
|||||||
return new boss_baron_rivendareAI (_Creature);
|
return new boss_baron_rivendareAI (_Creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AddSC_boss_baron_rivendare()
|
void AddSC_boss_baron_rivendare()
|
||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
|
|||||||
@@ -116,7 +116,6 @@ CreatureAI* GetAI_boss_baroness_anastari(Creature *_Creature)
|
|||||||
return new boss_baroness_anastariAI (_Creature);
|
return new boss_baroness_anastariAI (_Creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AddSC_boss_baroness_anastari()
|
void AddSC_boss_baroness_anastari()
|
||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
|
|||||||
@@ -210,7 +210,6 @@ CreatureAI* GetAI_boss_cannon_master_willey(Creature *_Creature)
|
|||||||
return new boss_cannon_master_willeyAI (_Creature);
|
return new boss_cannon_master_willeyAI (_Creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AddSC_boss_cannon_master_willey()
|
void AddSC_boss_cannon_master_willey()
|
||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
|
|||||||
@@ -122,7 +122,6 @@ CreatureAI* GetAI_boss_magistrate_barthilas(Creature *_Creature)
|
|||||||
return new boss_magistrate_barthilasAI (_Creature);
|
return new boss_magistrate_barthilasAI (_Creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AddSC_boss_magistrate_barthilas()
|
void AddSC_boss_magistrate_barthilas()
|
||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
|
|||||||
@@ -97,7 +97,6 @@ CreatureAI* GetAI_boss_maleki_the_pallid(Creature *_Creature)
|
|||||||
return new boss_maleki_the_pallidAI (_Creature);
|
return new boss_maleki_the_pallidAI (_Creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AddSC_boss_maleki_the_pallid()
|
void AddSC_boss_maleki_the_pallid()
|
||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ struct TRINITY_DLL_DECL boss_nerubenkanAI : public ScriptedAI
|
|||||||
CryptScarabs_Timer = 3000;
|
CryptScarabs_Timer = 3000;
|
||||||
EncasingWebs_Timer = 7000;
|
EncasingWebs_Timer = 7000;
|
||||||
PierceArmor_Timer = 19000;
|
PierceArmor_Timer = 19000;
|
||||||
RaiseUndeadScarab_Timer = 3000;
|
RaiseUndeadScarab_Timer = 3000;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit *who)
|
void EnterCombat(Unit *who)
|
||||||
@@ -94,9 +94,7 @@ struct TRINITY_DLL_DECL boss_nerubenkanAI : public ScriptedAI
|
|||||||
//EncasingWebs
|
//EncasingWebs
|
||||||
if (EncasingWebs_Timer < diff)
|
if (EncasingWebs_Timer < diff)
|
||||||
{
|
{
|
||||||
|
|
||||||
DoCast(m_creature->getVictim(),SPELL_ENCASINGWEBS);
|
DoCast(m_creature->getVictim(),SPELL_ENCASINGWEBS);
|
||||||
|
|
||||||
EncasingWebs_Timer = 30000;
|
EncasingWebs_Timer = 30000;
|
||||||
}else EncasingWebs_Timer -= diff;
|
}else EncasingWebs_Timer -= diff;
|
||||||
|
|
||||||
@@ -105,7 +103,6 @@ struct TRINITY_DLL_DECL boss_nerubenkanAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if (rand()%100 < 75)
|
if (rand()%100 < 75)
|
||||||
DoCast(m_creature->getVictim(),SPELL_PIERCEARMOR);
|
DoCast(m_creature->getVictim(),SPELL_PIERCEARMOR);
|
||||||
|
|
||||||
PierceArmor_Timer = 35000;
|
PierceArmor_Timer = 35000;
|
||||||
}else PierceArmor_Timer -= diff;
|
}else PierceArmor_Timer -= diff;
|
||||||
|
|
||||||
@@ -131,7 +128,6 @@ CreatureAI* GetAI_boss_nerubenkan(Creature *_Creature)
|
|||||||
return new boss_nerubenkanAI (_Creature);
|
return new boss_nerubenkanAI (_Creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AddSC_boss_nerubenkan()
|
void AddSC_boss_nerubenkan()
|
||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
|
|||||||
@@ -145,10 +145,6 @@ CreatureAI* GetAI_boss_silver_hand_bossesAI(Creature *_Creature)
|
|||||||
return new boss_silver_hand_bossesAI (_Creature);
|
return new boss_silver_hand_bossesAI (_Creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*#####
|
|
||||||
#
|
|
||||||
#####*/
|
|
||||||
|
|
||||||
void AddSC_boss_order_of_silver_hand()
|
void AddSC_boss_order_of_silver_hand()
|
||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
|
|||||||
@@ -133,7 +133,6 @@ CreatureAI* GetAI_boss_postmaster_malown(Creature *_Creature)
|
|||||||
return new boss_postmaster_malownAI (_Creature);
|
return new boss_postmaster_malownAI (_Creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AddSC_boss_postmaster_malown()
|
void AddSC_boss_postmaster_malown()
|
||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
|
|||||||
@@ -88,7 +88,6 @@ CreatureAI* GetAI_boss_ramstein_the_gorger(Creature *_Creature)
|
|||||||
return new boss_ramstein_the_gorgerAI (_Creature);
|
return new boss_ramstein_the_gorgerAI (_Creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AddSC_boss_ramstein_the_gorger()
|
void AddSC_boss_ramstein_the_gorger()
|
||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
|
|||||||
@@ -42,11 +42,11 @@ struct TRINITY_DLL_DECL boss_timmy_the_cruelAI : public ScriptedAI
|
|||||||
|
|
||||||
void EnterCombat(Unit *who)
|
void EnterCombat(Unit *who)
|
||||||
{
|
{
|
||||||
if (!HasYelled)
|
if (!HasYelled)
|
||||||
{
|
{
|
||||||
DoYell(SAY_SPAWN,LANG_UNIVERSAL,NULL);
|
DoYell(SAY_SPAWN,LANG_UNIVERSAL,NULL);
|
||||||
HasYelled = true;
|
HasYelled = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
@@ -72,7 +72,6 @@ CreatureAI* GetAI_boss_timmy_the_cruel(Creature *_Creature)
|
|||||||
return new boss_timmy_the_cruelAI (_Creature);
|
return new boss_timmy_the_cruelAI (_Creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AddSC_boss_timmy_the_cruel()
|
void AddSC_boss_timmy_the_cruel()
|
||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
|
|||||||
@@ -262,7 +262,8 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
|
|||||||
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||||
Unit* target = NULL;
|
Unit* target = NULL;
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
DoCast(target, SPELL_CONFLAGRATION);
|
if(target)
|
||||||
|
DoCast(target, SPELL_CONFLAGRATION);
|
||||||
ConflagrationTimer = 30000+(rand()%5000);
|
ConflagrationTimer = 30000+(rand()%5000);
|
||||||
}
|
}
|
||||||
}else ConflagrationTimer -= diff;
|
}else ConflagrationTimer -= diff;
|
||||||
@@ -275,11 +276,13 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
Unit* target = NULL;
|
Unit* target = NULL;
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
DoCast(target, SPELL_SHADOW_NOVA);
|
if(target)
|
||||||
|
DoCast(target, SPELL_SHADOW_NOVA);
|
||||||
|
|
||||||
if(!SisterDeath)
|
if(!SisterDeath)
|
||||||
{
|
{
|
||||||
DoScriptText(EMOTE_SHADOW_NOVA, m_creature, target);
|
if(target)
|
||||||
|
DoScriptText(EMOTE_SHADOW_NOVA, m_creature, target);
|
||||||
DoScriptText(YELL_SHADOW_NOVA, m_creature);
|
DoScriptText(YELL_SHADOW_NOVA, m_creature);
|
||||||
}
|
}
|
||||||
ShadownovaTimer = 30000+(rand()%5000);
|
ShadownovaTimer = 30000+(rand()%5000);
|
||||||
@@ -293,7 +296,8 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
Unit* target = NULL;
|
Unit* target = NULL;
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
DoCast(target, SPELL_CONFOUNDING_BLOW);
|
if(target)
|
||||||
|
DoCast(target, SPELL_CONFOUNDING_BLOW);
|
||||||
ConfoundingblowTimer = 20000 + (rand()%5000);
|
ConfoundingblowTimer = 20000 + (rand()%5000);
|
||||||
}
|
}
|
||||||
}else ConfoundingblowTimer -=diff;
|
}else ConfoundingblowTimer -=diff;
|
||||||
@@ -306,7 +310,8 @@ struct TRINITY_DLL_DECL boss_sacrolashAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
temp = DoSpawnCreature(MOB_SHADOW_IMAGE,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN,10000);
|
temp = DoSpawnCreature(MOB_SHADOW_IMAGE,0,0,0,0,TEMPSUMMON_CORPSE_DESPAWN,10000);
|
||||||
temp->AI()->AttackStart(target);
|
if(temp && target)
|
||||||
|
temp->AI()->AttackStart(target);
|
||||||
}
|
}
|
||||||
ShadowimageTimer = 20000;
|
ShadowimageTimer = 20000;
|
||||||
}else ShadowimageTimer -=diff;
|
}else ShadowimageTimer -=diff;
|
||||||
@@ -593,7 +598,8 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI
|
|||||||
{
|
{
|
||||||
Unit* target = NULL;
|
Unit* target = NULL;
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
DoCast(target, SPELL_SHADOW_NOVA);
|
if(target)
|
||||||
|
DoCast(target, SPELL_SHADOW_NOVA);
|
||||||
ShadownovaTimer= 30000+(rand()%5000);
|
ShadownovaTimer= 30000+(rand()%5000);
|
||||||
}
|
}
|
||||||
}else ShadownovaTimer -=diff;
|
}else ShadownovaTimer -=diff;
|
||||||
@@ -607,12 +613,14 @@ struct TRINITY_DLL_DECL boss_alythessAI : public Scripted_NoMovementAI
|
|||||||
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||||
Unit* target = NULL;
|
Unit* target = NULL;
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
DoCast(target, SPELL_CONFLAGRATION);
|
if(target)
|
||||||
|
DoCast(target, SPELL_CONFLAGRATION);
|
||||||
ConflagrationTimer = 30000+(rand()%5000);
|
ConflagrationTimer = 30000+(rand()%5000);
|
||||||
|
|
||||||
if(!SisterDeath)
|
if(!SisterDeath)
|
||||||
{
|
{
|
||||||
DoScriptText(EMOTE_CONFLAGRATION, m_creature, target);
|
if(target)
|
||||||
|
DoScriptText(EMOTE_CONFLAGRATION, m_creature, target);
|
||||||
DoScriptText(YELL_CANFLAGRATION, m_creature);
|
DoScriptText(YELL_CANFLAGRATION, m_creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -318,7 +318,12 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
|||||||
m_creature->CastSpell(Vapor, SPELL_VAPOR_CHANNEL, false); // core bug
|
m_creature->CastSpell(Vapor, SPELL_VAPOR_CHANNEL, false); // core bug
|
||||||
Vapor->CastSpell(Vapor, SPELL_VAPOR_TRIGGER, true);
|
Vapor->CastSpell(Vapor, SPELL_VAPOR_TRIGGER, true);
|
||||||
}
|
}
|
||||||
}else EnterEvadeMode();
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
|
}
|
||||||
Timer[EVENT_FLIGHT_SEQUENCE] = 10000;
|
Timer[EVENT_FLIGHT_SEQUENCE] = 10000;
|
||||||
break;}
|
break;}
|
||||||
case 3: {
|
case 3: {
|
||||||
@@ -339,7 +344,12 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
|||||||
m_creature->CastSpell(Vapor, SPELL_VAPOR_CHANNEL, false); // core bug
|
m_creature->CastSpell(Vapor, SPELL_VAPOR_CHANNEL, false); // core bug
|
||||||
Vapor->CastSpell(Vapor, SPELL_VAPOR_TRIGGER, true);
|
Vapor->CastSpell(Vapor, SPELL_VAPOR_TRIGGER, true);
|
||||||
}
|
}
|
||||||
}else EnterEvadeMode();
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
|
}
|
||||||
Timer[EVENT_FLIGHT_SEQUENCE] = 10000;
|
Timer[EVENT_FLIGHT_SEQUENCE] = 10000;
|
||||||
break;}
|
break;}
|
||||||
case 4:
|
case 4:
|
||||||
@@ -357,7 +367,11 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
|||||||
float x, y, z;
|
float x, y, z;
|
||||||
target->GetContactPoint(m_creature, x, y, z, 70);
|
target->GetContactPoint(m_creature, x, y, z, 70);
|
||||||
m_creature->GetMotionMaster()->MovePoint(0, x, y, z+10);
|
m_creature->GetMotionMaster()->MovePoint(0, x, y, z+10);
|
||||||
}else EnterEvadeMode();
|
}else
|
||||||
|
{
|
||||||
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
|
}
|
||||||
Timer[EVENT_FLIGHT_SEQUENCE] = 0;
|
Timer[EVENT_FLIGHT_SEQUENCE] = 0;
|
||||||
break;}
|
break;}
|
||||||
case 6:
|
case 6:
|
||||||
@@ -391,7 +405,12 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
|||||||
float x, y, z;
|
float x, y, z;
|
||||||
target->GetContactPoint(m_creature, x, y, z);
|
target->GetContactPoint(m_creature, x, y, z);
|
||||||
m_creature->GetMotionMaster()->MovePoint(0, x, y, z);
|
m_creature->GetMotionMaster()->MovePoint(0, x, y, z);
|
||||||
}else EnterEvadeMode();
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
|
}
|
||||||
Timer[EVENT_FLIGHT_SEQUENCE] = 0;
|
Timer[EVENT_FLIGHT_SEQUENCE] = 0;
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
|
|||||||
@@ -396,6 +396,7 @@ struct TRINITY_DLL_DECL boss_sathrovarrAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
DoTextEmote("is unable to find Kalecgos", NULL);
|
DoTextEmote("is unable to find Kalecgos", NULL);
|
||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CheckTimer = 1000;
|
CheckTimer = 1000;
|
||||||
@@ -594,6 +595,7 @@ void boss_kalecgosAI::UpdateAI(const uint32 diff)
|
|||||||
{
|
{
|
||||||
error_log("TSCR: Didn't find Shathrowar. Kalecgos event reseted.");
|
error_log("TSCR: Didn't find Shathrowar. Kalecgos event reseted.");
|
||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CheckTimer = 1000;
|
CheckTimer = 1000;
|
||||||
@@ -627,7 +629,7 @@ void boss_kalecgosAI::UpdateAI(const uint32 diff)
|
|||||||
{
|
{
|
||||||
//this is a hack. we need to find a victim without aura in core
|
//this is a hack. we need to find a victim without aura in core
|
||||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
if( ( target != m_creature->getVictim() ) && target->isAlive() && !(target->HasAura(AURA_SPECTRAL_EXHAUSTION)) )
|
if( target && target != m_creature->getVictim() && target->isAlive() && !target->HasAura(AURA_SPECTRAL_EXHAUSTION) )
|
||||||
{
|
{
|
||||||
DoCast(target, SPELL_SPECTRAL_BLAST);
|
DoCast(target, SPELL_SPECTRAL_BLAST);
|
||||||
SpectralBlastTimer = 20000+(rand()%5000);
|
SpectralBlastTimer = 20000+(rand()%5000);
|
||||||
|
|||||||
@@ -545,7 +545,8 @@ struct TRINITY_DLL_DECL boss_kiljaedenAI : public Scripted_NoMovementAI
|
|||||||
}
|
}
|
||||||
target->GetPosition(x,y,z);
|
target->GetPosition(x,y,z);
|
||||||
Creature* SinisterReflection = m_creature->SummonCreature(CREATURE_SINISTER_REFLECTION, x,y,z,0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
Creature* SinisterReflection = m_creature->SummonCreature(CREATURE_SINISTER_REFLECTION, x,y,z,0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||||
SinisterReflection->AI()->AttackStart(target);
|
if(SinisterReflection)
|
||||||
|
SinisterReflection->AI()->AttackStart(target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -380,7 +380,7 @@ struct TRINITY_DLL_DECL npc_OOX17AI : public npc_escortAI
|
|||||||
DoScriptText(SAY_CHICKEN_AMB, m_creature);
|
DoScriptText(SAY_CHICKEN_AMB, m_creature);
|
||||||
{Unit* scoff = FindCreature(SPAWN_SECOND_2, 30, m_creature);
|
{Unit* scoff = FindCreature(SPAWN_SECOND_2, 30, m_creature);
|
||||||
if(scoff)
|
if(scoff)
|
||||||
DoScriptText(SAY_SCOFF, scoff);}break;
|
DoScriptText(SAY_SCOFF, scoff);}break;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 86:
|
case 86:
|
||||||
|
|||||||
@@ -276,8 +276,12 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI
|
|||||||
m_creature->Relocate(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
|
m_creature->Relocate(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
|
||||||
m_creature->StopMoving();
|
m_creature->StopMoving();
|
||||||
WaitEvent = WE_LAND;
|
WaitEvent = WE_LAND;
|
||||||
}else EnterEvadeMode();
|
}
|
||||||
return;
|
else
|
||||||
|
{
|
||||||
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
|
}
|
||||||
case WE_LAND:
|
case WE_LAND:
|
||||||
WaitEvent = WE_SUMMON;
|
WaitEvent = WE_SUMMON;
|
||||||
WaitTimer = 2000;
|
WaitTimer = 2000;
|
||||||
@@ -349,7 +353,8 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI
|
|||||||
if(Charge_Timer < diff)
|
if(Charge_Timer < diff)
|
||||||
{
|
{
|
||||||
Unit *target= SelectUnit(SELECT_TARGET_RANDOM, 1, GetSpellMaxRangeForHostile(SPELL_CHARGE), true);
|
Unit *target= SelectUnit(SELECT_TARGET_RANDOM, 1, GetSpellMaxRangeForHostile(SPELL_CHARGE), true);
|
||||||
DoCast(target, SPELL_CHARGE);
|
if(target)
|
||||||
|
DoCast(target, SPELL_CHARGE);
|
||||||
Charge_Timer = 30000;
|
Charge_Timer = 30000;
|
||||||
}else Charge_Timer -= diff;
|
}else Charge_Timer -= diff;
|
||||||
|
|
||||||
@@ -405,7 +410,7 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
Unit *target = NULL;
|
Unit *target = NULL;
|
||||||
if(Phase1 && (target = m_creature->SelectNearestTarget(5)))
|
if(Phase1 && target && (target = m_creature->SelectNearestTarget(5)))
|
||||||
m_creature->AI()->AttackStart(target);
|
m_creature->AI()->AttackStart(target);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -234,38 +234,38 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI
|
|||||||
Wrath_Timer = 20000+rand()%5000;
|
Wrath_Timer = 20000+rand()%5000;
|
||||||
}else Wrath_Timer -= diff;
|
}else Wrath_Timer -= diff;
|
||||||
|
|
||||||
if (ArcaneMissiles_Timer < diff)
|
if (ArcaneMissiles_Timer < diff)
|
||||||
{
|
{
|
||||||
if(BlindingLight)
|
if(BlindingLight)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_BLINDING_LIGHT);
|
DoCast(m_creature->getVictim(), SPELL_BLINDING_LIGHT);
|
||||||
BlindingLight = false;
|
BlindingLight = false;
|
||||||
}else{
|
}else{
|
||||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
|
|
||||||
if(!m_creature->HasInArc(2.5f, target))
|
if(!m_creature->HasInArc(2.5f, target))
|
||||||
target = m_creature->getVictim();
|
target = m_creature->getVictim();
|
||||||
|
|
||||||
|
if(target)
|
||||||
|
DoCast(target, SPELL_ARCANE_MISSILES);
|
||||||
|
}
|
||||||
|
ArcaneMissiles_Timer = 3000;
|
||||||
|
}else ArcaneMissiles_Timer -= diff;
|
||||||
|
|
||||||
|
if (MarkOfTheSolarian_Timer < diff)
|
||||||
|
{
|
||||||
|
DoCast(m_creature->getVictim(), MARK_OF_SOLARIAN);
|
||||||
|
MarkOfTheSolarian_Timer = 45000;
|
||||||
|
}else MarkOfTheSolarian_Timer -= diff;
|
||||||
|
|
||||||
|
if (MarkOfTheAstromancer_Timer < diff) //A debuff that lasts for 5 seconds, cast several times each phase on a random raid member, but not the main tank
|
||||||
|
{
|
||||||
|
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1, 100, true);
|
||||||
if(target)
|
if(target)
|
||||||
DoCast(target, SPELL_ARCANE_MISSILES);
|
DoCast(target, SPELL_MARK_OF_THE_ASTROMANCER);
|
||||||
}
|
else DoCast(m_creature->getVictim(), SPELL_MARK_OF_THE_ASTROMANCER);
|
||||||
ArcaneMissiles_Timer = 3000;
|
MarkOfTheAstromancer_Timer = 15000;
|
||||||
}else ArcaneMissiles_Timer -= diff;
|
}else MarkOfTheAstromancer_Timer -= diff;
|
||||||
|
|
||||||
if (MarkOfTheSolarian_Timer < diff)
|
|
||||||
{
|
|
||||||
DoCast(m_creature->getVictim(), MARK_OF_SOLARIAN);
|
|
||||||
MarkOfTheSolarian_Timer = 45000;
|
|
||||||
}else MarkOfTheSolarian_Timer -= diff;
|
|
||||||
|
|
||||||
if (MarkOfTheAstromancer_Timer < diff) //A debuff that lasts for 5 seconds, cast several times each phase on a random raid member, but not the main tank
|
|
||||||
{
|
|
||||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1, 100, true);
|
|
||||||
if(target)
|
|
||||||
DoCast(target, SPELL_MARK_OF_THE_ASTROMANCER);
|
|
||||||
else DoCast(m_creature->getVictim(), SPELL_MARK_OF_THE_ASTROMANCER);
|
|
||||||
MarkOfTheAstromancer_Timer = 15000;
|
|
||||||
}else MarkOfTheAstromancer_Timer -= diff;
|
|
||||||
|
|
||||||
//Phase1_Timer
|
//Phase1_Timer
|
||||||
if (Phase1_Timer < diff)
|
if (Phase1_Timer < diff)
|
||||||
@@ -384,6 +384,7 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI
|
|||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_VOIDWALKER);
|
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_VOIDWALKER);
|
||||||
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, defaultsize*2.5f);
|
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, defaultsize*2.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -258,6 +258,8 @@ struct TRINITY_DLL_DECL advisorbase_ai : public ScriptedAI
|
|||||||
if (!Target)
|
if (!Target)
|
||||||
Target = m_creature->getVictim();
|
Target = m_creature->getVictim();
|
||||||
DoResetThreat();
|
DoResetThreat();
|
||||||
|
if(!Target)
|
||||||
|
return;
|
||||||
AttackStart(Target);
|
AttackStart(Target);
|
||||||
m_creature->GetMotionMaster()->Clear();
|
m_creature->GetMotionMaster()->Clear();
|
||||||
m_creature->GetMotionMaster()->MoveChase(Target);
|
m_creature->GetMotionMaster()->MoveChase(Target);
|
||||||
@@ -325,7 +327,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
i_pl->DestroyItemCount(30318, 1, true);
|
i_pl->DestroyItemCount(30318, 1, true);
|
||||||
i_pl->DestroyItemCount(30319, 1, true);
|
i_pl->DestroyItemCount(30319, 1, true);
|
||||||
i_pl->DestroyItemCount(30320, 1, true);
|
i_pl->DestroyItemCount(30320, 1, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
@@ -436,7 +438,8 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
summoned->setFaction(m_creature->getFaction());
|
summoned->setFaction(m_creature->getFaction());
|
||||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
summoned->AI()->AttackStart(target);
|
if(target)
|
||||||
|
summoned->AI()->AttackStart(target);
|
||||||
}
|
}
|
||||||
summons.Summon(summoned);
|
summons.Summon(summoned);
|
||||||
}
|
}
|
||||||
@@ -498,12 +501,12 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(pInstance && Phase)
|
if(pInstance && Phase)
|
||||||
{
|
{
|
||||||
if(pInstance->GetData(DATA_KAELTHASEVENT) == IN_PROGRESS && m_creature->getThreatManager().getThreatList().empty())
|
if(pInstance->GetData(DATA_KAELTHASEVENT) == IN_PROGRESS && m_creature->getThreatManager().getThreatList().empty())
|
||||||
{
|
{
|
||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -730,7 +733,8 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
Advisor = (Unit::GetCreature((*m_creature), AdvisorGuid[i]));
|
Advisor = (Unit::GetCreature((*m_creature), AdvisorGuid[i]));
|
||||||
if (!Advisor)
|
if (!Advisor)
|
||||||
error_log("TSCR: Kael'Thas Advisor %u does not exist. Possibly despawned? Incorrectly Killed?", i);
|
error_log("TSCR: Kael'Thas Advisor %u does not exist. Possibly despawned? Incorrectly Killed?", i);
|
||||||
else ((advisorbase_ai*)Advisor->AI())->Revive(Target);
|
else if(Target)
|
||||||
|
((advisorbase_ai*)Advisor->AI())->Revive(Target);
|
||||||
}
|
}
|
||||||
|
|
||||||
PhaseSubphase = 1;
|
PhaseSubphase = 1;
|
||||||
@@ -815,7 +819,8 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
Unit* target =SelectUnit(SELECT_TARGET_RANDOM, 1, 70, true);
|
Unit* target =SelectUnit(SELECT_TARGET_RANDOM, 1, 70, true);
|
||||||
if(!target) target = m_creature->getVictim();
|
if(!target) target = m_creature->getVictim();
|
||||||
debug_log("TSCR: Kael'Thas mind control not supported.");
|
debug_log("TSCR: Kael'Thas mind control not supported.");
|
||||||
DoCast(target, SPELL_MIND_CONTROL);
|
if(target)
|
||||||
|
DoCast(target, SPELL_MIND_CONTROL);
|
||||||
}
|
}
|
||||||
|
|
||||||
MindControl_Timer = 60000;
|
MindControl_Timer = 60000;
|
||||||
@@ -1078,8 +1083,11 @@ struct TRINITY_DLL_DECL boss_thaladred_the_darkenerAI : public advisorbase_ai
|
|||||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 100, true))
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||||
{
|
{
|
||||||
DoResetThreat();
|
DoResetThreat();
|
||||||
m_creature->AddThreat(target, 5000000.0f);
|
if(target)
|
||||||
DoScriptText(EMOTE_THALADRED_GAZE, m_creature, target);
|
{
|
||||||
|
m_creature->AddThreat(target, 5000000.0f);
|
||||||
|
DoScriptText(EMOTE_THALADRED_GAZE, m_creature, target);
|
||||||
|
}
|
||||||
Gaze_Timer = 8500;
|
Gaze_Timer = 8500;
|
||||||
}
|
}
|
||||||
}else Gaze_Timer -= diff;
|
}else Gaze_Timer -= diff;
|
||||||
@@ -1390,7 +1398,7 @@ struct TRINITY_DLL_DECL mob_kael_flamestrikeAI : public ScriptedAI
|
|||||||
//Phoenix AI
|
//Phoenix AI
|
||||||
struct TRINITY_DLL_DECL mob_phoenix_tkAI : public ScriptedAI
|
struct TRINITY_DLL_DECL mob_phoenix_tkAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
mob_phoenix_tkAI(Creature *c) : ScriptedAI(c)
|
mob_phoenix_tkAI(Creature *c) : ScriptedAI(c)
|
||||||
{
|
{
|
||||||
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
pInstance = ((ScriptedInstance*)c->GetInstanceData());
|
||||||
}
|
}
|
||||||
@@ -1400,7 +1408,7 @@ struct TRINITY_DLL_DECL mob_phoenix_tkAI : public ScriptedAI
|
|||||||
bool egg;
|
bool egg;
|
||||||
|
|
||||||
void JustDied(Unit *victim)
|
void JustDied(Unit *victim)
|
||||||
{
|
{
|
||||||
if(egg)
|
if(egg)
|
||||||
{
|
{
|
||||||
float x,y,z;
|
float x,y,z;
|
||||||
@@ -1430,7 +1438,7 @@ struct TRINITY_DLL_DECL mob_phoenix_tkAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
if (Cycle_Timer < diff)
|
if (Cycle_Timer < diff)
|
||||||
{
|
{
|
||||||
if(pInstance)//check for boss reset
|
if(pInstance)//check for boss reset
|
||||||
@@ -1439,7 +1447,7 @@ struct TRINITY_DLL_DECL mob_phoenix_tkAI : public ScriptedAI
|
|||||||
if (Kael && Kael->getThreatManager().getThreatList().empty())
|
if (Kael && Kael->getThreatManager().getThreatList().empty())
|
||||||
{
|
{
|
||||||
egg = false;
|
egg = false;
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||||
Cycle_Timer = 2000;
|
Cycle_Timer = 2000;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1452,7 +1460,7 @@ struct TRINITY_DLL_DECL mob_phoenix_tkAI : public ScriptedAI
|
|||||||
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||||
Cycle_Timer = 2000;
|
Cycle_Timer = 2000;
|
||||||
}else Cycle_Timer -= diff;
|
}else Cycle_Timer -= diff;
|
||||||
|
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
return;
|
return;
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
|
|||||||
-2
@@ -100,7 +100,6 @@ struct TRINITY_DLL_DECL boss_nethermancer_sepethreaAI : public ScriptedAI
|
|||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
|
|
||||||
//Return since we have no target
|
//Return since we have no target
|
||||||
if (!UpdateVictim() )
|
if (!UpdateVictim() )
|
||||||
return;
|
return;
|
||||||
@@ -151,7 +150,6 @@ struct TRINITY_DLL_DECL boss_nethermancer_sepethreaAI : public ScriptedAI
|
|||||||
}else solarburn_Timer -= diff;
|
}else solarburn_Timer -= diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
-2
@@ -216,7 +216,6 @@ struct TRINITY_DLL_DECL mob_nether_wraithAI : public ScriptedAI
|
|||||||
DoCast(m_creature,SPELL_DETONATION);
|
DoCast(m_creature,SPELL_DETONATION);
|
||||||
Detonation = true;
|
Detonation = true;
|
||||||
}else Detonation_Timer -= diff;
|
}else Detonation_Timer -= diff;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Detonation)
|
if (Detonation)
|
||||||
@@ -228,7 +227,6 @@ struct TRINITY_DLL_DECL mob_nether_wraithAI : public ScriptedAI
|
|||||||
}else Die_Timer -= diff;
|
}else Die_Timer -= diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -239,7 +239,7 @@ struct TRINITY_DLL_DECL boss_yaujAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||||
Creature* Summoned = m_creature->SummonCreature(15621,m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,90000);
|
Creature* Summoned = m_creature->SummonCreature(15621,m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,90000);
|
||||||
if(Summoned)
|
if(Summoned && target)
|
||||||
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
((CreatureAI*)Summoned->AI())->AttackStart(target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,6 +58,9 @@ struct TRINITY_DLL_DECL boss_fankrissAI : public ScriptedAI
|
|||||||
|
|
||||||
void SummonSpawn(Unit* victim)
|
void SummonSpawn(Unit* victim)
|
||||||
{
|
{
|
||||||
|
if(!victim)
|
||||||
|
return;
|
||||||
|
|
||||||
Rand = 10 + (rand()%10);
|
Rand = 10 + (rand()%10);
|
||||||
switch (rand()%2)
|
switch (rand()%2)
|
||||||
{
|
{
|
||||||
@@ -135,47 +138,47 @@ struct TRINITY_DLL_DECL boss_fankrissAI : public ScriptedAI
|
|||||||
case 0:
|
case 0:
|
||||||
DoTeleportPlayer(target, -8106.0142,1289.2900,-74.419533,5.112);
|
DoTeleportPlayer(target, -8106.0142,1289.2900,-74.419533,5.112);
|
||||||
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()-3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()-3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Hatchling)
|
if(Hatchling)
|
||||||
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
||||||
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()+3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()+3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Hatchling)
|
if(Hatchling)
|
||||||
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
||||||
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()-5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()-5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Hatchling)
|
if(Hatchling)
|
||||||
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
||||||
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()+5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()+5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Hatchling)
|
if(Hatchling)
|
||||||
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
DoTeleportPlayer(target, -7990.135354,1155.1907,-78.849319,2.608);
|
DoTeleportPlayer(target, -7990.135354,1155.1907,-78.849319,2.608);
|
||||||
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()-3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()-3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Hatchling)
|
if(Hatchling)
|
||||||
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
||||||
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()+3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()+3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Hatchling)
|
if(Hatchling)
|
||||||
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
||||||
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()-5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()-5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Hatchling)
|
if(Hatchling)
|
||||||
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
||||||
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()+5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()+5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Hatchling)
|
if(Hatchling)
|
||||||
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
DoTeleportPlayer(target,-8159.7753,1127.9064,-76.868660,0.675);
|
DoTeleportPlayer(target,-8159.7753,1127.9064,-76.868660,0.675);
|
||||||
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()-3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()-3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Hatchling)
|
if(Hatchling)
|
||||||
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
||||||
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()+3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-3, target->GetPositionY()+3, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Hatchling)
|
if(Hatchling)
|
||||||
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
||||||
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()-5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()-5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Hatchling)
|
if(Hatchling)
|
||||||
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
||||||
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()+5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Hatchling = m_creature->SummonCreature(15962, target->GetPositionX()-5, target->GetPositionY()+5, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Hatchling)
|
if(Hatchling)
|
||||||
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
((CreatureAI*)Hatchling->AI())->AttackStart(target);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,7 +103,8 @@ struct TRINITY_DLL_DECL boss_ouroAI : public ScriptedAI
|
|||||||
Unit* target = NULL;
|
Unit* target = NULL;
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||||
|
|
||||||
DoTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
|
if(target)
|
||||||
|
DoTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
|
||||||
|
|
||||||
ChangeTarget_Timer = 10000 + rand()%10000;
|
ChangeTarget_Timer = 10000 + rand()%10000;
|
||||||
}else ChangeTarget_Timer -= diff;
|
}else ChangeTarget_Timer -= diff;
|
||||||
|
|||||||
@@ -169,7 +169,6 @@ struct TRINITY_DLL_DECL boss_sarturaAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct TRINITY_DLL_DECL mob_sartura_royal_guardAI : public ScriptedAI
|
struct TRINITY_DLL_DECL mob_sartura_royal_guardAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
mob_sartura_royal_guardAI(Creature *c) : ScriptedAI(c) {}
|
mob_sartura_royal_guardAI(Creature *c) : ScriptedAI(c) {}
|
||||||
@@ -195,7 +194,6 @@ struct TRINITY_DLL_DECL mob_sartura_royal_guardAI : public ScriptedAI
|
|||||||
|
|
||||||
WhirlWind = false;
|
WhirlWind = false;
|
||||||
AggroReset = false;
|
AggroReset = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit *who)
|
void EnterCombat(Unit *who)
|
||||||
|
|||||||
@@ -265,8 +265,11 @@ struct TRINITY_DLL_DECL boss_twinemperorsAI : public ScriptedAI
|
|||||||
m_creature->clearUnitState(UNIT_STAT_STUNNED);
|
m_creature->clearUnitState(UNIT_STAT_STUNNED);
|
||||||
Unit *nearu = m_creature->SelectNearestTarget(100);
|
Unit *nearu = m_creature->SelectNearestTarget(100);
|
||||||
//DoYell(nearu->GetName(), LANG_UNIVERSAL, 0);
|
//DoYell(nearu->GetName(), LANG_UNIVERSAL, 0);
|
||||||
AttackStart(nearu);
|
if(nearu)
|
||||||
m_creature->getThreatManager().addThreat(nearu, 10000);
|
{
|
||||||
|
AttackStart(nearu);
|
||||||
|
m_creature->getThreatManager().addThreat(nearu, 10000);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -345,7 +348,7 @@ struct TRINITY_DLL_DECL boss_twinemperorsAI : public ScriptedAI
|
|||||||
for(std::list<Creature*>::iterator iter = unitList.begin(); iter != unitList.end(); ++iter)
|
for(std::list<Creature*>::iterator iter = unitList.begin(); iter != unitList.end(); ++iter)
|
||||||
{
|
{
|
||||||
Creature *c = (Creature *)(*iter);
|
Creature *c = (Creature *)(*iter);
|
||||||
if (c->isDead())
|
if (c && c->isDead())
|
||||||
{
|
{
|
||||||
c->Respawn();
|
c->Respawn();
|
||||||
c->setFaction(7);
|
c->setFaction(7);
|
||||||
|
|||||||
@@ -120,6 +120,7 @@ struct TRINITY_DLL_DECL mob_unkor_the_ruthlessAI : public ScriptedAI
|
|||||||
if( UnkorUnfriendly_Timer < diff )
|
if( UnkorUnfriendly_Timer < diff )
|
||||||
{
|
{
|
||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
}else UnkorUnfriendly_Timer -= diff;
|
}else UnkorUnfriendly_Timer -= diff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,6 +120,8 @@ struct TRINITY_DLL_DECL boss_archaedasAI : public ScriptedAI
|
|||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
|
if(!pInstance)
|
||||||
|
return;
|
||||||
// we're still doing awaken animation
|
// we're still doing awaken animation
|
||||||
if (wakingUp && Awaken_Timer >= 0) {
|
if (wakingUp && Awaken_Timer >= 0) {
|
||||||
Awaken_Timer -= diff;
|
Awaken_Timer -= diff;
|
||||||
@@ -180,8 +182,11 @@ struct TRINITY_DLL_DECL boss_archaedasAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
void JustDied (Unit *killer) {
|
void JustDied (Unit *killer) {
|
||||||
pInstance->SetData(NULL,3); // open the vault door
|
if(pInstance)
|
||||||
pInstance->SetData(NULL,4); // deactivate his minions
|
{
|
||||||
|
pInstance->SetData(NULL,3); // open the vault door
|
||||||
|
pInstance->SetData(NULL,4); // deactivate his minions
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -389,7 +394,8 @@ struct TRINITY_DLL_DECL mob_stonekeepersAI : public ScriptedAI
|
|||||||
void DamageTaken (Unit *attacker, uint32 &damage) {
|
void DamageTaken (Unit *attacker, uint32 &damage) {
|
||||||
if (damage > m_creature->GetHealth()) {
|
if (damage > m_creature->GetHealth()) {
|
||||||
DoCast (m_creature, SPELL_SELF_DESTRUCT,true);
|
DoCast (m_creature, SPELL_SELF_DESTRUCT,true);
|
||||||
pInstance->SetData(NULL, 1); // activate next stonekeeper
|
if(pInstance)
|
||||||
|
pInstance->SetData(NULL, 1); // activate next stonekeeper
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -189,7 +189,10 @@ struct TRINITY_DLL_DECL boss_hexlord_addAI : public ScriptedAI
|
|||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
if(pInstance && pInstance->GetData(DATA_HEXLORDEVENT) != IN_PROGRESS)
|
if(pInstance && pInstance->GetData(DATA_HEXLORDEVENT) != IN_PROGRESS)
|
||||||
|
{
|
||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
@@ -382,7 +385,11 @@ struct TRINITY_DLL_DECL boss_hex_lord_malacrassAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 70, true);
|
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 70, true);
|
||||||
Unit *trigger = DoSpawnCreature(MOB_TEMP_TRIGGER, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN, 30000);
|
Unit *trigger = DoSpawnCreature(MOB_TEMP_TRIGGER, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN, 30000);
|
||||||
if(!target || !trigger) EnterEvadeMode();
|
if(!target || !trigger)
|
||||||
|
{
|
||||||
|
EnterEvadeMode();
|
||||||
|
return;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
trigger->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686);
|
trigger->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686);
|
||||||
|
|||||||
@@ -407,7 +407,8 @@ struct TRINITY_DLL_DECL boss_nalorakkAI : public ScriptedAI
|
|||||||
DoYell(YELL_SURGE, LANG_UNIVERSAL, NULL);
|
DoYell(YELL_SURGE, LANG_UNIVERSAL, NULL);
|
||||||
DoPlaySoundToSet(m_creature, SOUND_YELL_SURGE);
|
DoPlaySoundToSet(m_creature, SOUND_YELL_SURGE);
|
||||||
Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 1, GetSpellMaxRangeForHostile(SPELL_SURGE), true);
|
Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 1, GetSpellMaxRangeForHostile(SPELL_SURGE), true);
|
||||||
DoCast(target, SPELL_SURGE);
|
if(target)
|
||||||
|
DoCast(target, SPELL_SURGE);
|
||||||
Surge_Timer = 15000 + rand()%5000;
|
Surge_Timer = 15000 + rand()%5000;
|
||||||
}else Surge_Timer -= diff;
|
}else Surge_Timer -= diff;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -487,7 +487,12 @@ struct TRINITY_DLL_DECL boss_zuljinAI : public ScriptedAI
|
|||||||
else
|
else
|
||||||
Claw_Loop_Timer = 500;
|
Claw_Loop_Timer = 500;
|
||||||
}
|
}
|
||||||
}else EnterEvadeMode(); // if(target)
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EnterEvadeMode(); // if(target)
|
||||||
|
return;
|
||||||
|
}
|
||||||
}else Claw_Loop_Timer -= diff;
|
}else Claw_Loop_Timer -= diff;
|
||||||
} //if(TankGUID)
|
} //if(TankGUID)
|
||||||
}else Claw_Rage_Timer -= diff;
|
}else Claw_Rage_Timer -= diff;
|
||||||
@@ -529,7 +534,12 @@ struct TRINITY_DLL_DECL boss_zuljinAI : public ScriptedAI
|
|||||||
else
|
else
|
||||||
AttackStart(SelectUnit(SELECT_TARGET_RANDOM, 0));
|
AttackStart(SelectUnit(SELECT_TARGET_RANDOM, 0));
|
||||||
}
|
}
|
||||||
}else EnterEvadeMode(); // if(target)
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EnterEvadeMode(); // if(target)
|
||||||
|
return;
|
||||||
|
}
|
||||||
} //if(TankGUID)
|
} //if(TankGUID)
|
||||||
}else Lynx_Rush_Timer -= diff;
|
}else Lynx_Rush_Timer -= diff;
|
||||||
|
|
||||||
|
|||||||
@@ -125,13 +125,13 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
DoScriptText(SAY_FEAST_PANTHER, m_creature, markedTarget);
|
DoScriptText(SAY_FEAST_PANTHER, m_creature, markedTarget);
|
||||||
Panther ->AI()->AttackStart(markedTarget);
|
Panther ->AI()->AttackStart(markedTarget);
|
||||||
}else Panther ->AI()->AttackStart(target);
|
}else if(Panther && target) Panther ->AI()->AttackStart(target);
|
||||||
|
|
||||||
Panther = m_creature->SummonCreature(15101,-11532.9970,-1606.4840,41.2979,0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Panther = m_creature->SummonCreature(15101,-11532.9970,-1606.4840,41.2979,0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
|
|
||||||
if(markedTarget && Panther )
|
if(markedTarget && Panther )
|
||||||
Panther ->AI()->AttackStart(markedTarget);
|
Panther ->AI()->AttackStart(markedTarget);
|
||||||
else
|
else if(Panther && target)
|
||||||
Panther ->AI()->AttackStart(target);
|
Panther ->AI()->AttackStart(target);
|
||||||
|
|
||||||
Counter++;
|
Counter++;
|
||||||
@@ -164,7 +164,8 @@ struct TRINITY_DLL_DECL boss_arlokkAI : public ScriptedAI
|
|||||||
m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35)));
|
m_creature->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35)));
|
||||||
m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35)));
|
m_creature->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35)));
|
||||||
m_creature->UpdateDamagePhysical(BASE_ATTACK);
|
m_creature->UpdateDamagePhysical(BASE_ATTACK);
|
||||||
AttackStart(target);
|
if(target)
|
||||||
|
AttackStart(target);
|
||||||
//The Panther Model
|
//The Panther Model
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,15215);
|
m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID,15215);
|
||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
|||||||
@@ -75,8 +75,12 @@ struct TRINITY_DLL_DECL boss_hazzarahAI : public ScriptedAI
|
|||||||
for(int i = 0; i < 3;i++)
|
for(int i = 0; i < 3;i++)
|
||||||
{
|
{
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||||
|
if(!target)
|
||||||
|
return;
|
||||||
|
|
||||||
Illusion = m_creature->SummonCreature(15163,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,30000);
|
Illusion = m_creature->SummonCreature(15163,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,30000);
|
||||||
((CreatureAI*)Illusion->AI())->AttackStart(target);
|
if(Illusion)
|
||||||
|
((CreatureAI*)Illusion->AI())->AttackStart(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
Illusions_Timer = 15000 + rand()%10000;
|
Illusions_Timer = 15000 + rand()%10000;
|
||||||
|
|||||||
@@ -184,13 +184,12 @@ struct TRINITY_DLL_DECL boss_jeklikAI : public ScriptedAI
|
|||||||
if(SpawnFlyingBats_Timer < diff)
|
if(SpawnFlyingBats_Timer < diff)
|
||||||
{
|
{
|
||||||
Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
|
if(!target)
|
||||||
|
return;
|
||||||
|
|
||||||
Creature* FlyingBat = m_creature->SummonCreature(14965, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()+15, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Creature* FlyingBat = m_creature->SummonCreature(14965, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()+15, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if(FlyingBat)
|
if(FlyingBat)
|
||||||
{
|
FlyingBat->AI()->AttackStart(target);
|
||||||
if(target)
|
|
||||||
FlyingBat->AI()->AttackStart(target);
|
|
||||||
}
|
|
||||||
|
|
||||||
SpawnFlyingBats_Timer = 10000 + rand()%5000;
|
SpawnFlyingBats_Timer = 10000 + rand()%5000;
|
||||||
}else SpawnFlyingBats_Timer -=diff;
|
}else SpawnFlyingBats_Timer -=diff;
|
||||||
|
|||||||
@@ -104,11 +104,11 @@ struct TRINITY_DLL_DECL boss_jindoAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
{
|
{
|
||||||
DoCast(target, SPELL_DELUSIONSOFJINDO);
|
DoCast(target, SPELL_DELUSIONSOFJINDO);
|
||||||
|
|
||||||
Creature *Shade = m_creature->SummonCreature(14986, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Creature *Shade = m_creature->SummonCreature(14986, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Shade)
|
if(Shade)
|
||||||
Shade->AI()->AttackStart(target);
|
Shade->AI()->AttackStart(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
Delusions_Timer = 4000 + rand()%8000;
|
Delusions_Timer = 4000 + rand()%8000;
|
||||||
@@ -128,32 +128,32 @@ struct TRINITY_DLL_DECL boss_jindoAI : public ScriptedAI
|
|||||||
|
|
||||||
Creature *Skeletons;
|
Creature *Skeletons;
|
||||||
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX()+2, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX()+2, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Skeletons)
|
if(Skeletons)
|
||||||
Skeletons->AI()->AttackStart(target);
|
Skeletons->AI()->AttackStart(target);
|
||||||
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX()-2, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX()-2, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Skeletons)
|
if(Skeletons)
|
||||||
Skeletons->AI()->AttackStart(target);
|
Skeletons->AI()->AttackStart(target);
|
||||||
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX()+4, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX()+4, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Skeletons)
|
if(Skeletons)
|
||||||
Skeletons->AI()->AttackStart(target);
|
Skeletons->AI()->AttackStart(target);
|
||||||
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX()-4, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX()-4, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Skeletons)
|
if(Skeletons)
|
||||||
Skeletons->AI()->AttackStart(target);
|
Skeletons->AI()->AttackStart(target);
|
||||||
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()+2, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()+2, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Skeletons)
|
if(Skeletons)
|
||||||
Skeletons->AI()->AttackStart(target);
|
Skeletons->AI()->AttackStart(target);
|
||||||
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()-2, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()-2, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Skeletons)
|
if(Skeletons)
|
||||||
Skeletons->AI()->AttackStart(target);
|
Skeletons->AI()->AttackStart(target);
|
||||||
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()+4, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()+4, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Skeletons)
|
if(Skeletons)
|
||||||
Skeletons->AI()->AttackStart(target);
|
Skeletons->AI()->AttackStart(target);
|
||||||
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()-4, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()-4, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Skeletons)
|
if(Skeletons)
|
||||||
Skeletons->AI()->AttackStart(target);
|
Skeletons->AI()->AttackStart(target);
|
||||||
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX()+3, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Skeletons = m_creature->SummonCreature(14826, target->GetPositionX()+3, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (Skeletons)
|
if(Skeletons)
|
||||||
Skeletons->AI()->AttackStart(target);
|
Skeletons->AI()->AttackStart(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
Teleport_Timer = 15000 + rand()%8000;
|
Teleport_Timer = 15000 + rand()%8000;
|
||||||
@@ -192,7 +192,8 @@ struct TRINITY_DLL_DECL mob_healing_wardAI : public ScriptedAI
|
|||||||
if(pInstance)
|
if(pInstance)
|
||||||
{
|
{
|
||||||
Unit *pJindo = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_JINDO));
|
Unit *pJindo = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_JINDO));
|
||||||
DoCast(pJindo, SPELL_HEAL);
|
if(pJindo)
|
||||||
|
DoCast(pJindo, SPELL_HEAL);
|
||||||
}
|
}
|
||||||
Heal_Timer = 3000;
|
Heal_Timer = 3000;
|
||||||
}else Heal_Timer -= diff;
|
}else Heal_Timer -= diff;
|
||||||
|
|||||||
@@ -112,15 +112,21 @@ struct TRINITY_DLL_DECL boss_marliAI : public ScriptedAI
|
|||||||
DoScriptText(SAY_SPIDER_SPAWN, m_creature);
|
DoScriptText(SAY_SPIDER_SPAWN, m_creature);
|
||||||
|
|
||||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||||
|
if(!target)
|
||||||
|
return;
|
||||||
|
|
||||||
Spider = m_creature->SummonCreature(15041,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Spider = m_creature->SummonCreature(15041,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if(target && Spider ) Spider ->AI()->AttackStart(target);
|
if(Spider)
|
||||||
|
Spider->AI()->AttackStart(target);
|
||||||
Spider = m_creature->SummonCreature(15041,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Spider = m_creature->SummonCreature(15041,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if(target && Spider ) Spider ->AI()->AttackStart(target);
|
if(Spider)
|
||||||
|
Spider->AI()->AttackStart(target);
|
||||||
Spider = m_creature->SummonCreature(15041,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Spider = m_creature->SummonCreature(15041,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if(target && Spider ) Spider ->AI()->AttackStart(target);
|
if(Spider)
|
||||||
|
Spider->AI()->AttackStart(target);
|
||||||
Spider = m_creature->SummonCreature(15041,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Spider = m_creature->SummonCreature(15041,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if(target && Spider ) Spider ->AI()->AttackStart(target);
|
if(Spider)
|
||||||
|
Spider->AI()->AttackStart(target);
|
||||||
|
|
||||||
Spawned = true;
|
Spawned = true;
|
||||||
}else SpawnStartSpiders_Timer -= diff;
|
}else SpawnStartSpiders_Timer -= diff;
|
||||||
@@ -128,10 +134,12 @@ struct TRINITY_DLL_DECL boss_marliAI : public ScriptedAI
|
|||||||
if (SpawnSpider_Timer < diff)
|
if (SpawnSpider_Timer < diff)
|
||||||
{
|
{
|
||||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||||
|
if(!target)
|
||||||
|
return;
|
||||||
|
|
||||||
Spider = m_creature->SummonCreature(15041,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
Spider = m_creature->SummonCreature(15041,target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
|
||||||
if (target && Spider )
|
if(Spider)
|
||||||
Spider ->AI()->AttackStart(target);
|
Spider->AI()->AttackStart(target);
|
||||||
SpawnSpider_Timer = 12000 + rand()%5000;
|
SpawnSpider_Timer = 12000 + rand()%5000;
|
||||||
}else SpawnSpider_Timer -= diff;
|
}else SpawnSpider_Timer -= diff;
|
||||||
|
|
||||||
|
|||||||
@@ -118,20 +118,26 @@ struct TRINITY_DLL_DECL boss_thekalAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
//Resurrect LorKhan
|
//Resurrect LorKhan
|
||||||
Unit *pLorKhan = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_LORKHAN));
|
Unit *pLorKhan = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_LORKHAN));
|
||||||
pLorKhan->SetStandState(UNIT_STAND_STATE_STAND);
|
if(pLorKhan)
|
||||||
pLorKhan->setFaction(14);
|
{
|
||||||
pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||||
pLorKhan->SetHealth(int(pLorKhan->GetMaxHealth()*1.0));
|
pLorKhan->setFaction(14);
|
||||||
|
pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
pLorKhan->SetHealth(int(pLorKhan->GetMaxHealth()*1.0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(pInstance->GetData(DATA_ZATHISDEAD))
|
if(pInstance->GetData(DATA_ZATHISDEAD))
|
||||||
{
|
{
|
||||||
//Resurrect Zath
|
//Resurrect Zath
|
||||||
Unit *pZath = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_ZATH));
|
Unit *pZath = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_ZATH));
|
||||||
pZath->SetStandState(UNIT_STAND_STATE_STAND);
|
if(pZath)
|
||||||
pZath->setFaction(14);
|
{
|
||||||
pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||||
pZath->SetHealth(int(pZath->GetMaxHealth()*1.0));
|
pZath->setFaction(14);
|
||||||
|
pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
pZath->SetHealth(int(pZath->GetMaxHealth()*1.0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,9 +198,9 @@ struct TRINITY_DLL_DECL boss_thekalAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
{
|
{
|
||||||
DoCast(target,SPELL_CHARGE);
|
DoCast(target,SPELL_CHARGE);
|
||||||
DoResetThreat();
|
DoResetThreat();
|
||||||
AttackStart(target);
|
AttackStart(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
Charge_Timer = 15000 + rand()%7000;
|
Charge_Timer = 15000 + rand()%7000;
|
||||||
@@ -296,6 +302,9 @@ struct TRINITY_DLL_DECL mob_zealot_lorkhanAI : public ScriptedAI
|
|||||||
Unit *pThekal = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_THEKAL));
|
Unit *pThekal = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_THEKAL));
|
||||||
Unit *pZath = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_ZATH));
|
Unit *pZath = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_ZATH));
|
||||||
|
|
||||||
|
if(!pThekal || !pZath)
|
||||||
|
return;
|
||||||
|
|
||||||
switch(rand()%2)
|
switch(rand()%2)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
@@ -328,20 +337,26 @@ struct TRINITY_DLL_DECL mob_zealot_lorkhanAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
//Resurrect Thekal
|
//Resurrect Thekal
|
||||||
Unit *pThekal = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_THEKAL));
|
Unit *pThekal = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_THEKAL));
|
||||||
pThekal->SetStandState(UNIT_STAND_STATE_STAND);
|
if(pThekal)
|
||||||
pThekal->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
{
|
||||||
pThekal->setFaction(14);
|
pThekal->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||||
pThekal->SetHealth(int(pThekal->GetMaxHealth()*1.0));
|
pThekal->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
pThekal->setFaction(14);
|
||||||
|
pThekal->SetHealth(int(pThekal->GetMaxHealth()*1.0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(pInstance->GetData(DATA_ZATHISDEAD))
|
if(pInstance->GetData(DATA_ZATHISDEAD))
|
||||||
{
|
{
|
||||||
//Resurrect Zath
|
//Resurrect Zath
|
||||||
Unit *pZath = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_ZATH));
|
Unit *pZath = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_ZATH));
|
||||||
pZath->SetStandState(UNIT_STAND_STATE_STAND);
|
if(pZath)
|
||||||
pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
{
|
||||||
pZath->setFaction(14);
|
pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||||
pZath->SetHealth(int(pZath->GetMaxHealth()*1.0));
|
pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
pZath->setFaction(14);
|
||||||
|
pZath->SetHealth(int(pZath->GetMaxHealth()*1.0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -459,20 +474,26 @@ struct TRINITY_DLL_DECL mob_zealot_zathAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
//Resurrect LorKhan
|
//Resurrect LorKhan
|
||||||
Unit *pLorKhan = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_LORKHAN));
|
Unit *pLorKhan = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_LORKHAN));
|
||||||
pLorKhan->SetStandState(UNIT_STAND_STATE_STAND);
|
if(pLorKhan)
|
||||||
pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
{
|
||||||
pLorKhan->setFaction(14);
|
pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||||
pLorKhan->SetHealth(int(pLorKhan->GetMaxHealth()*1.0));
|
pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
pLorKhan->setFaction(14);
|
||||||
|
pLorKhan->SetHealth(int(pLorKhan->GetMaxHealth()*1.0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(pInstance->GetData(DATA_THEKALISFAKEDEAD))
|
if(pInstance->GetData(DATA_THEKALISFAKEDEAD))
|
||||||
{
|
{
|
||||||
//Resurrect Thekal
|
//Resurrect Thekal
|
||||||
Unit *pThekal = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_THEKAL));
|
Unit *pThekal = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_THEKAL));
|
||||||
pThekal->SetStandState(UNIT_STAND_STATE_STAND);
|
if(pThekal)
|
||||||
pThekal->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
{
|
||||||
pThekal->setFaction(14);
|
pThekal->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||||
pThekal->SetHealth(int(pThekal->GetMaxHealth()*1.0));
|
pThekal->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
pThekal->setFaction(14);
|
||||||
|
pThekal->SetHealth(int(pThekal->GetMaxHealth()*1.0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ struct TRINITY_DLL_DECL boss_venoxisAI : public ScriptedAI
|
|||||||
if (HolyFire_Timer < diff && TargetInRange < 3)
|
if (HolyFire_Timer < diff && TargetInRange < 3)
|
||||||
{
|
{
|
||||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
DoCast(target, SPELL_HOLY_FIRE);
|
DoCast(target, SPELL_HOLY_FIRE);
|
||||||
|
|
||||||
HolyFire_Timer = 8000;
|
HolyFire_Timer = 8000;
|
||||||
}else HolyFire_Timer -= diff;
|
}else HolyFire_Timer -= diff;
|
||||||
@@ -164,7 +164,7 @@ struct TRINITY_DLL_DECL boss_venoxisAI : public ScriptedAI
|
|||||||
if (PhaseTwo && VenomSpit_Timer < diff)
|
if (PhaseTwo && VenomSpit_Timer < diff)
|
||||||
{
|
{
|
||||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
DoCast(target, SPELL_VENOMSPIT);
|
DoCast(target, SPELL_VENOMSPIT);
|
||||||
|
|
||||||
VenomSpit_Timer = 15000 + rand()%5000;
|
VenomSpit_Timer = 15000 + rand()%5000;
|
||||||
}else VenomSpit_Timer -= diff;
|
}else VenomSpit_Timer -= diff;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user