aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorclick <clickvd@gonnamakeyou.com>2011-05-30 20:41:01 +0200
committerclick <clickvd@gonnamakeyou.com>2011-05-30 20:41:01 +0200
commitbef55b91eca91034c3f7c7828fe47d4fddecb110 (patch)
treeeee7a9511904e532135d61ccc9ea497593f92ac8 /src
parent8f5440b864b64236deb89f2c7a89162e917e4668 (diff)
Scripts/World: Emerald Dragon AI - summon dreamfog properly. Thanks to Kaelima, Shauren and others for assisting in finding this idiotic bug.
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/World/boss_emerald_dragons.cpp29
1 files changed, 10 insertions, 19 deletions
diff --git a/src/server/scripts/World/boss_emerald_dragons.cpp b/src/server/scripts/World/boss_emerald_dragons.cpp
index 1ab10e2dcf2..7f0f63e5cd3 100644
--- a/src/server/scripts/World/boss_emerald_dragons.cpp
+++ b/src/server/scripts/World/boss_emerald_dragons.cpp
@@ -102,8 +102,6 @@ struct emerald_dragonAI : public WorldBossAI
{
emerald_dragonAI(Creature* creature) : WorldBossAI(creature)
{
- // Emerald Dragons are immune to nature
- me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true);
}
void Reset()
@@ -174,7 +172,7 @@ struct emerald_dragonAI : public WorldBossAI
* TODO:
* - Change to random targets on random intervals(?)
* - Check if targets are selected based on threatlevel(?)
- * - Spell: Check for some disrupancies with the dreamfog triggering
+ * - Spell: Dream Fog needs a spellscript
*
*/
@@ -191,37 +189,31 @@ class npc_dream_fog : public CreatureScript
void Reset()
{
- _activeFog = false;
_roamTimer = 0;
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_NON_ATTACKABLE);
}
- void UpdateAI(const uint32 /*diff*/)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim())
return;
- if (!_activeFog)
- {
- DoCast(SPELL_DREAM_FOG);
- _activeFog = true;
- }
-
if (!_roamTimer)
{
// Chase target, but don't attack - otherwise just roam around
- Unit* target = SelectTarget(SELECT_TARGET_RANDOM);
+ Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true);
if (target)
+ {
me->GetMotionMaster()->MoveChase(target);
+ }
else
me->GetMotionMaster()->MoveIdle();
- _roamTimer = 15000;
+ _roamTimer = urand(10000, 20000);
}
- --_roamTimer;
+ else
+ _roamTimer -= diff;
}
private:
- bool _activeFog;
uint32 _roamTimer;
};
@@ -423,7 +415,7 @@ class npc_demented_druid : public CreatureScript
* TODO:
* - NPC helper for spirit shades(?)
* - Spirit shade NPC moves towards Lethon and heals him if close enough (each shade heals for 15000 HP)
- * - Spell: Shadow bolt whirl needs custom handling
+ * - Spell: Shadow bolt whirl needs custom handling (spellscript)
*
*/
@@ -628,7 +620,7 @@ class boss_emeriss : public CreatureScript
*
* TODO:
* - Fix shademode and reset-issues on evade
- * - Main functionality for this dragon is complete, need dreamfog/modelfixing
+ *
*/
enum TaerarTexts
@@ -809,7 +801,6 @@ class boss_shadeoftaerar : public CreatureScript
{
boss_shadeoftaerarAI(Creature* creature) : ScriptedAI(creature)
{
- me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true);
}
void Reset()