*Cleanup.
--HG-- branch : trunk
This commit is contained in:
@@ -210,12 +210,7 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
Temp = Creature::GetCreature((*m_creature),AddGUID[i]);
|
Temp = Creature::GetCreature((*m_creature),AddGUID[i]);
|
||||||
if (Temp && Temp->isAlive())
|
if (Temp && Temp->isAlive())
|
||||||
{
|
Temp->DisappearAndDie();
|
||||||
(*Temp).GetMotionMaster()->Clear(true);
|
|
||||||
Temp->DealDamage(Temp, Temp->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
|
||||||
Temp->RemoveCorpse();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,10 +116,7 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
|
|||||||
if (pInstance)
|
if (pInstance)
|
||||||
{
|
{
|
||||||
if (pInstance->GetData(TYPE_NIGHTBANE) == DONE || pInstance->GetData(TYPE_NIGHTBANE) == IN_PROGRESS)
|
if (pInstance->GetData(TYPE_NIGHTBANE) == DONE || pInstance->GetData(TYPE_NIGHTBANE) == IN_PROGRESS)
|
||||||
{
|
m_creature->DisappearAndDie();
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
|
||||||
m_creature->RemoveCorpse();
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
pInstance->SetData(TYPE_NIGHTBANE, NOT_STARTED);
|
pInstance->SetData(TYPE_NIGHTBANE, NOT_STARTED);
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-8
@@ -445,8 +445,8 @@ struct TRINITY_DLL_DECL mob_felkael_flamestrikeAI : public ScriptedAI
|
|||||||
if (FlameStrikeTimer < diff)
|
if (FlameStrikeTimer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature, Heroic ? SPELL_FLAMESTRIKE1_HEROIC : SPELL_FLAMESTRIKE1_NORMAL, true);
|
DoCast(m_creature, Heroic ? SPELL_FLAMESTRIKE1_HEROIC : SPELL_FLAMESTRIKE1_NORMAL, true);
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->Kill(m_creature);
|
||||||
}else FlameStrikeTimer -= diff;
|
} else FlameStrikeTimer -= diff;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -580,8 +580,8 @@ struct TRINITY_DLL_DECL mob_felkael_phoenix_eggAI : public ScriptedAI
|
|||||||
if (HatchTimer < diff)
|
if (HatchTimer < diff)
|
||||||
{
|
{
|
||||||
m_creature->SummonCreature(CREATURE_PHOENIX, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000);
|
m_creature->SummonCreature(CREATURE_PHOENIX, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000);
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->Kill(m_creature);
|
||||||
}else HatchTimer -= diff;
|
} else HatchTimer -= diff;
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -596,7 +596,7 @@ struct TRINITY_DLL_DECL mob_arcane_sphereAI : public ScriptedAI
|
|||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
DespawnTimer = 30000;
|
DespawnTimer = 30000;
|
||||||
ChangeTargetTimer = 6000 + rand()%6000;
|
ChangeTargetTimer = urand(6000,12000);
|
||||||
|
|
||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
||||||
@@ -604,10 +604,8 @@ struct TRINITY_DLL_DECL mob_arcane_sphereAI : public ScriptedAI
|
|||||||
DoCast(m_creature, SPELL_ARCANE_SPHERE_PASSIVE, true);
|
DoCast(m_creature, SPELL_ARCANE_SPHERE_PASSIVE, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void EnterCombat(Unit* who) {}
|
void EnterCombat(Unit* who) {}
|
||||||
|
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
if (DespawnTimer < diff)
|
if (DespawnTimer < diff)
|
||||||
@@ -628,7 +626,7 @@ struct TRINITY_DLL_DECL mob_arcane_sphereAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
ChangeTargetTimer = urand(5000,15000);
|
ChangeTargetTimer = urand(5000,15000);
|
||||||
}else ChangeTargetTimer -= diff;
|
} else ChangeTargetTimer -= diff;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+8
-10
@@ -226,7 +226,7 @@ struct TRINITY_DLL_DECL mob_headAI : public ScriptedAI
|
|||||||
die = false;
|
die = false;
|
||||||
withbody = true;
|
withbody = true;
|
||||||
wait = 1000;
|
wait = 1000;
|
||||||
laugh = 15000 + rand()%16 * 1000;
|
laugh = urand(15000,30000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit *who) {}
|
void EnterCombat(Unit *who) {}
|
||||||
@@ -324,8 +324,8 @@ struct TRINITY_DLL_DECL mob_headAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
die = false;
|
die = false;
|
||||||
if (Unit *body = Unit::GetUnit((*m_creature), bodyGUID))
|
if (Unit *body = Unit::GetUnit((*m_creature), bodyGUID))
|
||||||
body->DealDamage(body, body->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
body->Kill(body);
|
||||||
m_creature->setDeathState(JUST_DIED);
|
m_creature->Kill(m_creature);
|
||||||
} else wait -= diff;
|
} else wait -= diff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -400,11 +400,9 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
|||||||
DoCast(m_creature,SPELL_HEAD);
|
DoCast(m_creature,SPELL_HEAD);
|
||||||
if (headGUID)
|
if (headGUID)
|
||||||
{
|
{
|
||||||
if (Unit* Head = Unit::GetUnit((*m_creature), headGUID))
|
if (Creature* Head = Unit::GetCreature((*m_creature), headGUID))
|
||||||
{
|
Head->DisappearAndDie();
|
||||||
Head->SetVisibility(VISIBILITY_OFF);
|
|
||||||
Head->setDeathState(JUST_DIED);
|
|
||||||
}
|
|
||||||
headGUID = 0;
|
headGUID = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -661,7 +659,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if (Unit *plr = SelectRandomPlayer(30.0f))
|
if (Unit *plr = SelectRandomPlayer(30.0f))
|
||||||
m_creature->CastSpell(plr,SPELL_CONFLAGRATION,false);
|
m_creature->CastSpell(plr,SPELL_CONFLAGRATION,false);
|
||||||
conflagrate = 10000 + rand()%7 * 1000;
|
conflagrate = urand(10000,16000);
|
||||||
} else conflagrate -= diff;
|
} else conflagrate -= diff;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
@@ -670,7 +668,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
|||||||
m_creature->InterruptNonMeleeSpells(false);
|
m_creature->InterruptNonMeleeSpells(false);
|
||||||
DoCast(m_creature,SPELL_SUMMON_PUMPKIN);
|
DoCast(m_creature,SPELL_SUMMON_PUMPKIN);
|
||||||
SaySound(SAY_SPROUTING_PUMPKINS);
|
SaySound(SAY_SPROUTING_PUMPKINS);
|
||||||
summonadds = 25000 + rand()%11 *1000;
|
summonadds = urand(25000,35000);
|
||||||
} else summonadds -= diff;
|
} else summonadds -= diff;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -107,7 +107,7 @@ struct TRINITY_DLL_DECL instance_scarlet_monastery : public ScriptedInstance
|
|||||||
{
|
{
|
||||||
Creature* add = instance->GetCreature(*itr);
|
Creature* add = instance->GetCreature(*itr);
|
||||||
if (add && add->isAlive())
|
if (add && add->isAlive())
|
||||||
add->DealDamage(add, add->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
add->Kill(add);
|
||||||
}
|
}
|
||||||
HorsemanAdds.clear();
|
HorsemanAdds.clear();
|
||||||
HandleGameObject(PumpkinShrineGUID, false);
|
HandleGameObject(PumpkinShrineGUID, false);
|
||||||
|
|||||||
@@ -296,8 +296,7 @@ struct TRINITY_DLL_DECL boss_muruAI : public Scripted_NoMovementAI
|
|||||||
break;
|
break;
|
||||||
case DONE:
|
case DONE:
|
||||||
Phase = 4;
|
Phase = 4;
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->DisappearAndDie();
|
||||||
m_creature->RemoveCorpse();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Timer[TIMER_PHASE] = 3000;
|
Timer[TIMER_PHASE] = 3000;
|
||||||
@@ -396,9 +395,9 @@ struct TRINITY_DLL_DECL npc_muru_portalAI : public Scripted_NoMovementAI
|
|||||||
|
|
||||||
void JustSummoned(Creature* summoned)
|
void JustSummoned(Creature* summoned)
|
||||||
{
|
{
|
||||||
Player* Target = Unit::GetPlayer(pInstance ? pInstance->GetData64(DATA_PLAYER_GUID) : 0);
|
if (pInstance)
|
||||||
if (Target)
|
if (Player* Target = Unit::GetPlayer(pInstance->GetData64(DATA_PLAYER_GUID)))
|
||||||
summoned->AI()->AttackStart(Target);
|
summoned->AI()->AttackStart(Target);
|
||||||
|
|
||||||
Summons.Summon(summoned);
|
Summons.Summon(summoned);
|
||||||
}
|
}
|
||||||
@@ -462,10 +461,7 @@ struct TRINITY_DLL_DECL npc_dark_fiendAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
for(uint8 i = 0; i < 3; ++i)
|
for(uint8 i = 0; i < 3; ++i)
|
||||||
if (Spell->Effect[i] == 38)
|
if (Spell->Effect[i] == 38)
|
||||||
{
|
m_creature->DisappearAndDie();
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
|
||||||
m_creature->RemoveCorpse();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
@@ -489,12 +485,11 @@ struct TRINITY_DLL_DECL npc_dark_fiendAI : public ScriptedAI
|
|||||||
if (m_creature->IsWithinDist(m_creature->getVictim(), 5))
|
if (m_creature->IsWithinDist(m_creature->getVictim(), 5))
|
||||||
{
|
{
|
||||||
DoCastAOE(SPELL_DARKFIEND_AOE, false);
|
DoCastAOE(SPELL_DARKFIEND_AOE, false);
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->DisappearAndDie();
|
||||||
m_creature->RemoveCorpse();
|
|
||||||
}
|
}
|
||||||
WaitTimer = 500;
|
WaitTimer = 500;
|
||||||
}
|
}
|
||||||
}else WaitTimer -= diff;
|
} else WaitTimer -= diff;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -522,9 +517,8 @@ struct TRINITY_DLL_DECL npc_void_sentinelAI : public ScriptedAI
|
|||||||
|
|
||||||
void JustDied(Unit* killer)
|
void JustDied(Unit* killer)
|
||||||
{
|
{
|
||||||
for (uint8 i = 0; i < 8; ++i){
|
for (uint8 i = 0; i < 8; ++i)
|
||||||
m_creature->SummonCreature(CREATURE_VOID_SPAWN, m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ(), rand()%6, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 180000);
|
m_creature->SummonCreature(CREATURE_VOID_SPAWN, m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ(), rand()%6, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 180000);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
@@ -536,13 +530,13 @@ struct TRINITY_DLL_DECL npc_void_sentinelAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
DoCastAOE(SPELL_SHADOW_PULSE, true);
|
DoCastAOE(SPELL_SHADOW_PULSE, true);
|
||||||
PulseTimer = 3000;
|
PulseTimer = 3000;
|
||||||
}else PulseTimer -= diff;
|
} else PulseTimer -= diff;
|
||||||
|
|
||||||
if (VoidBlastTimer < diff)
|
if (VoidBlastTimer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_VOID_BLAST, false);
|
DoCast(m_creature->getVictim(), SPELL_VOID_BLAST, false);
|
||||||
VoidBlastTimer = 45000;
|
VoidBlastTimer = 45000;
|
||||||
}else VoidBlastTimer -= diff;
|
} else VoidBlastTimer -= diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
@@ -582,7 +576,7 @@ struct TRINITY_DLL_DECL npc_blackholeAI : public ScriptedAI
|
|||||||
if (SpellTimer < diff)
|
if (SpellTimer < diff)
|
||||||
{
|
{
|
||||||
Unit* Victim = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_PLAYER_GUID) : 0);
|
Unit* Victim = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_PLAYER_GUID) : 0);
|
||||||
switch(NeedForAHack)
|
switch (NeedForAHack)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
m_creature->clearUnitState(UNIT_STAT_STUNNED);
|
m_creature->clearUnitState(UNIT_STAT_STUNNED);
|
||||||
@@ -603,21 +597,20 @@ struct TRINITY_DLL_DECL npc_blackholeAI : public ScriptedAI
|
|||||||
m_creature->RemoveAura(SPELL_BLACKHOLE_GROW, 1);
|
m_creature->RemoveAura(SPELL_BLACKHOLE_GROW, 1);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
SpellTimer = 400+rand()%500;
|
SpellTimer = urand(400,900);
|
||||||
NeedForAHack = 1;
|
NeedForAHack = 1;
|
||||||
Unit* Temp = m_creature->getVictim();
|
if (Unit* Temp = m_creature->getVictim())
|
||||||
if (!Temp)
|
{
|
||||||
|
if (Temp->GetPositionZ() > 73 && Victim)
|
||||||
|
AttackStart(Victim);
|
||||||
|
} else
|
||||||
return;
|
return;
|
||||||
if (Temp->GetPositionZ() > 73 && Victim)
|
|
||||||
AttackStart(Victim);
|
|
||||||
}
|
}
|
||||||
}else SpellTimer -= diff;
|
} else SpellTimer -= diff;
|
||||||
|
|
||||||
if (DespawnTimer < diff)
|
if (DespawnTimer < diff)
|
||||||
{
|
m_creature->DisappearAndDie();
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
else DespawnTimer -= diff;
|
||||||
m_creature->RemoveCorpse();
|
|
||||||
}else DespawnTimer -= diff;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -192,16 +192,9 @@ struct TRINITY_DLL_DECL eye_of_cthunAI : public Scripted_NoMovementAI
|
|||||||
|
|
||||||
void SpawnEyeTentacle(float x, float y)
|
void SpawnEyeTentacle(float x, float y)
|
||||||
{
|
{
|
||||||
Creature* Spawned;
|
if (Creature* Spawned = me->SummonCreature(MOB_EYE_TENTACLE,m_creature->GetPositionX()+x,m_creature->GetPositionY()+y,m_creature->GetPositionZ(),0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,500))
|
||||||
Spawned = me->SummonCreature(MOB_EYE_TENTACLE,m_creature->GetPositionX()+x,m_creature->GetPositionY()+y,m_creature->GetPositionZ(),0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,500);
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
if (Spawned)
|
|
||||||
{
|
|
||||||
Unit* target;
|
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
|
||||||
|
|
||||||
if (target)
|
|
||||||
Spawned->AI()->AttackStart(target);
|
Spawned->AI()->AttackStart(target);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
@@ -235,7 +228,7 @@ struct TRINITY_DLL_DECL eye_of_cthunAI : public Scripted_NoMovementAI
|
|||||||
|
|
||||||
//Beam every 3 seconds
|
//Beam every 3 seconds
|
||||||
BeamTimer = 3000;
|
BeamTimer = 3000;
|
||||||
}else BeamTimer -= diff;
|
} else BeamTimer -= diff;
|
||||||
|
|
||||||
//ClawTentacleTimer
|
//ClawTentacleTimer
|
||||||
if (ClawTentacleTimer < diff)
|
if (ClawTentacleTimer < diff)
|
||||||
@@ -255,7 +248,7 @@ struct TRINITY_DLL_DECL eye_of_cthunAI : public Scripted_NoMovementAI
|
|||||||
|
|
||||||
//One claw tentacle every 12.5 seconds
|
//One claw tentacle every 12.5 seconds
|
||||||
ClawTentacleTimer = 12500;
|
ClawTentacleTimer = 12500;
|
||||||
}else ClawTentacleTimer -= diff;
|
} else ClawTentacleTimer -= diff;
|
||||||
|
|
||||||
//EyeTentacleTimer
|
//EyeTentacleTimer
|
||||||
if (EyeTentacleTimer < diff)
|
if (EyeTentacleTimer < diff)
|
||||||
@@ -274,7 +267,7 @@ struct TRINITY_DLL_DECL eye_of_cthunAI : public Scripted_NoMovementAI
|
|||||||
//No point actually putting a timer here since
|
//No point actually putting a timer here since
|
||||||
//These shouldn't trigger agian until after phase shifts
|
//These shouldn't trigger agian until after phase shifts
|
||||||
EyeTentacleTimer = 45000;
|
EyeTentacleTimer = 45000;
|
||||||
}else EyeTentacleTimer -= diff;
|
} else EyeTentacleTimer -= diff;
|
||||||
|
|
||||||
//PhaseTimer
|
//PhaseTimer
|
||||||
if (PhaseTimer < diff)
|
if (PhaseTimer < diff)
|
||||||
@@ -316,26 +309,27 @@ struct TRINITY_DLL_DECL eye_of_cthunAI : public Scripted_NoMovementAI
|
|||||||
//EyeTentacleTimer
|
//EyeTentacleTimer
|
||||||
if (DarkGlareTick < 35)
|
if (DarkGlareTick < 35)
|
||||||
if (DarkGlareTickTimer < diff)
|
if (DarkGlareTickTimer < diff)
|
||||||
{
|
{
|
||||||
//Remove any target
|
//Remove any target
|
||||||
m_creature->SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
m_creature->SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
||||||
|
|
||||||
//Set angle and cast
|
//Set angle and cast
|
||||||
if (ClockWise)
|
if (ClockWise)
|
||||||
m_creature->SetOrientation(DarkGlareAngle + ((float)DarkGlareTick*PI/35));
|
m_creature->SetOrientation(DarkGlareAngle + ((float)DarkGlareTick*PI/35));
|
||||||
else m_creature->SetOrientation(DarkGlareAngle - ((float)DarkGlareTick*PI/35));
|
else
|
||||||
|
m_creature->SetOrientation(DarkGlareAngle - ((float)DarkGlareTick*PI/35));
|
||||||
|
|
||||||
m_creature->StopMoving();
|
m_creature->StopMoving();
|
||||||
|
|
||||||
//Actual dark glare cast, maybe something missing here?
|
//Actual dark glare cast, maybe something missing here?
|
||||||
m_creature->CastSpell(m_creature, SPELL_DARK_GLARE, false);
|
m_creature->CastSpell(m_creature, SPELL_DARK_GLARE, false);
|
||||||
|
|
||||||
//Increase tick
|
//Increase tick
|
||||||
DarkGlareTick++;
|
DarkGlareTick++;
|
||||||
|
|
||||||
//1 second per tick
|
//1 second per tick
|
||||||
DarkGlareTickTimer = 1000;
|
DarkGlareTickTimer = 1000;
|
||||||
}else DarkGlareTickTimer -= diff;
|
} else DarkGlareTickTimer -= diff;
|
||||||
|
|
||||||
//PhaseTimer
|
//PhaseTimer
|
||||||
if (PhaseTimer < diff)
|
if (PhaseTimer < diff)
|
||||||
@@ -357,8 +351,9 @@ struct TRINITY_DLL_DECL eye_of_cthunAI : public Scripted_NoMovementAI
|
|||||||
|
|
||||||
//Eye Beam for 50 seconds
|
//Eye Beam for 50 seconds
|
||||||
PhaseTimer = 50000;
|
PhaseTimer = 50000;
|
||||||
}else PhaseTimer -= diff;
|
} else PhaseTimer -= diff;
|
||||||
}break;
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
//Transition phase
|
//Transition phase
|
||||||
case 2:
|
case 2:
|
||||||
@@ -371,7 +366,7 @@ struct TRINITY_DLL_DECL eye_of_cthunAI : public Scripted_NoMovementAI
|
|||||||
//Dead phase
|
//Dead phase
|
||||||
case 5:
|
case 5:
|
||||||
{
|
{
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false);
|
m_creature->Kill(m_creature);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -538,9 +533,8 @@ struct TRINITY_DLL_DECL cthunAI : public ScriptedAI
|
|||||||
|
|
||||||
//Only units out of stomach
|
//Only units out of stomach
|
||||||
if (pUnit && i->second == false)
|
if (pUnit && i->second == false)
|
||||||
{
|
|
||||||
temp.push_back(pUnit);
|
temp.push_back(pUnit);
|
||||||
}
|
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -581,8 +575,8 @@ struct TRINITY_DLL_DECL cthunAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
//One random wisper every 90 - 300 seconds
|
//One random wisper every 90 - 300 seconds
|
||||||
WisperTimer = 90000 + (rand()% 210000);
|
WisperTimer = urand(90000,300000);
|
||||||
}else WisperTimer -= diff;
|
} else WisperTimer -= diff;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -647,9 +641,10 @@ struct TRINITY_DLL_DECL cthunAI : public ScriptedAI
|
|||||||
CAST_AI(flesh_tentacleAI, (Spawned->AI()))->SpawnedByCthun(m_creature->GetGUID());
|
CAST_AI(flesh_tentacleAI, (Spawned->AI()))->SpawnedByCthun(m_creature->GetGUID());
|
||||||
|
|
||||||
PhaseTimer = 0;
|
PhaseTimer = 0;
|
||||||
}else PhaseTimer -= diff;
|
} else PhaseTimer -= diff;
|
||||||
|
|
||||||
}break;
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
//Body Phase
|
//Body Phase
|
||||||
case 3:
|
case 3:
|
||||||
@@ -750,22 +745,22 @@ struct TRINITY_DLL_DECL cthunAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
StomachEnterTimer = 13800;
|
StomachEnterTimer = 13800;
|
||||||
}else StomachEnterTimer -= diff;
|
} else StomachEnterTimer -= diff;
|
||||||
|
|
||||||
if (StomachEnterVisTimer && StomachEnterTarget)
|
if (StomachEnterVisTimer && StomachEnterTarget)
|
||||||
if (StomachEnterVisTimer <= diff)
|
if (StomachEnterVisTimer <= diff)
|
||||||
{
|
|
||||||
//Check for valid player
|
|
||||||
Unit* pUnit = Unit::GetUnit(*m_creature, StomachEnterTarget);
|
|
||||||
|
|
||||||
if (pUnit)
|
|
||||||
{
|
{
|
||||||
DoTeleportPlayer(pUnit, STOMACH_X, STOMACH_Y, STOMACH_Z, STOMACH_O);
|
//Check for valid player
|
||||||
}
|
Unit* pUnit = Unit::GetUnit(*m_creature, StomachEnterTarget);
|
||||||
|
|
||||||
StomachEnterTarget = 0;
|
if (pUnit)
|
||||||
StomachEnterVisTimer = 0;
|
{
|
||||||
}else StomachEnterVisTimer -= diff;
|
DoTeleportPlayer(pUnit, STOMACH_X, STOMACH_Y, STOMACH_Z, STOMACH_O);
|
||||||
|
}
|
||||||
|
|
||||||
|
StomachEnterTarget = 0;
|
||||||
|
StomachEnterVisTimer = 0;
|
||||||
|
} else StomachEnterVisTimer -= diff;
|
||||||
|
|
||||||
//GientClawTentacleTimer
|
//GientClawTentacleTimer
|
||||||
if (GiantClawTentacleTimer < diff)
|
if (GiantClawTentacleTimer < diff)
|
||||||
@@ -849,7 +844,7 @@ struct TRINITY_DLL_DECL cthunAI : public ScriptedAI
|
|||||||
Spawned = me->SummonCreature(MOB_FLESH_TENTACLE, TENTACLE_POS1_X, TENTACLE_POS1_Y, TENTACLE_POS1_Z, TENTACLE_POS1_O, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
Spawned = me->SummonCreature(MOB_FLESH_TENTACLE, TENTACLE_POS1_X, TENTACLE_POS1_Y, TENTACLE_POS1_Z, TENTACLE_POS1_O, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||||
|
|
||||||
if (!Spawned)
|
if (!Spawned)
|
||||||
FleshTentaclesKilled++;
|
++FleshTentaclesKilled;
|
||||||
else
|
else
|
||||||
CAST_AI(flesh_tentacleAI, (Spawned->AI()))->SpawnedByCthun(m_creature->GetGUID());
|
CAST_AI(flesh_tentacleAI, (Spawned->AI()))->SpawnedByCthun(m_creature->GetGUID());
|
||||||
|
|
||||||
@@ -857,12 +852,12 @@ struct TRINITY_DLL_DECL cthunAI : public ScriptedAI
|
|||||||
Spawned = me->SummonCreature(MOB_FLESH_TENTACLE, TENTACLE_POS2_X, TENTACLE_POS2_Y, TENTACLE_POS2_Z, TENTACLE_POS2_O, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
Spawned = me->SummonCreature(MOB_FLESH_TENTACLE, TENTACLE_POS2_X, TENTACLE_POS2_Y, TENTACLE_POS2_Z, TENTACLE_POS2_O, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||||
|
|
||||||
if (!Spawned)
|
if (!Spawned)
|
||||||
FleshTentaclesKilled++;
|
++FleshTentaclesKilled;
|
||||||
else
|
else
|
||||||
CAST_AI(flesh_tentacleAI, (Spawned->AI()))->SpawnedByCthun(m_creature->GetGUID());
|
CAST_AI(flesh_tentacleAI, (Spawned->AI()))->SpawnedByCthun(m_creature->GetGUID());
|
||||||
|
|
||||||
PhaseTimer = 0;
|
PhaseTimer = 0;
|
||||||
}else PhaseTimer -= diff;
|
} else PhaseTimer -= diff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -931,7 +926,7 @@ struct TRINITY_DLL_DECL eye_tentacleAI : public ScriptedAI
|
|||||||
void JustDied(Unit* who)
|
void JustDied(Unit* who)
|
||||||
{
|
{
|
||||||
if (Unit* p = Unit::GetUnit(*m_creature, Portal))
|
if (Unit* p = Unit::GetUnit(*m_creature, Portal))
|
||||||
p->DealDamage(p, p->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false);
|
p->Kill(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
@@ -957,10 +952,9 @@ struct TRINITY_DLL_DECL eye_tentacleAI : public ScriptedAI
|
|||||||
//KillSelfTimer
|
//KillSelfTimer
|
||||||
if (KillSelfTimer < diff)
|
if (KillSelfTimer < diff)
|
||||||
{
|
{
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false);
|
m_creature->Kill(m_creature);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}else KillSelfTimer -= diff;
|
} else KillSelfTimer -= diff;
|
||||||
|
|
||||||
//MindflayTimer
|
//MindflayTimer
|
||||||
if (MindflayTimer < diff)
|
if (MindflayTimer < diff)
|
||||||
@@ -970,8 +964,8 @@ struct TRINITY_DLL_DECL eye_tentacleAI : public ScriptedAI
|
|||||||
DoCast(target,SPELL_MIND_FLAY);
|
DoCast(target,SPELL_MIND_FLAY);
|
||||||
|
|
||||||
//Mindflay every 10 seconds
|
//Mindflay every 10 seconds
|
||||||
MindflayTimer = 10100;
|
MindflayTimer = 10000;
|
||||||
}else MindflayTimer -= diff;
|
} else MindflayTimer -= diff;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -993,7 +987,7 @@ struct TRINITY_DLL_DECL claw_tentacleAI : public ScriptedAI
|
|||||||
void JustDied(Unit* who)
|
void JustDied(Unit* who)
|
||||||
{
|
{
|
||||||
if (Unit* p = Unit::GetUnit(*m_creature, Portal))
|
if (Unit* p = Unit::GetUnit(*m_creature, Portal))
|
||||||
p->DealDamage(p, p->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false);
|
p->Kill(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
@@ -1018,49 +1012,48 @@ struct TRINITY_DLL_DECL claw_tentacleAI : public ScriptedAI
|
|||||||
//EvadeTimer
|
//EvadeTimer
|
||||||
if (!m_creature->IsWithinMeleeRange(m_creature->getVictim()))
|
if (!m_creature->IsWithinMeleeRange(m_creature->getVictim()))
|
||||||
if (EvadeTimer < diff)
|
if (EvadeTimer < diff)
|
||||||
{
|
|
||||||
if (Unit* p = Unit::GetUnit(*m_creature, Portal))
|
|
||||||
p->DealDamage(p, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false);
|
|
||||||
|
|
||||||
//Dissapear and reappear at new position
|
|
||||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
|
||||||
|
|
||||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
|
||||||
if (!target)
|
|
||||||
{
|
{
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false);
|
if (Unit* p = Unit::GetUnit(*m_creature, Portal))
|
||||||
return;
|
p->Kill(p);
|
||||||
}
|
|
||||||
|
|
||||||
if (!target->HasAura(SPELL_DIGESTIVE_ACID))
|
//Dissapear and reappear at new position
|
||||||
{
|
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||||
m_creature->GetMap()->CreatureRelocation(m_creature, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0);
|
|
||||||
if (Unit* pPortal = m_creature->SummonCreature(MOB_SMALL_PORTAL, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_CORPSE_DESPAWN, 0))
|
|
||||||
Portal = pPortal->GetGUID();
|
|
||||||
|
|
||||||
GroundRuptureTimer = 500;
|
Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||||
HamstringTimer = 2000;
|
if (!target)
|
||||||
EvadeTimer = 5000;
|
{
|
||||||
AttackStart(target);
|
m_creature->Kill(m_creature);
|
||||||
}
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
m_creature->SetVisibility(VISIBILITY_ON);
|
if (!target->HasAura(SPELL_DIGESTIVE_ACID))
|
||||||
|
{
|
||||||
|
m_creature->GetMap()->CreatureRelocation(m_creature, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0);
|
||||||
|
if (Unit* pPortal = m_creature->SummonCreature(MOB_SMALL_PORTAL, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_CORPSE_DESPAWN, 0))
|
||||||
|
Portal = pPortal->GetGUID();
|
||||||
|
|
||||||
}else EvadeTimer -= diff;
|
GroundRuptureTimer = 500;
|
||||||
|
HamstringTimer = 2000;
|
||||||
|
EvadeTimer = 5000;
|
||||||
|
AttackStart(target);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_creature->SetVisibility(VISIBILITY_ON);
|
||||||
|
} else EvadeTimer -= diff;
|
||||||
|
|
||||||
//GroundRuptureTimer
|
//GroundRuptureTimer
|
||||||
if (GroundRuptureTimer < diff)
|
if (GroundRuptureTimer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(),SPELL_GROUND_RUPTURE);
|
DoCast(m_creature->getVictim(),SPELL_GROUND_RUPTURE);
|
||||||
GroundRuptureTimer = 30000;
|
GroundRuptureTimer = 30000;
|
||||||
}else GroundRuptureTimer -= diff;
|
} else GroundRuptureTimer -= diff;
|
||||||
|
|
||||||
//HamstringTimer
|
//HamstringTimer
|
||||||
if (HamstringTimer < diff)
|
if (HamstringTimer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(),SPELL_HAMSTRING);
|
DoCast(m_creature->getVictim(),SPELL_HAMSTRING);
|
||||||
HamstringTimer = 5000;
|
HamstringTimer = 5000;
|
||||||
}else HamstringTimer -= diff;
|
} else HamstringTimer -= diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
@@ -1085,7 +1078,7 @@ struct TRINITY_DLL_DECL giant_claw_tentacleAI : public ScriptedAI
|
|||||||
void JustDied(Unit* who)
|
void JustDied(Unit* who)
|
||||||
{
|
{
|
||||||
if (Unit* p = Unit::GetUnit(*m_creature, Portal))
|
if (Unit* p = Unit::GetUnit(*m_creature, Portal))
|
||||||
p->DealDamage(p, p->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false);
|
p->Kill(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
@@ -1113,7 +1106,7 @@ struct TRINITY_DLL_DECL giant_claw_tentacleAI : public ScriptedAI
|
|||||||
if (EvadeTimer < diff)
|
if (EvadeTimer < diff)
|
||||||
{
|
{
|
||||||
if (Unit* p = Unit::GetUnit(*m_creature, Portal))
|
if (Unit* p = Unit::GetUnit(*m_creature, Portal))
|
||||||
p->DealDamage(p, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false);
|
p->Kill(p);
|
||||||
|
|
||||||
//Dissapear and reappear at new position
|
//Dissapear and reappear at new position
|
||||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||||
@@ -1121,7 +1114,7 @@ struct TRINITY_DLL_DECL giant_claw_tentacleAI : public ScriptedAI
|
|||||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||||
if (!target)
|
if (!target)
|
||||||
{
|
{
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false);
|
m_creature->Kill(m_creature);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1140,28 +1133,28 @@ struct TRINITY_DLL_DECL giant_claw_tentacleAI : public ScriptedAI
|
|||||||
|
|
||||||
m_creature->SetVisibility(VISIBILITY_ON);
|
m_creature->SetVisibility(VISIBILITY_ON);
|
||||||
|
|
||||||
}else EvadeTimer -= diff;
|
} else EvadeTimer -= diff;
|
||||||
|
|
||||||
//GroundRuptureTimer
|
//GroundRuptureTimer
|
||||||
if (GroundRuptureTimer < diff)
|
if (GroundRuptureTimer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(),SPELL_GROUND_RUPTURE);
|
DoCast(m_creature->getVictim(),SPELL_GROUND_RUPTURE);
|
||||||
GroundRuptureTimer = 30000;
|
GroundRuptureTimer = 30000;
|
||||||
}else GroundRuptureTimer -= diff;
|
} else GroundRuptureTimer -= diff;
|
||||||
|
|
||||||
//ThrashTimer
|
//ThrashTimer
|
||||||
if (ThrashTimer < diff)
|
if (ThrashTimer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(),SPELL_THRASH);
|
DoCast(m_creature->getVictim(),SPELL_THRASH);
|
||||||
ThrashTimer = 10000;
|
ThrashTimer = 10000;
|
||||||
}else ThrashTimer -= diff;
|
} else ThrashTimer -= diff;
|
||||||
|
|
||||||
//HamstringTimer
|
//HamstringTimer
|
||||||
if (HamstringTimer < diff)
|
if (HamstringTimer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(),SPELL_HAMSTRING);
|
DoCast(m_creature->getVictim(),SPELL_HAMSTRING);
|
||||||
HamstringTimer = 10000;
|
HamstringTimer = 10000;
|
||||||
}else HamstringTimer -= diff;
|
} else HamstringTimer -= diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
@@ -1183,7 +1176,7 @@ struct TRINITY_DLL_DECL giant_eye_tentacleAI : public ScriptedAI
|
|||||||
void JustDied(Unit* who)
|
void JustDied(Unit* who)
|
||||||
{
|
{
|
||||||
if (Unit* p = Unit::GetUnit(*m_creature, Portal))
|
if (Unit* p = Unit::GetUnit(*m_creature, Portal))
|
||||||
p->DealDamage(p, p->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NONE, NULL, false);
|
p->Kill(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
|
|||||||
+3
-5
@@ -359,11 +359,9 @@ struct TRINITY_DLL_DECL mob_taldaram_flamesphereAI : public ScriptedAI
|
|||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
if (uiDespawnTimer < diff)
|
if (uiDespawnTimer < diff)
|
||||||
{
|
m_creature->DisappearAndDie();
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
else
|
||||||
m_creature->RemoveCorpse();
|
uiDespawnTimer -= diff;
|
||||||
}
|
|
||||||
else uiDespawnTimer -= diff;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+4
-3
@@ -128,13 +128,14 @@ struct TRINITY_DLL_DECL instance_drak_tharon : public ScriptedInstance
|
|||||||
|
|
||||||
uint32 GetData(uint32 type)
|
uint32 GetData(uint32 type)
|
||||||
{
|
{
|
||||||
switch(type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case DATA_TROLLGORE_EVENT: return m_auiEncounter[0];
|
case DATA_TROLLGORE_EVENT: return m_auiEncounter[0];
|
||||||
case DATA_NOVOS_EVENT: return m_auiEncounter[1];
|
case DATA_NOVOS_EVENT: return m_auiEncounter[1];
|
||||||
case DATA_DRED_EVENT: return m_auiEncounter[2];
|
case DATA_DRED_EVENT: return m_auiEncounter[2];
|
||||||
case DATA_THARON_JA_EVENT: return m_auiEncounter[3];
|
case DATA_THARON_JA_EVENT: return m_auiEncounter[3];
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData()
|
std::string GetSaveData()
|
||||||
@@ -164,10 +165,10 @@ struct TRINITY_DLL_DECL instance_drak_tharon : public ScriptedInstance
|
|||||||
OUT_LOAD_INST_DATA(in);
|
OUT_LOAD_INST_DATA(in);
|
||||||
|
|
||||||
char dataHead1, dataHead2;
|
char dataHead1, dataHead2;
|
||||||
uint16 data0,data1,data2,data3,data4, data5, data6;
|
uint16 data0,data1,data2,data3,data4;//,data5,data6;
|
||||||
|
|
||||||
std::istringstream loadStream(in);
|
std::istringstream loadStream(in);
|
||||||
loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3;
|
loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3 >> data4;
|
||||||
|
|
||||||
if (dataHead1 == 'D' && dataHead2 == 'K')
|
if (dataHead1 == 'D' && dataHead2 == 'K')
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -245,10 +245,8 @@ struct TRINITY_DLL_DECL mob_malformed_oozeAI : public ScriptedAI
|
|||||||
if (Creature* pTemp = m_creature->FindNearestCreature(CREATURE_MALFORMED_OOZE, 1.0f, true))
|
if (Creature* pTemp = m_creature->FindNearestCreature(CREATURE_MALFORMED_OOZE, 1.0f, true))
|
||||||
{
|
{
|
||||||
DoSpawnCreature(CREATURE_IRON_SLUDGE, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 20000);
|
DoSpawnCreature(CREATURE_IRON_SLUDGE, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 20000);
|
||||||
pTemp->Kill(pTemp, false);
|
pTemp->DisappearAndDie();
|
||||||
pTemp->RemoveCorpse();
|
m_creature->DisappearAndDie();
|
||||||
m_creature->Kill(m_creature, false);
|
|
||||||
m_creature->RemoveCorpse();
|
|
||||||
} else bIsMerging = false;
|
} else bIsMerging = false;
|
||||||
} else uiMergeTimer -= diff;
|
} else uiMergeTimer -= diff;
|
||||||
}
|
}
|
||||||
@@ -262,7 +260,7 @@ struct TRINITY_DLL_DECL mob_malformed_oozeAI : public ScriptedAI
|
|||||||
void MovementInform(uint32 type, uint32 id)
|
void MovementInform(uint32 type, uint32 id)
|
||||||
{
|
{
|
||||||
if(type != POINT_MOTION_TYPE)
|
if(type != POINT_MOTION_TYPE)
|
||||||
return;
|
return;
|
||||||
bIsMerging = true;
|
bIsMerging = true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -691,4 +691,4 @@ void AddSC_halls_of_stone()
|
|||||||
newscript->Name = "mob_tribuna_controller";
|
newscript->Name = "mob_tribuna_controller";
|
||||||
newscript->GetAI = &GetAI_mob_tribuna_controller;
|
newscript->GetAI = &GetAI_mob_tribuna_controller;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
}␍
|
}
|
||||||
|
|||||||
@@ -367,7 +367,7 @@ struct TRINITY_DLL_DECL mob_lightning_elementalAI : public ScriptedAI
|
|||||||
if(m_creature->IsWithinMeleeRange(Target))
|
if(m_creature->IsWithinMeleeRange(Target))
|
||||||
{
|
{
|
||||||
DoCast(Target, (HeroicMode) ? SPELL_LIGHTNING_BLAST_H : SPELL_LIGHTNING_BLAST);
|
DoCast(Target, (HeroicMode) ? SPELL_LIGHTNING_BLAST_H : SPELL_LIGHTNING_BLAST);
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth()); // hack untill spell works
|
m_creature->Kill(m_creature); // hack until spell works
|
||||||
}
|
}
|
||||||
|
|
||||||
m_creature->GetMotionMaster()->MoveChase(Target); // needed at every update?
|
m_creature->GetMotionMaster()->MoveChase(Target); // needed at every update?
|
||||||
|
|||||||
@@ -173,8 +173,7 @@ struct TRINITY_DLL_DECL boss_svalaAI : public ScriptedAI
|
|||||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
m_creature->SetFlag(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->SetDisplayId(DATA_SVALA_DISPLAY_ID);
|
m_creature->SetDisplayId(DATA_SVALA_DISPLAY_ID);
|
||||||
pArthas->Kill(pArthas, false);
|
pArthas->DisappearAndDie();
|
||||||
pArthas->RemoveCorpse();
|
|
||||||
Phase = FINISHED;
|
Phase = FINISHED;
|
||||||
}
|
}
|
||||||
else Reset();
|
else Reset();
|
||||||
@@ -294,7 +293,7 @@ struct TRINITY_DLL_DECL boss_svala_sorrowgraveAI : public ScriptedAI
|
|||||||
if (mob_ritual_channelerAI *pChannelerAI = CAST_AI(mob_ritual_channelerAI,pRitualChanneler[i]->AI()))
|
if (mob_ritual_channelerAI *pChannelerAI = CAST_AI(mob_ritual_channelerAI,pRitualChanneler[i]->AI()))
|
||||||
pChannelerAI->AttackStartNoMove(pSacrificeTarget);
|
pChannelerAI->AttackStartNoMove(pSacrificeTarget);
|
||||||
|
|
||||||
uiRitualOfSwordTimer = 18000 + rand()%4000;
|
uiRitualOfSwordTimer = urand(18000,22000);
|
||||||
}
|
}
|
||||||
} else uiRitualOfSwordTimer -= diff;
|
} else uiRitualOfSwordTimer -= diff;
|
||||||
|
|
||||||
@@ -314,7 +313,7 @@ struct TRINITY_DLL_DECL boss_svala_sorrowgraveAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (bSacrificed && pSacrificeTarget && pSacrificeTarget->isAlive())
|
if (bSacrificed && pSacrificeTarget && pSacrificeTarget->isAlive())
|
||||||
m_creature->Kill(pSacrificeTarget, false);
|
m_creature->Kill(pSacrificeTarget, false); // durability damage?
|
||||||
|
|
||||||
//go down
|
//go down
|
||||||
Phase = NORMAL;
|
Phase = NORMAL;
|
||||||
@@ -343,7 +342,7 @@ struct TRINITY_DLL_DECL boss_svala_sorrowgraveAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
Creature* pSvala = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_SVALA));
|
Creature* pSvala = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_SVALA));
|
||||||
if (pSvala && pSvala->isAlive())
|
if (pSvala && pSvala->isAlive())
|
||||||
pKiller->Kill(pSvala, false);
|
pKiller->Kill(pSvala);
|
||||||
|
|
||||||
pInstance->SetData(DATA_SVALA_SORROWGRAVE_EVENT, IN_PROGRESS);
|
pInstance->SetData(DATA_SVALA_SORROWGRAVE_EVENT, IN_PROGRESS);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-7
@@ -48,14 +48,9 @@ struct TRINITY_DLL_DECL instance_sethekk_halls : public ScriptedInstance
|
|||||||
if (pCreature->GetEntry() == NPC_ANZU)
|
if (pCreature->GetEntry() == NPC_ANZU)
|
||||||
{
|
{
|
||||||
if (AnzuEncounter >= IN_PROGRESS)
|
if (AnzuEncounter >= IN_PROGRESS)
|
||||||
{
|
pCreature->DisappearAndDie();
|
||||||
pCreature->DealDamage(pCreature, pCreature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
else
|
||||||
pCreature->RemoveCorpse();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AnzuEncounter = IN_PROGRESS;
|
AnzuEncounter = IN_PROGRESS;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+15
-24
@@ -85,7 +85,7 @@ struct TRINITY_DLL_DECL mob_voidtravelerAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if (!Vorpil)
|
if (!Vorpil)
|
||||||
{
|
{
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->Kill(m_creature);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (move < diff)
|
if (move < diff)
|
||||||
@@ -97,7 +97,7 @@ struct TRINITY_DLL_DECL mob_voidtravelerAI : public ScriptedAI
|
|||||||
Vorpil->AddAura(new Aura(spell, 1, Vorpil, me, me));
|
Vorpil->AddAura(new Aura(spell, 1, Vorpil, me, me));
|
||||||
Vorpil->SetHealth(Vorpil->GetHealth()+Vorpil->GetMaxHealth()/25);
|
Vorpil->SetHealth(Vorpil->GetHealth()+Vorpil->GetMaxHealth()/25);
|
||||||
DoCast(m_creature, SPELL_SHADOW_NOVA, true);
|
DoCast(m_creature, SPELL_SHADOW_NOVA, true);
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->Kill(m_creature);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_creature->GetMotionMaster()->MoveFollow(Vorpil,0,0);
|
m_creature->GetMotionMaster()->MoveFollow(Vorpil,0,0);
|
||||||
@@ -110,11 +110,11 @@ struct TRINITY_DLL_DECL mob_voidtravelerAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
if (!Vorpil->isInCombat() || Vorpil->isDead())
|
if (!Vorpil->isInCombat() || Vorpil->isDead())
|
||||||
{
|
{
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->Kill(m_creature);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
move = 1000;
|
move = 1000;
|
||||||
}else move -= diff;
|
} else move -= diff;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
CreatureAI* GetAI_mob_voidtraveler(Creature* pCreature)
|
CreatureAI* GetAI_mob_voidtraveler(Creature* pCreature)
|
||||||
@@ -159,7 +159,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if (!sumportals)
|
if (!sumportals)
|
||||||
{
|
{
|
||||||
for (int i = 0;i<5; ++i)
|
for (uint8 i = 0; i < 5; ++i)
|
||||||
{
|
{
|
||||||
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);
|
||||||
@@ -178,7 +178,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if (sumportals)
|
if (sumportals)
|
||||||
{
|
{
|
||||||
for (int i = 0;i < 5; i ++)
|
for (uint8 i = 0; i < 5; ++i)
|
||||||
{
|
{
|
||||||
Unit *Portal = Unit::GetUnit((*m_creature), PortalsGuid[i]);
|
Unit *Portal = Unit::GetUnit((*m_creature), PortalsGuid[i]);
|
||||||
if (Portal && Portal->isAlive())
|
if (Portal && Portal->isAlive())
|
||||||
@@ -191,7 +191,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
|||||||
|
|
||||||
void spawnVoidTraveler()
|
void spawnVoidTraveler()
|
||||||
{
|
{
|
||||||
int pos = rand()%5;
|
int pos = urand(0,4);
|
||||||
m_creature->SummonCreature(MOB_VOID_TRAVELER,VoidPortalCoords[pos][0],VoidPortalCoords[pos][1],VoidPortalCoords[pos][2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,5000);
|
m_creature->SummonCreature(MOB_VOID_TRAVELER,VoidPortalCoords[pos][0],VoidPortalCoords[pos][1],VoidPortalCoords[pos][2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,5000);
|
||||||
if (!HelpYell)
|
if (!HelpYell)
|
||||||
{
|
{
|
||||||
@@ -208,11 +208,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
|||||||
|
|
||||||
void KilledUnit(Unit *victim)
|
void KilledUnit(Unit *victim)
|
||||||
{
|
{
|
||||||
switch(rand()%2)
|
DoScriptText(RAND(SAY_SLAY1,SAY_SLAY2), m_creature);
|
||||||
{
|
|
||||||
case 0: DoScriptText(SAY_SLAY1, m_creature); break;
|
|
||||||
case 1: DoScriptText(SAY_SLAY2, m_creature); break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit *victim)
|
void JustDied(Unit *victim)
|
||||||
@@ -226,12 +222,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
|||||||
|
|
||||||
void EnterCombat(Unit *who)
|
void EnterCombat(Unit *who)
|
||||||
{
|
{
|
||||||
switch(rand()%3)
|
DoScriptText(RAND(SAY_AGGRO1,SAY_AGGRO2,SAY_AGGRO3), m_creature);
|
||||||
{
|
|
||||||
case 0: DoScriptText(SAY_AGGRO1, m_creature); break;
|
|
||||||
case 1: DoScriptText(SAY_AGGRO2, m_creature); break;
|
|
||||||
case 2: DoScriptText(SAY_AGGRO3, m_creature); break;
|
|
||||||
}
|
|
||||||
summonPortals();
|
summonPortals();
|
||||||
|
|
||||||
if (pInstance)
|
if (pInstance)
|
||||||
@@ -258,7 +249,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
DoCast(m_creature,SPELL_SHADOWBOLT_VOLLEY);
|
DoCast(m_creature,SPELL_SHADOWBOLT_VOLLEY);
|
||||||
ShadowBoltVolley_Timer = 15000 + rand()%15000;;
|
ShadowBoltVolley_Timer = 15000 + rand()%15000;;
|
||||||
}else ShadowBoltVolley_Timer -= diff;
|
} else ShadowBoltVolley_Timer -= diff;
|
||||||
|
|
||||||
if (HeroicMode && banish_Timer < diff)
|
if (HeroicMode && banish_Timer < diff)
|
||||||
{
|
{
|
||||||
@@ -268,7 +259,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
|||||||
DoCast(target,SPELL_BANISH);
|
DoCast(target,SPELL_BANISH);
|
||||||
banish_Timer = 16000;
|
banish_Timer = 16000;
|
||||||
}
|
}
|
||||||
}else banish_Timer -= diff;
|
} else banish_Timer -= diff;
|
||||||
|
|
||||||
if (DrawShadows_Timer < diff)
|
if (DrawShadows_Timer < diff)
|
||||||
{
|
{
|
||||||
@@ -286,7 +277,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
|||||||
|
|
||||||
ShadowBoltVolley_Timer = 6000;
|
ShadowBoltVolley_Timer = 6000;
|
||||||
DrawShadows_Timer = 30000;
|
DrawShadows_Timer = 30000;
|
||||||
}else DrawShadows_Timer -= diff;
|
} else DrawShadows_Timer -= diff;
|
||||||
|
|
||||||
if (summonTraveler_Timer < diff)
|
if (summonTraveler_Timer < diff)
|
||||||
{
|
{
|
||||||
@@ -295,7 +286,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
|
|||||||
//enrage at 20%
|
//enrage at 20%
|
||||||
if ((m_creature->GetHealth()*5) < m_creature->GetMaxHealth())
|
if ((m_creature->GetHealth()*5) < m_creature->GetMaxHealth())
|
||||||
summonTraveler_Timer = 5000;
|
summonTraveler_Timer = 5000;
|
||||||
}else summonTraveler_Timer -=diff;
|
} else summonTraveler_Timer -=diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
@@ -309,12 +300,12 @@ void AddSC_boss_grandmaster_vorpil()
|
|||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
newscript = new Script;
|
newscript = new Script;
|
||||||
newscript->Name="boss_grandmaster_vorpil";
|
newscript->Name = "boss_grandmaster_vorpil";
|
||||||
newscript->GetAI = &GetAI_boss_grandmaster_vorpil;
|
newscript->GetAI = &GetAI_boss_grandmaster_vorpil;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
|
|
||||||
newscript = new Script;
|
newscript = new Script;
|
||||||
newscript->Name="mob_voidtraveler";
|
newscript->Name = "mob_voidtraveler";
|
||||||
newscript->GetAI = &GetAI_mob_voidtraveler;
|
newscript->GetAI = &GetAI_mob_voidtraveler;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -472,7 +472,7 @@ struct TRINITY_DLL_DECL boss_shade_of_akamaAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
EnterEvadeMode();// Reset a little while after killing Akama, evade and respawn Akama
|
EnterEvadeMode();// Reset a little while after killing Akama, evade and respawn Akama
|
||||||
return;
|
return;
|
||||||
}else ResetTimer -= diff;
|
} else ResetTimer -= diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
|
|||||||
+4
-8
@@ -639,13 +639,9 @@ struct TRINITY_DLL_DECL mob_enchanted_elementalAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||||
if (phase == 1)
|
if (phase == 1)
|
||||||
{
|
|
||||||
m_creature->GetMotionMaster()->MovePoint(0, x, y, z);
|
m_creature->GetMotionMaster()->MovePoint(0, x, y, z);
|
||||||
}
|
|
||||||
if (phase == 1 && m_creature->IsWithinDist3d(x,y,z, 0.1))
|
if (phase == 1 && m_creature->IsWithinDist3d(x,y,z, 0.1))
|
||||||
{
|
|
||||||
phase = 2;
|
phase = 2;
|
||||||
}
|
|
||||||
if (phase == 2)
|
if (phase == 2)
|
||||||
{
|
{
|
||||||
m_creature->GetMotionMaster()->MovePoint(0, MIDDLE_X, MIDDLE_Y, MIDDLE_Z);
|
m_creature->GetMotionMaster()->MovePoint(0, MIDDLE_X, MIDDLE_Y, MIDDLE_Z);
|
||||||
@@ -660,7 +656,7 @@ struct TRINITY_DLL_DECL mob_enchanted_elementalAI : public ScriptedAI
|
|||||||
if (spell)
|
if (spell)
|
||||||
{
|
{
|
||||||
uint8 eff_mask=0;
|
uint8 eff_mask=0;
|
||||||
for (int i=0; i<3; ++i)
|
for (uint8 i = 0; i < 3; ++i)
|
||||||
{
|
{
|
||||||
if (!spell->Effect[i])
|
if (!spell->Effect[i])
|
||||||
continue;
|
continue;
|
||||||
@@ -668,16 +664,16 @@ struct TRINITY_DLL_DECL mob_enchanted_elementalAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
Vashj->AddAura(new Aura(spell, eff_mask, Vashj, Vashj, Vashj));
|
Vashj->AddAura(new Aura(spell, eff_mask, Vashj, Vashj, Vashj));
|
||||||
}
|
}
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->Kill(m_creature);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!Vashj->isInCombat() || CAST_AI(boss_lady_vashjAI, Vashj->AI())->Phase != 2 || Vashj->isDead())
|
if (!Vashj->isInCombat() || CAST_AI(boss_lady_vashjAI, Vashj->AI())->Phase != 2 || Vashj->isDead())
|
||||||
{
|
{
|
||||||
//call Unsummon()
|
//call Unsummon()
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->Kill(m_creature);
|
||||||
}
|
}
|
||||||
move = 1000;
|
move = 1000;
|
||||||
}else move -= diff;
|
} else move -= diff;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+1
-5
@@ -82,11 +82,7 @@ struct TRINITY_DLL_DECL boss_the_black_stalkerAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
for(std::list<uint64>::iterator i = Striders.begin(); i != Striders.end(); ++i)
|
for(std::list<uint64>::iterator i = Striders.begin(); i != Striders.end(); ++i)
|
||||||
if (Creature *strider = Unit::GetCreature(*m_creature, *i))
|
if (Creature *strider = Unit::GetCreature(*m_creature, *i))
|
||||||
{
|
strider->DisappearAndDie();
|
||||||
strider->SetLootRecipient(NULL);
|
|
||||||
strider->DealDamage(strider,strider->GetMaxHealth(),NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
|
||||||
strider->RemoveCorpse();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
|
|||||||
+27
-49
@@ -109,12 +109,9 @@ struct TRINITY_DLL_DECL boss_nazanAI : public ScriptedAI
|
|||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
{
|
{
|
||||||
if (UnsummonCheck < diff && m_creature->isAlive())
|
if (UnsummonCheck < diff && m_creature->isAlive())
|
||||||
{
|
m_creature->DisappearAndDie();
|
||||||
m_creature->SetLootRecipient(NULL);
|
else
|
||||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
UnsummonCheck -= diff;
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
|
||||||
m_creature->RemoveCorpse();
|
|
||||||
}else UnsummonCheck -= diff;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,8 +119,8 @@ struct TRINITY_DLL_DECL boss_nazanAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if (Unit *victim = SelectUnit(SELECT_TARGET_RANDOM,0))
|
if (Unit *victim = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
DoCast(victim, SPELL_FIREBALL,true);
|
DoCast(victim, SPELL_FIREBALL,true);
|
||||||
Fireball_Timer = 4000+rand()%3000;
|
Fireball_Timer = urand(4000,7000);
|
||||||
}else Fireball_Timer -= diff;
|
} else Fireball_Timer -= diff;
|
||||||
|
|
||||||
if (flight) // phase 1 - the flight
|
if (flight) // phase 1 - the flight
|
||||||
{
|
{
|
||||||
@@ -149,7 +146,7 @@ struct TRINITY_DLL_DECL boss_nazanAI : public ScriptedAI
|
|||||||
if (m_creature->IsWithinDist3d(VazrudenRing[waypoint][0],VazrudenRing[waypoint][1],VazrudenRing[waypoint][2], 5))
|
if (m_creature->IsWithinDist3d(VazrudenRing[waypoint][0],VazrudenRing[waypoint][1],VazrudenRing[waypoint][2], 5))
|
||||||
m_creature->GetMotionMaster()->MovePoint(0,VazrudenRing[waypoint][0],VazrudenRing[waypoint][1],VazrudenRing[waypoint][2]);
|
m_creature->GetMotionMaster()->MovePoint(0,VazrudenRing[waypoint][0],VazrudenRing[waypoint][1],VazrudenRing[waypoint][2]);
|
||||||
Turn_Timer = 10000;
|
Turn_Timer = 10000;
|
||||||
}else Turn_Timer -= diff;
|
} else Turn_Timer -= diff;
|
||||||
}
|
}
|
||||||
else // phase 2 - land fight
|
else // phase 2 - land fight
|
||||||
{
|
{
|
||||||
@@ -158,13 +155,13 @@ struct TRINITY_DLL_DECL boss_nazanAI : public ScriptedAI
|
|||||||
DoCast(m_creature, SPELL_CONE_OF_FIRE);
|
DoCast(m_creature, SPELL_CONE_OF_FIRE);
|
||||||
ConeOfFire_Timer = 12000;
|
ConeOfFire_Timer = 12000;
|
||||||
Fireball_Timer = 4000;
|
Fireball_Timer = 4000;
|
||||||
}else ConeOfFire_Timer -= diff;
|
} else ConeOfFire_Timer -= diff;
|
||||||
|
|
||||||
if (HeroicMode && BellowingRoar_Timer < diff)
|
if (HeroicMode && BellowingRoar_Timer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature, SPELL_BELLOWING_ROAR);
|
DoCast(m_creature, SPELL_BELLOWING_ROAR);
|
||||||
BellowingRoar_Timer = 45000;
|
BellowingRoar_Timer = 45000;
|
||||||
}else BellowingRoar_Timer -= diff;
|
} else BellowingRoar_Timer -= diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
@@ -192,22 +189,13 @@ struct TRINITY_DLL_DECL boss_vazrudenAI : public ScriptedAI
|
|||||||
|
|
||||||
void EnterCombat(Unit *who)
|
void EnterCombat(Unit *who)
|
||||||
{
|
{
|
||||||
switch(rand()%3)
|
DoScriptText(RAND(SAY_AGGRO_1,SAY_AGGRO_2,SAY_AGGRO_3), m_creature);
|
||||||
{
|
|
||||||
case 0: DoScriptText(SAY_AGGRO_1, m_creature); break;
|
|
||||||
case 1: DoScriptText(SAY_AGGRO_2, m_creature); break;
|
|
||||||
default: DoScriptText(SAY_AGGRO_3, m_creature); break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void KilledUnit(Unit* who)
|
void KilledUnit(Unit* who)
|
||||||
{
|
{
|
||||||
if (who && who->GetEntry()!=ENTRY_VAZRUDEN)
|
if (who && who->GetEntry()!=ENTRY_VAZRUDEN)
|
||||||
switch(rand()%2)
|
DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2), m_creature);
|
||||||
{
|
|
||||||
case 0: DoScriptText(SAY_KILL_1, m_creature); break;
|
|
||||||
default: DoScriptText(SAY_KILL_2, m_creature); break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit* who)
|
void JustDied(Unit* who)
|
||||||
@@ -227,11 +215,8 @@ struct TRINITY_DLL_DECL boss_vazrudenAI : public ScriptedAI
|
|||||||
DoScriptText(SAY_WIPE, m_creature);
|
DoScriptText(SAY_WIPE, m_creature);
|
||||||
WipeSaid = true;
|
WipeSaid = true;
|
||||||
}
|
}
|
||||||
m_creature->SetLootRecipient(NULL);
|
m_creature->DisappearAndDie();
|
||||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
} else UnsummonCheck -= diff;
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
|
||||||
m_creature->RemoveCorpse();
|
|
||||||
}else UnsummonCheck -= diff;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,7 +225,7 @@ struct TRINITY_DLL_DECL boss_vazrudenAI : public ScriptedAI
|
|||||||
if (Unit *victim = m_creature->getVictim())
|
if (Unit *victim = m_creature->getVictim())
|
||||||
DoCast(victim, SPELL_REVENGE);
|
DoCast(victim, SPELL_REVENGE);
|
||||||
Revenge_Timer = 5000;
|
Revenge_Timer = 5000;
|
||||||
}else Revenge_Timer -= diff;
|
} else Revenge_Timer -= diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
@@ -283,18 +268,12 @@ struct TRINITY_DLL_DECL boss_vazruden_the_heraldAI : public ScriptedAI
|
|||||||
Creature *Vazruden = Unit::GetCreature(*m_creature, VazrudenGUID);
|
Creature *Vazruden = Unit::GetCreature(*m_creature, VazrudenGUID);
|
||||||
if (Nazan || (Nazan = me->FindNearestCreature(ENTRY_NAZAN, 5000)))
|
if (Nazan || (Nazan = me->FindNearestCreature(ENTRY_NAZAN, 5000)))
|
||||||
{
|
{
|
||||||
Nazan->SetLootRecipient(NULL);
|
Nazan->DisappearAndDie();
|
||||||
Nazan->SetVisibility(VISIBILITY_OFF);
|
|
||||||
Nazan->DealDamage(Nazan, Nazan->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
|
||||||
Nazan->RemoveCorpse();
|
|
||||||
NazanGUID = 0;
|
NazanGUID = 0;
|
||||||
}
|
}
|
||||||
if (Vazruden || (Vazruden = me->FindNearestCreature(ENTRY_VAZRUDEN, 5000)))
|
if (Vazruden || (Vazruden = me->FindNearestCreature(ENTRY_VAZRUDEN, 5000)))
|
||||||
{
|
{
|
||||||
Vazruden->SetLootRecipient(NULL);
|
Vazruden->DisappearAndDie();
|
||||||
Vazruden->SetVisibility(VISIBILITY_OFF);
|
|
||||||
Vazruden->DealDamage(Vazruden, Vazruden->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
|
||||||
Vazruden->RemoveCorpse();
|
|
||||||
VazrudenGUID = 0;
|
VazrudenGUID = 0;
|
||||||
}
|
}
|
||||||
summoned = false;
|
summoned = false;
|
||||||
@@ -307,11 +286,9 @@ 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);
|
if (Creature* Vazruden = m_creature->SummonCreature(ENTRY_VAZRUDEN,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,6000000))
|
||||||
if (Vazruden)
|
|
||||||
VazrudenGUID = Vazruden->GetGUID();
|
VazrudenGUID = Vazruden->GetGUID();
|
||||||
Creature* Nazan = m_creature->SummonCreature(ENTRY_NAZAN,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,6000000);
|
if (Creature* Nazan = m_creature->SummonCreature(ENTRY_NAZAN,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,6000000))
|
||||||
if (Nazan)
|
|
||||||
NazanGUID = Nazan->GetGUID();
|
NazanGUID = Nazan->GetGUID();
|
||||||
summoned = true;
|
summoned = true;
|
||||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||||
@@ -395,11 +372,12 @@ struct TRINITY_DLL_DECL boss_vazruden_the_heraldAI : public ScriptedAI
|
|||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
m_creature->SummonGameObject(ENTRY_REINFORCED_FEL_IRON_CHEST,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,0,0,0,0,0);
|
m_creature->SummonGameObject(ENTRY_REINFORCED_FEL_IRON_CHEST,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,0,0,0,0,0);
|
||||||
m_creature->SetLootRecipient(NULL);
|
m_creature->SetLootRecipient(NULL); // don't think this is necessary..
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->Kill(m_creature);
|
||||||
}
|
}
|
||||||
check = 2000;
|
check = 2000;
|
||||||
}else check -= diff;
|
}else check -= diff;
|
||||||
@@ -416,7 +394,7 @@ struct TRINITY_DLL_DECL mob_hellfire_sentryAI : public ScriptedAI
|
|||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
KidneyShot_Timer = 3000+rand()%4000;
|
KidneyShot_Timer = urand(3000,7000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit* who) {}
|
void EnterCombat(Unit* who) {}
|
||||||
@@ -437,7 +415,7 @@ struct TRINITY_DLL_DECL mob_hellfire_sentryAI : public ScriptedAI
|
|||||||
if (Unit *victim = m_creature->getVictim())
|
if (Unit *victim = m_creature->getVictim())
|
||||||
DoCast(victim, SPELL_KIDNEY_SHOT);
|
DoCast(victim, SPELL_KIDNEY_SHOT);
|
||||||
KidneyShot_Timer = 20000;
|
KidneyShot_Timer = 20000;
|
||||||
}else KidneyShot_Timer -= diff;
|
} else KidneyShot_Timer -= diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
@@ -468,22 +446,22 @@ void AddSC_boss_vazruden_the_herald()
|
|||||||
{
|
{
|
||||||
Script *newscript;
|
Script *newscript;
|
||||||
newscript = new Script;
|
newscript = new Script;
|
||||||
newscript->Name="boss_vazruden_the_herald";
|
newscript->Name = "boss_vazruden_the_herald";
|
||||||
newscript->GetAI = &GetAI_boss_vazruden_the_herald;
|
newscript->GetAI = &GetAI_boss_vazruden_the_herald;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
|
|
||||||
newscript = new Script;
|
newscript = new Script;
|
||||||
newscript->Name="boss_vazruden";
|
newscript->Name = "boss_vazruden";
|
||||||
newscript->GetAI = &GetAI_boss_vazruden;
|
newscript->GetAI = &GetAI_boss_vazruden;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
|
|
||||||
newscript = new Script;
|
newscript = new Script;
|
||||||
newscript->Name="boss_nazan";
|
newscript->Name = "boss_nazan";
|
||||||
newscript->GetAI = &GetAI_boss_nazan;
|
newscript->GetAI = &GetAI_boss_nazan;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
|
|
||||||
newscript = new Script;
|
newscript = new Script;
|
||||||
newscript->Name="mob_hellfire_sentry";
|
newscript->Name = "mob_hellfire_sentry";
|
||||||
newscript->GetAI = &GetAI_mob_hellfire_sentry;
|
newscript->GetAI = &GetAI_mob_hellfire_sentry;
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -173,10 +173,8 @@ struct TRINITY_DLL_DECL advisorbase_ai : public ScriptedAI
|
|||||||
|
|
||||||
//reset encounter
|
//reset encounter
|
||||||
if (m_pInstance && (m_pInstance->GetData(DATA_KAELTHASEVENT) == 1 || m_pInstance->GetData(DATA_KAELTHASEVENT) == 3))
|
if (m_pInstance && (m_pInstance->GetData(DATA_KAELTHASEVENT) == 1 || m_pInstance->GetData(DATA_KAELTHASEVENT) == 3))
|
||||||
{
|
|
||||||
if (Creature *Kaelthas = Unit::GetCreature((*m_creature), m_pInstance->GetData64(DATA_KAELTHAS)))
|
if (Creature *Kaelthas = Unit::GetCreature((*m_creature), m_pInstance->GetData64(DATA_KAELTHAS)))
|
||||||
Kaelthas->AI()->EnterEvadeMode();
|
Kaelthas->AI()->EnterEvadeMode();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveInLineOfSight(Unit *who)
|
void MoveInLineOfSight(Unit *who)
|
||||||
@@ -262,7 +260,7 @@ struct TRINITY_DLL_DECL advisorbase_ai : public ScriptedAI
|
|||||||
m_creature->GetMotionMaster()->Clear();
|
m_creature->GetMotionMaster()->Clear();
|
||||||
m_creature->GetMotionMaster()->MoveChase(Target);
|
m_creature->GetMotionMaster()->MoveChase(Target);
|
||||||
m_creature->AddThreat(Target, 0.0f);
|
m_creature->AddThreat(Target, 0.0f);
|
||||||
}else DelayRes_Timer -= diff;
|
} else DelayRes_Timer -= diff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -424,12 +422,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
|
|
||||||
void KilledUnit()
|
void KilledUnit()
|
||||||
{
|
{
|
||||||
switch(rand()%3)
|
DoScriptText(RAND(SAY_SLAY1,SAY_SLAY2,SAY_SLAY3), m_creature);
|
||||||
{
|
|
||||||
case 0: DoScriptText(SAY_SLAY1, m_creature); break;
|
|
||||||
case 1: DoScriptText(SAY_SLAY2, m_creature); break;
|
|
||||||
case 2: DoScriptText(SAY_SLAY3, m_creature); break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustSummoned(Creature* pSummoned)
|
void JustSummoned(Creature* pSummoned)
|
||||||
@@ -461,7 +454,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
for(uint8 i = 0; i < MAX_ADVISORS; ++i)
|
for(uint8 i = 0; i < MAX_ADVISORS; ++i)
|
||||||
{
|
{
|
||||||
if (Unit* pAdvisor = Unit::GetUnit((*m_creature), m_auiAdvisorGuid[i]))
|
if (Unit* pAdvisor = Unit::GetUnit((*m_creature), m_auiAdvisorGuid[i]))
|
||||||
pAdvisor->DealDamage(pAdvisor, pAdvisor->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
pAdvisor->Kill(pAdvisor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -486,8 +479,8 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
|
|
||||||
//start advisor within 7 seconds
|
//start advisor within 7 seconds
|
||||||
Phase_Timer = 7000;
|
Phase_Timer = 7000;
|
||||||
PhaseSubphase++;
|
++PhaseSubphase;
|
||||||
}else Phase_Timer -= diff;
|
} else Phase_Timer -= diff;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//Subphase 1 - Unlock advisor
|
//Subphase 1 - Unlock advisor
|
||||||
@@ -506,8 +499,8 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
Advisor->AI()->AttackStart(target);
|
Advisor->AI()->AttackStart(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
PhaseSubphase++;
|
++PhaseSubphase;
|
||||||
}else Phase_Timer -= diff;
|
} else Phase_Timer -= diff;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//Subphase 2 - Start
|
//Subphase 2 - Start
|
||||||
@@ -520,7 +513,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
|
|
||||||
//start advisor within 12.5 seconds
|
//start advisor within 12.5 seconds
|
||||||
Phase_Timer = 12500;
|
Phase_Timer = 12500;
|
||||||
PhaseSubphase++;
|
++PhaseSubphase;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -540,8 +533,8 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
Advisor->AI()->AttackStart(target);
|
Advisor->AI()->AttackStart(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
PhaseSubphase++;
|
++PhaseSubphase;
|
||||||
}else Phase_Timer -= diff;
|
} else Phase_Timer -= diff;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//Subphase 3 - Start
|
//Subphase 3 - Start
|
||||||
@@ -554,7 +547,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
|
|
||||||
//start advisor within 7 seconds
|
//start advisor within 7 seconds
|
||||||
Phase_Timer = 7000;
|
Phase_Timer = 7000;
|
||||||
PhaseSubphase++;
|
++PhaseSubphase;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -574,8 +567,8 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
Advisor->AI()->AttackStart(target);
|
Advisor->AI()->AttackStart(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
PhaseSubphase++;
|
++PhaseSubphase;
|
||||||
}else Phase_Timer -= diff;
|
} else Phase_Timer -= diff;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//Subphase 4 - Start
|
//Subphase 4 - Start
|
||||||
@@ -588,7 +581,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
|
|
||||||
//start advisor within 8.4 seconds
|
//start advisor within 8.4 seconds
|
||||||
Phase_Timer = 8400;
|
Phase_Timer = 8400;
|
||||||
PhaseSubphase++;
|
++PhaseSubphase;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -609,8 +602,8 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
Phase_Timer = 3000;
|
Phase_Timer = 3000;
|
||||||
PhaseSubphase++;
|
++PhaseSubphase;
|
||||||
}else Phase_Timer -= diff;
|
} else Phase_Timer -= diff;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//End of phase 1
|
//End of phase 1
|
||||||
@@ -710,7 +703,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
AttackStart(target);
|
AttackStart(target);
|
||||||
|
|
||||||
Phase_Timer = 30000;
|
Phase_Timer = 30000;
|
||||||
}else Phase_Timer -= diff;
|
} else Phase_Timer -= diff;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -746,14 +739,14 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
IsCastingFireball = false;
|
IsCastingFireball = false;
|
||||||
Fireball_Timer = 5000+rand()%10000;
|
Fireball_Timer = 5000+rand()%10000;
|
||||||
}
|
}
|
||||||
}else Fireball_Timer -= diff;
|
} else Fireball_Timer -= diff;
|
||||||
|
|
||||||
//ArcaneDisruption_Timer
|
//ArcaneDisruption_Timer
|
||||||
if (ArcaneDisruption_Timer < diff)
|
if (ArcaneDisruption_Timer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_ARCANE_DISRUPTION, true);
|
DoCast(m_creature->getVictim(), SPELL_ARCANE_DISRUPTION, true);
|
||||||
ArcaneDisruption_Timer = 60000;
|
ArcaneDisruption_Timer = 60000;
|
||||||
}else ArcaneDisruption_Timer -= diff;
|
} else ArcaneDisruption_Timer -= diff;
|
||||||
|
|
||||||
if (FlameStrike_Timer < diff)
|
if (FlameStrike_Timer < diff)
|
||||||
{
|
{
|
||||||
@@ -761,7 +754,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
DoCast(pUnit, SPELL_FLAME_STRIKE);
|
DoCast(pUnit, SPELL_FLAME_STRIKE);
|
||||||
|
|
||||||
FlameStrike_Timer = 30000;
|
FlameStrike_Timer = 30000;
|
||||||
}FlameStrike_Timer -= diff;
|
} else FlameStrike_Timer -= diff;
|
||||||
|
|
||||||
if (MindControl_Timer < diff)
|
if (MindControl_Timer < diff)
|
||||||
{
|
{
|
||||||
@@ -773,21 +766,17 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
|
|
||||||
MindControl_Timer = 60000;
|
MindControl_Timer = 60000;
|
||||||
}MindControl_Timer -= diff;
|
} else MindControl_Timer -= diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Phoenix_Timer
|
//Phoenix_Timer
|
||||||
if (Phoenix_Timer < diff)
|
if (Phoenix_Timer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature, SPELL_PHOENIX_ANIMATION);
|
DoCast(m_creature, SPELL_PHOENIX_ANIMATION);
|
||||||
switch(rand()%2)
|
DoScriptText(RAND(SAY_SUMMON_PHOENIX1,SAY_SUMMON_PHOENIX2), m_creature);
|
||||||
{
|
|
||||||
case 0: DoScriptText(SAY_SUMMON_PHOENIX1, m_creature); break;
|
|
||||||
case 1: DoScriptText(SAY_SUMMON_PHOENIX2, m_creature); break;
|
|
||||||
}
|
|
||||||
|
|
||||||
Phoenix_Timer = 60000;
|
Phoenix_Timer = 60000;
|
||||||
}else Phoenix_Timer -= diff;
|
} else Phoenix_Timer -= diff;
|
||||||
|
|
||||||
//Phase 4 specific spells
|
//Phase 4 specific spells
|
||||||
if (Phase == 4)
|
if (Phase == 4)
|
||||||
@@ -827,8 +816,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
if (PyrosCasted < 3)
|
if (PyrosCasted < 3)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_PYROBLAST);
|
DoCast(m_creature->getVictim(), SPELL_PYROBLAST);
|
||||||
PyrosCasted++;
|
++PyrosCasted;
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -851,7 +839,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
Phase = 6;
|
Phase = 6;
|
||||||
AttackStart(m_creature->getVictim());
|
AttackStart(m_creature->getVictim());
|
||||||
}else Phase_Timer -= diff;
|
} else Phase_Timer -= diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Phase 5
|
//Phase 5
|
||||||
@@ -862,7 +850,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
if (GravityLapse_Timer < diff)
|
if (GravityLapse_Timer < diff)
|
||||||
{
|
{
|
||||||
std::list<HostilReference*>::iterator i = m_creature->getThreatManager().getThreatList().begin();
|
std::list<HostilReference*>::iterator i = m_creature->getThreatManager().getThreatList().begin();
|
||||||
switch(GravityLapse_Phase)
|
switch (GravityLapse_Phase)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
m_creature->StopMoving();
|
m_creature->StopMoving();
|
||||||
@@ -890,14 +878,10 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
switch(rand()%2)
|
DoScriptText(RAND(SAY_GRAVITYLAPSE1,SAY_GRAVITYLAPSE2), m_creature);
|
||||||
{
|
|
||||||
case 0: DoScriptText(SAY_GRAVITYLAPSE1, m_creature); break;
|
|
||||||
case 1: DoScriptText(SAY_GRAVITYLAPSE2, m_creature); break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2) At that point he will put a Gravity Lapse debuff on everyone
|
// 2) At that point he will put a Gravity Lapse debuff on everyone
|
||||||
for (i = m_creature->getThreatManager().getThreatList().begin(); i!= m_creature->getThreatManager().getThreatList().end(); ++i)
|
for (i = m_creature->getThreatManager().getThreatList().begin(); i != m_creature->getThreatManager().getThreatList().end(); ++i)
|
||||||
{
|
{
|
||||||
if (Unit* pUnit = Unit::GetUnit((*m_creature), (*i)->getUnitGuid()))
|
if (Unit* pUnit = Unit::GetUnit((*m_creature), (*i)->getUnitGuid()))
|
||||||
{
|
{
|
||||||
@@ -916,7 +900,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
GravityLapse_Timer = 10000;
|
GravityLapse_Timer = 10000;
|
||||||
GravityLapse_Phase++;
|
++GravityLapse_Phase;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
@@ -925,7 +909,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
DoCast(m_creature, SPELL_NETHER_VAPOR);
|
DoCast(m_creature, SPELL_NETHER_VAPOR);
|
||||||
|
|
||||||
GravityLapse_Timer = 20000;
|
GravityLapse_Timer = 20000;
|
||||||
GravityLapse_Phase++;
|
++GravityLapse_Phase;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
@@ -959,7 +943,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
DoCast(m_creature, SPELL_SHOCK_BARRIER);
|
DoCast(m_creature, SPELL_SHOCK_BARRIER);
|
||||||
ShockBarrier_Timer = 20000;
|
ShockBarrier_Timer = 20000;
|
||||||
}else ShockBarrier_Timer -= diff;
|
} else ShockBarrier_Timer -= diff;
|
||||||
|
|
||||||
//NetherBeam_Timer
|
//NetherBeam_Timer
|
||||||
if (NetherBeam_Timer < diff)
|
if (NetherBeam_Timer < diff)
|
||||||
@@ -968,7 +952,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
|
|||||||
DoCast(pUnit, SPELL_NETHER_BEAM);
|
DoCast(pUnit, SPELL_NETHER_BEAM);
|
||||||
|
|
||||||
NetherBeam_Timer = 4000;
|
NetherBeam_Timer = 4000;
|
||||||
}else NetherBeam_Timer -= diff;
|
} else NetherBeam_Timer -= diff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1037,21 +1021,21 @@ struct TRINITY_DLL_DECL boss_thaladred_the_darkenerAI : public advisorbase_ai
|
|||||||
DoScriptText(EMOTE_THALADRED_GAZE, m_creature, target);
|
DoScriptText(EMOTE_THALADRED_GAZE, m_creature, target);
|
||||||
Gaze_Timer = 8500;
|
Gaze_Timer = 8500;
|
||||||
}
|
}
|
||||||
}else Gaze_Timer -= diff;
|
} else Gaze_Timer -= diff;
|
||||||
|
|
||||||
//Silence_Timer
|
//Silence_Timer
|
||||||
if (Silence_Timer < diff)
|
if (Silence_Timer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_SILENCE);
|
DoCast(m_creature->getVictim(), SPELL_SILENCE);
|
||||||
Silence_Timer = 20000;
|
Silence_Timer = 20000;
|
||||||
}else Silence_Timer -= diff;
|
} else Silence_Timer -= diff;
|
||||||
|
|
||||||
//PsychicBlow_Timer
|
//PsychicBlow_Timer
|
||||||
if (PsychicBlow_Timer < diff)
|
if (PsychicBlow_Timer < diff)
|
||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_PSYCHIC_BLOW);
|
DoCast(m_creature->getVictim(), SPELL_PSYCHIC_BLOW);
|
||||||
PsychicBlow_Timer = 20000+rand()%5000;
|
PsychicBlow_Timer = 20000+rand()%5000;
|
||||||
}else PsychicBlow_Timer -= diff;
|
} else PsychicBlow_Timer -= diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
@@ -1104,7 +1088,7 @@ struct TRINITY_DLL_DECL boss_lord_sanguinarAI : public advisorbase_ai
|
|||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_BELLOWING_ROAR);
|
DoCast(m_creature->getVictim(), SPELL_BELLOWING_ROAR);
|
||||||
Fear_Timer = 25000+rand()%10000; //approximately every 30 seconds
|
Fear_Timer = 25000+rand()%10000; //approximately every 30 seconds
|
||||||
}else Fear_Timer -= diff;
|
} else Fear_Timer -= diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
@@ -1181,7 +1165,7 @@ struct TRINITY_DLL_DECL boss_grand_astromancer_capernianAI : public advisorbase_
|
|||||||
{
|
{
|
||||||
DoScriptText(SAY_CAPERNIAN_AGGRO, m_creature);
|
DoScriptText(SAY_CAPERNIAN_AGGRO, m_creature);
|
||||||
Yell = true;
|
Yell = true;
|
||||||
}else Yell_Timer -= diff;
|
} else Yell_Timer -= diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Fireball_Timer
|
//Fireball_Timer
|
||||||
@@ -1189,7 +1173,7 @@ struct TRINITY_DLL_DECL boss_grand_astromancer_capernianAI : public advisorbase_
|
|||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_CAPERNIAN_FIREBALL);
|
DoCast(m_creature->getVictim(), SPELL_CAPERNIAN_FIREBALL);
|
||||||
Fireball_Timer = 4000;
|
Fireball_Timer = 4000;
|
||||||
}else Fireball_Timer -= diff;
|
} else Fireball_Timer -= diff;
|
||||||
|
|
||||||
//Conflagration_Timer
|
//Conflagration_Timer
|
||||||
if (Conflagration_Timer < diff)
|
if (Conflagration_Timer < diff)
|
||||||
@@ -1203,7 +1187,7 @@ struct TRINITY_DLL_DECL boss_grand_astromancer_capernianAI : public advisorbase_
|
|||||||
DoCast(m_creature->getVictim(), SPELL_CONFLAGRATION);
|
DoCast(m_creature->getVictim(), SPELL_CONFLAGRATION);
|
||||||
|
|
||||||
Conflagration_Timer = 10000+rand()%5000;
|
Conflagration_Timer = 10000+rand()%5000;
|
||||||
}else Conflagration_Timer -= diff;
|
} else Conflagration_Timer -= diff;
|
||||||
|
|
||||||
//ArcaneExplosion_Timer
|
//ArcaneExplosion_Timer
|
||||||
if (ArcaneExplosion_Timer < diff)
|
if (ArcaneExplosion_Timer < diff)
|
||||||
@@ -1227,7 +1211,7 @@ struct TRINITY_DLL_DECL boss_grand_astromancer_capernianAI : public advisorbase_
|
|||||||
DoCast(target, SPELL_ARCANE_EXPLOSION);
|
DoCast(target, SPELL_ARCANE_EXPLOSION);
|
||||||
|
|
||||||
ArcaneExplosion_Timer = 4000+rand()%2000;
|
ArcaneExplosion_Timer = 4000+rand()%2000;
|
||||||
}else ArcaneExplosion_Timer -= diff;
|
} else ArcaneExplosion_Timer -= diff;
|
||||||
|
|
||||||
//Do NOT deal any melee damage.
|
//Do NOT deal any melee damage.
|
||||||
}
|
}
|
||||||
@@ -1283,7 +1267,7 @@ struct TRINITY_DLL_DECL boss_master_engineer_telonicusAI : public advisorbase_ai
|
|||||||
{
|
{
|
||||||
DoCast(m_creature->getVictim(), SPELL_BOMB);
|
DoCast(m_creature->getVictim(), SPELL_BOMB);
|
||||||
Bomb_Timer = 25000;
|
Bomb_Timer = 25000;
|
||||||
}else Bomb_Timer -= diff;
|
} else Bomb_Timer -= diff;
|
||||||
|
|
||||||
//RemoteToy_Timer
|
//RemoteToy_Timer
|
||||||
if (RemoteToy_Timer < diff)
|
if (RemoteToy_Timer < diff)
|
||||||
@@ -1292,7 +1276,7 @@ struct TRINITY_DLL_DECL boss_master_engineer_telonicusAI : public advisorbase_ai
|
|||||||
DoCast(target, SPELL_REMOTE_TOY);
|
DoCast(target, SPELL_REMOTE_TOY);
|
||||||
|
|
||||||
RemoteToy_Timer = 10000+rand()%5000;
|
RemoteToy_Timer = 10000+rand()%5000;
|
||||||
}else RemoteToy_Timer -= diff;
|
} else RemoteToy_Timer -= diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
@@ -1317,7 +1301,7 @@ struct TRINITY_DLL_DECL mob_kael_flamestrikeAI : public ScriptedAI
|
|||||||
m_creature->setFaction(14);
|
m_creature->setFaction(14);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveInLineOfSight(Unit *who) { }
|
void MoveInLineOfSight(Unit *who) {}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
@@ -1334,11 +1318,11 @@ struct TRINITY_DLL_DECL mob_kael_flamestrikeAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
m_creature->InterruptNonMeleeSpells(false);
|
m_creature->InterruptNonMeleeSpells(false);
|
||||||
DoCast(m_creature, SPELL_FLAME_STRIKE_DMG);
|
DoCast(m_creature, SPELL_FLAME_STRIKE_DMG);
|
||||||
}else m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
} else m_creature->Kill(m_creature);
|
||||||
|
|
||||||
KillSelf = true;
|
KillSelf = true;
|
||||||
Timer = 1000;
|
Timer = 1000;
|
||||||
}else Timer -= diff;
|
} else Timer -= diff;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1374,7 +1358,7 @@ struct TRINITY_DLL_DECL mob_phoenix_tkAI : public ScriptedAI
|
|||||||
if (m_creature->GetHealth() > dmg)
|
if (m_creature->GetHealth() > dmg)
|
||||||
m_creature->SetHealth(uint32(m_creature->GetHealth()-dmg));
|
m_creature->SetHealth(uint32(m_creature->GetHealth()-dmg));
|
||||||
Cycle_Timer = 2000;
|
Cycle_Timer = 2000;
|
||||||
}else Cycle_Timer -= diff;
|
} else Cycle_Timer -= diff;
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
@@ -1421,7 +1405,7 @@ struct TRINITY_DLL_DECL mob_phoenix_egg_tkAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
m_creature->SummonCreature(NPC_PHOENIX,m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ(),m_creature->GetOrientation(),TEMPSUMMON_CORPSE_DESPAWN,5000);
|
m_creature->SummonCreature(NPC_PHOENIX,m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ(),m_creature->GetOrientation(),TEMPSUMMON_CORPSE_DESPAWN,5000);
|
||||||
Rebirth_Timer = 0;
|
Rebirth_Timer = 0;
|
||||||
}else Rebirth_Timer -= diff;
|
} else Rebirth_Timer -= diff;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -740,7 +740,7 @@ void CreatureEventAI::ProcessAction(CreatureEventAI_Action const& action, uint32
|
|||||||
sLog.outErrorDb("CreatureEventAI: Event %d ACTION_T_DIE on dead creature. Creature %d", EventId, m_creature->GetEntry());
|
sLog.outErrorDb("CreatureEventAI: Event %d ACTION_T_DIE on dead creature. Creature %d", EventId, m_creature->GetEntry());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(),NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
m_creature->Kill(m_creature);
|
||||||
break;
|
break;
|
||||||
case ACTION_T_ZONE_COMBAT_PULSE:
|
case ACTION_T_ZONE_COMBAT_PULSE:
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
@@ -13733,7 +13733,7 @@ void Unit::Kill(Unit *pVictim, bool durabilityLoss)
|
|||||||
|
|
||||||
// if talent known but not triggered (check priest class for speedup check)
|
// if talent known but not triggered (check priest class for speedup check)
|
||||||
bool SpiritOfRedemption = false;
|
bool SpiritOfRedemption = false;
|
||||||
if(pVictim->GetTypeId()==TYPEID_PLAYER && pVictim->getClass()==CLASS_PRIEST )
|
if(pVictim->GetTypeId()==TYPEID_PLAYER && pVictim->getClass()==CLASS_PRIEST)
|
||||||
{
|
{
|
||||||
AuraEffectList const& vDummyAuras = pVictim->GetAurasByType(SPELL_AURA_DUMMY);
|
AuraEffectList const& vDummyAuras = pVictim->GetAurasByType(SPELL_AURA_DUMMY);
|
||||||
for(AuraEffectList::const_iterator itr = vDummyAuras.begin(); itr != vDummyAuras.end(); ++itr)
|
for(AuraEffectList::const_iterator itr = vDummyAuras.begin(); itr != vDummyAuras.end(); ++itr)
|
||||||
|
|||||||
Reference in New Issue
Block a user