Core/Spells: Added spells for Fire Elemental Totem and Earth Elemental Totem

This commit is contained in:
elecyb
2011-12-16 12:11:26 -03:00
parent 7e94cae867
commit eeb5a2d95e
4 changed files with 127 additions and 0 deletions
+1
View File
@@ -908,6 +908,7 @@ bool Guardian::InitStatsForLevel(uint8 petlevel)
SetCreateHealth(40*petlevel);
SetCreateMana(28 + 10*petlevel);
}
SetBonusDamage(m_owner->SpellBaseDamageBonus(SPELL_SCHOOL_MASK_FIRE) * 0.5f);
SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel * 4 - petlevel));
SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel * 4 + petlevel));
break;
+117
View File
@@ -2163,6 +2163,121 @@ public:
}
};
/*######
# npc_fire_elemental
######*/
#define SPELL_FIRENOVA 12470
#define SPELL_FIRESHIELD 13376
#define SPELL_FIREBLAST 57984
class npc_fire_elemental : public CreatureScript
{
public:
npc_fire_elemental() : CreatureScript("npc_fire_elemental") { }
struct npc_fire_elementalAI : public ScriptedAI
{
npc_fire_elementalAI(Creature* creature) : ScriptedAI(creature) {}
uint32 FireNova_Timer;
uint32 FireShield_Timer;
uint32 FireBlast_Timer;
void Reset()
{
FireNova_Timer = 5000 + rand() % 15000; // 5-20 sec cd
FireBlast_Timer = 5000 + rand() % 15000; // 5-20 sec cd
FireShield_Timer = 0;
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, true);
}
void UpdateAI(const uint32 diff)
{
if (!UpdateVictim())
return;
if (me->HasUnitState(UNIT_STAT_CASTING))
return;
if (FireShield_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_FIRESHIELD);
FireShield_Timer = 2 * IN_MILLISECONDS;
}
else
FireShield_Timer -= diff;
if (FireBlast_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_FIREBLAST);
FireBlast_Timer = 5000 + rand() % 15000; // 5-20 sec cd
}
else
FireBlast_Timer -= diff;
if (FireNova_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_FIRENOVA);
FireNova_Timer = 5000 + rand() % 15000; // 5-20 sec cd
}
else
FireNova_Timer -= diff;
DoMeleeAttackIfReady();
}
};
CreatureAI *GetAI(Creature* creature) const
{
return new npc_fire_elementalAI(creature);
}
};
/*######
# npc_earth_elemental
######*/
#define SPELL_ANGEREDEARTH 36213
class npc_earth_elemental : public CreatureScript
{
public:
npc_earth_elemental() : CreatureScript("npc_earth_elemental") { }
struct npc_earth_elementalAI : public ScriptedAI
{
npc_earth_elementalAI(Creature* creature) : ScriptedAI(creature) {}
uint32 AngeredEarth_Timer;
void Reset()
{
AngeredEarth_Timer = 0;
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true);
}
void UpdateAI(const uint32 diff)
{
if (!UpdateVictim())
return;
if (AngeredEarth_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_ANGEREDEARTH);
AngeredEarth_Timer = 5000 + rand() % 15000; // 5-20 sec cd
}
else
AngeredEarth_Timer -= diff;
DoMeleeAttackIfReady();
}
};
CreatureAI *GetAI(Creature* creature) const
{
return new npc_earth_elementalAI(creature);
}
};
/*######
# npc_wormhole
######*/
@@ -2673,5 +2788,7 @@ void AddSC_npcs_special()
new npc_locksmith;
new npc_tabard_vendor;
new npc_experience;
new npc_fire_elemental;
new npc_earth_elemental;
}