*Cleanup.

--HG--
branch : trunk
This commit is contained in:
maximius
2009-10-15 14:03:55 -07:00
parent 73fd09f4d6
commit 6dc187627d
22 changed files with 236 additions and 326 deletions
@@ -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);
} }
@@ -445,7 +445,7 @@ 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,7 +580,7 @@ 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)
@@ -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;
} }
@@ -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,8 +395,8 @@ 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,8 +485,7 @@ 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;
} }
@@ -522,10 +517,9 @@ 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)
{ {
@@ -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) {
return;
if (Temp->GetPositionZ() > 73 && Victim) if (Temp->GetPositionZ() > 73 && Victim)
AttackStart(Victim); AttackStart(Victim);
} else
return;
} }
} 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,17 +192,10 @@ 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)
{ {
@@ -323,7 +316,8 @@ struct TRINITY_DLL_DECL eye_of_cthunAI : public Scripted_NoMovementAI
//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();
@@ -358,7 +352,8 @@ 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,7 +575,7 @@ 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;
@@ -649,7 +643,8 @@ struct TRINITY_DLL_DECL cthunAI : public ScriptedAI
PhaseTimer = 0; PhaseTimer = 0;
} else PhaseTimer -= diff; } else PhaseTimer -= diff;
}break; }
break;
//Body Phase //Body Phase
case 3: case 3:
@@ -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,7 +852,7 @@ 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());
@@ -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,8 +952,7 @@ 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;
@@ -970,7 +964,7 @@ 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()
@@ -1020,7 +1014,7 @@ struct TRINITY_DLL_DECL 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);
@@ -1028,7 +1022,7 @@ struct TRINITY_DLL_DECL 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;
} }
@@ -1045,7 +1039,6 @@ struct TRINITY_DLL_DECL claw_tentacleAI : public ScriptedAI
} }
m_creature->SetVisibility(VISIBILITY_ON); m_creature->SetVisibility(VISIBILITY_ON);
} else EvadeTimer -= diff; } else EvadeTimer -= diff;
//GroundRuptureTimer //GroundRuptureTimer
@@ -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;
} }
@@ -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()
@@ -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;
} }
}; };
@@ -135,6 +135,7 @@ struct TRINITY_DLL_DECL instance_drak_tharon : public ScriptedInstance
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;
} }
@@ -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);
} }
@@ -48,16 +48,11 @@ 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);
pCreature->RemoveCorpse();
}
else else
{
AnzuEncounter = IN_PROGRESS; AnzuEncounter = IN_PROGRESS;
} }
} }
}
void OnGameObjectCreate(GameObject* pGo, bool add) void OnGameObjectCreate(GameObject* pGo, bool add)
{ {
@@ -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,7 +110,7 @@ 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;
@@ -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)
@@ -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,13 +664,13 @@ 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;
@@ -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)
@@ -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,7 +119,7 @@ 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
@@ -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,10 +215,7 @@ 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);
m_creature->DealDamage(m_creature, m_creature->GetMaxHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
m_creature->RemoveCorpse();
} else UnsummonCheck -= diff; } else UnsummonCheck -= diff;
return; return;
} }
@@ -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) {}
@@ -173,11 +173,9 @@ 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)
{ {
@@ -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,7 +479,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;
} else Phase_Timer -= diff; } else Phase_Timer -= diff;
break; break;
@@ -506,7 +499,7 @@ 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;
@@ -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,7 +533,7 @@ 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;
@@ -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,7 +567,7 @@ 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;
@@ -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,7 +602,7 @@ 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;
@@ -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,18 +766,14 @@ 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;
@@ -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
{ {
@@ -890,11 +878,7 @@ 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)
@@ -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:
@@ -1334,7 +1318,7 @@ 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;
+1 -1
View File
@@ -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:
{ {