*modified spelldifficulty handler to work with all spell casts for creatures that are in instances thanks to Shauren for help
*modified most of the scripts to use normal_mode spell for casting (code was autogenerated, post errors if any) *added sql for all modded spells (autogenerated..) --HG-- branch : trunk
This commit is contained in:
@@ -2211,18 +2211,6 @@ void Creature::GetRespawnCoord(float &x, float &y, float &z, float* ori, float*
|
||||
*dist = 0;
|
||||
}
|
||||
|
||||
uint32 Creature::GetSpellIdForDifficulty(uint32 spellId)
|
||||
{
|
||||
//search for instance mode spell
|
||||
if (GetMap() && GetMap()->IsDungeon())
|
||||
{
|
||||
spellId = spellmgr.GetSpellIdForDifficultyFromSpellid(spellId, Difficulty(GetMap()->GetSpawnMode()));
|
||||
}
|
||||
else
|
||||
sLog.outDebug("Unit::GetSpellIdForDifficulty called for non-instanced creature");
|
||||
return spellId;
|
||||
}
|
||||
|
||||
void Creature::AllLootRemovedFromCorpse()
|
||||
{
|
||||
if (!HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE))
|
||||
|
||||
@@ -418,7 +418,6 @@ class Creature : public Unit, public GridObject<Creature>
|
||||
void Update(uint32 time); // overwrited Unit::Update
|
||||
void GetRespawnCoord(float &x, float &y, float &z, float* ori = NULL, float* dist =NULL) const;
|
||||
uint32 GetEquipmentId() const { return GetCreatureInfo()->equipmentId; }
|
||||
uint32 GetSpellIdForDifficulty(uint32 spellId);
|
||||
|
||||
void SetCorpseDelay(uint32 delay) { m_corpseDelay = delay; }
|
||||
bool isRacialLeader() const { return GetCreatureInfo()->RacialLeader; }
|
||||
|
||||
@@ -593,15 +593,11 @@ inline bool CreatureAI::_EnterEvadeMode()
|
||||
return true;
|
||||
}
|
||||
|
||||
inline void UnitAI::DoCast(Unit* victim, uint32 spellId, bool triggered, bool useMode)
|
||||
inline void UnitAI::DoCast(Unit* victim, uint32 spellId, bool triggered)
|
||||
{
|
||||
if (!victim || (me->hasUnitState(UNIT_STAT_CASTING) && !triggered))
|
||||
return;
|
||||
|
||||
//search for instance mode spell
|
||||
if(useMode && me->ToCreature())
|
||||
spellId = me->ToCreature()->GetSpellIdForDifficulty(spellId);
|
||||
|
||||
me->CastSpell(victim, spellId, triggered);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -371,7 +371,7 @@ void SpellCastTargets::write (WorldPacket * data)
|
||||
}
|
||||
|
||||
Spell::Spell(Unit* Caster, SpellEntry const *info, bool triggered, uint64 originalCasterGUID, Spell** triggeringContainer, bool skipCheck)
|
||||
: m_spellInfo(info), m_spellValue(new SpellValue(m_spellInfo))
|
||||
: m_spellInfo(spellmgr.GetSpellForDifficultyFromSpell(info, Caster)), m_spellValue(new SpellValue(m_spellInfo))
|
||||
, m_caster(Caster)
|
||||
{
|
||||
m_customAttr = spellmgr.GetSpellCustomAttr(m_spellInfo->Id);
|
||||
|
||||
+24
-20
@@ -1016,43 +1016,47 @@ class SpellMgr
|
||||
}
|
||||
|
||||
// Spell Difficulty data
|
||||
uint32 GetSpellIdForDifficultyFromSpellid(uint32 spellId, Difficulty mapDiff)
|
||||
SpellEntry const* GetSpellForDifficultyFromSpell(SpellEntry const* spell, Unit* Caster)
|
||||
{
|
||||
/*SpellEntry const* spell = sSpellStore.LookupEntry(spellId);
|
||||
if (!spell)
|
||||
return spellId;//CastSpell() will handle incorrect spells
|
||||
*/
|
||||
uint32 mode = uint32(mapDiff);
|
||||
//spell never can be NULL in this case!
|
||||
if(!Caster->ToCreature() || !Caster->ToCreature()->GetMap() || !Caster->ToCreature()->GetMap()->IsDungeon())
|
||||
return spell;
|
||||
|
||||
uint32 mode = uint32(Caster->ToCreature()->GetMap()->GetSpawnMode());
|
||||
if(mode >= MAX_DIFFICULTY)
|
||||
{
|
||||
sLog.outError("GetSpellIdForDifficultyFromSpellid: Incorrect Difficulty for spell %u.", spellId);
|
||||
return spellId;//return source spell
|
||||
sLog.outError("GetSpellForDifficultyFromSpell: Incorrect Difficulty for spell %u.", spell->Id);
|
||||
return spell;//return source spell
|
||||
}
|
||||
uint32 SpellDiffId = GetSpellDifficultyId(spellId);
|
||||
uint32 SpellDiffId = GetSpellDifficultyId(spell->Id);
|
||||
if(!SpellDiffId)
|
||||
{
|
||||
sLog.outDebug("GetSpellIdForDifficultyFromSpellid: Difficulty not found for spell %u.", spellId);
|
||||
return spellId;//return source spell, it has only REGULAR_DIFFICULTY
|
||||
}
|
||||
return spell;//return source spell, it has only REGULAR_DIFFICULTY
|
||||
|
||||
SpellDifficultyEntry const *SpellDiff = sSpellDifficultyStore.LookupEntry(SpellDiffId);
|
||||
if (!SpellDiff)
|
||||
{
|
||||
sLog.outDebug("GetSpellIdForDifficultyFromSpellid: SpellDifficultyEntry not found for spell %u. This Should never happen.", spellId);
|
||||
return spellId;//return source spell
|
||||
sLog.outDebug("GetSpellForDifficultyFromSpell: SpellDifficultyEntry not found for spell %u. This Should never happen.", spell->Id);
|
||||
return spell;//return source spell
|
||||
}
|
||||
if(SpellDiff->SpellID[mode] <= 0 && mode > DUNGEON_DIFFICULTY_HEROIC)
|
||||
{
|
||||
uint8 baseMode = mode;
|
||||
mode -= 2;
|
||||
sLog.outDebug("GetSpellForDifficultyFromSpellid: spell %u mode %u spell is NULL, using mode %u", spellId, baseMode, mode);
|
||||
sLog.outDebug("GetSpellForDifficultyFromSpell: spell %u mode %u spell is NULL, using mode %u", spell->Id, baseMode, mode);
|
||||
}
|
||||
if(SpellDiff->SpellID[mode] <= 0)
|
||||
{
|
||||
sLog.outErrorDb("GetSpellForDifficultyFromSpellid: spell %u mode %u spell is 0. Check spelldifficulty_dbc!", spellId, mode);
|
||||
return spellId;
|
||||
sLog.outErrorDb("GetSpellForDifficultyFromSpell: spell %u mode %u spell is 0. Check spelldifficulty_dbc!", spell->Id, mode);
|
||||
return spell;
|
||||
}
|
||||
sLog.outDebug("GetSpellForDifficultyFromSpellid: spellid for spell %u in %u mode is %u ", spellId, mode, uint32(SpellDiff->SpellID[mode]));
|
||||
return uint32(SpellDiff->SpellID[mode]);
|
||||
SpellEntry const* newSpell = sSpellStore.LookupEntry(SpellDiff->SpellID[mode]);
|
||||
if (!newSpell)
|
||||
{
|
||||
sLog.outDebug("GetSpellForDifficultyFromSpell: spell %u not found in spell, this should never happen.", newSpell->Id);//alerady checked at startup
|
||||
return spell;
|
||||
}
|
||||
sLog.outDebug("GetSpellForDifficultyFromSpell: spellid for spell %u in mode %u is %u ", spell->Id, mode, newSpell->Id);
|
||||
return newSpell;
|
||||
}
|
||||
|
||||
// Spell target coordinates
|
||||
|
||||
+2
-6
@@ -193,12 +193,8 @@ void UnitAI::DoCastToAllHostilePlayers(uint32 spellid, bool triggered)
|
||||
return;
|
||||
}
|
||||
|
||||
void UnitAI::DoCast(uint32 spellId, bool useMode)
|
||||
{
|
||||
//search for instance mode spell
|
||||
if(useMode && me->ToCreature())
|
||||
spellId = me->ToCreature()->GetSpellIdForDifficulty(spellId);
|
||||
|
||||
void UnitAI::DoCast(uint32 spellId)
|
||||
{
|
||||
Unit *target = NULL;
|
||||
//sLog.outError("aggre %u %u", spellId, (uint32)AISpellInfo[spellId].target);
|
||||
switch(AISpellInfo[spellId].target)
|
||||
|
||||
+2
-2
@@ -126,8 +126,8 @@ class UnitAI
|
||||
void AttackStartCaster(Unit *victim, float dist);
|
||||
|
||||
void DoAddAuraToAllHostilePlayers(uint32 spellid);
|
||||
void DoCast(uint32 spellId, bool useMode = false);
|
||||
void DoCast(Unit* victim, uint32 spellId, bool triggered = false, bool useMode = false);
|
||||
void DoCast(uint32 spellId);
|
||||
void DoCast(Unit* victim, uint32 spellId, bool triggered = false);
|
||||
void DoCastToAllHostilePlayers(uint32 spellid, bool triggered = false);
|
||||
void DoCastVictim(uint32 spellId, bool triggered = false);
|
||||
void DoCastAOE(uint32 spellId, bool triggered = false);
|
||||
|
||||
@@ -283,7 +283,7 @@ struct boss_felblood_kaelthasAI : public ScriptedAI
|
||||
|
||||
if (FireballTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_FIREBALL_NORMAL, SPELL_FIREBALL_HEROIC));
|
||||
DoCast(m_creature->getVictim(), SPELL_FIREBALL_NORMAL);
|
||||
FireballTimer = urand(2000,6000);
|
||||
} else FireballTimer -= diff;
|
||||
|
||||
@@ -439,7 +439,7 @@ struct mob_felkael_flamestrikeAI : public ScriptedAI
|
||||
{
|
||||
if (FlameStrikeTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_FLAMESTRIKE1_NORMAL, SPELL_FLAMESTRIKE1_HEROIC), true);
|
||||
DoCast(m_creature, SPELL_FLAMESTRIKE1_NORMAL, true);
|
||||
m_creature->Kill(m_creature);
|
||||
} else FlameStrikeTimer -= diff;
|
||||
}
|
||||
|
||||
@@ -267,7 +267,7 @@ struct boss_priestess_delrissaAI : public ScriptedAI
|
||||
if (pAdd->isAlive())
|
||||
pTarget = pAdd;
|
||||
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_RENEW_NORMAL, SPELL_RENEW_HEROIC));
|
||||
DoCast(pTarget, SPELL_RENEW_NORMAL);
|
||||
RenewTimer = 5000;
|
||||
} else RenewTimer -= diff;
|
||||
|
||||
@@ -312,7 +312,7 @@ struct boss_priestess_delrissaAI : public ScriptedAI
|
||||
if (SWPainTimer <= diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_SW_PAIN_NORMAL, SPELL_SW_PAIN_HEROIC));
|
||||
DoCast(pTarget, SPELL_SW_PAIN_NORMAL);
|
||||
|
||||
SWPainTimer = 10000;
|
||||
} else SWPainTimer -= diff;
|
||||
|
||||
@@ -152,7 +152,7 @@ struct boss_vexallusAI : public ScriptedAI
|
||||
if (ChainLightningTimer <= diff)
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_CHAIN_LIGHTNING, SPELL_H_CHAIN_LIGHTNING));
|
||||
DoCast(pTarget, SPELL_CHAIN_LIGHTNING);
|
||||
|
||||
ChainLightningTimer = 8000;
|
||||
} else ChainLightningTimer -= diff;
|
||||
@@ -161,7 +161,7 @@ struct boss_vexallusAI : public ScriptedAI
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
if (pTarget)
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_ARCANE_SHOCK, SPELL_H_ARCANE_SHOCK));
|
||||
DoCast(pTarget, SPELL_ARCANE_SHOCK);
|
||||
|
||||
ArcaneShockTimer = 8000;
|
||||
} else ArcaneShockTimer -= diff;
|
||||
|
||||
@@ -103,7 +103,7 @@ struct boss_epochAI : public ScriptedAI
|
||||
|
||||
if (uiWoundingStrikeTimer < diff)
|
||||
{
|
||||
DoCastVictim(DUNGEON_MODE(SPELL_WOUNDING_STRIKE, H_SPELL_WOUNDING_STRIKE));
|
||||
DoCastVictim(SPELL_WOUNDING_STRIKE);
|
||||
uiWoundingStrikeTimer = 5300;
|
||||
} else uiWoundingStrikeTimer -= diff;
|
||||
|
||||
|
||||
@@ -159,14 +159,14 @@ struct boss_mal_ganisAI : public ScriptedAI
|
||||
|
||||
if (uiCarrionSwarmTimer < diff)
|
||||
{
|
||||
DoCastVictim(DUNGEON_MODE(SPELL_CARRION_SWARM,H_SPELL_CARRION_SWARM));
|
||||
DoCastVictim(SPELL_CARRION_SWARM);
|
||||
uiCarrionSwarmTimer = 7000;
|
||||
} else uiCarrionSwarmTimer -= diff;
|
||||
|
||||
if (uiMindBlastTimer < diff)
|
||||
{
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_MIND_BLAST, H_SPELL_MIND_BLAST));
|
||||
DoCast(pTarget, SPELL_MIND_BLAST);
|
||||
uiMindBlastTimer = 6000;
|
||||
} else uiMindBlastTimer -= diff;
|
||||
|
||||
@@ -180,7 +180,7 @@ struct boss_mal_ganisAI : public ScriptedAI
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLEEP_1,SAY_SLEEP_2), m_creature);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_SLEEP, H_SPELL_SLEEP));
|
||||
DoCast(pTarget, SPELL_SLEEP);
|
||||
uiSleepTimer = urand(15000,20000);
|
||||
} else uiSleepTimer -= diff;
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ struct boss_meathookAI : public ScriptedAI
|
||||
|
||||
if (uiDiseaseTimer <= diff)
|
||||
{
|
||||
DoCastAOE(DUNGEON_MODE(SPELL_DISEASE_EXPULSION,H_SPELL_DISEASE_EXPULSION));
|
||||
DoCastAOE(SPELL_DISEASE_EXPULSION);
|
||||
uiDiseaseTimer = urand(1500,4000);
|
||||
} else uiDiseaseTimer -= diff;
|
||||
|
||||
@@ -100,7 +100,7 @@ struct boss_meathookAI : public ScriptedAI
|
||||
if (uiChainTimer <= diff)
|
||||
{
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_CONSTRICTING_CHAINS, H_SPELL_CONSTRICTING_CHAINS)); //anyone but the tank
|
||||
DoCast(pTarget, SPELL_CONSTRICTING_CHAINS); //anyone but the tank
|
||||
uiChainTimer = urand(2000,4000);
|
||||
} else uiChainTimer -= diff;
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ struct boss_salrammAI : public ScriptedAI
|
||||
if (uiShadowBoltTimer <= diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT));
|
||||
DoCast(pTarget, SPELL_SHADOW_BOLT);
|
||||
uiShadowBoltTimer = urand(8000,12000);
|
||||
} else uiShadowBoltTimer -= diff;
|
||||
|
||||
|
||||
+1
-1
@@ -1092,7 +1092,7 @@ struct npc_arthasAI : public npc_escortAI
|
||||
if (uiExorcismTimer < diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(target, DUNGEON_MODE(SPELL_EXORCISM_N, SPELL_EXORCISM_H));
|
||||
DoCast(target, SPELL_EXORCISM_N);
|
||||
uiExorcismTimer = 7300;
|
||||
} else uiExorcismTimer -= diff;
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ struct boss_aeonusAI : public ScriptedAI
|
||||
//Sand Breath
|
||||
if (SandBreath_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SAND_BREATH, H_SPELL_SAND_BREATH));
|
||||
DoCast(m_creature->getVictim(), SPELL_SAND_BREATH);
|
||||
SandBreath_Timer = 15000+rand()%10000;
|
||||
} else SandBreath_Timer -= diff;
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ struct boss_chrono_lord_dejaAI : public ScriptedAI
|
||||
//Arcane Blast
|
||||
if (ArcaneBlast_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_ARCANE_BLAST, H_SPELL_ARCANE_BLAST));
|
||||
DoCast(m_creature->getVictim(), SPELL_ARCANE_BLAST);
|
||||
ArcaneBlast_Timer = 15000+rand()%10000;
|
||||
} else ArcaneBlast_Timer -= diff;
|
||||
|
||||
@@ -113,7 +113,7 @@ struct boss_chrono_lord_dejaAI : public ScriptedAI
|
||||
if (ArcaneDischarge_Timer <= diff)
|
||||
{
|
||||
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_ARCANE_DISCHARGE, H_SPELL_ARCANE_DISCHARGE));
|
||||
DoCast(pTarget, SPELL_ARCANE_DISCHARGE);
|
||||
ArcaneDischarge_Timer = 20000+rand()%10000;
|
||||
} else ArcaneDischarge_Timer -= diff;
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@ struct boss_temporusAI : public ScriptedAI
|
||||
//Wing ruffet
|
||||
if (WingBuffet_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_WING_BUFFET, H_SPELL_WING_BUFFET));
|
||||
DoCast(m_creature, SPELL_WING_BUFFET);
|
||||
WingBuffet_Timer = 20000+rand()%10000;
|
||||
} else WingBuffet_Timer -= diff;
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ struct boss_elder_nadoxAI : public ScriptedAI
|
||||
|
||||
if (uiPlagueTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_BROOD_PLAGUE, H_SPELL_BROOD_PLAGUE));
|
||||
DoCast(m_creature->getVictim(), SPELL_BROOD_PLAGUE);
|
||||
uiPlagueTimer = 15*IN_MILISECONDS;
|
||||
} else uiPlagueTimer -= diff;
|
||||
|
||||
|
||||
@@ -261,20 +261,20 @@ struct boss_volazjAI : public ScriptedAI
|
||||
|
||||
if (uiMindFlayTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_MIND_FLAY, H_SPELL_MIND_FLAY));
|
||||
DoCast(m_creature->getVictim(), SPELL_MIND_FLAY);
|
||||
uiMindFlayTimer = 20*IN_MILISECONDS;
|
||||
} else uiMindFlayTimer -= diff;
|
||||
|
||||
if (uiShadowBoltVolleyTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SHADOW_BOLT_VOLLEY, H_SPELL_SHADOW_BOLT_VOLLEY));
|
||||
DoCast(m_creature->getVictim(), SPELL_SHADOW_BOLT_VOLLEY);
|
||||
uiShadowBoltVolleyTimer = 5*IN_MILISECONDS;
|
||||
} else uiShadowBoltVolleyTimer -= diff;
|
||||
|
||||
if (uiShiverTimer <= diff)
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_SHIVER, H_SPELL_SHIVER));
|
||||
DoCast(pTarget, SPELL_SHIVER);
|
||||
uiShiverTimer = 15*IN_MILISECONDS;
|
||||
} else uiShiverTimer -= diff;
|
||||
|
||||
|
||||
@@ -303,7 +303,7 @@ struct boss_jedoga_shadowseekerAI : public ScriptedAI
|
||||
|
||||
if (uiCycloneTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_CYCLONE_STRIKE, SPELL_CYCLONE_STRIKE_H), false);
|
||||
DoCast(m_creature, SPELL_CYCLONE_STRIKE, false);
|
||||
uiCycloneTimer = urand(15*IN_MILISECONDS,30*IN_MILISECONDS);
|
||||
} else uiCycloneTimer -= diff;
|
||||
|
||||
|
||||
@@ -176,7 +176,7 @@ struct boss_taldaramAI : public ScriptedAI
|
||||
break;
|
||||
case VANISHED:
|
||||
if (Unit *pEmbraceTarget = GetEmbraceTarget())
|
||||
DoCast(pEmbraceTarget, DUNGEON_MODE(SPELL_EMBRACE_OF_THE_VAMPYR, H_SPELL_EMBRACE_OF_THE_VAMPYR));
|
||||
DoCast(pEmbraceTarget, SPELL_EMBRACE_OF_THE_VAMPYR);
|
||||
m_creature->GetMotionMaster()->Clear();
|
||||
m_creature->SetSpeed(MOVE_WALK, 1.0f, true);
|
||||
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
|
||||
@@ -338,7 +338,7 @@ struct mob_taldaram_flamesphereAI : public ScriptedAI
|
||||
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, 1.0f);
|
||||
DoCast(m_creature, SPELL_FLAME_SPHERE_VISUAL);
|
||||
DoCast(m_creature, SPELL_FLAME_SPHERE_SPAWN_EFFECT);
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_FLAME_SPHERE_PERIODIC, H_SPELL_FLAME_SPHERE_PERIODIC));
|
||||
DoCast(m_creature, SPELL_FLAME_SPHERE_PERIODIC);
|
||||
uiDespawnTimer = 10*IN_MILISECONDS;
|
||||
}
|
||||
|
||||
|
||||
@@ -216,7 +216,7 @@ struct boss_anub_arakAI : public ScriptedAI
|
||||
|
||||
if (uiPoundTimer <= diff)
|
||||
{
|
||||
DoCastVictim(DUNGEON_MODE(SPELL_POUND, H_SPELL_POUND));
|
||||
DoCastVictim(SPELL_POUND);
|
||||
uiPoundTimer = 16.5*IN_MILISECONDS;
|
||||
} else uiPoundTimer -= diff;
|
||||
}
|
||||
|
||||
@@ -159,7 +159,7 @@ struct boss_hadronoxAI : public ScriptedAI
|
||||
if (uiAcidTimer <= diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_ACID_CLOUD, H_SPELL_ACID_CLOUD));
|
||||
DoCast(pTarget, SPELL_ACID_CLOUD);
|
||||
|
||||
uiAcidTimer = urand(20*IN_MILISECONDS,30*IN_MILISECONDS);
|
||||
} else uiAcidTimer -= diff;
|
||||
@@ -167,7 +167,7 @@ struct boss_hadronoxAI : public ScriptedAI
|
||||
if (uiLeechTimer <= diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_LEECH_POISON, H_SPELL_LEECH_POISON));
|
||||
DoCast(pTarget, SPELL_LEECH_POISON);
|
||||
|
||||
uiLeechTimer = urand(11*IN_MILISECONDS,14*IN_MILISECONDS);
|
||||
} else uiLeechTimer -= diff;
|
||||
@@ -175,7 +175,7 @@ struct boss_hadronoxAI : public ScriptedAI
|
||||
if (uiGrabTimer <= diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0)) // Draws all players (and attacking Mobs) to itself.
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_WEB_GRAB, H_SPELL_WEB_GRAB));
|
||||
DoCast(pTarget, SPELL_WEB_GRAB);
|
||||
|
||||
uiGrabTimer = urand(15*IN_MILISECONDS,30*IN_MILISECONDS);
|
||||
} else uiGrabTimer -= diff;
|
||||
|
||||
@@ -157,7 +157,7 @@ struct boss_krik_thirAI : public ScriptedAI
|
||||
|
||||
if (uiMindFlayTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_MIND_FLAY, H_SPELL_MIND_FLAY));
|
||||
DoCast(m_creature->getVictim(), SPELL_MIND_FLAY);
|
||||
uiMindFlayTimer = 15*IN_MILISECONDS;
|
||||
} else uiMindFlayTimer -= diff;
|
||||
|
||||
@@ -167,8 +167,8 @@ struct boss_krik_thirAI : public ScriptedAI
|
||||
Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
|
||||
Unit *pTarget_1 = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true);
|
||||
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_CURSE_OF_FATIGUE, H_SPELL_CURSE_OF_FATIGUE));
|
||||
DoCast(pTarget_1, DUNGEON_MODE(SPELL_CURSE_OF_FATIGUE, H_SPELL_CURSE_OF_FATIGUE));
|
||||
DoCast(pTarget, SPELL_CURSE_OF_FATIGUE);
|
||||
DoCast(pTarget_1, SPELL_CURSE_OF_FATIGUE);
|
||||
|
||||
uiCurseFatigueTimer = 10*IN_MILISECONDS;
|
||||
} else uiCurseFatigueTimer -= diff;
|
||||
@@ -215,7 +215,7 @@ struct npc_skittering_infectorAI : public ScriptedAI
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
//The spell is not working propperly
|
||||
DoCast(m_creature->getVictim(),DUNGEON_MODE(SPELL_ACID_SPLASH, H_SPELL_ACID_SPLASH), true);
|
||||
DoCast(m_creature->getVictim(),SPELL_ACID_SPLASH, true);
|
||||
}
|
||||
|
||||
};
|
||||
@@ -281,13 +281,13 @@ struct npc_anub_ar_shadowcasterAI : public ScriptedAI
|
||||
if (uiShadowBoltTimer <= diff)
|
||||
{
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT), true);
|
||||
DoCast(pTarget, SPELL_SHADOW_BOLT, true);
|
||||
uiShadowBoltTimer = 15*IN_MILISECONDS;
|
||||
} else uiShadowBoltTimer -= diff;
|
||||
|
||||
if (uiShadowNovaTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SHADOW_NOVA, H_SPELL_SHADOW_NOVA), true);
|
||||
DoCast(m_creature->getVictim(), SPELL_SHADOW_NOVA, true);
|
||||
uiShadowNovaTimer = 17*IN_MILISECONDS;
|
||||
} else uiShadowNovaTimer -= diff;
|
||||
|
||||
@@ -363,7 +363,7 @@ struct npc_watcher_gashraAI : public ScriptedAI
|
||||
|
||||
if (uiInfectedBiteTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_INFECTED_BITE, H_SPELL_INFECTED_BITE), true);
|
||||
DoCast(m_creature->getVictim(), SPELL_INFECTED_BITE, true);
|
||||
uiInfectedBiteTimer = 15*IN_MILISECONDS;
|
||||
} else uiInfectedBiteTimer -= diff;
|
||||
|
||||
@@ -400,13 +400,13 @@ struct npc_watcher_narjilAI : public ScriptedAI
|
||||
|
||||
if (uiInfectedBiteTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_INFECTED_BITE, H_SPELL_INFECTED_BITE), true);
|
||||
DoCast(m_creature->getVictim(), SPELL_INFECTED_BITE, true);
|
||||
uiInfectedBiteTimer = 11*IN_MILISECONDS;
|
||||
} else uiInfectedBiteTimer -= diff;
|
||||
|
||||
if (uiBindingWebsTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_BLINDING_WEBS, H_SPELL_BLINDING_WEBS), true);
|
||||
DoCast(m_creature->getVictim(), SPELL_BLINDING_WEBS, true);
|
||||
uiBindingWebsTimer = 17*IN_MILISECONDS;
|
||||
} else uiBindingWebsTimer -= diff;
|
||||
|
||||
@@ -444,13 +444,13 @@ struct npc_watcher_silthikAI : public ScriptedAI
|
||||
|
||||
if (uiInfectedBiteTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_INFECTED_BITE, H_SPELL_INFECTED_BITE), true);
|
||||
DoCast(m_creature->getVictim(), SPELL_INFECTED_BITE, true);
|
||||
uiInfectedBiteTimer = 15*IN_MILISECONDS;
|
||||
} else uiInfectedBiteTimer -= diff;
|
||||
|
||||
if (uiPoisonSprayTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_POSION_SPRAY, H_SPELL_POSION_SPRAY), true);
|
||||
DoCast(m_creature->getVictim(), SPELL_POSION_SPRAY, true);
|
||||
uiPoisonSprayTimer = 17*IN_MILISECONDS;
|
||||
} else uiPoisonSprayTimer -= diff;
|
||||
|
||||
|
||||
+7
-7
@@ -243,7 +243,7 @@ struct boss_paletressAI : public ScriptedAI
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 250, true))
|
||||
{
|
||||
if (pTarget && pTarget->isAlive())
|
||||
DoCast(pTarget,DUNGEON_MODE(SPELL_HOLY_FIRE,SPELL_HOLY_FIRE_H));
|
||||
DoCast(pTarget,SPELL_HOLY_FIRE);
|
||||
}
|
||||
if (m_creature->HasAura(SPELL_SHIELD))
|
||||
uiHolyFireTimer = 13000;
|
||||
@@ -256,7 +256,7 @@ struct boss_paletressAI : public ScriptedAI
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 250, true))
|
||||
{
|
||||
if (pTarget && pTarget->isAlive())
|
||||
DoCast(pTarget,DUNGEON_MODE(SPELL_SMITE,SPELL_SMITE_H));
|
||||
DoCast(pTarget,SPELL_SMITE);
|
||||
}
|
||||
if (m_creature->HasAura(SPELL_SHIELD))
|
||||
uiHolySmiteTimer = 9000;
|
||||
@@ -272,12 +272,12 @@ struct boss_paletressAI : public ScriptedAI
|
||||
switch(uiTarget)
|
||||
{
|
||||
case 0:
|
||||
DoCast(m_creature,DUNGEON_MODE(SPELL_RENEW,SPELL_RENEW_H));
|
||||
DoCast(m_creature,SPELL_RENEW);
|
||||
break;
|
||||
case 1:
|
||||
if (Creature *pMemory = Unit::GetCreature(*m_creature, MemoryGUID))
|
||||
if (pMemory->isAlive())
|
||||
DoCast(pMemory, DUNGEON_MODE(SPELL_RENEW,SPELL_RENEW_H));
|
||||
DoCast(pMemory, SPELL_RENEW);
|
||||
break;
|
||||
}
|
||||
uiRenewTimer = urand(15000,17000);
|
||||
@@ -334,14 +334,14 @@ struct npc_memoryAI : public ScriptedAI
|
||||
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
{
|
||||
if (pTarget && pTarget->isAlive())
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_OLD_WOUNDS,SPELL_OLD_WOUNDS_H));
|
||||
DoCast(pTarget, SPELL_OLD_WOUNDS);
|
||||
}
|
||||
uiOldWoundsTimer = 12000;
|
||||
}else uiOldWoundsTimer -= uiDiff;
|
||||
|
||||
if (uiWakingNightmare <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_WAKING_NIGHTMARE,SPELL_WAKING_NIGHTMARE_H));
|
||||
DoCast(m_creature, SPELL_WAKING_NIGHTMARE);
|
||||
uiWakingNightmare = 7000;
|
||||
}else uiWakingNightmare -= uiDiff;
|
||||
|
||||
@@ -350,7 +350,7 @@ struct npc_memoryAI : public ScriptedAI
|
||||
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
{
|
||||
if (pTarget && pTarget->isAlive())
|
||||
DoCast(pTarget,DUNGEON_MODE(SPELL_SHADOWS_PAST,SPELL_SHADOWS_PAST_H));
|
||||
DoCast(pTarget,SPELL_SHADOWS_PAST);
|
||||
}
|
||||
uiShadowPastTimer = 5000;
|
||||
}else uiShadowPastTimer -= uiDiff;
|
||||
|
||||
+5
-5
@@ -170,17 +170,17 @@ struct boss_black_knightAI : public ScriptedAI
|
||||
{
|
||||
if (uiIcyTouchTimer <= uiDiff)
|
||||
{
|
||||
DoCastVictim(DUNGEON_MODE(SPELL_ICY_TOUCH,SPELL_ICY_TOUCH_H));
|
||||
DoCastVictim(SPELL_ICY_TOUCH);
|
||||
uiIcyTouchTimer = urand(5000,7000);
|
||||
} else uiIcyTouchTimer -= uiDiff;
|
||||
if (uiPlagueStrikeTimer <= uiDiff)
|
||||
{
|
||||
DoCastVictim(DUNGEON_MODE(SPELL_ICY_TOUCH,SPELL_ICY_TOUCH_H));
|
||||
DoCastVictim(SPELL_ICY_TOUCH);
|
||||
uiPlagueStrikeTimer = urand(12000,15000);
|
||||
} else uiPlagueStrikeTimer -= uiDiff;
|
||||
if (uiObliterateTimer <= uiDiff)
|
||||
{
|
||||
DoCastVictim(DUNGEON_MODE(SPELL_OBLITERATE,SPELL_OBLITERATE_H));
|
||||
DoCastVictim(SPELL_OBLITERATE);
|
||||
uiObliterateTimer = urand(17000,19000);
|
||||
} else uiObliterateTimer -= uiDiff;
|
||||
switch(uiPhase)
|
||||
@@ -237,7 +237,7 @@ struct boss_black_knightAI : public ScriptedAI
|
||||
{
|
||||
if (uiDeathBiteTimer <= uiDiff)
|
||||
{
|
||||
DoCastAOE(DUNGEON_MODE(SPELL_DEATH_BITE,SPELL_DEATH_BITE_H));
|
||||
DoCastAOE(SPELL_DEATH_BITE);
|
||||
uiDeathBiteTimer = urand (2000, 4000);
|
||||
} else uiDeathBiteTimer -= uiDiff;
|
||||
if (uiMarkedDeathTimer <= uiDiff)
|
||||
@@ -311,7 +311,7 @@ struct npc_risen_ghoulAI : public ScriptedAI
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true))
|
||||
{
|
||||
if (pTarget && pTarget->isAlive())
|
||||
DoCast(pTarget, (DUNGEON_MODE(SPELL_LEAP,SPELL_LEAP_H)));
|
||||
DoCast(pTarget, (SPELL_LEAP));
|
||||
}
|
||||
uiAttackTimer = 3500;
|
||||
} else uiAttackTimer -= uiDiff;
|
||||
|
||||
+10
-10
@@ -399,7 +399,7 @@ struct boss_warrior_toc5AI : public ScriptedAI
|
||||
|
||||
if (uiMortalStrikeTimer <= uiDiff)
|
||||
{
|
||||
DoCastVictim(DUNGEON_MODE(SPELL_MORTAL_STRIKE, SPELL_MORTAL_STRIKE_H));
|
||||
DoCastVictim(SPELL_MORTAL_STRIKE);
|
||||
uiMortalStrikeTimer = urand(8000,12000);
|
||||
} else uiMortalStrikeTimer -= uiDiff;
|
||||
|
||||
@@ -502,7 +502,7 @@ struct boss_mage_toc5AI : public ScriptedAI
|
||||
if (uiFireBallTimer <= uiDiff)
|
||||
{
|
||||
if (m_creature->getVictim())
|
||||
DoCastVictim(DUNGEON_MODE(SPELL_FIREBALL,SPELL_FIREBALL_H));
|
||||
DoCastVictim(SPELL_FIREBALL);
|
||||
uiFireBallTimer = 5000;
|
||||
} else uiFireBallTimer -= uiDiff;
|
||||
|
||||
@@ -512,20 +512,20 @@ struct boss_mage_toc5AI : public ScriptedAI
|
||||
|
||||
if (uiFireBallTimer <= uiDiff)
|
||||
{
|
||||
DoCastVictim(DUNGEON_MODE(SPELL_FIREBALL,SPELL_FIREBALL_H));
|
||||
DoCastVictim(SPELL_FIREBALL);
|
||||
uiFireBallTimer = 5000;
|
||||
} else uiFireBallTimer -= uiDiff;
|
||||
|
||||
if (uiPolymorphTimer <= uiDiff)
|
||||
{
|
||||
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_POLYMORPH,SPELL_POLYMORPH_H));
|
||||
DoCast(pTarget, SPELL_POLYMORPH);
|
||||
uiPolymorphTimer = 8000;
|
||||
} else uiPolymorphTimer -= uiDiff;
|
||||
|
||||
if (uiBlastWaveTimer <= uiDiff)
|
||||
{
|
||||
DoCastAOE(DUNGEON_MODE(SPELL_BLAST_WAVE,SPELL_BLAST_WAVE_H),false);
|
||||
DoCastAOE(SPELL_BLAST_WAVE,false);
|
||||
uiBlastWaveTimer = 13000;
|
||||
} else uiBlastWaveTimer -= uiDiff;
|
||||
|
||||
@@ -645,7 +645,7 @@ struct boss_shaman_toc5AI : public ScriptedAI
|
||||
if (uiChainLightningTimer <= uiDiff)
|
||||
{
|
||||
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(pTarget,DUNGEON_MODE(SPELL_CHAIN_LIGHTNING,SPELL_CHAIN_LIGHTNING_H));
|
||||
DoCast(pTarget,SPELL_CHAIN_LIGHTNING);
|
||||
|
||||
uiChainLightningTimer = 16000;
|
||||
} else uiChainLightningTimer -= uiDiff;
|
||||
@@ -657,9 +657,9 @@ struct boss_shaman_toc5AI : public ScriptedAI
|
||||
if (!bChance)
|
||||
{
|
||||
if (Unit* pFriend = DoSelectLowestHpFriendly(40))
|
||||
DoCast(pFriend,DUNGEON_MODE(SPELL_HEALING_WAVE,SPELL_HEALING_WAVE_H));
|
||||
DoCast(pFriend,SPELL_HEALING_WAVE);
|
||||
} else
|
||||
DoCast(m_creature,DUNGEON_MODE(SPELL_HEALING_WAVE,SPELL_HEALING_WAVE_H));
|
||||
DoCast(m_creature,SPELL_HEALING_WAVE);
|
||||
|
||||
uiHealingWaveTimer = 12000;
|
||||
} else uiHealingWaveTimer -= uiDiff;
|
||||
@@ -793,7 +793,7 @@ struct boss_hunter_toc5AI : public ScriptedAI
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_FARTHEST,0,30.0f))
|
||||
{
|
||||
uiTargetGUID = pTarget->GetGUID();
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_SHOOT,SPELL_SHOOT_H));
|
||||
DoCast(pTarget, SPELL_SHOOT);
|
||||
}
|
||||
uiShootTimer = 12000;
|
||||
uiMultiShotTimer = 3000;
|
||||
@@ -925,7 +925,7 @@ struct boss_rouge_toc5AI : public ScriptedAI
|
||||
|
||||
if (uiEviscerateTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),DUNGEON_MODE(SPELL_EVISCERATE,SPELL_EVISCERATE_H));
|
||||
DoCast(m_creature->getVictim(),SPELL_EVISCERATE);
|
||||
uiEviscerateTimer = 8000;
|
||||
} else uiEviscerateTimer -= uiDiff;
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@ struct boss_dredAI : public ScriptedAI
|
||||
|
||||
if (uiFearsomeRoarTimer < diff)
|
||||
{
|
||||
DoCastAOE(DUNGEON_MODE(SPELL_FEARSOME_ROAR, H_SPELL_FEARSOME_ROAR),false);
|
||||
DoCastAOE(SPELL_FEARSOME_ROAR,false);
|
||||
uiFearsomeRoarTimer = urand(16*IN_MILISECONDS,18*IN_MILISECONDS);
|
||||
} else uiFearsomeRoarTimer -=diff;
|
||||
|
||||
|
||||
@@ -116,19 +116,19 @@ struct boss_tharon_jaAI : public ScriptedAI
|
||||
if (uiCurseOfLifeTimer < diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_CURSE_OF_LIFE, H_SPELL_CURSE_OF_LIFE));
|
||||
DoCast(pTarget, SPELL_CURSE_OF_LIFE);
|
||||
uiCurseOfLifeTimer = urand(10*IN_MILISECONDS,15*IN_MILISECONDS);
|
||||
} else uiCurseOfLifeTimer -= diff;
|
||||
|
||||
if (uiShadowVolleyTimer < diff)
|
||||
{
|
||||
DoCastVictim(DUNGEON_MODE(SPELL_SHADOW_VOLLEY,H_SPELL_SHADOW_VOLLEY));
|
||||
DoCastVictim(SPELL_SHADOW_VOLLEY);
|
||||
uiShadowVolleyTimer = urand(8*IN_MILISECONDS,10*IN_MILISECONDS);
|
||||
} else uiShadowVolleyTimer -= diff;
|
||||
|
||||
if (uiRainOfFireTimer < diff)
|
||||
{
|
||||
DoCastAOE(DUNGEON_MODE(SPELL_RAIN_OF_FIRE,H_SPELL_RAIN_OF_FIRE));
|
||||
DoCastAOE(SPELL_RAIN_OF_FIRE);
|
||||
uiRainOfFireTimer = urand(14*IN_MILISECONDS,18*IN_MILISECONDS);
|
||||
} else uiRainOfFireTimer -= diff;
|
||||
|
||||
@@ -167,20 +167,20 @@ struct boss_tharon_jaAI : public ScriptedAI
|
||||
if (uiLightningBreathTimer < diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_LIGHTNING_BREATH, H_SPELL_LIGHTNING_BREATH));
|
||||
DoCast(pTarget, SPELL_LIGHTNING_BREATH);
|
||||
uiLightningBreathTimer = urand(6*IN_MILISECONDS,7*IN_MILISECONDS);
|
||||
} else uiLightningBreathTimer -= diff;
|
||||
|
||||
if (uiEyeBeamTimer < diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_EYE_BEAM, H_SPELL_EYE_BEAM));
|
||||
DoCast(pTarget, SPELL_EYE_BEAM);
|
||||
uiEyeBeamTimer = urand(4*IN_MILISECONDS,6*IN_MILISECONDS);
|
||||
} else uiEyeBeamTimer -= diff;
|
||||
|
||||
if (uiPoisonCloudTimer < diff)
|
||||
{
|
||||
DoCastAOE(DUNGEON_MODE(SPELL_POISON_CLOUD, H_SPELL_POISON_CLOUD));
|
||||
DoCastAOE(SPELL_POISON_CLOUD);
|
||||
uiPoisonCloudTimer = urand(10*IN_MILISECONDS,12*IN_MILISECONDS);
|
||||
} else uiPoisonCloudTimer -= diff;
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@ struct boss_trollgoreAI : public ScriptedAI
|
||||
if (uiConsumeTimer <= diff)
|
||||
{
|
||||
DoScriptText(SAY_CONSUME, m_creature);
|
||||
DoCast(DUNGEON_MODE(SPELL_CONSUME, H_SPELL_CONSUME));
|
||||
DoCast(SPELL_CONSUME);
|
||||
uiConsumeTimer = 15*IN_MILISECONDS;
|
||||
} else uiConsumeTimer -= diff;
|
||||
|
||||
@@ -144,7 +144,7 @@ struct boss_trollgoreAI : public ScriptedAI
|
||||
|
||||
if (uiExplodeCorpseTimer <= diff)
|
||||
{
|
||||
DoCast(DUNGEON_MODE(SPELL_CORPSE_EXPLODE, H_SPELL_CORPSE_EXPLODE));
|
||||
DoCast(SPELL_CORPSE_EXPLODE);
|
||||
DoScriptText(SAY_EXPLODE, m_creature);
|
||||
uiExplodeCorpseTimer = urand(15*IN_MILISECONDS,19*IN_MILISECONDS);
|
||||
} else uiExplodeCorpseTimer -= diff;
|
||||
|
||||
@@ -180,7 +180,7 @@ struct boss_bronjahmAI : public ScriptedAI
|
||||
events.ScheduleEvent(EVENT_SHADOW_BOLT, 2000);
|
||||
break;
|
||||
case EVENT_MAGIC_BANE:
|
||||
DoCastVictim(DUNGEON_MODE(SPELL_MAGIC_S_BANE,H_SPELL_MAGIC_S_BANE));
|
||||
DoCastVictim(SPELL_MAGIC_S_BANE);
|
||||
events.ScheduleEvent(EVENT_MAGIC_BANE, urand(8000,15000));
|
||||
break;
|
||||
}
|
||||
@@ -217,7 +217,7 @@ struct mob_corrupted_soul_fragmentAI : public ScriptedAI
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature* pBronjham = Unit::GetCreature(*m_creature,pInstance->GetData64(DATA_BRONJAHM)))
|
||||
DoCast(pBronjham,DUNGEON_MODE(SPELL_CONSUME_SOUL,H_SPELL_CONSUME_SOUL));
|
||||
DoCast(pBronjham,SPELL_CONSUME_SOUL);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff) {}
|
||||
|
||||
@@ -247,7 +247,7 @@ struct boss_devourer_of_soulsAI : public ScriptedAI
|
||||
{
|
||||
case EVENT_PHANTOM_BLAST:
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO, 0))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_PHANTOM_BLAST,H_SPELL_PHANTOM_BLAST));
|
||||
DoCast(pTarget, SPELL_PHANTOM_BLAST);
|
||||
events.ScheduleEvent(EVENT_PHANTOM_BLAST, 5000);
|
||||
break;
|
||||
case EVENT_MIRRORED_SOUL:
|
||||
|
||||
@@ -411,7 +411,7 @@ struct mob_spiteful_apparitionAI: public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_SPITE:
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SPITE,H_SPELL_SPITE));
|
||||
DoCast(m_creature->getVictim(), SPELL_SPITE);
|
||||
events.RescheduleEvent(EVENT_SPITE, 8000);
|
||||
return;
|
||||
}
|
||||
@@ -461,7 +461,7 @@ struct mob_spectral_wardenAI: public ScriptedAI
|
||||
return;
|
||||
case EVENT_WAIL_OF_SOULS:
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_WAIL_OF_SOULS,H_SPELL_WAIL_OF_SOULS));
|
||||
DoCast(pTarget, SPELL_WAIL_OF_SOULS);
|
||||
events.RescheduleEvent(EVENT_WAIL_OF_SOULS, 5000);
|
||||
return;
|
||||
}
|
||||
@@ -553,7 +553,7 @@ struct mob_soulguard_reaperAI: public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_FROST_NOVA:
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_FROST_NOVA,H_SPELL_FROST_NOVA));
|
||||
DoCast(m_creature, SPELL_FROST_NOVA);
|
||||
events.RescheduleEvent(EVENT_FROST_NOVA, 9600);
|
||||
return;
|
||||
case EVENT_SHADOW_LANCE:
|
||||
@@ -604,7 +604,7 @@ struct mob_soulguard_bonecasterAI: public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_BONE_VOLLEY:
|
||||
DoCastAOE(DUNGEON_MODE(SPELL_BONE_VOLLEY,H_SPELL_BONE_VOLLEY));
|
||||
DoCastAOE(SPELL_BONE_VOLLEY);
|
||||
events.RescheduleEvent(EVENT_BONE_VOLLEY, 7000);
|
||||
return;
|
||||
case EVENT_RAISE_DEAD:
|
||||
@@ -612,7 +612,7 @@ struct mob_soulguard_bonecasterAI: public ScriptedAI
|
||||
events.RescheduleEvent(EVENT_RAISE_DEAD, 25000);
|
||||
return;
|
||||
case EVENT_SHIELD_OF_BONES:
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_SHIELD_OF_BONES,H_SPELL_SHIELD_OF_BONES));
|
||||
DoCast(m_creature, SPELL_SHIELD_OF_BONES);
|
||||
events.RescheduleEvent(EVENT_SHIELD_OF_BONES, 8000);
|
||||
return;
|
||||
}
|
||||
@@ -664,7 +664,7 @@ struct mob_soulguard_animatorAI: public ScriptedAI
|
||||
return;
|
||||
case EVENT_SHADOW_BOLT:
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_SHADOW_BOLT,H_SPELL_SHADOW_BOLT));
|
||||
DoCast(pTarget, SPELL_SHADOW_BOLT);
|
||||
events.RescheduleEvent(EVENT_SHADOW_BOLT, 5000);
|
||||
return;
|
||||
case EVENT_SOUL_SICKNESS:
|
||||
@@ -726,16 +726,16 @@ struct mob_soulguard_adeptAI: public ScriptedAI
|
||||
return;
|
||||
case EVENT_SHADOW_BOLT:
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_SHADOW_BOLT,H_SPELL_SHADOW_BOLT));
|
||||
DoCast(pTarget, SPELL_SHADOW_BOLT);
|
||||
events.RescheduleEvent(EVENT_SHADOW_BOLT, 4000);
|
||||
return;
|
||||
case EVENT_DRAIN_LIFE:
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_DRAIN_LIFE,H_SPELL_DRAIN_LIFE));
|
||||
DoCast(pTarget, SPELL_DRAIN_LIFE);
|
||||
events.RescheduleEvent(EVENT_DRAIN_LIFE, 9000);
|
||||
return;
|
||||
case EVENT_SHADOW_MEND:
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_SHADOW_MEND,H_SPELL_SHADOW_MEND));
|
||||
DoCast(m_creature, SPELL_SHADOW_MEND);
|
||||
events.RescheduleEvent(EVENT_SHADOW_MEND, 20000);
|
||||
return;
|
||||
}
|
||||
@@ -779,7 +779,7 @@ struct mob_soul_horrorAI: public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_SOUL_STRIKE:
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SOUL_STRIKE,H_SPELL_SOUL_STRIKE));
|
||||
DoCast(m_creature->getVictim(), SPELL_SOUL_STRIKE);
|
||||
events.RescheduleEvent(EVENT_SOUL_STRIKE, 8000);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ struct boss_garfrostAI : public ScriptedAI
|
||||
phase2 = true;
|
||||
DoCast(m_creature, SPELL_THUNDERING_STOMP);
|
||||
// TODO: should go to a forge
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_FORGE_BLADE, H_SPELL_FORGE_BLADE));
|
||||
DoCast(m_creature, SPELL_FORGE_BLADE);
|
||||
// TODO: should equip when spell completes
|
||||
SetEquipmentSlots(false, EQUIP_ID_SWORD, -1, -1);
|
||||
m_creature->SetByteValue(UNIT_FIELD_BYTES_2, 0, SHEATH_STATE_MELEE);
|
||||
@@ -117,7 +117,7 @@ struct boss_garfrostAI : public ScriptedAI
|
||||
phase3 = true;
|
||||
DoCast(m_creature, SPELL_THUNDERING_STOMP);
|
||||
// TODO: should go to a forge
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_FORGE_MACE, H_SPELL_FORGE_MACE));
|
||||
DoCast(m_creature, SPELL_FORGE_MACE);
|
||||
// TODO: should equip when spell completes
|
||||
SetEquipmentSlots(false, EQUIP_ID_MACE, -1, -1);
|
||||
m_creature->SetByteValue(UNIT_FIELD_BYTES_2, 0, SHEATH_STATE_MELEE);
|
||||
@@ -180,11 +180,11 @@ struct boss_garfrostAI : public ScriptedAI
|
||||
return;
|
||||
case EVENT_DEEPFREEZE:
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_DEEP_FREEZE, H_SPELL_DEEP_FREEZE));
|
||||
DoCast(pTarget, SPELL_DEEP_FREEZE);
|
||||
events.RescheduleEvent(EVENT_DEEPFREEZE, 35000);
|
||||
return;
|
||||
case EVENT_CHILLINGWAVE:
|
||||
DoCastAOE(DUNGEON_MODE(SPELL_CHILLING_WAVE, H_SPELL_CHILLING_WAVE));
|
||||
DoCastAOE(SPELL_CHILLING_WAVE);
|
||||
events.RescheduleEvent(EVENT_CHILLINGWAVE, 40000);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -223,12 +223,12 @@ struct boss_ickAI : public ScriptedAI
|
||||
DoScriptText(SAY_KRICK_POISON_NOVA, pKrick);
|
||||
|
||||
DoScriptText(SAY_ICK_POISON_NOVA, m_creature);
|
||||
DoCastAOE(DUNGEON_MODE(SPELL_POISON_NOVA,H_SPELL_POISON_NOVA));
|
||||
DoCastAOE(SPELL_POISON_NOVA);
|
||||
events.ScheduleEvent(EVENT_POISON_NOVA, 30000, GCD_1);
|
||||
return;
|
||||
|
||||
case EVENT_TOXIC_WASTE:
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_TOXIC_WASTE,H_SPELL_TOXIC_WASTE));
|
||||
DoCast(m_creature->getVictim(), SPELL_TOXIC_WASTE);
|
||||
events.ScheduleEvent(EVENT_TOXIC_WASTE, 5000);
|
||||
return;
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ struct boss_tyrannusAI : public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_FORCEFUL_SMASH:
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_FORCEFUL_SMASH, H_SPELL_FORCEFUL_SMASH));
|
||||
DoCast(m_creature->getVictim(), SPELL_FORCEFUL_SMASH);
|
||||
events.ScheduleEvent(EVENT_FORCEFUL_SMASH, 10000);
|
||||
return;
|
||||
case EVENT_OVERLORDS_BRAND:
|
||||
@@ -167,7 +167,7 @@ struct boss_tyrannusAI : public ScriptedAI
|
||||
case EVENT_DARK_MIGHT:
|
||||
DoScriptText(SAY_DARK_MIGHT_1, m_creature);
|
||||
DoScriptText(SAY_DARK_MIGHT_2, m_creature);
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_DARK_MIGHT, H_SPELL_DARK_MIGHT));
|
||||
DoCast(m_creature, SPELL_DARK_MIGHT);
|
||||
events.ScheduleEvent(EVENT_DARK_MIGHT, 60000);
|
||||
return;
|
||||
}
|
||||
@@ -235,12 +235,12 @@ struct boss_rimefangAI : public ScriptedAI
|
||||
return;
|
||||
case EVENT_ICY_BLAST:
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_ICY_BLAST, H_SPELL_ICY_BLAST));
|
||||
DoCast(pTarget, SPELL_ICY_BLAST);
|
||||
events.ScheduleEvent(EVENT_ICY_BLAST_2, 5000);
|
||||
return;
|
||||
case EVENT_ICY_BLAST_2:
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget->getVictim(), DUNGEON_MODE(SPELL_ICY_BLAST_2, H_SPELL_ICY_BLAST_2));
|
||||
DoCast(pTarget->getVictim(), SPELL_ICY_BLAST_2);
|
||||
events.ScheduleEvent(EVENT_ICY_BLAST, 30000);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -267,13 +267,13 @@ struct npc_living_mojoAI : public ScriptedAI
|
||||
|
||||
if (uiMojoWaveTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_MOJO_WAVE, H_SPELL_MOJO_WAVE));
|
||||
DoCast(m_creature->getVictim(), SPELL_MOJO_WAVE);
|
||||
uiMojoWaveTimer = 15*IN_MILISECONDS;
|
||||
} else uiMojoWaveTimer -= diff;
|
||||
|
||||
if (uiMojoPuddleTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_MOJO_PUDDLE, H_SPELL_MOJO_PUDDLE));
|
||||
DoCast(m_creature->getVictim(), SPELL_MOJO_PUDDLE);
|
||||
uiMojoPuddleTimer = 18*IN_MILISECONDS;
|
||||
} else uiMojoPuddleTimer -= diff;
|
||||
|
||||
|
||||
@@ -169,7 +169,7 @@ struct boss_gal_darahAI : public ScriptedAI
|
||||
|
||||
if (uiWhirlingSlashTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_WHIRLING_SLASH, H_SPELL_WHIRLING_SLASH));
|
||||
DoCast(m_creature->getVictim(), SPELL_WHIRLING_SLASH);
|
||||
uiWhirlingSlashTimer = 21*IN_MILISECONDS;
|
||||
++uiPhaseCounter;
|
||||
} else uiWhirlingSlashTimer -= diff;
|
||||
@@ -205,19 +205,19 @@ struct boss_gal_darahAI : public ScriptedAI
|
||||
{
|
||||
if (uiPunctureTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_PUNCTURE, H_SPELL_PUNCTURE));
|
||||
DoCast(m_creature->getVictim(), SPELL_PUNCTURE);
|
||||
uiPunctureTimer = 8*IN_MILISECONDS;
|
||||
} else uiPunctureTimer -= diff;
|
||||
|
||||
if (uiEnrageTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_ENRAGE, H_SPELL_ENRAGE));
|
||||
DoCast(m_creature->getVictim(), SPELL_ENRAGE);
|
||||
uiEnrageTimer = 20*IN_MILISECONDS;
|
||||
} else uiEnrageTimer -= diff;
|
||||
|
||||
if (uiStompTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_STOMP, H_SPELL_STOMP));
|
||||
DoCast(m_creature->getVictim(), SPELL_STOMP);
|
||||
uiStompTimer = 20*IN_MILISECONDS;
|
||||
} else uiStompTimer -= diff;
|
||||
|
||||
@@ -225,7 +225,7 @@ struct boss_gal_darahAI : public ScriptedAI
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_IMPALING_CHARGE, H_SPELL_IMPALING_CHARGE));
|
||||
DoCast(pTarget, SPELL_IMPALING_CHARGE);
|
||||
lImpaledPlayers.insert(pTarget->GetGUID());
|
||||
}
|
||||
uiImpalingChargeTimer = 31*IN_MILISECONDS;
|
||||
|
||||
@@ -120,7 +120,7 @@ struct boss_moorabiAI : public ScriptedAI
|
||||
if (uiDeterminedStabTimer <= uiDiff)
|
||||
{
|
||||
if (bPhase)
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_DETERMINED_GORE, H_SPELL_DETERMINED_GORE));
|
||||
DoCast(m_creature->getVictim(), SPELL_DETERMINED_GORE);
|
||||
else
|
||||
DoCast(m_creature->getVictim(), SPELL_DETERMINED_STAB, true);
|
||||
uiDeterminedStabTimer = 8*IN_MILISECONDS;
|
||||
|
||||
@@ -114,19 +114,19 @@ struct boss_slad_ranAI : public ScriptedAI
|
||||
|
||||
if (uiPoisonNovaTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_POISON_NOVA, H_SPELL_POISON_NOVA));
|
||||
DoCast(m_creature->getVictim(), SPELL_POISON_NOVA);
|
||||
uiPoisonNovaTimer = 15*IN_MILISECONDS;
|
||||
} else uiPoisonNovaTimer -= diff;
|
||||
|
||||
if (uiPowerfullBiteTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_POWERFULL_BITE, H_SPELL_POWERFULL_BITE));
|
||||
DoCast(m_creature->getVictim(), SPELL_POWERFULL_BITE);
|
||||
uiPowerfullBiteTimer = 10*IN_MILISECONDS;
|
||||
} else uiPowerfullBiteTimer -= diff;
|
||||
|
||||
if (uiVenomBoltTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_VENOM_BOLT, H_SPELL_VENOM_BOLT));
|
||||
DoCast(m_creature->getVictim(), SPELL_VENOM_BOLT);
|
||||
uiVenomBoltTimer = 10*IN_MILISECONDS;
|
||||
} else uiVenomBoltTimer -= diff;
|
||||
|
||||
@@ -224,7 +224,7 @@ struct mob_slad_ran_viperAI : public ScriptedAI
|
||||
|
||||
if (uiVenomousBiteTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_VENOMOUS_BITE, H_SPELL_VENOMOUS_BITE));
|
||||
DoCast(m_creature->getVictim(), SPELL_VENOMOUS_BITE);
|
||||
uiVenomousBiteTimer = 10*IN_MILISECONDS;
|
||||
} else uiVenomousBiteTimer -= diff;
|
||||
}
|
||||
|
||||
@@ -153,7 +153,7 @@ struct boss_anomalusAI : public ScriptedAI
|
||||
if (uiSparkTimer <= diff)
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_SPARK, H_SPELL_SPARK));
|
||||
DoCast(pTarget, SPELL_SPARK);
|
||||
uiSparkTimer = 5*IN_MILISECONDS;
|
||||
} else uiSparkTimer -= diff;
|
||||
|
||||
|
||||
@@ -186,7 +186,7 @@ struct boss_keristraszaAI : public ScriptedAI
|
||||
|
||||
if (uiCrystalfireBreathTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_CRYSTALFIRE_BREATH, H_SPELL_CRYSTALFIRE_BREATH));
|
||||
DoCast(m_creature->getVictim(), SPELL_CRYSTALFIRE_BREATH);
|
||||
uiCrystalfireBreathTimer = 14*IN_MILISECONDS;
|
||||
} else uiCrystalfireBreathTimer -= diff;
|
||||
|
||||
|
||||
@@ -281,7 +281,7 @@ struct boss_magus_telestraAI : public ScriptedAI
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
{
|
||||
DoCast(pTarget, SPELL_ICE_NOVA, false, true);
|
||||
DoCast(pTarget, SPELL_ICE_NOVA, false);
|
||||
uiCooldown = 1.5*IN_MILISECONDS;
|
||||
}
|
||||
uiIceNovaTimer = 15*IN_MILISECONDS;
|
||||
@@ -301,7 +301,7 @@ struct boss_magus_telestraAI : public ScriptedAI
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
{
|
||||
DoCast(pTarget, SPELL_FIREBOMB, false, true);
|
||||
DoCast(pTarget, SPELL_FIREBOMB, false);
|
||||
uiCooldown = 2*IN_MILISECONDS;
|
||||
}
|
||||
uiFireBombTimer = 2*IN_MILISECONDS;
|
||||
|
||||
@@ -139,7 +139,7 @@ struct boss_ormorokAI : public ScriptedAI
|
||||
|
||||
if (uiTrampleTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_TRAMPLE, H_SPELL_TRAMPLE));
|
||||
DoCast(m_creature, SPELL_TRAMPLE);
|
||||
uiTrampleTimer = 10*IN_MILISECONDS;
|
||||
} else uiTrampleTimer -= diff;
|
||||
|
||||
@@ -232,7 +232,7 @@ struct mob_crystal_spikeAI : public Scripted_NoMovementAI
|
||||
|
||||
if (SpellCrystalSpikeDamageTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_CRYSTALL_SPIKE_DAMAGE, H_SPELL_CRYSTALL_SPIKE_DAMAGE));
|
||||
DoCast(m_creature, SPELL_CRYSTALL_SPIKE_DAMAGE);
|
||||
SpellCrystalSpikeDamageTimer = 10*IN_MILISECONDS;
|
||||
} else SpellCrystalSpikeDamageTimer -= diff;
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ struct boss_drakosAI : public ScriptedAI
|
||||
if (uiStompTimer < diff)
|
||||
{
|
||||
DoScriptText(RAND(SAY_STOMP_1,SAY_STOMP_2,SAY_STOMP_3), m_creature);
|
||||
DoCast(DUNGEON_MODE(SPELL_THUNDERING_STOMP, SPELL_THUNDERING_STOMP_H));
|
||||
DoCast(SPELL_THUNDERING_STOMP);
|
||||
uiStompTimer = urand(15*IN_MILISECONDS, 18*IN_MILISECONDS);
|
||||
} else uiStompTimer -= diff ;
|
||||
|
||||
|
||||
@@ -394,7 +394,7 @@ struct mob_stormforged_lieutenantAI : public ScriptedAI
|
||||
if (Creature* pBjarngrim = m_pInstance->instance->GetCreature(m_pInstance->GetData64(DATA_BJARNGRIM)))
|
||||
{
|
||||
if (pBjarngrim->isAlive())
|
||||
DoCast(pBjarngrim, DUNGEON_MODE(SPELL_RENEW_STEEL_N, SPELL_RENEW_STEEL_H));
|
||||
DoCast(pBjarngrim, SPELL_RENEW_STEEL_N);
|
||||
}
|
||||
}
|
||||
m_uiRenewSteel_Timer = 10000 + rand()%4000;
|
||||
|
||||
@@ -231,7 +231,7 @@ struct boss_ionarAI : public ScriptedAI
|
||||
if (uiStaticOverloadTimer <= uiDiff)
|
||||
{
|
||||
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_STATIC_OVERLOAD, H_SPELL_STATIC_OVERLOAD));
|
||||
DoCast(pTarget, SPELL_STATIC_OVERLOAD);
|
||||
|
||||
uiStaticOverloadTimer = urand(5*IN_MILISECONDS, 6*IN_MILISECONDS);
|
||||
}
|
||||
@@ -240,7 +240,7 @@ struct boss_ionarAI : public ScriptedAI
|
||||
|
||||
if (uiBallLightningTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_BALL_LIGHTNING, H_SPELL_BALL_LIGHTNING));
|
||||
DoCast(m_creature->getVictim(), SPELL_BALL_LIGHTNING);
|
||||
uiBallLightningTimer = urand(10*IN_MILISECONDS, 11*IN_MILISECONDS);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -175,7 +175,7 @@ struct boss_lokenAI : public ScriptedAI
|
||||
//breaks at movement, can we assume when it's time, this spell is casted and also must stop movement?
|
||||
DoCast(m_creature, SPELL_PULSING_SHOCKWAVE_AURA, true);
|
||||
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_PULSING_SHOCKWAVE_N, SPELL_PULSING_SHOCKWAVE_H)); // need core support
|
||||
DoCast(m_creature, SPELL_PULSING_SHOCKWAVE_N); // need core support
|
||||
m_bIsAura = true;
|
||||
m_uiResumePulsingShockwave_Timer = 0;
|
||||
}
|
||||
@@ -197,7 +197,7 @@ struct boss_lokenAI : public ScriptedAI
|
||||
{
|
||||
DoScriptText(RAND(SAY_NOVA_1,SAY_NOVA_2,SAY_NOVA_3), m_creature);
|
||||
DoScriptText(EMOTE_NOVA, m_creature);
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_LIGHTNING_NOVA_N, SPELL_LIGHTNING_NOVA_H));
|
||||
DoCast(m_creature, SPELL_LIGHTNING_NOVA_N);
|
||||
|
||||
m_bIsAura = false;
|
||||
m_uiResumePulsingShockwave_Timer = DUNGEON_MODE(5000, 4000); // Pause Pulsing Shockwave aura
|
||||
|
||||
@@ -255,7 +255,7 @@ struct boss_volkhanAI : public ScriptedAI
|
||||
|
||||
DoScriptText(RAND(SAY_STOMP_1,SAY_STOMP_2), m_creature);
|
||||
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_SHATTERING_STOMP_N, SPELL_SHATTERING_STOMP_H));
|
||||
DoCast(m_creature, SPELL_SHATTERING_STOMP_N);
|
||||
|
||||
DoScriptText(EMOTE_SHATTER, m_creature);
|
||||
|
||||
@@ -441,7 +441,7 @@ struct mob_molten_golemAI : public ScriptedAI
|
||||
|
||||
if (m_uiImmolation_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_IMMOLATION_STRIKE_N, SPELL_IMMOLATION_STRIKE_H));
|
||||
DoCast(m_creature->getVictim(), SPELL_IMMOLATION_STRIKE_N);
|
||||
m_uiImmolation_Timer = 5000;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -79,7 +79,7 @@ struct boss_krystallusAI : public ScriptedAI
|
||||
if (uiBoulderTossTimer <= diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_BOULDER_TOSS, H_SPELL_BOULDER_TOSS));
|
||||
DoCast(pTarget, SPELL_BOULDER_TOSS);
|
||||
uiBoulderTossTimer = 9000 + rand()%6000;
|
||||
} else uiBoulderTossTimer -= diff;
|
||||
|
||||
@@ -92,7 +92,7 @@ struct boss_krystallusAI : public ScriptedAI
|
||||
|
||||
if (uiStompTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_STOMP, H_SPELL_STOMP));
|
||||
DoCast(m_creature, SPELL_STOMP);
|
||||
uiStompTimer = 20000 + rand()%9000;
|
||||
} else uiStompTimer -= diff;
|
||||
|
||||
@@ -108,7 +108,7 @@ struct boss_krystallusAI : public ScriptedAI
|
||||
{
|
||||
if (uiShatterTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_SHATTER, H_SPELL_SHATTER));
|
||||
DoCast(m_creature, SPELL_SHATTER);
|
||||
bIsSlam = false;
|
||||
} else uiShatterTimer -= diff;
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ struct boss_maiden_of_griefAI : public ScriptedAI
|
||||
|
||||
if (StormOfGriefTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_STORM_OF_GRIEF_N, SPELL_STORM_OF_GRIEF_H), true);
|
||||
DoCast(m_creature->getVictim(), SPELL_STORM_OF_GRIEF_N, true);
|
||||
StormOfGriefTimer = 15000 + rand()%5000;
|
||||
} else StormOfGriefTimer -= diff;
|
||||
|
||||
@@ -117,7 +117,7 @@ struct boss_maiden_of_griefAI : public ScriptedAI
|
||||
{
|
||||
DoResetThreat();
|
||||
DoScriptText(SAY_STUN, m_creature);
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_SHOCK_OF_SORROW_N, SPELL_SHOCK_OF_SORROW_H));
|
||||
DoCast(m_creature, SPELL_SHOCK_OF_SORROW_N);
|
||||
ShockOfSorrowTimer = 20000 + rand()%10000;
|
||||
} else ShockOfSorrowTimer -= diff;
|
||||
|
||||
@@ -126,9 +126,9 @@ struct boss_maiden_of_griefAI : public ScriptedAI
|
||||
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1);
|
||||
|
||||
if (pTarget)
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_PILLAR_OF_WOE_N, SPELL_PILLAR_OF_WOE_H));
|
||||
DoCast(pTarget, SPELL_PILLAR_OF_WOE_N);
|
||||
else
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_PILLAR_OF_WOE_N, SPELL_PILLAR_OF_WOE_H));
|
||||
DoCast(m_creature->getVictim(), SPELL_PILLAR_OF_WOE_N);
|
||||
|
||||
PillarOfWoeTimer = 5000 + rand()%20000;
|
||||
} else PillarOfWoeTimer -= diff;
|
||||
|
||||
@@ -134,19 +134,19 @@ struct boss_sjonnirAI : public ScriptedAI
|
||||
if (uiChainLightningTimer <= diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_CHAIN_LIGHTING, H_SPELL_CHAIN_LIGHTING));
|
||||
DoCast(pTarget, SPELL_CHAIN_LIGHTING);
|
||||
uiChainLightningTimer = 10000 + rand()%5000;
|
||||
} else uiChainLightningTimer -= diff;
|
||||
|
||||
if (uiLightningShieldTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_LIGHTING_SHIELD, H_SPELL_LIGHTING_SHIELD));
|
||||
DoCast(m_creature, SPELL_LIGHTING_SHIELD);
|
||||
uiLightningShieldTimer -= diff;
|
||||
}
|
||||
|
||||
if (uiStaticChargeTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_STATIC_CHARGE, H_SPELL_STATIC_CHARGE));
|
||||
DoCast(m_creature->getVictim(), SPELL_STATIC_CHARGE);
|
||||
uiStaticChargeTimer = 20000 + rand()%5000;
|
||||
} uiStaticChargeTimer -= diff;
|
||||
|
||||
@@ -154,7 +154,7 @@ struct boss_sjonnirAI : public ScriptedAI
|
||||
{
|
||||
if (m_creature->IsNonMeleeSpellCasted(false))
|
||||
m_creature->InterruptNonMeleeSpells(false);
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_LIGHTING_RING, H_SPELL_LIGHTING_RING));
|
||||
DoCast(m_creature, SPELL_LIGHTING_RING);
|
||||
uiLightningRingTimer = 30000 + rand()%5000;
|
||||
} else uiLightningRingTimer -= diff;
|
||||
|
||||
|
||||
@@ -198,7 +198,7 @@ struct boss_ingvar_the_plundererAI : public ScriptedAI
|
||||
if (!m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
{
|
||||
if (bIsUndead)
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_WOE_STRIKE, H_SPELL_WOE_STRIKE));
|
||||
DoCast(m_creature->getVictim(), SPELL_WOE_STRIKE);
|
||||
else
|
||||
DoCast(m_creature->getVictim(), SPELL_CLEAVE);
|
||||
uiCleaveTimer = rand()%5000 + 2000;
|
||||
@@ -212,7 +212,7 @@ struct boss_ingvar_the_plundererAI : public ScriptedAI
|
||||
if (bIsUndead)
|
||||
DoCast(m_creature->getVictim(), SPELL_DARK_SMASH);
|
||||
else
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SMASH, H_SPELL_SMASH));
|
||||
DoCast(m_creature->getVictim(), SPELL_SMASH);
|
||||
uiSmashTimer = 10000;
|
||||
}
|
||||
} else uiSmashTimer -= diff;
|
||||
@@ -221,7 +221,7 @@ struct boss_ingvar_the_plundererAI : public ScriptedAI
|
||||
{
|
||||
if (uiEnrageTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_ENRAGE, H_SPELL_ENRAGE));
|
||||
DoCast(m_creature, SPELL_ENRAGE);
|
||||
uiEnrageTimer = 10000;
|
||||
} else uiEnrageTimer -= diff;
|
||||
} else // In Undead form used to summon weapon
|
||||
@@ -248,9 +248,9 @@ struct boss_ingvar_the_plundererAI : public ScriptedAI
|
||||
if (!m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
{
|
||||
if (bIsUndead)
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_DREADFUL_ROAR, H_SPELL_DREADFUL_ROAR));
|
||||
DoCast(m_creature, SPELL_DREADFUL_ROAR);
|
||||
else
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_STAGGERING_ROAR, H_SPELL_STAGGERING_ROAR));
|
||||
DoCast(m_creature, SPELL_STAGGERING_ROAR);
|
||||
uiRoarTimer = 10000;
|
||||
}
|
||||
} else uiRoarTimer -= diff;
|
||||
@@ -395,7 +395,7 @@ struct mob_ingvar_throw_dummyAI : public ScriptedAI
|
||||
Unit *pTarget = m_creature->FindNearestCreature(ENTRY_THROW_TARGET,50);
|
||||
if (pTarget)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_SHADOW_AXE_DAMAGE, H_SPELL_SHADOW_AXE_DAMAGE));
|
||||
DoCast(m_creature, SPELL_SHADOW_AXE_DAMAGE);
|
||||
float x,y,z;
|
||||
pTarget->GetPosition(x,y,z);
|
||||
m_creature->GetMotionMaster()->MovePoint(0,x,y,z);
|
||||
|
||||
@@ -340,7 +340,7 @@ struct boss_dalronn_the_controllerAI : public ScriptedAI
|
||||
{
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), DUNGEON_MODE(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT));
|
||||
DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_SHADOW_BOLT);
|
||||
ShadowBolt_Timer = 2100;//give a 100ms pause to try cast other spells
|
||||
}
|
||||
} else ShadowBolt_Timer -= diff;
|
||||
|
||||
@@ -164,13 +164,13 @@ struct boss_palehoofAI : public ScriptedAI
|
||||
if (uiImpaleTimer <= diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_IMPALE, H_SPELL_IMPALE));
|
||||
DoCast(pTarget, SPELL_IMPALE);
|
||||
uiImpaleTimer = urand(8000,12000);
|
||||
} else uiImpaleTimer -= diff;
|
||||
|
||||
if (uiWhiteringRoarTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_WITHERING_ROAR, H_SPELL_WITHERING_ROAR));
|
||||
DoCast(m_creature, SPELL_WITHERING_ROAR);
|
||||
uiWhiteringRoarTimer = urand(8000,12000);
|
||||
} else uiWhiteringRoarTimer -= diff;
|
||||
|
||||
@@ -290,7 +290,7 @@ struct mob_ravenous_furbolgAI : public ScriptedAI
|
||||
|
||||
if (uiChainLightingTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_CHAIN_LIGHTING, H_SPELL_CHAIN_LIGHTING));
|
||||
DoCast(m_creature->getVictim(), SPELL_CHAIN_LIGHTING);
|
||||
uiChainLightingTimer = 5000 + rand()%5000;
|
||||
} else uiChainLightingTimer -= diff;
|
||||
|
||||
@@ -396,7 +396,7 @@ struct mob_frenzied_worgenAI : public ScriptedAI
|
||||
|
||||
if (uiMortalWoundTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_MORTAL_WOUND, H_SPELL_MORTAL_WOUND));
|
||||
DoCast(m_creature->getVictim(), SPELL_MORTAL_WOUND);
|
||||
uiMortalWoundTimer = 3000 + rand()%4000;
|
||||
} else uiMortalWoundTimer -= diff;
|
||||
|
||||
@@ -511,14 +511,14 @@ struct mob_ferocious_rhinoAI : public ScriptedAI
|
||||
|
||||
if (uiGoreTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_GORE, H_SPELL_GORE));
|
||||
DoCast(m_creature->getVictim(), SPELL_GORE);
|
||||
uiGoreTimer = 13000 + rand()%4000;
|
||||
} else uiGoreTimer -= diff;
|
||||
|
||||
if (uiGrievousWoundTimer <= diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_GRIEVOUS_WOUND, H_SPELL_GRIEVOUS_WOUND));
|
||||
DoCast(pTarget, SPELL_GRIEVOUS_WOUND);
|
||||
uiGrievousWoundTimer = 18000 + rand()%4000;
|
||||
} else uiGrievousWoundTimer -= diff;
|
||||
|
||||
@@ -625,14 +625,14 @@ struct mob_massive_jormungarAI : public ScriptedAI
|
||||
|
||||
if (uiAcidSplatterTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_POISON_BREATH, H_SPELL_POISON_BREATH));
|
||||
DoCast(m_creature, SPELL_POISON_BREATH);
|
||||
uiAcidSplatterTimer = 10000 + rand()%4000;
|
||||
} else uiAcidSplatterTimer -= diff;
|
||||
|
||||
if (uiPoisonBreathTimer <= diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_POISON_BREATH, H_SPELL_POISON_BREATH));
|
||||
DoCast(pTarget, SPELL_POISON_BREATH);
|
||||
uiPoisonBreathTimer = 8000 + rand()%4000;
|
||||
} else uiPoisonBreathTimer -= diff;
|
||||
|
||||
|
||||
@@ -149,14 +149,14 @@ struct boss_skadiAI : public ScriptedAI
|
||||
|
||||
if (uiCrushTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_CRUSH, H_SPELL_CRUSH));
|
||||
DoCast(m_creature->getVictim(), SPELL_CRUSH);
|
||||
uiCrushTimer = 8000;
|
||||
} else uiCrushTimer -= diff;
|
||||
|
||||
if (uiPoisonedSpearTimer <= diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_POISONED_SPEAR, H_SPELL_POISONED_SPEAR));
|
||||
DoCast(pTarget, SPELL_POISONED_SPEAR);
|
||||
uiPoisonedSpearTimer = 10000;
|
||||
} else uiPoisonedSpearTimer -= diff;
|
||||
|
||||
|
||||
@@ -292,7 +292,7 @@ struct boss_svala_sorrowgraveAI : public ScriptedAI
|
||||
|
||||
if (uiSinsterStrikeTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SINSTER_STRIKE, H_SPELL_SINSTER_STRIKE));
|
||||
DoCast(m_creature->getVictim(), SPELL_SINSTER_STRIKE);
|
||||
uiSinsterStrikeTimer = urand(5*IN_MILISECONDS,9*IN_MILISECONDS);
|
||||
} else uiSinsterStrikeTimer -= diff;
|
||||
|
||||
|
||||
@@ -218,13 +218,13 @@ struct boss_ymironAI : public ScriptedAI
|
||||
// Normal spells ------------------------------------------------------------------------
|
||||
if (m_uiBane_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_BANE, H_SPELL_BANE));
|
||||
DoCast(m_creature, SPELL_BANE);
|
||||
m_uiBane_Timer = urand(20000,25000);
|
||||
} else m_uiBane_Timer -= diff;
|
||||
|
||||
if (m_uiFetidRot_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_FETID_ROT, H_SPELL_FETID_ROT));
|
||||
DoCast(m_creature->getVictim(), SPELL_FETID_ROT);
|
||||
m_uiFetidRot_Timer = urand(10000,15000);
|
||||
} else m_uiFetidRot_Timer -= diff;
|
||||
|
||||
@@ -259,13 +259,13 @@ struct boss_ymironAI : public ScriptedAI
|
||||
|
||||
if (m_bIsActiveWithHALDOR && m_uiAbility_HALDOR_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SPIRIT_STRIKE, H_SPELL_SPIRIT_STRIKE));
|
||||
DoCast(m_creature->getVictim(), SPELL_SPIRIT_STRIKE);
|
||||
m_uiAbility_HALDOR_Timer = 5000; // overtime
|
||||
} else m_uiAbility_HALDOR_Timer -= diff;
|
||||
|
||||
if (m_bIsActiveWithRANULF && m_uiAbility_RANULF_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_SPIRIT_BURST, H_SPELL_SPIRIT_BURST));
|
||||
DoCast(m_creature, SPELL_SPIRIT_BURST);
|
||||
m_uiAbility_RANULF_Timer = 10000; // overtime
|
||||
} else m_uiAbility_RANULF_Timer -= diff;
|
||||
|
||||
|
||||
@@ -97,19 +97,19 @@ struct boss_cyanigosaAI : public ScriptedAI
|
||||
if (uiBlizzardTimer <= diff)
|
||||
{
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_BLIZZARD, H_SPELL_BLIZZARD));
|
||||
DoCast(pTarget, SPELL_BLIZZARD);
|
||||
uiBlizzardTimer = 15000;
|
||||
} else uiBlizzardTimer -= diff;
|
||||
|
||||
if (uiTailSweepTimer <= diff)
|
||||
{
|
||||
DoCast(DUNGEON_MODE(SPELL_TAIL_SWEEP, H_SPELL_TAIL_SWEEP));
|
||||
DoCast(SPELL_TAIL_SWEEP);
|
||||
uiTailSweepTimer = 20000;
|
||||
} else uiTailSweepTimer -= diff;
|
||||
|
||||
if (uiUncontrollableEnergyTimer <= diff)
|
||||
{
|
||||
DoCastVictim(DUNGEON_MODE(SPELL_UNCONTROLLABLE_ENERGY,H_SPELL_UNCONTROLLABLE_ENERGY));
|
||||
DoCastVictim(SPELL_UNCONTROLLABLE_ENERGY);
|
||||
uiUncontrollableEnergyTimer = 25000;
|
||||
} else uiUncontrollableEnergyTimer -= diff;
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ struct boss_erekemAI : public ScriptedAI
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_EARTH_SHIELD, H_SPELL_EARTH_SHIELD));
|
||||
DoCast(m_creature, SPELL_EARTH_SHIELD);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -150,7 +150,7 @@ struct boss_erekemAI : public ScriptedAI
|
||||
|
||||
if (uiEarthShieldTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_EARTH_SHIELD, H_SPELL_EARTH_SHIELD));
|
||||
DoCast(m_creature, SPELL_EARTH_SHIELD);
|
||||
uiEarthShieldTimer = 20000;
|
||||
} else uiEarthShieldTimer -= diff;
|
||||
|
||||
@@ -159,7 +159,7 @@ struct boss_erekemAI : public ScriptedAI
|
||||
if (uint64 TargetGUID = GetChainHealTargetGUID())
|
||||
{
|
||||
if (Creature *pTarget = Unit::GetCreature(*m_creature, TargetGUID))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_CHAIN_HEAL, H_SPELL_CHAIN_HEAL));
|
||||
DoCast(pTarget, SPELL_CHAIN_HEAL);
|
||||
|
||||
//If one of the adds is dead spawn heals faster
|
||||
Creature *pGuard1 = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_1) : 0);
|
||||
|
||||
@@ -206,7 +206,7 @@ struct boss_ichoronAI : public ScriptedAI
|
||||
if (!bIsFrenzy && HealthBelowPct(25) && !bIsExploded)
|
||||
{
|
||||
DoScriptText(SAY_ENRAGE, m_creature);
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_FRENZY, SPELL_FRENZY_H), true);
|
||||
DoCast(m_creature, SPELL_FRENZY, true);
|
||||
bIsFrenzy = true;
|
||||
}
|
||||
|
||||
@@ -219,7 +219,7 @@ struct boss_ichoronAI : public ScriptedAI
|
||||
if (!m_creature->HasAura(SPELL_PROTECTIVE_BUBBLE, 0))
|
||||
{
|
||||
DoScriptText(SAY_SHATTER, m_creature);
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_WATER_BLAST, SPELL_WATER_BLAST_H));
|
||||
DoCast(m_creature, SPELL_WATER_BLAST);
|
||||
DoCast(m_creature, SPELL_DRAINED);
|
||||
bIsExploded = true;
|
||||
m_creature->AttackStop();
|
||||
@@ -257,7 +257,7 @@ struct boss_ichoronAI : public ScriptedAI
|
||||
{
|
||||
if (uiWaterBoltVolleyTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_WATER_BOLT_VOLLEY, SPELL_WATER_BOLT_VOLLEY_H));
|
||||
DoCast(m_creature, SPELL_WATER_BOLT_VOLLEY);
|
||||
uiWaterBoltVolleyTimer = urand(10000, 15000);
|
||||
}
|
||||
else uiWaterBoltVolleyTimer -= uiDiff;
|
||||
|
||||
@@ -93,19 +93,19 @@ struct boss_lavanthorAI : public ScriptedAI
|
||||
|
||||
if (uiFireboltTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_FIREBOLT, H_SPELL_FIREBOLT));
|
||||
DoCast(m_creature->getVictim(), SPELL_FIREBOLT);
|
||||
uiFireboltTimer = urand(5000,13000);
|
||||
} else uiFireboltTimer -= diff;
|
||||
|
||||
if (uiFlameBreathTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_FLAME_BREATH, H_SPELL_FLAME_BREATH));
|
||||
DoCast(m_creature->getVictim(), SPELL_FLAME_BREATH);
|
||||
uiFlameBreathTimer = urand(10000,15000);
|
||||
} else uiFlameBreathTimer -= diff;
|
||||
|
||||
if (uiLavaBurnTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_LAVA_BURN, H_SPELL_LAVA_BURN));
|
||||
DoCast(m_creature->getVictim(), SPELL_LAVA_BURN);
|
||||
uiLavaBurnTimer = urand(15000,23000);
|
||||
}
|
||||
|
||||
|
||||
@@ -159,7 +159,7 @@ struct boss_xevozzAI : public ScriptedAI
|
||||
|
||||
if (uiArcaneBarrageVolley_Timer < uiDiff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_ARCANE_BARRAGE_VOLLEY, SPELL_ARCANE_BARRAGE_VOLLEY_H));
|
||||
DoCast(m_creature, SPELL_ARCANE_BARRAGE_VOLLEY);
|
||||
uiArcaneBarrageVolley_Timer = urand(20000, 22000);
|
||||
}
|
||||
else uiArcaneBarrageVolley_Timer -= uiDiff;
|
||||
@@ -167,7 +167,7 @@ struct boss_xevozzAI : public ScriptedAI
|
||||
if (uiArcaneBuffet_Timer)
|
||||
if (uiArcaneBuffet_Timer < uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_ARCANE_BUFFET, SPELL_ARCANE_BUFFET_H));
|
||||
DoCast(m_creature->getVictim(), SPELL_ARCANE_BUFFET);
|
||||
uiArcaneBuffet_Timer = 0;
|
||||
}
|
||||
else uiArcaneBuffet_Timer -= uiDiff;
|
||||
@@ -256,7 +256,7 @@ struct mob_ethereal_sphereAI : public ScriptedAI
|
||||
{
|
||||
float fDistance = m_creature->GetDistance2d(pXevozz);
|
||||
if (fDistance <= 3)
|
||||
DoCast(pXevozz, DUNGEON_MODE(SPELL_ARCANE_POWER, H_SPELL_ARCANE_POWER));
|
||||
DoCast(pXevozz, SPELL_ARCANE_POWER);
|
||||
else
|
||||
DoCast(m_creature, 35845); //Is it blizzlike?
|
||||
}
|
||||
|
||||
@@ -114,13 +114,13 @@ struct boss_zuramatAI : public ScriptedAI
|
||||
if (SpellVoidShiftTimer <= diff)
|
||||
{
|
||||
if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pUnit, DUNGEON_MODE(SPELL_VOID_SHIFT, H_SPELL_VOID_SHIFT));
|
||||
DoCast(pUnit, SPELL_VOID_SHIFT);
|
||||
SpellVoidShiftTimer = 20000;
|
||||
} else SpellVoidShiftTimer -=diff;
|
||||
|
||||
if (SpellShroudOfDarknessTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SHROUD_OF_DARKNESS, H_SPELL_SHROUD_OF_DARKNESS));
|
||||
DoCast(m_creature->getVictim(), SPELL_SHROUD_OF_DARKNESS);
|
||||
SpellShroudOfDarknessTimer = 20000;
|
||||
} else SpellShroudOfDarknessTimer -=diff;
|
||||
|
||||
@@ -157,7 +157,7 @@ struct boss_zuramatAI : public ScriptedAI
|
||||
void JustSummoned(Creature* summon)
|
||||
{
|
||||
summon->AI()->AttackStart(m_creature->getVictim());
|
||||
summon->AI()->DoCastAOE(DUNGEON_MODE(SPELL_ZURAMAT_ADD_2, H_SPELL_ZURAMAT_ADD_2));
|
||||
summon->AI()->DoCastAOE(SPELL_ZURAMAT_ADD_2);
|
||||
summon->SetPhaseMask(17,true);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -80,7 +80,7 @@ struct boss_pandemoniusAI : public ScriptedAI
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
{
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_VOID_BLAST, H_SPELL_VOID_BLAST));
|
||||
DoCast(pTarget, SPELL_VOID_BLAST);
|
||||
VoidBlast_Timer = 500;
|
||||
++VoidBlast_Counter;
|
||||
}
|
||||
@@ -101,7 +101,7 @@ struct boss_pandemoniusAI : public ScriptedAI
|
||||
|
||||
DoScriptText(EMOTE_DARK_SHELL, m_creature);
|
||||
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_DARK_SHELL, H_SPELL_DARK_SHELL));
|
||||
DoCast(m_creature, SPELL_DARK_SHELL);
|
||||
DarkShell_Timer = 20000;
|
||||
} else DarkShell_Timer -= diff;
|
||||
}
|
||||
|
||||
@@ -126,14 +126,14 @@ struct boss_talon_king_ikissAI : public ScriptedAI
|
||||
|
||||
if (Blink)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_ARCANE_EXPLOSION, H_SPELL_ARCANE_EXPLOSION));
|
||||
DoCast(m_creature, SPELL_ARCANE_EXPLOSION);
|
||||
DoCast(m_creature, SPELL_ARCANE_BUBBLE, true);
|
||||
Blink = false;
|
||||
}
|
||||
|
||||
if (ArcaneVolley_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_ARCANE_VOLLEY, H_SPELL_ARCANE_VOLLEY));
|
||||
DoCast(m_creature, SPELL_ARCANE_VOLLEY);
|
||||
ArcaneVolley_Timer = 7000+rand()%5000;
|
||||
} else ArcaneVolley_Timer -= diff;
|
||||
|
||||
@@ -148,7 +148,7 @@ struct boss_talon_king_ikissAI : public ScriptedAI
|
||||
pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO,1);
|
||||
|
||||
if (pTarget)
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_POLYMORPH, H_SPELL_POLYMORPH));
|
||||
DoCast(pTarget, SPELL_POLYMORPH);
|
||||
Sheep_Timer = 15000+rand()%2500;
|
||||
} else Sheep_Timer -= diff;
|
||||
|
||||
|
||||
@@ -274,7 +274,7 @@ struct boss_grandmaster_vorpilAI : public ScriptedAI
|
||||
m_creature->GetMap()->CreatureRelocation(m_creature, VorpilPosition[0],VorpilPosition[1],VorpilPosition[2],0.0f);
|
||||
DoCast(m_creature, SPELL_DRAW_SHADOWS, true);
|
||||
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_RAIN_OF_FIRE, H_SPELL_RAIN_OF_FIRE));
|
||||
DoCast(m_creature, SPELL_RAIN_OF_FIRE);
|
||||
|
||||
ShadowBoltVolley_Timer = 6000;
|
||||
DrawShadows_Timer = 30000;
|
||||
|
||||
@@ -152,7 +152,7 @@ struct mob_coilfang_waterelementalAI : public ScriptedAI
|
||||
|
||||
if (WaterBoltVolley_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_WATER_BOLT_VOLLEY, H_SPELL_WATER_BOLT_VOLLEY));
|
||||
DoCast(m_creature, SPELL_WATER_BOLT_VOLLEY);
|
||||
WaterBoltVolley_Timer = 7000+rand()%5000;
|
||||
} else WaterBoltVolley_Timer -= diff;
|
||||
|
||||
|
||||
@@ -223,7 +223,7 @@ struct mob_steamrigger_mechanicAI : public ScriptedAI
|
||||
//m_creature->GetMotionMaster()->MovementExpired();
|
||||
//m_creature->GetMotionMaster()->MoveIdle();
|
||||
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_REPAIR, H_SPELL_REPAIR), true);
|
||||
DoCast(m_creature, SPELL_REPAIR, true);
|
||||
}
|
||||
Repair_Timer = 5000;
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ struct boss_kelidan_the_breakerAI : public ScriptedAI
|
||||
{
|
||||
if (Firenova_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_FIRE_NOVA, H_SPELL_FIRE_NOVA), true);
|
||||
DoCast(m_creature, SPELL_FIRE_NOVA, true);
|
||||
Firenova = false;
|
||||
ShadowVolley_Timer = 2000;
|
||||
} else Firenova_Timer -=diff;
|
||||
@@ -211,7 +211,7 @@ struct boss_kelidan_the_breakerAI : public ScriptedAI
|
||||
|
||||
if (ShadowVolley_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_SHADOW_BOLT_VOLLEY, H_SPELL_SHADOW_BOLT_VOLLEY));
|
||||
DoCast(m_creature, SPELL_SHADOW_BOLT_VOLLEY);
|
||||
ShadowVolley_Timer = 5000+rand()%8000;
|
||||
} else ShadowVolley_Timer -=diff;
|
||||
|
||||
@@ -326,7 +326,7 @@ struct mob_shadowmoon_channelerAI : public ScriptedAI
|
||||
|
||||
if (ShadowBolt_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT));
|
||||
DoCast(m_creature->getVictim(), SPELL_SHADOW_BOLT);
|
||||
ShadowBolt_Timer = 5000+rand()%1000;
|
||||
} else ShadowBolt_Timer -=diff;
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ struct boss_omor_the_unscarredAI : public ScriptedAI
|
||||
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
{
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_TREACHEROUS_AURA, H_SPELL_BANE_OF_TREACHERY));
|
||||
DoCast(pTarget, SPELL_TREACHEROUS_AURA);
|
||||
Aura_Timer = 8000+rand()%8000;
|
||||
}
|
||||
} else Aura_Timer -= diff;
|
||||
@@ -180,7 +180,7 @@ struct boss_omor_the_unscarredAI : public ScriptedAI
|
||||
if (pTarget)
|
||||
pTarget = m_creature->getVictim();
|
||||
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT));
|
||||
DoCast(pTarget, SPELL_SHADOW_BOLT);
|
||||
Shadowbolt_Timer = 4000+rand()%2500;
|
||||
}
|
||||
} else Shadowbolt_Timer -= diff;
|
||||
|
||||
+1
-1
@@ -104,7 +104,7 @@ struct boss_watchkeeper_gargolmarAI : public ScriptedAI
|
||||
|
||||
if (MortalWound_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_MORTAL_WOUND, H_SPELL_MORTAL_WOUND));
|
||||
DoCast(m_creature->getVictim(), SPELL_MORTAL_WOUND);
|
||||
MortalWound_Timer = 5000+rand()%8000;
|
||||
} else MortalWound_Timer -= diff;
|
||||
|
||||
|
||||
@@ -253,7 +253,7 @@ struct boss_grand_warlock_nethekurseAI : public ScriptedAI
|
||||
|
||||
if (Cleave_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SHADOW_CLEAVE, H_SPELL_SHADOW_SLAM));
|
||||
DoCast(m_creature->getVictim(), SPELL_SHADOW_CLEAVE);
|
||||
Cleave_Timer = 6000+rand()%2500;
|
||||
} else Cleave_Timer -= diff;
|
||||
}
|
||||
|
||||
@@ -344,7 +344,7 @@ struct boss_warbringer_omroggAI : public ScriptedAI
|
||||
if (BurningMaul_Timer <= diff)
|
||||
{
|
||||
DoScriptText(EMOTE_ENRAGE, m_creature);
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_BURNING_MAUL, H_SPELL_BURNING_MAUL));
|
||||
DoCast(m_creature, SPELL_BURNING_MAUL);
|
||||
BurningMaul_Timer = 40000;
|
||||
BlastWave_Timer = 16000;
|
||||
BlastCount = 1;
|
||||
|
||||
@@ -197,9 +197,9 @@ struct boss_harbinger_skyrissAI : public ScriptedAI
|
||||
if (MindRend_Timer <= diff)
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_MIND_REND, H_SPELL_MIND_REND));
|
||||
DoCast(pTarget, SPELL_MIND_REND);
|
||||
else
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_MIND_REND, H_SPELL_MIND_REND));
|
||||
DoCast(m_creature->getVictim(), SPELL_MIND_REND);
|
||||
|
||||
MindRend_Timer = 8000;
|
||||
} else MindRend_Timer -=diff;
|
||||
@@ -227,9 +227,9 @@ struct boss_harbinger_skyrissAI : public ScriptedAI
|
||||
DoScriptText(RAND(SAY_MIND_1,SAY_MIND_2), m_creature);
|
||||
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
DoCast(pTarget, DUNGEON_MODE(SPELL_DOMINATION, H_SPELL_DOMINATION));
|
||||
DoCast(pTarget, SPELL_DOMINATION);
|
||||
else
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_DOMINATION, H_SPELL_DOMINATION));
|
||||
DoCast(m_creature->getVictim(), SPELL_DOMINATION);
|
||||
|
||||
Domination_Timer = 16000+rand()%16000;
|
||||
} else Domination_Timer -=diff;
|
||||
|
||||
@@ -85,7 +85,7 @@ struct boss_gatewatcher_iron_handAI : public ScriptedAI
|
||||
//Shadow Power
|
||||
if (Shadow_Power_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, DUNGEON_MODE(SPELL_SHADOW_POWER, H_SPELL_SHADOW_POWER));
|
||||
DoCast(m_creature, SPELL_SHADOW_POWER);
|
||||
Shadow_Power_Timer = 20000 + rand()%8000;
|
||||
} else Shadow_Power_Timer -= diff;
|
||||
|
||||
@@ -94,7 +94,7 @@ struct boss_gatewatcher_iron_handAI : public ScriptedAI
|
||||
{
|
||||
//TODO: expect cast this about 5 times in a row (?), announce it by emote only once
|
||||
DoScriptText(EMOTE_HAMMER, m_creature);
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_JACKHAMMER, H_SPELL_JACKHAMMER));
|
||||
DoCast(m_creature->getVictim(), SPELL_JACKHAMMER);
|
||||
|
||||
//chance to yell, but not same time as emote (after spell in fact casted)
|
||||
if (rand()%2)
|
||||
|
||||
@@ -74,7 +74,7 @@ struct boss_nethermancer_sepethreaAI : public ScriptedAI
|
||||
pInstance->SetData(DATA_NETHERMANCER_EVENT, IN_PROGRESS);
|
||||
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoCast(who, DUNGEON_MODE(SPELL_SUMMON_RAGIN_FLAMES, H_SPELL_SUMMON_RAGIN_FLAMES));
|
||||
DoCast(who, SPELL_SUMMON_RAGIN_FLAMES);
|
||||
DoScriptText(SAY_SUMMON, m_creature);
|
||||
}
|
||||
|
||||
@@ -210,7 +210,7 @@ struct mob_ragin_flamesAI : public ScriptedAI
|
||||
|
||||
if (inferno_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_INFERNO, H_SPELL_INFERNO));
|
||||
DoCast(m_creature->getVictim(), SPELL_INFERNO);
|
||||
m_creature->TauntApply(m_creature->getVictim());
|
||||
inferno_Timer = 10000;
|
||||
} else inferno_Timer -= diff;
|
||||
|
||||
Reference in New Issue
Block a user