feat(Core/Commands): Add .spellinfo command with subcommands (#24867)

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
This commit is contained in:
Andrew
2026-02-26 05:49:33 -03:00
committed by GitHub
parent 450e0c0292
commit 5cf9ae11a5
3 changed files with 998 additions and 0 deletions

View File

@@ -56,6 +56,7 @@ void AddSC_reset_commandscript();
void AddSC_send_commandscript();
void AddSC_server_commandscript();
void AddSC_spectator_commandscript();
void AddSC_spellinfo_commandscript();
void AddSC_tele_commandscript();
void AddSC_ticket_commandscript();
void AddSC_titles_commandscript();
@@ -109,6 +110,7 @@ void AddCommandsScripts()
AddSC_send_commandscript();
AddSC_server_commandscript();
AddSC_spectator_commandscript();
AddSC_spellinfo_commandscript();
AddSC_tele_commandscript();
AddSC_ticket_commandscript();
AddSC_titles_commandscript();

View File

@@ -0,0 +1,988 @@
/*
* This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "Chat.h"
#include "CommandScript.h"
#include "DBCStructure.h"
#include "Language.h"
#include "SmartEnum.h"
#include "SpellAuraDefines.h"
#include "SpellInfo.h"
#include "SpellMgr.h"
using namespace Acore::ChatCommands;
class spellinfo_commandscript : public CommandScript
{
public:
spellinfo_commandscript() : CommandScript("spellinfo_commandscript") { }
ChatCommandTable GetCommands() const override
{
static ChatCommandTable spellinfoCommandTable =
{
{ "attributes", HandleSpellInfoAttributesCommand, SEC_GAMEMASTER, Console::Yes },
{ "effects", HandleSpellInfoEffectsCommand, SEC_GAMEMASTER, Console::Yes },
{ "targets", HandleSpellInfoTargetsCommand, SEC_GAMEMASTER, Console::Yes },
{ "all", HandleSpellInfoAllCommand, SEC_GAMEMASTER, Console::Yes }
};
static ChatCommandTable commandTable =
{
{ "spellinfo", spellinfoCommandTable }
};
return commandTable;
}
static char const* GetSpellEffectName(uint32 effect)
{
switch (effect)
{
case SPELL_EFFECT_INSTAKILL: return "SPELL_EFFECT_INSTAKILL";
case SPELL_EFFECT_SCHOOL_DAMAGE: return "SPELL_EFFECT_SCHOOL_DAMAGE";
case SPELL_EFFECT_DUMMY: return "SPELL_EFFECT_DUMMY";
case SPELL_EFFECT_PORTAL_TELEPORT: return "SPELL_EFFECT_PORTAL_TELEPORT";
case SPELL_EFFECT_TELEPORT_UNITS: return "SPELL_EFFECT_TELEPORT_UNITS";
case SPELL_EFFECT_APPLY_AURA: return "SPELL_EFFECT_APPLY_AURA";
case SPELL_EFFECT_ENVIRONMENTAL_DAMAGE: return "SPELL_EFFECT_ENVIRONMENTAL_DAMAGE";
case SPELL_EFFECT_POWER_DRAIN: return "SPELL_EFFECT_POWER_DRAIN";
case SPELL_EFFECT_HEALTH_LEECH: return "SPELL_EFFECT_HEALTH_LEECH";
case SPELL_EFFECT_HEAL: return "SPELL_EFFECT_HEAL";
case SPELL_EFFECT_BIND: return "SPELL_EFFECT_BIND";
case SPELL_EFFECT_PORTAL: return "SPELL_EFFECT_PORTAL";
case SPELL_EFFECT_RITUAL_BASE: return "SPELL_EFFECT_RITUAL_BASE";
case SPELL_EFFECT_RITUAL_SPECIALIZE: return "SPELL_EFFECT_RITUAL_SPECIALIZE";
case SPELL_EFFECT_RITUAL_ACTIVATE_PORTAL: return "SPELL_EFFECT_RITUAL_ACTIVATE_PORTAL";
case SPELL_EFFECT_QUEST_COMPLETE: return "SPELL_EFFECT_QUEST_COMPLETE";
case SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL: return "SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL";
case SPELL_EFFECT_RESURRECT: return "SPELL_EFFECT_RESURRECT";
case SPELL_EFFECT_ADD_EXTRA_ATTACKS: return "SPELL_EFFECT_ADD_EXTRA_ATTACKS";
case SPELL_EFFECT_DODGE: return "SPELL_EFFECT_DODGE";
case SPELL_EFFECT_EVADE: return "SPELL_EFFECT_EVADE";
case SPELL_EFFECT_PARRY: return "SPELL_EFFECT_PARRY";
case SPELL_EFFECT_BLOCK: return "SPELL_EFFECT_BLOCK";
case SPELL_EFFECT_CREATE_ITEM: return "SPELL_EFFECT_CREATE_ITEM";
case SPELL_EFFECT_WEAPON: return "SPELL_EFFECT_WEAPON";
case SPELL_EFFECT_DEFENSE: return "SPELL_EFFECT_DEFENSE";
case SPELL_EFFECT_PERSISTENT_AREA_AURA: return "SPELL_EFFECT_PERSISTENT_AREA_AURA";
case SPELL_EFFECT_SUMMON: return "SPELL_EFFECT_SUMMON";
case SPELL_EFFECT_LEAP: return "SPELL_EFFECT_LEAP";
case SPELL_EFFECT_ENERGIZE: return "SPELL_EFFECT_ENERGIZE";
case SPELL_EFFECT_WEAPON_PERCENT_DAMAGE: return "SPELL_EFFECT_WEAPON_PERCENT_DAMAGE";
case SPELL_EFFECT_TRIGGER_MISSILE: return "SPELL_EFFECT_TRIGGER_MISSILE";
case SPELL_EFFECT_OPEN_LOCK: return "SPELL_EFFECT_OPEN_LOCK";
case SPELL_EFFECT_SUMMON_CHANGE_ITEM: return "SPELL_EFFECT_SUMMON_CHANGE_ITEM";
case SPELL_EFFECT_APPLY_AREA_AURA_PARTY: return "SPELL_EFFECT_APPLY_AREA_AURA_PARTY";
case SPELL_EFFECT_LEARN_SPELL: return "SPELL_EFFECT_LEARN_SPELL";
case SPELL_EFFECT_SPELL_DEFENSE: return "SPELL_EFFECT_SPELL_DEFENSE";
case SPELL_EFFECT_DISPEL: return "SPELL_EFFECT_DISPEL";
case SPELL_EFFECT_LANGUAGE: return "SPELL_EFFECT_LANGUAGE";
case SPELL_EFFECT_DUAL_WIELD: return "SPELL_EFFECT_DUAL_WIELD";
case SPELL_EFFECT_JUMP: return "SPELL_EFFECT_JUMP";
case SPELL_EFFECT_JUMP_DEST: return "SPELL_EFFECT_JUMP_DEST";
case SPELL_EFFECT_TELEPORT_UNITS_FACE_CASTER: return "SPELL_EFFECT_TELEPORT_UNITS_FACE_CASTER";
case SPELL_EFFECT_SKILL_STEP: return "SPELL_EFFECT_SKILL_STEP";
case SPELL_EFFECT_ADD_HONOR: return "SPELL_EFFECT_ADD_HONOR";
case SPELL_EFFECT_SPAWN: return "SPELL_EFFECT_SPAWN";
case SPELL_EFFECT_TRADE_SKILL: return "SPELL_EFFECT_TRADE_SKILL";
case SPELL_EFFECT_STEALTH: return "SPELL_EFFECT_STEALTH";
case SPELL_EFFECT_DETECT: return "SPELL_EFFECT_DETECT";
case SPELL_EFFECT_TRANS_DOOR: return "SPELL_EFFECT_TRANS_DOOR";
case SPELL_EFFECT_FORCE_CRITICAL_HIT: return "SPELL_EFFECT_FORCE_CRITICAL_HIT";
case SPELL_EFFECT_GUARANTEE_HIT: return "SPELL_EFFECT_GUARANTEE_HIT";
case SPELL_EFFECT_ENCHANT_ITEM: return "SPELL_EFFECT_ENCHANT_ITEM";
case SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY: return "SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY";
case SPELL_EFFECT_TAMECREATURE: return "SPELL_EFFECT_TAMECREATURE";
case SPELL_EFFECT_SUMMON_PET: return "SPELL_EFFECT_SUMMON_PET";
case SPELL_EFFECT_LEARN_PET_SPELL: return "SPELL_EFFECT_LEARN_PET_SPELL";
case SPELL_EFFECT_WEAPON_DAMAGE: return "SPELL_EFFECT_WEAPON_DAMAGE";
case SPELL_EFFECT_CREATE_RANDOM_ITEM: return "SPELL_EFFECT_CREATE_RANDOM_ITEM";
case SPELL_EFFECT_PROFICIENCY: return "SPELL_EFFECT_PROFICIENCY";
case SPELL_EFFECT_SEND_EVENT: return "SPELL_EFFECT_SEND_EVENT";
case SPELL_EFFECT_POWER_BURN: return "SPELL_EFFECT_POWER_BURN";
case SPELL_EFFECT_THREAT: return "SPELL_EFFECT_THREAT";
case SPELL_EFFECT_TRIGGER_SPELL: return "SPELL_EFFECT_TRIGGER_SPELL";
case SPELL_EFFECT_APPLY_AREA_AURA_RAID: return "SPELL_EFFECT_APPLY_AREA_AURA_RAID";
case SPELL_EFFECT_CREATE_MANA_GEM: return "SPELL_EFFECT_CREATE_MANA_GEM";
case SPELL_EFFECT_HEAL_MAX_HEALTH: return "SPELL_EFFECT_HEAL_MAX_HEALTH";
case SPELL_EFFECT_INTERRUPT_CAST: return "SPELL_EFFECT_INTERRUPT_CAST";
case SPELL_EFFECT_DISTRACT: return "SPELL_EFFECT_DISTRACT";
case SPELL_EFFECT_PULL: return "SPELL_EFFECT_PULL";
case SPELL_EFFECT_PICKPOCKET: return "SPELL_EFFECT_PICKPOCKET";
case SPELL_EFFECT_ADD_FARSIGHT: return "SPELL_EFFECT_ADD_FARSIGHT";
case SPELL_EFFECT_UNTRAIN_TALENTS: return "SPELL_EFFECT_UNTRAIN_TALENTS";
case SPELL_EFFECT_APPLY_GLYPH: return "SPELL_EFFECT_APPLY_GLYPH";
case SPELL_EFFECT_HEAL_MECHANICAL: return "SPELL_EFFECT_HEAL_MECHANICAL";
case SPELL_EFFECT_SUMMON_OBJECT_WILD: return "SPELL_EFFECT_SUMMON_OBJECT_WILD";
case SPELL_EFFECT_SCRIPT_EFFECT: return "SPELL_EFFECT_SCRIPT_EFFECT";
case SPELL_EFFECT_ATTACK: return "SPELL_EFFECT_ATTACK";
case SPELL_EFFECT_SANCTUARY: return "SPELL_EFFECT_SANCTUARY";
case SPELL_EFFECT_ADD_COMBO_POINTS: return "SPELL_EFFECT_ADD_COMBO_POINTS";
case SPELL_EFFECT_CREATE_HOUSE: return "SPELL_EFFECT_CREATE_HOUSE";
case SPELL_EFFECT_BIND_SIGHT: return "SPELL_EFFECT_BIND_SIGHT";
case SPELL_EFFECT_DUEL: return "SPELL_EFFECT_DUEL";
case SPELL_EFFECT_STUCK: return "SPELL_EFFECT_STUCK";
case SPELL_EFFECT_SUMMON_PLAYER: return "SPELL_EFFECT_SUMMON_PLAYER";
case SPELL_EFFECT_ACTIVATE_OBJECT: return "SPELL_EFFECT_ACTIVATE_OBJECT";
case SPELL_EFFECT_GAMEOBJECT_DAMAGE: return "SPELL_EFFECT_GAMEOBJECT_DAMAGE";
case SPELL_EFFECT_GAMEOBJECT_REPAIR: return "SPELL_EFFECT_GAMEOBJECT_REPAIR";
case SPELL_EFFECT_GAMEOBJECT_SET_DESTRUCTION_STATE: return "SPELL_EFFECT_GAMEOBJECT_SET_DESTRUCTION_STATE";
case SPELL_EFFECT_KILL_CREDIT: return "SPELL_EFFECT_KILL_CREDIT";
case SPELL_EFFECT_THREAT_ALL: return "SPELL_EFFECT_THREAT_ALL";
case SPELL_EFFECT_ENCHANT_HELD_ITEM: return "SPELL_EFFECT_ENCHANT_HELD_ITEM";
case SPELL_EFFECT_FORCE_DESELECT: return "SPELL_EFFECT_FORCE_DESELECT";
case SPELL_EFFECT_SELF_RESURRECT: return "SPELL_EFFECT_SELF_RESURRECT";
case SPELL_EFFECT_SKINNING: return "SPELL_EFFECT_SKINNING";
case SPELL_EFFECT_CHARGE: return "SPELL_EFFECT_CHARGE";
case SPELL_EFFECT_CAST_BUTTON: return "SPELL_EFFECT_CAST_BUTTON";
case SPELL_EFFECT_KNOCK_BACK: return "SPELL_EFFECT_KNOCK_BACK";
case SPELL_EFFECT_DISENCHANT: return "SPELL_EFFECT_DISENCHANT";
case SPELL_EFFECT_INEBRIATE: return "SPELL_EFFECT_INEBRIATE";
case SPELL_EFFECT_FEED_PET: return "SPELL_EFFECT_FEED_PET";
case SPELL_EFFECT_DISMISS_PET: return "SPELL_EFFECT_DISMISS_PET";
case SPELL_EFFECT_REPUTATION: return "SPELL_EFFECT_REPUTATION";
case SPELL_EFFECT_SUMMON_OBJECT_SLOT1: return "SPELL_EFFECT_SUMMON_OBJECT_SLOT1";
case SPELL_EFFECT_SUMMON_OBJECT_SLOT2: return "SPELL_EFFECT_SUMMON_OBJECT_SLOT2";
case SPELL_EFFECT_SUMMON_OBJECT_SLOT3: return "SPELL_EFFECT_SUMMON_OBJECT_SLOT3";
case SPELL_EFFECT_SUMMON_OBJECT_SLOT4: return "SPELL_EFFECT_SUMMON_OBJECT_SLOT4";
case SPELL_EFFECT_DISPEL_MECHANIC: return "SPELL_EFFECT_DISPEL_MECHANIC";
case SPELL_EFFECT_RESURRECT_PET: return "SPELL_EFFECT_RESURRECT_PET";
case SPELL_EFFECT_DESTROY_ALL_TOTEMS: return "SPELL_EFFECT_DESTROY_ALL_TOTEMS";
case SPELL_EFFECT_DURABILITY_DAMAGE: return "SPELL_EFFECT_DURABILITY_DAMAGE";
case SPELL_EFFECT_112: return "SPELL_EFFECT_112";
case SPELL_EFFECT_RESURRECT_NEW: return "SPELL_EFFECT_RESURRECT_NEW";
case SPELL_EFFECT_ATTACK_ME: return "SPELL_EFFECT_ATTACK_ME";
case SPELL_EFFECT_DURABILITY_DAMAGE_PCT: return "SPELL_EFFECT_DURABILITY_DAMAGE_PCT";
case SPELL_EFFECT_SKIN_PLAYER_CORPSE: return "SPELL_EFFECT_SKIN_PLAYER_CORPSE";
case SPELL_EFFECT_SPIRIT_HEAL: return "SPELL_EFFECT_SPIRIT_HEAL";
case SPELL_EFFECT_SKILL: return "SPELL_EFFECT_SKILL";
case SPELL_EFFECT_APPLY_AREA_AURA_PET: return "SPELL_EFFECT_APPLY_AREA_AURA_PET";
case SPELL_EFFECT_TELEPORT_GRAVEYARD: return "SPELL_EFFECT_TELEPORT_GRAVEYARD";
case SPELL_EFFECT_NORMALIZED_WEAPON_DMG: return "SPELL_EFFECT_NORMALIZED_WEAPON_DMG";
case SPELL_EFFECT_122: return "SPELL_EFFECT_122";
case SPELL_EFFECT_SEND_TAXI: return "SPELL_EFFECT_SEND_TAXI";
case SPELL_EFFECT_PULL_TOWARDS: return "SPELL_EFFECT_PULL_TOWARDS";
case SPELL_EFFECT_MODIFY_THREAT_PERCENT: return "SPELL_EFFECT_MODIFY_THREAT_PERCENT";
case SPELL_EFFECT_STEAL_BENEFICIAL_BUFF: return "SPELL_EFFECT_STEAL_BENEFICIAL_BUFF";
case SPELL_EFFECT_PROSPECTING: return "SPELL_EFFECT_PROSPECTING";
case SPELL_EFFECT_APPLY_AREA_AURA_FRIEND: return "SPELL_EFFECT_APPLY_AREA_AURA_FRIEND";
case SPELL_EFFECT_APPLY_AREA_AURA_ENEMY: return "SPELL_EFFECT_APPLY_AREA_AURA_ENEMY";
case SPELL_EFFECT_REDIRECT_THREAT: return "SPELL_EFFECT_REDIRECT_THREAT";
case SPELL_EFFECT_PLAY_SOUND: return "SPELL_EFFECT_PLAY_SOUND";
case SPELL_EFFECT_PLAY_MUSIC: return "SPELL_EFFECT_PLAY_MUSIC";
case SPELL_EFFECT_UNLEARN_SPECIALIZATION: return "SPELL_EFFECT_UNLEARN_SPECIALIZATION";
case SPELL_EFFECT_KILL_CREDIT2: return "SPELL_EFFECT_KILL_CREDIT2";
case SPELL_EFFECT_CALL_PET: return "SPELL_EFFECT_CALL_PET";
case SPELL_EFFECT_HEAL_PCT: return "SPELL_EFFECT_HEAL_PCT";
case SPELL_EFFECT_ENERGIZE_PCT: return "SPELL_EFFECT_ENERGIZE_PCT";
case SPELL_EFFECT_LEAP_BACK: return "SPELL_EFFECT_LEAP_BACK";
case SPELL_EFFECT_CLEAR_QUEST: return "SPELL_EFFECT_CLEAR_QUEST";
case SPELL_EFFECT_FORCE_CAST: return "SPELL_EFFECT_FORCE_CAST";
case SPELL_EFFECT_FORCE_CAST_WITH_VALUE: return "SPELL_EFFECT_FORCE_CAST_WITH_VALUE";
case SPELL_EFFECT_TRIGGER_SPELL_WITH_VALUE: return "SPELL_EFFECT_TRIGGER_SPELL_WITH_VALUE";
case SPELL_EFFECT_APPLY_AREA_AURA_OWNER: return "SPELL_EFFECT_APPLY_AREA_AURA_OWNER";
case SPELL_EFFECT_KNOCK_BACK_DEST: return "SPELL_EFFECT_KNOCK_BACK_DEST";
case SPELL_EFFECT_PULL_TOWARDS_DEST: return "SPELL_EFFECT_PULL_TOWARDS_DEST";
case SPELL_EFFECT_ACTIVATE_RUNE: return "SPELL_EFFECT_ACTIVATE_RUNE";
case SPELL_EFFECT_QUEST_FAIL: return "SPELL_EFFECT_QUEST_FAIL";
case SPELL_EFFECT_TRIGGER_MISSILE_SPELL_WITH_VALUE: return "SPELL_EFFECT_TRIGGER_MISSILE_SPELL_WITH_VALUE";
case SPELL_EFFECT_CHARGE_DEST: return "SPELL_EFFECT_CHARGE_DEST";
case SPELL_EFFECT_QUEST_START: return "SPELL_EFFECT_QUEST_START";
case SPELL_EFFECT_TRIGGER_SPELL_2: return "SPELL_EFFECT_TRIGGER_SPELL_2";
case SPELL_EFFECT_SUMMON_RAF_FRIEND: return "SPELL_EFFECT_SUMMON_RAF_FRIEND";
case SPELL_EFFECT_CREATE_TAMED_PET: return "SPELL_EFFECT_CREATE_TAMED_PET";
case SPELL_EFFECT_DISCOVER_TAXI: return "SPELL_EFFECT_DISCOVER_TAXI";
case SPELL_EFFECT_TITAN_GRIP: return "SPELL_EFFECT_TITAN_GRIP";
case SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC: return "SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC";
case SPELL_EFFECT_CREATE_ITEM_2: return "SPELL_EFFECT_CREATE_ITEM_2";
case SPELL_EFFECT_MILLING: return "SPELL_EFFECT_MILLING";
case SPELL_EFFECT_ALLOW_RENAME_PET: return "SPELL_EFFECT_ALLOW_RENAME_PET";
case SPELL_EFFECT_FORCE_CAST_2: return "SPELL_EFFECT_FORCE_CAST_2";
case SPELL_EFFECT_TALENT_SPEC_COUNT: return "SPELL_EFFECT_TALENT_SPEC_COUNT";
case SPELL_EFFECT_TALENT_SPEC_SELECT: return "SPELL_EFFECT_TALENT_SPEC_SELECT";
case SPELL_EFFECT_163: return "SPELL_EFFECT_163";
case SPELL_EFFECT_REMOVE_AURA: return "SPELL_EFFECT_REMOVE_AURA";
default: return "UNKNOWN_EFFECT";
}
}
static char const* GetAuraTypeName(uint32 aura)
{
switch (aura)
{
case SPELL_AURA_NONE: return "SPELL_AURA_NONE";
case SPELL_AURA_BIND_SIGHT: return "SPELL_AURA_BIND_SIGHT";
case SPELL_AURA_MOD_POSSESS: return "SPELL_AURA_MOD_POSSESS";
case SPELL_AURA_PERIODIC_DAMAGE: return "SPELL_AURA_PERIODIC_DAMAGE";
case SPELL_AURA_DUMMY: return "SPELL_AURA_DUMMY";
case SPELL_AURA_MOD_CONFUSE: return "SPELL_AURA_MOD_CONFUSE";
case SPELL_AURA_MOD_CHARM: return "SPELL_AURA_MOD_CHARM";
case SPELL_AURA_MOD_FEAR: return "SPELL_AURA_MOD_FEAR";
case SPELL_AURA_PERIODIC_HEAL: return "SPELL_AURA_PERIODIC_HEAL";
case SPELL_AURA_MOD_ATTACKSPEED: return "SPELL_AURA_MOD_ATTACKSPEED";
case SPELL_AURA_MOD_THREAT: return "SPELL_AURA_MOD_THREAT";
case SPELL_AURA_MOD_TAUNT: return "SPELL_AURA_MOD_TAUNT";
case SPELL_AURA_MOD_STUN: return "SPELL_AURA_MOD_STUN";
case SPELL_AURA_MOD_DAMAGE_DONE: return "SPELL_AURA_MOD_DAMAGE_DONE";
case SPELL_AURA_MOD_DAMAGE_TAKEN: return "SPELL_AURA_MOD_DAMAGE_TAKEN";
case SPELL_AURA_DAMAGE_SHIELD: return "SPELL_AURA_DAMAGE_SHIELD";
case SPELL_AURA_MOD_STEALTH: return "SPELL_AURA_MOD_STEALTH";
case SPELL_AURA_MOD_STEALTH_DETECT: return "SPELL_AURA_MOD_STEALTH_DETECT";
case SPELL_AURA_MOD_INVISIBILITY: return "SPELL_AURA_MOD_INVISIBILITY";
case SPELL_AURA_MOD_INVISIBILITY_DETECT: return "SPELL_AURA_MOD_INVISIBILITY_DETECT";
case SPELL_AURA_OBS_MOD_HEALTH: return "SPELL_AURA_OBS_MOD_HEALTH";
case SPELL_AURA_OBS_MOD_POWER: return "SPELL_AURA_OBS_MOD_POWER";
case SPELL_AURA_MOD_RESISTANCE: return "SPELL_AURA_MOD_RESISTANCE";
case SPELL_AURA_PERIODIC_TRIGGER_SPELL: return "SPELL_AURA_PERIODIC_TRIGGER_SPELL";
case SPELL_AURA_PERIODIC_ENERGIZE: return "SPELL_AURA_PERIODIC_ENERGIZE";
case SPELL_AURA_MOD_PACIFY: return "SPELL_AURA_MOD_PACIFY";
case SPELL_AURA_MOD_ROOT: return "SPELL_AURA_MOD_ROOT";
case SPELL_AURA_MOD_SILENCE: return "SPELL_AURA_MOD_SILENCE";
case SPELL_AURA_REFLECT_SPELLS: return "SPELL_AURA_REFLECT_SPELLS";
case SPELL_AURA_MOD_STAT: return "SPELL_AURA_MOD_STAT";
case SPELL_AURA_MOD_SKILL: return "SPELL_AURA_MOD_SKILL";
case SPELL_AURA_MOD_INCREASE_SPEED: return "SPELL_AURA_MOD_INCREASE_SPEED";
case SPELL_AURA_MOD_INCREASE_MOUNTED_SPEED: return "SPELL_AURA_MOD_INCREASE_MOUNTED_SPEED";
case SPELL_AURA_MOD_DECREASE_SPEED: return "SPELL_AURA_MOD_DECREASE_SPEED";
case SPELL_AURA_MOD_INCREASE_HEALTH: return "SPELL_AURA_MOD_INCREASE_HEALTH";
case SPELL_AURA_MOD_INCREASE_ENERGY: return "SPELL_AURA_MOD_INCREASE_ENERGY";
case SPELL_AURA_MOD_SHAPESHIFT: return "SPELL_AURA_MOD_SHAPESHIFT";
case SPELL_AURA_EFFECT_IMMUNITY: return "SPELL_AURA_EFFECT_IMMUNITY";
case SPELL_AURA_STATE_IMMUNITY: return "SPELL_AURA_STATE_IMMUNITY";
case SPELL_AURA_SCHOOL_IMMUNITY: return "SPELL_AURA_SCHOOL_IMMUNITY";
case SPELL_AURA_DAMAGE_IMMUNITY: return "SPELL_AURA_DAMAGE_IMMUNITY";
case SPELL_AURA_DISPEL_IMMUNITY: return "SPELL_AURA_DISPEL_IMMUNITY";
case SPELL_AURA_PROC_TRIGGER_SPELL: return "SPELL_AURA_PROC_TRIGGER_SPELL";
case SPELL_AURA_PROC_TRIGGER_DAMAGE: return "SPELL_AURA_PROC_TRIGGER_DAMAGE";
case SPELL_AURA_TRACK_CREATURES: return "SPELL_AURA_TRACK_CREATURES";
case SPELL_AURA_TRACK_RESOURCES: return "SPELL_AURA_TRACK_RESOURCES";
case SPELL_AURA_46: return "SPELL_AURA_46";
case SPELL_AURA_MOD_PARRY_PERCENT: return "SPELL_AURA_MOD_PARRY_PERCENT";
case SPELL_AURA_PERIODIC_TRIGGER_SPELL_FROM_CLIENT: return "SPELL_AURA_PERIODIC_TRIGGER_SPELL_FROM_CLIENT";
case SPELL_AURA_MOD_DODGE_PERCENT: return "SPELL_AURA_MOD_DODGE_PERCENT";
case SPELL_AURA_MOD_CRITICAL_HEALING_AMOUNT: return "SPELL_AURA_MOD_CRITICAL_HEALING_AMOUNT";
case SPELL_AURA_MOD_BLOCK_PERCENT: return "SPELL_AURA_MOD_BLOCK_PERCENT";
case SPELL_AURA_MOD_WEAPON_CRIT_PERCENT: return "SPELL_AURA_MOD_WEAPON_CRIT_PERCENT";
case SPELL_AURA_PERIODIC_LEECH: return "SPELL_AURA_PERIODIC_LEECH";
case SPELL_AURA_MOD_HIT_CHANCE: return "SPELL_AURA_MOD_HIT_CHANCE";
case SPELL_AURA_MOD_SPELL_HIT_CHANCE: return "SPELL_AURA_MOD_SPELL_HIT_CHANCE";
case SPELL_AURA_TRANSFORM: return "SPELL_AURA_TRANSFORM";
case SPELL_AURA_MOD_SPELL_CRIT_CHANCE: return "SPELL_AURA_MOD_SPELL_CRIT_CHANCE";
case SPELL_AURA_MOD_INCREASE_SWIM_SPEED: return "SPELL_AURA_MOD_INCREASE_SWIM_SPEED";
case SPELL_AURA_MOD_DAMAGE_DONE_CREATURE: return "SPELL_AURA_MOD_DAMAGE_DONE_CREATURE";
case SPELL_AURA_MOD_PACIFY_SILENCE: return "SPELL_AURA_MOD_PACIFY_SILENCE";
case SPELL_AURA_MOD_SCALE: return "SPELL_AURA_MOD_SCALE";
case SPELL_AURA_PERIODIC_HEALTH_FUNNEL: return "SPELL_AURA_PERIODIC_HEALTH_FUNNEL";
case SPELL_AURA_63: return "SPELL_AURA_63";
case SPELL_AURA_PERIODIC_MANA_LEECH: return "SPELL_AURA_PERIODIC_MANA_LEECH";
case SPELL_AURA_MOD_CASTING_SPEED_NOT_STACK: return "SPELL_AURA_MOD_CASTING_SPEED_NOT_STACK";
case SPELL_AURA_FEIGN_DEATH: return "SPELL_AURA_FEIGN_DEATH";
case SPELL_AURA_MOD_DISARM: return "SPELL_AURA_MOD_DISARM";
case SPELL_AURA_MOD_STALKED: return "SPELL_AURA_MOD_STALKED";
case SPELL_AURA_SCHOOL_ABSORB: return "SPELL_AURA_SCHOOL_ABSORB";
case SPELL_AURA_EXTRA_ATTACKS: return "SPELL_AURA_EXTRA_ATTACKS";
case SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL: return "SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL";
case SPELL_AURA_MOD_POWER_COST_SCHOOL_PCT: return "SPELL_AURA_MOD_POWER_COST_SCHOOL_PCT";
case SPELL_AURA_MOD_POWER_COST_SCHOOL: return "SPELL_AURA_MOD_POWER_COST_SCHOOL";
case SPELL_AURA_REFLECT_SPELLS_SCHOOL: return "SPELL_AURA_REFLECT_SPELLS_SCHOOL";
case SPELL_AURA_MOD_LANGUAGE: return "SPELL_AURA_MOD_LANGUAGE";
case SPELL_AURA_FAR_SIGHT: return "SPELL_AURA_FAR_SIGHT";
case SPELL_AURA_MECHANIC_IMMUNITY: return "SPELL_AURA_MECHANIC_IMMUNITY";
case SPELL_AURA_MOUNTED: return "SPELL_AURA_MOUNTED";
case SPELL_AURA_MOD_DAMAGE_PERCENT_DONE: return "SPELL_AURA_MOD_DAMAGE_PERCENT_DONE";
case SPELL_AURA_MOD_PERCENT_STAT: return "SPELL_AURA_MOD_PERCENT_STAT";
case SPELL_AURA_SPLIT_DAMAGE_PCT: return "SPELL_AURA_SPLIT_DAMAGE_PCT";
case SPELL_AURA_WATER_BREATHING: return "SPELL_AURA_WATER_BREATHING";
case SPELL_AURA_MOD_BASE_RESISTANCE: return "SPELL_AURA_MOD_BASE_RESISTANCE";
case SPELL_AURA_MOD_REGEN: return "SPELL_AURA_MOD_REGEN";
case SPELL_AURA_MOD_POWER_REGEN: return "SPELL_AURA_MOD_POWER_REGEN";
case SPELL_AURA_CHANNEL_DEATH_ITEM: return "SPELL_AURA_CHANNEL_DEATH_ITEM";
case SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN: return "SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN";
case SPELL_AURA_MOD_HEALTH_REGEN_PERCENT: return "SPELL_AURA_MOD_HEALTH_REGEN_PERCENT";
case SPELL_AURA_PERIODIC_DAMAGE_PERCENT: return "SPELL_AURA_PERIODIC_DAMAGE_PERCENT";
case SPELL_AURA_90: return "SPELL_AURA_90";
case SPELL_AURA_MOD_DETECT_RANGE: return "SPELL_AURA_MOD_DETECT_RANGE";
case SPELL_AURA_PREVENTS_FLEEING: return "SPELL_AURA_PREVENTS_FLEEING";
case SPELL_AURA_MOD_UNATTACKABLE: return "SPELL_AURA_MOD_UNATTACKABLE";
case SPELL_AURA_INTERRUPT_REGEN: return "SPELL_AURA_INTERRUPT_REGEN";
case SPELL_AURA_GHOST: return "SPELL_AURA_GHOST";
case SPELL_AURA_SPELL_MAGNET: return "SPELL_AURA_SPELL_MAGNET";
case SPELL_AURA_MANA_SHIELD: return "SPELL_AURA_MANA_SHIELD";
case SPELL_AURA_MOD_SKILL_TALENT: return "SPELL_AURA_MOD_SKILL_TALENT";
case SPELL_AURA_MOD_ATTACK_POWER: return "SPELL_AURA_MOD_ATTACK_POWER";
case SPELL_AURA_AURAS_VISIBLE: return "SPELL_AURA_AURAS_VISIBLE";
case SPELL_AURA_MOD_RESISTANCE_PCT: return "SPELL_AURA_MOD_RESISTANCE_PCT";
case SPELL_AURA_MOD_MELEE_ATTACK_POWER_VERSUS: return "SPELL_AURA_MOD_MELEE_ATTACK_POWER_VERSUS";
case SPELL_AURA_MOD_TOTAL_THREAT: return "SPELL_AURA_MOD_TOTAL_THREAT";
case SPELL_AURA_WATER_WALK: return "SPELL_AURA_WATER_WALK";
case SPELL_AURA_FEATHER_FALL: return "SPELL_AURA_FEATHER_FALL";
case SPELL_AURA_HOVER: return "SPELL_AURA_HOVER";
case SPELL_AURA_ADD_FLAT_MODIFIER: return "SPELL_AURA_ADD_FLAT_MODIFIER";
case SPELL_AURA_ADD_PCT_MODIFIER: return "SPELL_AURA_ADD_PCT_MODIFIER";
case SPELL_AURA_ADD_TARGET_TRIGGER: return "SPELL_AURA_ADD_TARGET_TRIGGER";
case SPELL_AURA_MOD_POWER_REGEN_PERCENT: return "SPELL_AURA_MOD_POWER_REGEN_PERCENT";
case SPELL_AURA_ADD_CASTER_HIT_TRIGGER: return "SPELL_AURA_ADD_CASTER_HIT_TRIGGER";
case SPELL_AURA_OVERRIDE_CLASS_SCRIPTS: return "SPELL_AURA_OVERRIDE_CLASS_SCRIPTS";
case SPELL_AURA_MOD_RANGED_DAMAGE_TAKEN: return "SPELL_AURA_MOD_RANGED_DAMAGE_TAKEN";
case SPELL_AURA_MOD_RANGED_DAMAGE_TAKEN_PCT: return "SPELL_AURA_MOD_RANGED_DAMAGE_TAKEN_PCT";
case SPELL_AURA_MOD_HEALING: return "SPELL_AURA_MOD_HEALING";
case SPELL_AURA_MOD_REGEN_DURING_COMBAT: return "SPELL_AURA_MOD_REGEN_DURING_COMBAT";
case SPELL_AURA_MOD_MECHANIC_RESISTANCE: return "SPELL_AURA_MOD_MECHANIC_RESISTANCE";
case SPELL_AURA_MOD_HEALING_PCT: return "SPELL_AURA_MOD_HEALING_PCT";
case SPELL_AURA_119: return "SPELL_AURA_119";
case SPELL_AURA_UNTRACKABLE: return "SPELL_AURA_UNTRACKABLE";
case SPELL_AURA_EMPATHY: return "SPELL_AURA_EMPATHY";
case SPELL_AURA_MOD_OFFHAND_DAMAGE_PCT: return "SPELL_AURA_MOD_OFFHAND_DAMAGE_PCT";
case SPELL_AURA_MOD_TARGET_RESISTANCE: return "SPELL_AURA_MOD_TARGET_RESISTANCE";
case SPELL_AURA_MOD_RANGED_ATTACK_POWER: return "SPELL_AURA_MOD_RANGED_ATTACK_POWER";
case SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN: return "SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN";
case SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN_PCT: return "SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN_PCT";
case SPELL_AURA_RANGED_ATTACK_POWER_ATTACKER_BONUS: return "SPELL_AURA_RANGED_ATTACK_POWER_ATTACKER_BONUS";
case SPELL_AURA_MOD_POSSESS_PET: return "SPELL_AURA_MOD_POSSESS_PET";
case SPELL_AURA_MOD_SPEED_ALWAYS: return "SPELL_AURA_MOD_SPEED_ALWAYS";
case SPELL_AURA_MOD_MOUNTED_SPEED_ALWAYS: return "SPELL_AURA_MOD_MOUNTED_SPEED_ALWAYS";
case SPELL_AURA_MOD_RANGED_ATTACK_POWER_VERSUS: return "SPELL_AURA_MOD_RANGED_ATTACK_POWER_VERSUS";
case SPELL_AURA_MOD_INCREASE_ENERGY_PERCENT: return "SPELL_AURA_MOD_INCREASE_ENERGY_PERCENT";
case SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT: return "SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT";
case SPELL_AURA_MOD_MANA_REGEN_INTERRUPT: return "SPELL_AURA_MOD_MANA_REGEN_INTERRUPT";
case SPELL_AURA_MOD_HEALING_DONE: return "SPELL_AURA_MOD_HEALING_DONE";
case SPELL_AURA_MOD_HEALING_DONE_PERCENT: return "SPELL_AURA_MOD_HEALING_DONE_PERCENT";
case SPELL_AURA_MOD_TOTAL_STAT_PERCENTAGE: return "SPELL_AURA_MOD_TOTAL_STAT_PERCENTAGE";
case SPELL_AURA_MOD_MELEE_HASTE: return "SPELL_AURA_MOD_MELEE_HASTE";
case SPELL_AURA_FORCE_REACTION: return "SPELL_AURA_FORCE_REACTION";
case SPELL_AURA_MOD_RANGED_HASTE: return "SPELL_AURA_MOD_RANGED_HASTE";
case SPELL_AURA_MOD_RANGED_AMMO_HASTE: return "SPELL_AURA_MOD_RANGED_AMMO_HASTE";
case SPELL_AURA_MOD_BASE_RESISTANCE_PCT: return "SPELL_AURA_MOD_BASE_RESISTANCE_PCT";
case SPELL_AURA_MOD_RESISTANCE_EXCLUSIVE: return "SPELL_AURA_MOD_RESISTANCE_EXCLUSIVE";
case SPELL_AURA_SAFE_FALL: return "SPELL_AURA_SAFE_FALL";
case SPELL_AURA_MOD_PET_TALENT_POINTS: return "SPELL_AURA_MOD_PET_TALENT_POINTS";
case SPELL_AURA_ALLOW_TAME_PET_TYPE: return "SPELL_AURA_ALLOW_TAME_PET_TYPE";
case SPELL_AURA_MECHANIC_IMMUNITY_MASK: return "SPELL_AURA_MECHANIC_IMMUNITY_MASK";
case SPELL_AURA_RETAIN_COMBO_POINTS: return "SPELL_AURA_RETAIN_COMBO_POINTS";
case SPELL_AURA_REDUCE_PUSHBACK: return "SPELL_AURA_REDUCE_PUSHBACK";
case SPELL_AURA_MOD_SHIELD_BLOCKVALUE_PCT: return "SPELL_AURA_MOD_SHIELD_BLOCKVALUE_PCT";
case SPELL_AURA_TRACK_STEALTHED: return "SPELL_AURA_TRACK_STEALTHED";
case SPELL_AURA_MOD_DETECTED_RANGE: return "SPELL_AURA_MOD_DETECTED_RANGE";
case SPELL_AURA_SPLIT_DAMAGE_FLAT: return "SPELL_AURA_SPLIT_DAMAGE_FLAT";
case SPELL_AURA_MOD_STEALTH_LEVEL: return "SPELL_AURA_MOD_STEALTH_LEVEL";
case SPELL_AURA_MOD_WATER_BREATHING: return "SPELL_AURA_MOD_WATER_BREATHING";
case SPELL_AURA_MOD_REPUTATION_GAIN: return "SPELL_AURA_MOD_REPUTATION_GAIN";
case SPELL_AURA_PET_DAMAGE_MULTI: return "SPELL_AURA_PET_DAMAGE_MULTI";
case SPELL_AURA_MOD_SHIELD_BLOCKVALUE: return "SPELL_AURA_MOD_SHIELD_BLOCKVALUE";
case SPELL_AURA_NO_PVP_CREDIT: return "SPELL_AURA_NO_PVP_CREDIT";
case SPELL_AURA_MOD_AOE_AVOIDANCE: return "SPELL_AURA_MOD_AOE_AVOIDANCE";
case SPELL_AURA_MOD_HEALTH_REGEN_IN_COMBAT: return "SPELL_AURA_MOD_HEALTH_REGEN_IN_COMBAT";
case SPELL_AURA_POWER_BURN: return "SPELL_AURA_POWER_BURN";
case SPELL_AURA_MOD_CRIT_DAMAGE_BONUS: return "SPELL_AURA_MOD_CRIT_DAMAGE_BONUS";
case SPELL_AURA_164: return "SPELL_AURA_164";
case SPELL_AURA_MELEE_ATTACK_POWER_ATTACKER_BONUS: return "SPELL_AURA_MELEE_ATTACK_POWER_ATTACKER_BONUS";
case SPELL_AURA_MOD_ATTACK_POWER_PCT: return "SPELL_AURA_MOD_ATTACK_POWER_PCT";
case SPELL_AURA_MOD_RANGED_ATTACK_POWER_PCT: return "SPELL_AURA_MOD_RANGED_ATTACK_POWER_PCT";
case SPELL_AURA_MOD_DAMAGE_DONE_VERSUS: return "SPELL_AURA_MOD_DAMAGE_DONE_VERSUS";
case SPELL_AURA_MOD_CRIT_PERCENT_VERSUS: return "SPELL_AURA_MOD_CRIT_PERCENT_VERSUS";
case SPELL_AURA_DETECT_AMORE: return "SPELL_AURA_DETECT_AMORE";
case SPELL_AURA_MOD_SPEED_NOT_STACK: return "SPELL_AURA_MOD_SPEED_NOT_STACK";
case SPELL_AURA_MOD_MOUNTED_SPEED_NOT_STACK: return "SPELL_AURA_MOD_MOUNTED_SPEED_NOT_STACK";
case SPELL_AURA_173: return "SPELL_AURA_173";
case SPELL_AURA_MOD_SPELL_DAMAGE_OF_STAT_PERCENT: return "SPELL_AURA_MOD_SPELL_DAMAGE_OF_STAT_PERCENT";
case SPELL_AURA_MOD_SPELL_HEALING_OF_STAT_PERCENT: return "SPELL_AURA_MOD_SPELL_HEALING_OF_STAT_PERCENT";
case SPELL_AURA_SPIRIT_OF_REDEMPTION: return "SPELL_AURA_SPIRIT_OF_REDEMPTION";
case SPELL_AURA_AOE_CHARM: return "SPELL_AURA_AOE_CHARM";
case SPELL_AURA_MOD_DEBUFF_RESISTANCE: return "SPELL_AURA_MOD_DEBUFF_RESISTANCE";
case SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE: return "SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE";
case SPELL_AURA_MOD_FLAT_SPELL_DAMAGE_VERSUS: return "SPELL_AURA_MOD_FLAT_SPELL_DAMAGE_VERSUS";
case SPELL_AURA_181: return "SPELL_AURA_181";
case SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT: return "SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT";
case SPELL_AURA_MOD_CRITICAL_THREAT: return "SPELL_AURA_MOD_CRITICAL_THREAT";
case SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE: return "SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE";
case SPELL_AURA_MOD_ATTACKER_RANGED_HIT_CHANCE: return "SPELL_AURA_MOD_ATTACKER_RANGED_HIT_CHANCE";
case SPELL_AURA_MOD_ATTACKER_SPELL_HIT_CHANCE: return "SPELL_AURA_MOD_ATTACKER_SPELL_HIT_CHANCE";
case SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_CHANCE: return "SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_CHANCE";
case SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_CHANCE: return "SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_CHANCE";
case SPELL_AURA_MOD_RATING: return "SPELL_AURA_MOD_RATING";
case SPELL_AURA_MOD_FACTION_REPUTATION_GAIN: return "SPELL_AURA_MOD_FACTION_REPUTATION_GAIN";
case SPELL_AURA_USE_NORMAL_MOVEMENT_SPEED: return "SPELL_AURA_USE_NORMAL_MOVEMENT_SPEED";
case SPELL_AURA_MOD_MELEE_RANGED_HASTE: return "SPELL_AURA_MOD_MELEE_RANGED_HASTE";
case SPELL_AURA_MELEE_SLOW: return "SPELL_AURA_MELEE_SLOW";
case SPELL_AURA_MOD_TARGET_ABSORB_SCHOOL: return "SPELL_AURA_MOD_TARGET_ABSORB_SCHOOL";
case SPELL_AURA_MOD_TARGET_ABILITY_ABSORB_SCHOOL: return "SPELL_AURA_MOD_TARGET_ABILITY_ABSORB_SCHOOL";
case SPELL_AURA_MOD_COOLDOWN: return "SPELL_AURA_MOD_COOLDOWN";
case SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE: return "SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE";
case SPELL_AURA_198: return "SPELL_AURA_198";
case SPELL_AURA_MOD_INCREASES_SPELL_PCT_TO_HIT: return "SPELL_AURA_MOD_INCREASES_SPELL_PCT_TO_HIT";
case SPELL_AURA_MOD_XP_PCT: return "SPELL_AURA_MOD_XP_PCT";
case SPELL_AURA_FLY: return "SPELL_AURA_FLY";
case SPELL_AURA_IGNORE_COMBAT_RESULT: return "SPELL_AURA_IGNORE_COMBAT_RESULT";
case SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE: return "SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE";
case SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE: return "SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE";
case SPELL_AURA_MOD_SCHOOL_CRIT_DMG_TAKEN: return "SPELL_AURA_MOD_SCHOOL_CRIT_DMG_TAKEN";
case SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED: return "SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED";
case SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED: return "SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED";
case SPELL_AURA_MOD_FLIGHT_SPEED_ALWAYS: return "SPELL_AURA_MOD_FLIGHT_SPEED_ALWAYS";
case SPELL_AURA_MOD_MOUNTED_FLIGHT_SPEED_ALWAYS: return "SPELL_AURA_MOD_MOUNTED_FLIGHT_SPEED_ALWAYS";
case SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACKING: return "SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACKING";
case SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED_NOT_STACKING: return "SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED_NOT_STACKING";
case SPELL_AURA_MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT: return "SPELL_AURA_MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT";
case SPELL_AURA_MOD_RAGE_FROM_DAMAGE_DEALT: return "SPELL_AURA_MOD_RAGE_FROM_DAMAGE_DEALT";
case SPELL_AURA_214: return "SPELL_AURA_214";
case SPELL_AURA_ARENA_PREPARATION: return "SPELL_AURA_ARENA_PREPARATION";
case SPELL_AURA_HASTE_SPELLS: return "SPELL_AURA_HASTE_SPELLS";
case SPELL_AURA_MOD_MELEE_HASTE_2: return "SPELL_AURA_MOD_MELEE_HASTE_2";
case SPELL_AURA_HASTE_RANGED: return "SPELL_AURA_HASTE_RANGED";
case SPELL_AURA_MOD_MANA_REGEN_FROM_STAT: return "SPELL_AURA_MOD_MANA_REGEN_FROM_STAT";
case SPELL_AURA_MOD_RATING_FROM_STAT: return "SPELL_AURA_MOD_RATING_FROM_STAT";
case SPELL_AURA_IGNORED: return "SPELL_AURA_IGNORED";
case SPELL_AURA_222: return "SPELL_AURA_222";
case SPELL_AURA_RAID_PROC_FROM_CHARGE: return "SPELL_AURA_RAID_PROC_FROM_CHARGE";
case SPELL_AURA_224: return "SPELL_AURA_224";
case SPELL_AURA_RAID_PROC_FROM_CHARGE_WITH_VALUE: return "SPELL_AURA_RAID_PROC_FROM_CHARGE_WITH_VALUE";
case SPELL_AURA_PERIODIC_DUMMY: return "SPELL_AURA_PERIODIC_DUMMY";
case SPELL_AURA_PERIODIC_TRIGGER_SPELL_WITH_VALUE: return "SPELL_AURA_PERIODIC_TRIGGER_SPELL_WITH_VALUE";
case SPELL_AURA_DETECT_STEALTH: return "SPELL_AURA_DETECT_STEALTH";
case SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE: return "SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE";
case SPELL_AURA_230: return "SPELL_AURA_230";
case SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE: return "SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE";
case SPELL_AURA_MECHANIC_DURATION_MOD: return "SPELL_AURA_MECHANIC_DURATION_MOD";
case SPELL_AURA_CHANGE_MODEL_FOR_ALL_HUMANOIDS: return "SPELL_AURA_CHANGE_MODEL_FOR_ALL_HUMANOIDS";
case SPELL_AURA_MECHANIC_DURATION_MOD_NOT_STACK: return "SPELL_AURA_MECHANIC_DURATION_MOD_NOT_STACK";
case SPELL_AURA_MOD_DISPEL_RESIST: return "SPELL_AURA_MOD_DISPEL_RESIST";
case SPELL_AURA_CONTROL_VEHICLE: return "SPELL_AURA_CONTROL_VEHICLE";
case SPELL_AURA_MOD_SPELL_DAMAGE_OF_ATTACK_POWER: return "SPELL_AURA_MOD_SPELL_DAMAGE_OF_ATTACK_POWER";
case SPELL_AURA_MOD_SPELL_HEALING_OF_ATTACK_POWER: return "SPELL_AURA_MOD_SPELL_HEALING_OF_ATTACK_POWER";
case SPELL_AURA_MOD_SCALE_2: return "SPELL_AURA_MOD_SCALE_2";
case SPELL_AURA_MOD_EXPERTISE: return "SPELL_AURA_MOD_EXPERTISE";
case SPELL_AURA_FORCE_MOVE_FORWARD: return "SPELL_AURA_FORCE_MOVE_FORWARD";
case SPELL_AURA_MOD_SPELL_DAMAGE_FROM_HEALING: return "SPELL_AURA_MOD_SPELL_DAMAGE_FROM_HEALING";
case SPELL_AURA_MOD_FACTION: return "SPELL_AURA_MOD_FACTION";
case SPELL_AURA_COMPREHEND_LANGUAGE: return "SPELL_AURA_COMPREHEND_LANGUAGE";
case SPELL_AURA_MOD_AURA_DURATION_BY_DISPEL: return "SPELL_AURA_MOD_AURA_DURATION_BY_DISPEL";
case SPELL_AURA_MOD_AURA_DURATION_BY_DISPEL_NOT_STACK: return "SPELL_AURA_MOD_AURA_DURATION_BY_DISPEL_NOT_STACK";
case SPELL_AURA_CLONE_CASTER: return "SPELL_AURA_CLONE_CASTER";
case SPELL_AURA_MOD_COMBAT_RESULT_CHANCE: return "SPELL_AURA_MOD_COMBAT_RESULT_CHANCE";
case SPELL_AURA_CONVERT_RUNE: return "SPELL_AURA_CONVERT_RUNE";
case SPELL_AURA_MOD_INCREASE_HEALTH_2: return "SPELL_AURA_MOD_INCREASE_HEALTH_2";
case SPELL_AURA_MOD_ENEMY_DODGE: return "SPELL_AURA_MOD_ENEMY_DODGE";
case SPELL_AURA_MOD_SPEED_SLOW_ALL: return "SPELL_AURA_MOD_SPEED_SLOW_ALL";
case SPELL_AURA_MOD_BLOCK_CRIT_CHANCE: return "SPELL_AURA_MOD_BLOCK_CRIT_CHANCE";
case SPELL_AURA_MOD_DISARM_OFFHAND: return "SPELL_AURA_MOD_DISARM_OFFHAND";
case SPELL_AURA_MOD_MECHANIC_DAMAGE_TAKEN_PERCENT: return "SPELL_AURA_MOD_MECHANIC_DAMAGE_TAKEN_PERCENT";
case SPELL_AURA_NO_REAGENT_USE: return "SPELL_AURA_NO_REAGENT_USE";
case SPELL_AURA_MOD_TARGET_RESIST_BY_SPELL_CLASS: return "SPELL_AURA_MOD_TARGET_RESIST_BY_SPELL_CLASS";
case SPELL_AURA_258: return "SPELL_AURA_258";
case SPELL_AURA_MOD_HOT_PCT: return "SPELL_AURA_MOD_HOT_PCT";
case SPELL_AURA_SCREEN_EFFECT: return "SPELL_AURA_SCREEN_EFFECT";
case SPELL_AURA_PHASE: return "SPELL_AURA_PHASE";
case SPELL_AURA_ABILITY_IGNORE_AURASTATE: return "SPELL_AURA_ABILITY_IGNORE_AURASTATE";
case SPELL_AURA_ALLOW_ONLY_ABILITY: return "SPELL_AURA_ALLOW_ONLY_ABILITY";
case SPELL_AURA_264: return "SPELL_AURA_264";
case SPELL_AURA_265: return "SPELL_AURA_265";
case SPELL_AURA_266: return "SPELL_AURA_266";
case SPELL_AURA_MOD_IMMUNE_AURA_APPLY_SCHOOL: return "SPELL_AURA_MOD_IMMUNE_AURA_APPLY_SCHOOL";
case SPELL_AURA_MOD_ATTACK_POWER_OF_STAT_PERCENT: return "SPELL_AURA_MOD_ATTACK_POWER_OF_STAT_PERCENT";
case SPELL_AURA_MOD_IGNORE_TARGET_RESIST: return "SPELL_AURA_MOD_IGNORE_TARGET_RESIST";
case SPELL_AURA_MOD_ABILITY_IGNORE_TARGET_RESIST: return "SPELL_AURA_MOD_ABILITY_IGNORE_TARGET_RESIST";
case SPELL_AURA_MOD_DAMAGE_FROM_CASTER: return "SPELL_AURA_MOD_DAMAGE_FROM_CASTER";
case SPELL_AURA_IGNORE_MELEE_RESET: return "SPELL_AURA_IGNORE_MELEE_RESET";
case SPELL_AURA_X_RAY: return "SPELL_AURA_X_RAY";
case SPELL_AURA_ABILITY_CONSUME_NO_AMMO: return "SPELL_AURA_ABILITY_CONSUME_NO_AMMO";
case SPELL_AURA_MOD_IGNORE_SHAPESHIFT: return "SPELL_AURA_MOD_IGNORE_SHAPESHIFT";
case SPELL_AURA_MOD_DAMAGE_DONE_FOR_MECHANIC: return "SPELL_AURA_MOD_DAMAGE_DONE_FOR_MECHANIC";
case SPELL_AURA_MOD_MAX_AFFECTED_TARGETS: return "SPELL_AURA_MOD_MAX_AFFECTED_TARGETS";
case SPELL_AURA_MOD_DISARM_RANGED: return "SPELL_AURA_MOD_DISARM_RANGED";
case SPELL_AURA_INITIALIZE_IMAGES: return "SPELL_AURA_INITIALIZE_IMAGES";
case SPELL_AURA_MOD_ARMOR_PENETRATION_PCT: return "SPELL_AURA_MOD_ARMOR_PENETRATION_PCT";
case SPELL_AURA_MOD_HONOR_GAIN_PCT: return "SPELL_AURA_MOD_HONOR_GAIN_PCT";
case SPELL_AURA_MOD_BASE_HEALTH_PCT: return "SPELL_AURA_MOD_BASE_HEALTH_PCT";
case SPELL_AURA_MOD_HEALING_RECEIVED: return "SPELL_AURA_MOD_HEALING_RECEIVED";
case SPELL_AURA_LINKED: return "SPELL_AURA_LINKED";
case SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR: return "SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR";
case SPELL_AURA_ABILITY_PERIODIC_CRIT: return "SPELL_AURA_ABILITY_PERIODIC_CRIT";
case SPELL_AURA_DEFLECT_SPELLS: return "SPELL_AURA_DEFLECT_SPELLS";
case SPELL_AURA_IGNORE_HIT_DIRECTION: return "SPELL_AURA_IGNORE_HIT_DIRECTION";
case SPELL_AURA_PREVENT_DURABILITY_LOSS: return "SPELL_AURA_PREVENT_DURABILITY_LOSS";
case SPELL_AURA_MOD_CRIT_PCT: return "SPELL_AURA_MOD_CRIT_PCT";
case SPELL_AURA_MOD_XP_QUEST_PCT: return "SPELL_AURA_MOD_XP_QUEST_PCT";
case SPELL_AURA_OPEN_STABLE: return "SPELL_AURA_OPEN_STABLE";
case SPELL_AURA_OVERRIDE_SPELLS: return "SPELL_AURA_OVERRIDE_SPELLS";
case SPELL_AURA_PREVENT_REGENERATE_POWER: return "SPELL_AURA_PREVENT_REGENERATE_POWER";
case SPELL_AURA_295: return "SPELL_AURA_295";
case SPELL_AURA_SET_VEHICLE_ID: return "SPELL_AURA_SET_VEHICLE_ID";
case SPELL_AURA_BLOCK_SPELL_FAMILY: return "SPELL_AURA_BLOCK_SPELL_FAMILY";
case SPELL_AURA_STRANGULATE: return "SPELL_AURA_STRANGULATE";
case SPELL_AURA_299: return "SPELL_AURA_299";
case SPELL_AURA_SHARE_DAMAGE_PCT: return "SPELL_AURA_SHARE_DAMAGE_PCT";
case SPELL_AURA_SCHOOL_HEAL_ABSORB: return "SPELL_AURA_SCHOOL_HEAL_ABSORB";
case SPELL_AURA_302: return "SPELL_AURA_302";
case SPELL_AURA_MOD_DAMAGE_DONE_VERSUS_AURASTATE: return "SPELL_AURA_MOD_DAMAGE_DONE_VERSUS_AURASTATE";
case SPELL_AURA_MOD_FAKE_INEBRIATE: return "SPELL_AURA_MOD_FAKE_INEBRIATE";
case SPELL_AURA_MOD_MINIMUM_SPEED: return "SPELL_AURA_MOD_MINIMUM_SPEED";
case SPELL_AURA_306: return "SPELL_AURA_306";
case SPELL_AURA_HEAL_ABSORB_TEST: return "SPELL_AURA_HEAL_ABSORB_TEST";
case SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER: return "SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER";
case SPELL_AURA_309: return "SPELL_AURA_309";
case SPELL_AURA_MOD_CREATURE_AOE_DAMAGE_AVOIDANCE: return "SPELL_AURA_MOD_CREATURE_AOE_DAMAGE_AVOIDANCE";
case SPELL_AURA_311: return "SPELL_AURA_311";
case SPELL_AURA_312: return "SPELL_AURA_312";
case SPELL_AURA_313: return "SPELL_AURA_313";
case SPELL_AURA_PREVENT_RESURRECTION: return "SPELL_AURA_PREVENT_RESURRECTION";
case SPELL_AURA_UNDERWATER_WALKING: return "SPELL_AURA_UNDERWATER_WALKING";
case SPELL_AURA_PERIODIC_HASTE: return "SPELL_AURA_PERIODIC_HASTE";
default: return "UNKNOWN_AURA";
}
}
static char const* GetTargetName(uint32 target)
{
switch (target)
{
case TARGET_UNIT_CASTER: return "TARGET_UNIT_CASTER";
case TARGET_UNIT_NEARBY_ENEMY: return "TARGET_UNIT_NEARBY_ENEMY";
case TARGET_UNIT_NEARBY_ALLY: return "TARGET_UNIT_NEARBY_ALLY";
case TARGET_UNIT_NEARBY_PARTY: return "TARGET_UNIT_NEARBY_PARTY";
case TARGET_UNIT_PET: return "TARGET_UNIT_PET";
case TARGET_UNIT_TARGET_ENEMY: return "TARGET_UNIT_TARGET_ENEMY";
case TARGET_UNIT_SRC_AREA_ENTRY: return "TARGET_UNIT_SRC_AREA_ENTRY";
case TARGET_UNIT_DEST_AREA_ENTRY: return "TARGET_UNIT_DEST_AREA_ENTRY";
case TARGET_DEST_HOME: return "TARGET_DEST_HOME";
case TARGET_UNIT_SRC_AREA_UNK_11: return "TARGET_UNIT_SRC_AREA_UNK_11";
case TARGET_UNIT_SRC_AREA_ENEMY: return "TARGET_UNIT_SRC_AREA_ENEMY";
case TARGET_UNIT_DEST_AREA_ENEMY: return "TARGET_UNIT_DEST_AREA_ENEMY";
case TARGET_DEST_DB: return "TARGET_DEST_DB";
case TARGET_DEST_CASTER: return "TARGET_DEST_CASTER";
case TARGET_UNIT_CASTER_AREA_PARTY: return "TARGET_UNIT_CASTER_AREA_PARTY";
case TARGET_UNIT_TARGET_ALLY: return "TARGET_UNIT_TARGET_ALLY";
case TARGET_SRC_CASTER: return "TARGET_SRC_CASTER";
case TARGET_GAMEOBJECT_TARGET: return "TARGET_GAMEOBJECT_TARGET";
case TARGET_UNIT_CONE_ENEMY_24: return "TARGET_UNIT_CONE_ENEMY_24";
case TARGET_UNIT_TARGET_ANY: return "TARGET_UNIT_TARGET_ANY";
case TARGET_GAMEOBJECT_ITEM_TARGET: return "TARGET_GAMEOBJECT_ITEM_TARGET";
case TARGET_UNIT_MASTER: return "TARGET_UNIT_MASTER";
case TARGET_DEST_DYNOBJ_ENEMY: return "TARGET_DEST_DYNOBJ_ENEMY";
case TARGET_DEST_DYNOBJ_ALLY: return "TARGET_DEST_DYNOBJ_ALLY";
case TARGET_UNIT_SRC_AREA_ALLY: return "TARGET_UNIT_SRC_AREA_ALLY";
case TARGET_UNIT_DEST_AREA_ALLY: return "TARGET_UNIT_DEST_AREA_ALLY";
case TARGET_DEST_CASTER_SUMMON: return "TARGET_DEST_CASTER_SUMMON";
case TARGET_UNIT_SRC_AREA_PARTY: return "TARGET_UNIT_SRC_AREA_PARTY";
case TARGET_UNIT_DEST_AREA_PARTY: return "TARGET_UNIT_DEST_AREA_PARTY";
case TARGET_UNIT_TARGET_PARTY: return "TARGET_UNIT_TARGET_PARTY";
case TARGET_DEST_CASTER_36: return "TARGET_DEST_CASTER_36";
case TARGET_UNIT_LASTTARGET_AREA_PARTY: return "TARGET_UNIT_LASTTARGET_AREA_PARTY";
case TARGET_UNIT_NEARBY_ENTRY: return "TARGET_UNIT_NEARBY_ENTRY";
case TARGET_DEST_CASTER_FISHING: return "TARGET_DEST_CASTER_FISHING";
case TARGET_GAMEOBJECT_NEARBY_ENTRY: return "TARGET_GAMEOBJECT_NEARBY_ENTRY";
case TARGET_DEST_CASTER_FRONT_RIGHT: return "TARGET_DEST_CASTER_FRONT_RIGHT";
case TARGET_DEST_CASTER_BACK_RIGHT: return "TARGET_DEST_CASTER_BACK_RIGHT";
case TARGET_DEST_CASTER_BACK_LEFT: return "TARGET_DEST_CASTER_BACK_LEFT";
case TARGET_DEST_CASTER_FRONT_LEFT: return "TARGET_DEST_CASTER_FRONT_LEFT";
case TARGET_UNIT_TARGET_CHAINHEAL_ALLY: return "TARGET_UNIT_TARGET_CHAINHEAL_ALLY";
case TARGET_DEST_NEARBY_ENTRY: return "TARGET_DEST_NEARBY_ENTRY";
case TARGET_DEST_CASTER_FRONT: return "TARGET_DEST_CASTER_FRONT";
case TARGET_DEST_CASTER_BACK: return "TARGET_DEST_CASTER_BACK";
case TARGET_DEST_CASTER_RIGHT: return "TARGET_DEST_CASTER_RIGHT";
case TARGET_DEST_CASTER_LEFT: return "TARGET_DEST_CASTER_LEFT";
case TARGET_GAMEOBJECT_SRC_AREA: return "TARGET_GAMEOBJECT_SRC_AREA";
case TARGET_GAMEOBJECT_DEST_AREA: return "TARGET_GAMEOBJECT_DEST_AREA";
case TARGET_DEST_TARGET_ENEMY: return "TARGET_DEST_TARGET_ENEMY";
case TARGET_UNIT_CONE_ENEMY_54: return "TARGET_UNIT_CONE_ENEMY_54";
case TARGET_DEST_CASTER_FRONT_LEAP: return "TARGET_DEST_CASTER_FRONT_LEAP";
case TARGET_UNIT_CASTER_AREA_RAID: return "TARGET_UNIT_CASTER_AREA_RAID";
case TARGET_UNIT_TARGET_RAID: return "TARGET_UNIT_TARGET_RAID";
case TARGET_UNIT_NEARBY_RAID: return "TARGET_UNIT_NEARBY_RAID";
case TARGET_UNIT_CONE_ALLY: return "TARGET_UNIT_CONE_ALLY";
case TARGET_UNIT_CONE_ENTRY: return "TARGET_UNIT_CONE_ENTRY";
case TARGET_UNIT_TARGET_AREA_RAID_CLASS: return "TARGET_UNIT_TARGET_AREA_RAID_CLASS";
case TARGET_UNK_62: return "TARGET_UNK_62";
case TARGET_DEST_TARGET_ANY: return "TARGET_DEST_TARGET_ANY";
case TARGET_DEST_TARGET_FRONT: return "TARGET_DEST_TARGET_FRONT";
case TARGET_DEST_TARGET_BACK: return "TARGET_DEST_TARGET_BACK";
case TARGET_DEST_TARGET_RIGHT: return "TARGET_DEST_TARGET_RIGHT";
case TARGET_DEST_TARGET_LEFT: return "TARGET_DEST_TARGET_LEFT";
case TARGET_DEST_TARGET_FRONT_RIGHT: return "TARGET_DEST_TARGET_FRONT_RIGHT";
case TARGET_DEST_TARGET_BACK_RIGHT: return "TARGET_DEST_TARGET_BACK_RIGHT";
case TARGET_DEST_TARGET_BACK_LEFT: return "TARGET_DEST_TARGET_BACK_LEFT";
case TARGET_DEST_TARGET_FRONT_LEFT: return "TARGET_DEST_TARGET_FRONT_LEFT";
case TARGET_DEST_CASTER_RANDOM: return "TARGET_DEST_CASTER_RANDOM";
case TARGET_DEST_CASTER_RADIUS: return "TARGET_DEST_CASTER_RADIUS";
case TARGET_DEST_TARGET_RANDOM: return "TARGET_DEST_TARGET_RANDOM";
case TARGET_DEST_TARGET_RADIUS: return "TARGET_DEST_TARGET_RADIUS";
case TARGET_DEST_CHANNEL_TARGET: return "TARGET_DEST_CHANNEL_TARGET";
case TARGET_UNIT_CHANNEL_TARGET: return "TARGET_UNIT_CHANNEL_TARGET";
case TARGET_DEST_DEST_FRONT: return "TARGET_DEST_DEST_FRONT";
case TARGET_DEST_DEST_BACK: return "TARGET_DEST_DEST_BACK";
case TARGET_DEST_DEST_RIGHT: return "TARGET_DEST_DEST_RIGHT";
case TARGET_DEST_DEST_LEFT: return "TARGET_DEST_DEST_LEFT";
case TARGET_DEST_DEST_FRONT_RIGHT: return "TARGET_DEST_DEST_FRONT_RIGHT";
case TARGET_DEST_DEST_BACK_RIGHT: return "TARGET_DEST_DEST_BACK_RIGHT";
case TARGET_DEST_DEST_BACK_LEFT: return "TARGET_DEST_DEST_BACK_LEFT";
case TARGET_DEST_DEST_FRONT_LEFT: return "TARGET_DEST_DEST_FRONT_LEFT";
case TARGET_DEST_DEST_RANDOM: return "TARGET_DEST_DEST_RANDOM";
case TARGET_DEST_DEST: return "TARGET_DEST_DEST";
case TARGET_DEST_DYNOBJ_NONE: return "TARGET_DEST_DYNOBJ_NONE";
case TARGET_DEST_TRAJ: return "TARGET_DEST_TRAJ";
case TARGET_UNIT_TARGET_MINIPET: return "TARGET_UNIT_TARGET_MINIPET";
case TARGET_DEST_DEST_RADIUS: return "TARGET_DEST_DEST_RADIUS";
case TARGET_UNIT_SUMMONER: return "TARGET_UNIT_SUMMONER";
case TARGET_CORPSE_SRC_AREA_ENEMY: return "TARGET_CORPSE_SRC_AREA_ENEMY";
case TARGET_UNIT_VEHICLE: return "TARGET_UNIT_VEHICLE";
case TARGET_UNIT_TARGET_PASSENGER: return "TARGET_UNIT_TARGET_PASSENGER";
case TARGET_UNIT_PASSENGER_0: return "TARGET_UNIT_PASSENGER_0";
case TARGET_UNIT_PASSENGER_1: return "TARGET_UNIT_PASSENGER_1";
case TARGET_UNIT_PASSENGER_2: return "TARGET_UNIT_PASSENGER_2";
case TARGET_UNIT_PASSENGER_3: return "TARGET_UNIT_PASSENGER_3";
case TARGET_UNIT_PASSENGER_4: return "TARGET_UNIT_PASSENGER_4";
case TARGET_UNIT_PASSENGER_5: return "TARGET_UNIT_PASSENGER_5";
case TARGET_UNIT_PASSENGER_6: return "TARGET_UNIT_PASSENGER_6";
case TARGET_UNIT_PASSENGER_7: return "TARGET_UNIT_PASSENGER_7";
case TARGET_UNIT_CONE_ENEMY_104: return "TARGET_UNIT_CONE_ENEMY_104";
case TARGET_UNIT_UNK_105: return "TARGET_UNIT_UNK_105";
case TARGET_DEST_CHANNEL_CASTER: return "TARGET_DEST_CHANNEL_CASTER";
case TARGET_UNK_DEST_AREA_UNK_107: return "TARGET_UNK_DEST_AREA_UNK_107";
case TARGET_GAMEOBJECT_CONE: return "TARGET_GAMEOBJECT_CONE";
case TARGET_DEST_UNK_110: return "TARGET_DEST_UNK_110";
default: return "TARGET_NONE";
}
}
static char const* GetDispelName(uint32 dispel)
{
switch (dispel)
{
case DISPEL_NONE: return "DISPEL_NONE";
case DISPEL_MAGIC: return "DISPEL_MAGIC";
case DISPEL_CURSE: return "DISPEL_CURSE";
case DISPEL_DISEASE: return "DISPEL_DISEASE";
case DISPEL_POISON: return "DISPEL_POISON";
case DISPEL_STEALTH: return "DISPEL_STEALTH";
case DISPEL_INVISIBILITY: return "DISPEL_INVISIBILITY";
case DISPEL_ALL: return "DISPEL_ALL";
case DISPEL_SPE_NPC_ONLY: return "DISPEL_SPE_NPC_ONLY";
case DISPEL_ENRAGE: return "DISPEL_ENRAGE";
case DISPEL_ZG_TICKET: return "DISPEL_ZG_TICKET";
case DESPEL_OLD_UNUSED: return "DESPEL_OLD_UNUSED";
default: return "UNKNOWN_DISPEL";
}
}
static char const* GetPowerName(uint32 power)
{
switch (power)
{
case POWER_MANA: return "POWER_MANA";
case POWER_RAGE: return "POWER_RAGE";
case POWER_FOCUS: return "POWER_FOCUS";
case POWER_ENERGY: return "POWER_ENERGY";
case POWER_HAPPINESS: return "POWER_HAPPINESS";
case POWER_RUNE: return "POWER_RUNE";
case POWER_RUNIC_POWER: return "POWER_RUNIC_POWER";
case POWER_HEALTH: return "POWER_HEALTH";
default: return "UNKNOWN_POWER";
}
}
static char const* GetDmgClassName(uint32 dmgClass)
{
switch (dmgClass)
{
case SPELL_DAMAGE_CLASS_NONE: return "SPELL_DAMAGE_CLASS_NONE";
case SPELL_DAMAGE_CLASS_MAGIC: return "SPELL_DAMAGE_CLASS_MAGIC";
case SPELL_DAMAGE_CLASS_MELEE: return "SPELL_DAMAGE_CLASS_MELEE";
case SPELL_DAMAGE_CLASS_RANGED: return "SPELL_DAMAGE_CLASS_RANGED";
default: return "UNKNOWN_DMG_CLASS";
}
}
static char const* GetPreventionTypeName(uint32 type)
{
switch (type)
{
case SPELL_PREVENTION_TYPE_NONE: return "SPELL_PREVENTION_TYPE_NONE";
case SPELL_PREVENTION_TYPE_SILENCE: return "SPELL_PREVENTION_TYPE_SILENCE";
case SPELL_PREVENTION_TYPE_PACIFY: return "SPELL_PREVENTION_TYPE_PACIFY";
default: return "UNKNOWN_PREVENTION_TYPE";
}
}
static char const* GetSpellFamilyName(uint32 family)
{
switch (family)
{
case SPELLFAMILY_GENERIC: return "SPELLFAMILY_GENERIC";
case SPELLFAMILY_UNK1: return "SPELLFAMILY_UNK1";
case SPELLFAMILY_MAGE: return "SPELLFAMILY_MAGE";
case SPELLFAMILY_WARRIOR: return "SPELLFAMILY_WARRIOR";
case SPELLFAMILY_WARLOCK: return "SPELLFAMILY_WARLOCK";
case SPELLFAMILY_PRIEST: return "SPELLFAMILY_PRIEST";
case SPELLFAMILY_DRUID: return "SPELLFAMILY_DRUID";
case SPELLFAMILY_ROGUE: return "SPELLFAMILY_ROGUE";
case SPELLFAMILY_HUNTER: return "SPELLFAMILY_HUNTER";
case SPELLFAMILY_PALADIN: return "SPELLFAMILY_PALADIN";
case SPELLFAMILY_SHAMAN: return "SPELLFAMILY_SHAMAN";
case SPELLFAMILY_UNK2: return "SPELLFAMILY_UNK2";
case SPELLFAMILY_POTION: return "SPELLFAMILY_POTION";
case SPELLFAMILY_DEATHKNIGHT: return "SPELLFAMILY_DEATHKNIGHT";
case SPELLFAMILY_PET: return "SPELLFAMILY_PET";
default: return "UNKNOWN_FAMILY";
}
}
template <typename EnumType>
static void PrintSpellAttrFlags(ChatHandler* handler, char const* label, uint32 flags)
{
handler->PSendSysMessage("{}: 0x{:08X}", label, flags);
for (auto attr : EnumUtils::Iterate<EnumType>())
if (flags & static_cast<uint32>(attr))
handler->PSendSysMessage(" - {}", EnumUtils::ToConstant(attr));
}
static void PrintBasicInfo(ChatHandler* handler, SpellInfo const* spell)
{
int locale = handler->GetSessionDbcLocale();
handler->PSendSysMessage("ID: {}", spell->Id);
handler->PSendSysMessage("Name: {}", spell->SpellName[locale]);
if (spell->Rank[locale] && spell->Rank[locale][0] != '\0')
handler->PSendSysMessage("Rank: {}", spell->Rank[locale]);
handler->PSendSysMessage("Dispel: {} ({})", spell->Dispel, GetDispelName(spell->Dispel));
handler->PSendSysMessage("Mechanic: {} ({})", spell->Mechanic, EnumUtils::ToConstant(static_cast<Mechanics>(spell->Mechanic)));
}
static void PrintAttributes(ChatHandler* handler, SpellInfo const* spell)
{
PrintSpellAttrFlags<SpellAttr0>(handler, "Attributes", spell->Attributes);
PrintSpellAttrFlags<SpellAttr1>(handler, "AttributesEx", spell->AttributesEx);
PrintSpellAttrFlags<SpellAttr2>(handler, "AttributesEx2", spell->AttributesEx2);
PrintSpellAttrFlags<SpellAttr3>(handler, "AttributesEx3", spell->AttributesEx3);
PrintSpellAttrFlags<SpellAttr4>(handler, "AttributesEx4", spell->AttributesEx4);
PrintSpellAttrFlags<SpellAttr5>(handler, "AttributesEx5", spell->AttributesEx5);
PrintSpellAttrFlags<SpellAttr6>(handler, "AttributesEx6", spell->AttributesEx6);
PrintSpellAttrFlags<SpellAttr7>(handler, "AttributesEx7", spell->AttributesEx7);
handler->PSendSysMessage("AttributesCu: 0x{:08X}", spell->AttributesCu);
if (spell->AttributesCu)
{
if (spell->AttributesCu & SPELL_ATTR0_CU_ENCHANT_PROC) handler->PSendSysMessage(" - SPELL_ATTR0_CU_ENCHANT_PROC");
if (spell->AttributesCu & SPELL_ATTR0_CU_CONE_BACK) handler->PSendSysMessage(" - SPELL_ATTR0_CU_CONE_BACK");
if (spell->AttributesCu & SPELL_ATTR0_CU_CONE_LINE) handler->PSendSysMessage(" - SPELL_ATTR0_CU_CONE_LINE");
if (spell->AttributesCu & SPELL_ATTR0_CU_SHARE_DAMAGE) handler->PSendSysMessage(" - SPELL_ATTR0_CU_SHARE_DAMAGE");
if (spell->AttributesCu & SPELL_ATTR0_CU_NO_INITIAL_THREAT) handler->PSendSysMessage(" - SPELL_ATTR0_CU_NO_INITIAL_THREAT");
if (spell->AttributesCu & SPELL_ATTR0_CU_AURA_CC) handler->PSendSysMessage(" - SPELL_ATTR0_CU_AURA_CC");
if (spell->AttributesCu & SPELL_ATTR0_CU_DONT_BREAK_STEALTH) handler->PSendSysMessage(" - SPELL_ATTR0_CU_DONT_BREAK_STEALTH");
if (spell->AttributesCu & SPELL_ATTR0_CU_NO_PVP_FLAG) handler->PSendSysMessage(" - SPELL_ATTR0_CU_NO_PVP_FLAG");
if (spell->AttributesCu & SPELL_ATTR0_CU_DIRECT_DAMAGE) handler->PSendSysMessage(" - SPELL_ATTR0_CU_DIRECT_DAMAGE");
if (spell->AttributesCu & SPELL_ATTR0_CU_CHARGE) handler->PSendSysMessage(" - SPELL_ATTR0_CU_CHARGE");
if (spell->AttributesCu & SPELL_ATTR0_CU_PICKPOCKET) handler->PSendSysMessage(" - SPELL_ATTR0_CU_PICKPOCKET");
if (spell->AttributesCu & SPELL_ATTR0_CU_IGNORE_EVADE) handler->PSendSysMessage(" - SPELL_ATTR0_CU_IGNORE_EVADE");
if (spell->AttributesCu & SPELL_ATTR0_CU_NEGATIVE_EFF0) handler->PSendSysMessage(" - SPELL_ATTR0_CU_NEGATIVE_EFF0");
if (spell->AttributesCu & SPELL_ATTR0_CU_NEGATIVE_EFF1) handler->PSendSysMessage(" - SPELL_ATTR0_CU_NEGATIVE_EFF1");
if (spell->AttributesCu & SPELL_ATTR0_CU_NEGATIVE_EFF2) handler->PSendSysMessage(" - SPELL_ATTR0_CU_NEGATIVE_EFF2");
if (spell->AttributesCu & SPELL_ATTR0_CU_IGNORE_ARMOR) handler->PSendSysMessage(" - SPELL_ATTR0_CU_IGNORE_ARMOR");
if (spell->AttributesCu & SPELL_ATTR0_CU_REQ_TARGET_FACING_CASTER) handler->PSendSysMessage(" - SPELL_ATTR0_CU_REQ_TARGET_FACING_CASTER");
if (spell->AttributesCu & SPELL_ATTR0_CU_REQ_CASTER_BEHIND_TARGET) handler->PSendSysMessage(" - SPELL_ATTR0_CU_REQ_CASTER_BEHIND_TARGET");
if (spell->AttributesCu & SPELL_ATTR0_CU_ALLOW_INFLIGHT_TARGET) handler->PSendSysMessage(" - SPELL_ATTR0_CU_ALLOW_INFLIGHT_TARGET");
if (spell->AttributesCu & SPELL_ATTR0_CU_NEEDS_AMMO_DATA) handler->PSendSysMessage(" - SPELL_ATTR0_CU_NEEDS_AMMO_DATA");
if (spell->AttributesCu & SPELL_ATTR0_CU_BINARY_SPELL) handler->PSendSysMessage(" - SPELL_ATTR0_CU_BINARY_SPELL");
if (spell->AttributesCu & SPELL_ATTR0_CU_NO_POSITIVE_TAKEN_BONUS) handler->PSendSysMessage(" - SPELL_ATTR0_CU_NO_POSITIVE_TAKEN_BONUS");
if (spell->AttributesCu & SPELL_ATTR0_CU_SINGLE_AURA_STACK) handler->PSendSysMessage(" - SPELL_ATTR0_CU_SINGLE_AURA_STACK");
if (spell->AttributesCu & SPELL_ATTR0_CU_SCHOOLMASK_NORMAL_WITH_MAGIC) handler->PSendSysMessage(" - SPELL_ATTR0_CU_SCHOOLMASK_NORMAL_WITH_MAGIC");
if (spell->AttributesCu & SPELL_ATTR0_CU_AURA_CANNOT_BE_SAVED) handler->PSendSysMessage(" - SPELL_ATTR0_CU_AURA_CANNOT_BE_SAVED");
if (spell->AttributesCu & SPELL_ATTR0_CU_POSITIVE_EFF0) handler->PSendSysMessage(" - SPELL_ATTR0_CU_POSITIVE_EFF0");
if (spell->AttributesCu & SPELL_ATTR0_CU_POSITIVE_EFF1) handler->PSendSysMessage(" - SPELL_ATTR0_CU_POSITIVE_EFF1");
if (spell->AttributesCu & SPELL_ATTR0_CU_POSITIVE_EFF2) handler->PSendSysMessage(" - SPELL_ATTR0_CU_POSITIVE_EFF2");
if (spell->AttributesCu & SPELL_ATTR0_CU_FORCE_SEND_CATEGORY_COOLDOWNS) handler->PSendSysMessage(" - SPELL_ATTR0_CU_FORCE_SEND_CATEGORY_COOLDOWNS");
if (spell->AttributesCu & SPELL_ATTR0_CU_ONLY_ONE_AREA_AURA) handler->PSendSysMessage(" - SPELL_ATTR0_CU_ONLY_ONE_AREA_AURA");
if (spell->AttributesCu & SPELL_ATTR0_CU_ENCOUNTER_REWARD) handler->PSendSysMessage(" - SPELL_ATTR0_CU_ENCOUNTER_REWARD");
if (spell->AttributesCu & SPELL_ATTR0_CU_BYPASS_MECHANIC_IMMUNITY) handler->PSendSysMessage(" - SPELL_ATTR0_CU_BYPASS_MECHANIC_IMMUNITY");
}
handler->PSendSysMessage("Stances: 0x{:08X}", spell->Stances);
handler->PSendSysMessage("StancesNot: 0x{:08X}", spell->StancesNot);
}
static void PrintEffects(ChatHandler* handler, SpellInfo const* spell)
{
for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
{
SpellEffectInfo const& eff = spell->Effects[i];
if (!eff.Effect)
continue;
handler->PSendSysMessage("--- Effect {} ---", i);
handler->PSendSysMessage(" Effect: {} ({})", eff.Effect, GetSpellEffectName(eff.Effect));
handler->PSendSysMessage(" Aura: {} ({})", static_cast<uint32>(eff.ApplyAuraName), GetAuraTypeName(static_cast<uint32>(eff.ApplyAuraName)));
handler->PSendSysMessage(" BasePoints: {}", eff.BasePoints);
handler->PSendSysMessage(" DieSides: {}", eff.DieSides);
handler->PSendSysMessage(" RealPointsPerLevel: {:.4f}", eff.RealPointsPerLevel);
handler->PSendSysMessage(" PointsPerComboPoint: {:.2f}", eff.PointsPerComboPoint);
handler->PSendSysMessage(" ValueMultiplier: {:.4f}", eff.ValueMultiplier);
handler->PSendSysMessage(" DamageMultiplier: {:.4f}", eff.DamageMultiplier);
handler->PSendSysMessage(" BonusMultiplier: {:.4f}", eff.BonusMultiplier);
handler->PSendSysMessage(" MiscValue: {}", eff.MiscValue);
handler->PSendSysMessage(" MiscValueB: {}", eff.MiscValueB);
handler->PSendSysMessage(" Mechanic: {} ({})", static_cast<uint32>(eff.Mechanic), EnumUtils::ToConstant(eff.Mechanic));
handler->PSendSysMessage(" TriggerSpell: {}", eff.TriggerSpell);
handler->PSendSysMessage(" Amplitude: {}", eff.Amplitude);
handler->PSendSysMessage(" ItemType: {}", eff.ItemType);
handler->PSendSysMessage(" SpellClassMask: 0x{:08X} 0x{:08X} 0x{:08X}", eff.SpellClassMask[0], eff.SpellClassMask[1], eff.SpellClassMask[2]);
}
}
static void PrintTargets(ChatHandler* handler, SpellInfo const* spell)
{
handler->PSendSysMessage("Targets: 0x{:08X}", spell->Targets);
handler->PSendSysMessage("TargetCreatureType: 0x{:08X}", spell->TargetCreatureType);
handler->PSendSysMessage("MaxAffectedTargets: {}", spell->MaxAffectedTargets);
handler->PSendSysMessage("MaxTargetLevel: {}", spell->MaxTargetLevel);
for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
{
SpellEffectInfo const& eff = spell->Effects[i];
if (!eff.Effect)
continue;
Targets targetA = eff.TargetA.GetTarget();
Targets targetB = eff.TargetB.GetTarget();
handler->PSendSysMessage("--- Effect {} ---", i);
handler->PSendSysMessage(" TargetA: {} ({})", static_cast<uint32>(targetA), GetTargetName(static_cast<uint32>(targetA)));
handler->PSendSysMessage(" TargetB: {} ({})", static_cast<uint32>(targetB), GetTargetName(static_cast<uint32>(targetB)));
if (eff.RadiusEntry)
handler->PSendSysMessage(" Radius: {:.1f}", eff.RadiusEntry->RadiusMax);
handler->PSendSysMessage(" ChainTarget: {}", eff.ChainTarget);
}
}
static void PrintGeneralInfo(ChatHandler* handler, SpellInfo const* spell)
{
if (spell->CastTimeEntry)
handler->PSendSysMessage("CastTime: {} ms", spell->CastTimeEntry->CastTime);
if (spell->DurationEntry)
handler->PSendSysMessage("Duration: {} / {} / {} ms", spell->DurationEntry->Duration[0], spell->DurationEntry->Duration[1], spell->DurationEntry->Duration[2]);
if (spell->RangeEntry)
handler->PSendSysMessage("Range: {:.1f}-{:.1f} (hostile), {:.1f}-{:.1f} (friendly)",
spell->RangeEntry->RangeMin[0], spell->RangeEntry->RangeMax[0],
spell->RangeEntry->RangeMin[1], spell->RangeEntry->RangeMax[1]);
handler->PSendSysMessage("RecoveryTime: {} ms", spell->RecoveryTime);
handler->PSendSysMessage("CategoryRecoveryTime: {} ms", spell->CategoryRecoveryTime);
handler->PSendSysMessage("StartRecoveryTime: {} ms (Category: {})", spell->StartRecoveryTime, spell->StartRecoveryCategory);
handler->PSendSysMessage("InterruptFlags: 0x{:08X}", spell->InterruptFlags);
handler->PSendSysMessage("AuraInterruptFlags: 0x{:08X}", spell->AuraInterruptFlags);
handler->PSendSysMessage("ChannelInterruptFlags: 0x{:08X}", spell->ChannelInterruptFlags);
handler->PSendSysMessage("ProcFlags: 0x{:08X}", spell->ProcFlags);
handler->PSendSysMessage("ProcChance: {}%", spell->ProcChance);
handler->PSendSysMessage("ProcCharges: {}", spell->ProcCharges);
handler->PSendSysMessage("SpellLevel: {}, BaseLevel: {}, MaxLevel: {}", spell->SpellLevel, spell->BaseLevel, spell->MaxLevel);
handler->PSendSysMessage("PowerType: {} ({})", spell->PowerType, GetPowerName(spell->PowerType));
handler->PSendSysMessage("ManaCost: {}", spell->ManaCost);
handler->PSendSysMessage("ManaCostPercentage: {}", spell->ManaCostPercentage);
handler->PSendSysMessage("ManaPerSecond: {}", spell->ManaPerSecond);
handler->PSendSysMessage("Speed: {:.2f}", spell->Speed);
handler->PSendSysMessage("StackAmount: {}", spell->StackAmount);
if (spell->EquippedItemClass >= 0)
handler->PSendSysMessage("EquippedItemClass: {}, SubClassMask: 0x{:08X}, InvTypeMask: 0x{:08X}",
spell->EquippedItemClass, static_cast<uint32>(spell->EquippedItemSubClassMask), static_cast<uint32>(spell->EquippedItemInventoryTypeMask));
handler->PSendSysMessage("SpellFamilyName: {} ({})", spell->SpellFamilyName, GetSpellFamilyName(spell->SpellFamilyName));
handler->PSendSysMessage("SpellFamilyFlags: 0x{:08X} 0x{:08X} 0x{:08X}", spell->SpellFamilyFlags[0], spell->SpellFamilyFlags[1], spell->SpellFamilyFlags[2]);
handler->PSendSysMessage("DmgClass: {} ({})", spell->DmgClass, GetDmgClassName(spell->DmgClass));
handler->PSendSysMessage("PreventionType: {} ({})", spell->PreventionType, GetPreventionTypeName(spell->PreventionType));
handler->PSendSysMessage("SchoolMask: 0x{:02X}", spell->SchoolMask);
}
static bool HandleSpellInfoAttributesCommand(ChatHandler* handler, SpellInfo const* spell)
{
if (!spell)
{
handler->SendErrorMessage(LANG_COMMAND_NOSPELLFOUND);
return false;
}
handler->PSendSysMessage("===== SPELL ATTRIBUTES =====");
PrintBasicInfo(handler, spell);
PrintAttributes(handler, spell);
handler->PSendSysMessage("============================");
return true;
}
static bool HandleSpellInfoEffectsCommand(ChatHandler* handler, SpellInfo const* spell)
{
if (!spell)
{
handler->SendErrorMessage(LANG_COMMAND_NOSPELLFOUND);
return false;
}
handler->PSendSysMessage("====== SPELL EFFECTS ======");
PrintBasicInfo(handler, spell);
PrintEffects(handler, spell);
handler->PSendSysMessage("===========================");
return true;
}
static bool HandleSpellInfoTargetsCommand(ChatHandler* handler, SpellInfo const* spell)
{
if (!spell)
{
handler->SendErrorMessage(LANG_COMMAND_NOSPELLFOUND);
return false;
}
handler->PSendSysMessage("====== SPELL TARGETS ======");
PrintBasicInfo(handler, spell);
PrintTargets(handler, spell);
handler->PSendSysMessage("===========================");
return true;
}
static bool HandleSpellInfoAllCommand(ChatHandler* handler, SpellInfo const* spell)
{
if (!spell)
{
handler->SendErrorMessage(LANG_COMMAND_NOSPELLFOUND);
return false;
}
handler->PSendSysMessage("========== SPELL INFO ==========");
PrintBasicInfo(handler, spell);
PrintAttributes(handler, spell);
PrintGeneralInfo(handler, spell);
PrintEffects(handler, spell);
PrintTargets(handler, spell);
handler->PSendSysMessage("================================");
return true;
}
};
void AddSC_spellinfo_commandscript()
{
new spellinfo_commandscript();
}