aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Spells
diff options
context:
space:
mode:
authorsilinoron <none@none>2010-08-22 21:07:18 -0700
committersilinoron <none@none>2010-08-22 21:07:18 -0700
commitccc2a83510c2dcdcaba1c9c1f1778b8f171e0c4c (patch)
tree655f84305ce0c670bc8d558047825660f4b11987 /src/server/scripts/Spells
parent5cbae843d58431237a270a0960a5d0c324d5cb1e (diff)
* Some consistency changes.
* Move spell 6962 to spell scripts and make sure to set deathstate. --HG-- branch : trunk
Diffstat (limited to 'src/server/scripts/Spells')
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp96
1 files changed, 80 insertions, 16 deletions
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index 1cca347003a..53333bc8470 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -24,35 +24,99 @@
#include "ScriptPCH.h"
+enum NPCEntries
+{
+ NPC_DOOMGUARD = 11859,
+ NPC_INFERNAL = 89,
+ NPC_IMP = 416,
+};
+
class spell_gen_remove_flight_auras : public SpellHandlerScript
{
- public:
- spell_gen_remove_flight_auras() : SpellHandlerScript("spell_gen_remove_flight_auras") {}
+public:
+ spell_gen_remove_flight_auras() : SpellHandlerScript("spell_gen_remove_flight_auras") {}
- class spell_gen_remove_flight_auras_SpellScript : public SpellScript
+ class spell_gen_remove_flight_auras_SpellScript : public SpellScript
+ {
+ void HandleScript(SpellEffIndex effIndex)
{
- void HandleScript(SpellEffIndex effIndex)
- {
- Unit *target = GetHitUnit();
- if (!target)
- return;
- target->RemoveAurasByType(SPELL_AURA_FLY);
- target->RemoveAurasByType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED);
- }
+ Unit *target = GetHitUnit();
+ if (!target)
+ return;
+ target->RemoveAurasByType(SPELL_AURA_FLY);
+ target->RemoveAurasByType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED);
+ }
- void Register()
+ void Register()
+ {
+ EffectHandlers += EffectHandlerFn(spell_gen_remove_flight_auras_SpellScript::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_gen_remove_flight_auras_SpellScript;
+ }
+};
+
+class spell_gen_pet_summoned : public SpellHandlerScript
+{
+public:
+ spell_gen_pet_summoned() : SpellHandlerScript("spell_gen_pet_summoned") { }
+
+ class spell_gen_pet_summonedSpellScript : public SpellScript
+ {
+ void HandleScript(SpellEffIndex effIndex)
+ {
+ Unit *caster = GetCaster();
+ if (caster->GetTypeId() != TYPEID_PLAYER)
+ return;
+
+ Player* plr = caster->ToPlayer();
+ if (plr && plr->GetLastPetNumber())
{
- EffectHandlers += EffectHandlerFn(spell_gen_remove_flight_auras_SpellScript::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
+ PetType NewPetType = (plr->getClass() == CLASS_HUNTER) ? HUNTER_PET : SUMMON_PET;
+ if (Pet* NewPet = new Pet(plr, NewPetType))
+ {
+ if (NewPet->LoadPetFromDB(plr, 0, plr->GetLastPetNumber(), true))
+ {
+ // revive the pet if it is dead
+ if (NewPet->getDeathState() == DEAD)
+ NewPet->setDeathState(ALIVE);
+
+ NewPet->SetHealth(NewPet->GetMaxHealth());
+ NewPet->SetPower(NewPet->getPowerType(),NewPet->GetMaxPower(NewPet->getPowerType()));
+
+ switch (NewPet->GetEntry())
+ {
+ case NPC_DOOMGUARD:
+ case NPC_INFERNAL:
+ NewPet->SetEntry(NPC_IMP);
+ break;
+ default:
+ break;
+ }
+ }
+ else
+ delete NewPet;
+ }
}
- };
+ }
- SpellScript* GetSpellScript() const
+ void Register()
{
- return new spell_gen_remove_flight_auras_SpellScript;
+ EffectHandlers += EffectHandlerFn(spell_gen_pet_summonedSpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_gen_pet_summonedSpellScript;
+ }
};
void AddSC_generic_spell_scripts()
{
new spell_gen_remove_flight_auras;
+ new spell_gen_pet_summoned;
}