aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Keresztes Schmidt <carbenium@outlook.com>2020-08-20 00:46:52 +0200
committerGitHub <noreply@github.com>2020-08-20 00:46:52 +0200
commit4286e7aa02e777268b25d8a5bcc1ee87f7b16c4d (patch)
tree13c9a4c4be3ae749a0301f0e397051a98a10f339 /src
parent9c9e8c7d58cd0e939330089cfb555945ebbf73eb (diff)
Core/ChatCommands: Check whether a passed numeric enum value is valid (#25285)
Diffstat (limited to 'src')
-rw-r--r--src/common/Utilities/SmartEnum.h21
-rw-r--r--src/server/game/AuctionHouseBot/enuminfo_AuctionHouseBot.cpp31
-rw-r--r--src/server/game/Chat/ChatCommands/ChatCommandArgs.h4
-rw-r--r--src/server/game/Entities/Creature/enuminfo_CreatureData.cpp44
-rw-r--r--src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp80
-rw-r--r--src/server/game/Instances/InstanceScript.h1
-rw-r--r--src/server/game/Instances/enuminfo_InstanceScript.cpp76
-rw-r--r--src/server/game/Maps/enuminfo_SpawnData.cpp14
-rw-r--r--src/server/game/Warden/enuminfo_WardenCheckMgr.cpp33
-rw-r--r--src/server/scripts/Commands/cs_debug.cpp9
-rw-r--r--src/server/shared/enuminfo_SharedDefines.cpp675
11 files changed, 962 insertions, 26 deletions
diff --git a/src/common/Utilities/SmartEnum.h b/src/common/Utilities/SmartEnum.h
index 0966469f454..8c9a873dd9c 100644
--- a/src/common/Utilities/SmartEnum.h
+++ b/src/common/Utilities/SmartEnum.h
@@ -23,7 +23,7 @@
struct EnumText
{
- EnumText(char const* c, char const* t, char const* d) : Constant(c), Title(t), Description(d) {}
+ EnumText(char const* c, char const* t, char const* d) : Constant(c), Title(t), Description(d) { }
// Enum constant of the value
char const* const Constant;
// Human-readable title of the value
@@ -42,6 +42,7 @@ namespace Trinity
static size_t Count();
static EnumText ToString(Enum value);
static Enum FromIndex(size_t index);
+ static size_t ToIndex(Enum index);
};
}
}
@@ -55,6 +56,24 @@ class EnumUtils
static EnumText ToString(Enum value) { return Trinity::Impl::EnumUtils<Enum>::ToString(value); }
template <typename Enum>
static Enum FromIndex(size_t index) { return Trinity::Impl::EnumUtils<Enum>::FromIndex(index); }
+ template <typename Enum>
+ static uint32 ToIndex(Enum value) { return Trinity::Impl::EnumUtils<Enum>::ToIndex(value);}
+
+ template<typename Enum>
+ static bool IsValid(Enum value)
+ {
+ try
+ {
+ Trinity::Impl::EnumUtils<Enum>::ToIndex(value);
+ return true;
+ } catch (...)
+ {
+ return false;
+ }
+ }
+
+ template<typename Enum>
+ static bool IsValid(std::underlying_type_t<Enum> value) { return IsValid(static_cast<Enum>(value)); }
template <typename Enum>
class Iterator
diff --git a/src/server/game/AuctionHouseBot/enuminfo_AuctionHouseBot.cpp b/src/server/game/AuctionHouseBot/enuminfo_AuctionHouseBot.cpp
index bdec8875922..2d784a94425 100644
--- a/src/server/game/AuctionHouseBot/enuminfo_AuctionHouseBot.cpp
+++ b/src/server/game/AuctionHouseBot/enuminfo_AuctionHouseBot.cpp
@@ -20,9 +20,7 @@
#include "SmartEnum.h"
#include <stdexcept>
-namespace Trinity
-{
-namespace Impl
+namespace Trinity::Impl
{
/************************************************************************\
@@ -63,6 +61,22 @@ TC_API_EXPORT AuctionQuality EnumUtils<AuctionQuality>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<AuctionQuality>::ToIndex(AuctionQuality value)
+{
+ switch (value)
+ {
+ case AUCTION_QUALITY_GRAY: return 0;
+ case AUCTION_QUALITY_WHITE: return 1;
+ case AUCTION_QUALITY_GREEN: return 2;
+ case AUCTION_QUALITY_BLUE: return 3;
+ case AUCTION_QUALITY_PURPLE: return 4;
+ case AUCTION_QUALITY_ORANGE: return 5;
+ case AUCTION_QUALITY_YELLOW: return 6;
+ default: throw std::out_of_range("value");
+ }
+}
+
/**************************************************************************\
|* data for enum 'AuctionHouseType' in 'AuctionHouseBot.h' auto-generated *|
\**************************************************************************/
@@ -92,5 +106,16 @@ TC_API_EXPORT AuctionHouseType EnumUtils<AuctionHouseType>::FromIndex(size_t ind
default: throw std::out_of_range("index");
}
}
+
+template <>
+TC_API_EXPORT size_t EnumUtils<AuctionHouseType>::ToIndex(AuctionHouseType value)
+{
+ switch (value)
+ {
+ case AUCTION_HOUSE_NEUTRAL: return 0;
+ case AUCTION_HOUSE_ALLIANCE: return 1;
+ case AUCTION_HOUSE_HORDE: return 2;
+ default: throw std::out_of_range("value");
+ }
}
}
diff --git a/src/server/game/Chat/ChatCommands/ChatCommandArgs.h b/src/server/game/Chat/ChatCommands/ChatCommandArgs.h
index d7fa5cf65db..2e33384ee42 100644
--- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.h
+++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.h
@@ -193,7 +193,11 @@ struct ArgInfo<T, std::enable_if_t<std::is_enum_v<T>>>
U uVal = 0;
ret = ArgInfo<U>::TryConsume(uVal, args);
if (ret)
+ {
val = static_cast<T>(uVal);
+ if (!EnumUtils::IsValid(val))
+ return nullptr;
+ }
return ret;
}
diff --git a/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp b/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp
index f15a5d8ca16..01549c93c4f 100644
--- a/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp
+++ b/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp
@@ -20,9 +20,7 @@
#include "SmartEnum.h"
#include <stdexcept>
-namespace Trinity
-{
-namespace Impl
+namespace Trinity::Impl
{
/*************************************************************************\
@@ -112,5 +110,45 @@ TC_API_EXPORT CreatureFlagsExtra EnumUtils<CreatureFlagsExtra>::FromIndex(size_t
default: throw std::out_of_range("index");
}
}
+
+template <>
+TC_API_EXPORT size_t EnumUtils<CreatureFlagsExtra>::ToIndex(CreatureFlagsExtra value)
+{
+ switch (value)
+ {
+ case CREATURE_FLAG_EXTRA_INSTANCE_BIND: return 0;
+ case CREATURE_FLAG_EXTRA_CIVILIAN: return 1;
+ case CREATURE_FLAG_EXTRA_NO_PARRY: return 2;
+ case CREATURE_FLAG_EXTRA_NO_PARRY_HASTEN: return 3;
+ case CREATURE_FLAG_EXTRA_NO_BLOCK: return 4;
+ case CREATURE_FLAG_EXTRA_NO_CRUSH: return 5;
+ case CREATURE_FLAG_EXTRA_NO_XP_AT_KILL: return 6;
+ case CREATURE_FLAG_EXTRA_TRIGGER: return 7;
+ case CREATURE_FLAG_EXTRA_NO_TAUNT: return 8;
+ case CREATURE_FLAG_EXTRA_NO_MOVE_FLAGS_UPDATE: return 9;
+ case CREATURE_FLAG_EXTRA_GHOST_VISIBILITY: return 10;
+ case CREATURE_FLAG_EXTRA_USE_OFFHAND_ATTACK: return 11;
+ case CREATURE_FLAG_EXTRA_NO_SELL_VENDOR: return 12;
+ case CREATURE_FLAG_EXTRA_NO_COMBAT: return 13;
+ case CREATURE_FLAG_EXTRA_WORLDEVENT: return 14;
+ case CREATURE_FLAG_EXTRA_GUARD: return 15;
+ case CREATURE_FLAG_EXTRA_UNUSED_16: return 16;
+ case CREATURE_FLAG_EXTRA_NO_CRIT: return 17;
+ case CREATURE_FLAG_EXTRA_NO_SKILLGAIN: return 18;
+ case CREATURE_FLAG_EXTRA_TAUNT_DIMINISH: return 19;
+ case CREATURE_FLAG_EXTRA_ALL_DIMINISH: return 20;
+ case CREATURE_FLAG_EXTRA_NO_PLAYER_DAMAGE_REQ: return 21;
+ case CREATURE_FLAG_EXTRA_UNUSED_22: return 22;
+ case CREATURE_FLAG_EXTRA_UNUSED_23: return 23;
+ case CREATURE_FLAG_EXTRA_UNUSED_24: return 24;
+ case CREATURE_FLAG_EXTRA_UNUSED_25: return 25;
+ case CREATURE_FLAG_EXTRA_UNUSED_26: return 26;
+ case CREATURE_FLAG_EXTRA_UNUSED_27: return 27;
+ case CREATURE_FLAG_EXTRA_DUNGEON_BOSS: return 28;
+ case CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING: return 29;
+ case CREATURE_FLAG_EXTRA_IMMUNITY_KNOCKBACK: return 30;
+ case CREATURE_FLAG_EXTRA_UNUSED_31: return 31;
+ default: throw std::out_of_range("value");
+ }
}
}
diff --git a/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp b/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp
index f1e91fabab9..5452ca1048c 100644
--- a/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp
+++ b/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp
@@ -20,9 +20,7 @@
#include "SmartEnum.h"
#include <stdexcept>
-namespace Trinity
-{
-namespace Impl
+namespace Trinity::Impl
{
/***************************************************************\
@@ -113,6 +111,47 @@ TC_API_EXPORT UnitFlags EnumUtils<UnitFlags>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<UnitFlags>::ToIndex(UnitFlags value)
+{
+ switch (value)
+ {
+ case UNIT_FLAG_SERVER_CONTROLLED: return 0;
+ case UNIT_FLAG_NON_ATTACKABLE: return 1;
+ case UNIT_FLAG_REMOVE_CLIENT_CONTROL: return 2;
+ case UNIT_FLAG_PLAYER_CONTROLLED: return 3;
+ case UNIT_FLAG_RENAME: return 4;
+ case UNIT_FLAG_PREPARATION: return 5;
+ case UNIT_FLAG_UNK_6: return 6;
+ case UNIT_FLAG_NOT_ATTACKABLE_1: return 7;
+ case UNIT_FLAG_IMMUNE_TO_PC: return 8;
+ case UNIT_FLAG_IMMUNE_TO_NPC: return 9;
+ case UNIT_FLAG_LOOTING: return 10;
+ case UNIT_FLAG_PET_IN_COMBAT: return 11;
+ case UNIT_FLAG_PVP: return 12;
+ case UNIT_FLAG_SILENCED: return 13;
+ case UNIT_FLAG_CANNOT_SWIM: return 14;
+ case UNIT_FLAG_SWIMMING: return 15;
+ case UNIT_FLAG_NON_ATTACKABLE_2: return 16;
+ case UNIT_FLAG_PACIFIED: return 17;
+ case UNIT_FLAG_STUNNED: return 18;
+ case UNIT_FLAG_IN_COMBAT: return 19;
+ case UNIT_FLAG_TAXI_FLIGHT: return 20;
+ case UNIT_FLAG_DISARMED: return 21;
+ case UNIT_FLAG_CONFUSED: return 22;
+ case UNIT_FLAG_FLEEING: return 23;
+ case UNIT_FLAG_POSSESSED: return 24;
+ case UNIT_FLAG_NOT_SELECTABLE: return 25;
+ case UNIT_FLAG_SKINNABLE: return 26;
+ case UNIT_FLAG_MOUNT: return 27;
+ case UNIT_FLAG_UNK_28: return 28;
+ case UNIT_FLAG_UNK_29: return 29;
+ case UNIT_FLAG_SHEATHE: return 30;
+ case UNIT_FLAG_IMMUNE: return 31;
+ default: throw std::out_of_range("value");
+ }
+}
+
/**************************************************************\
|* data for enum 'NPCFlags' in 'UnitDefines.h' auto-generated *|
\**************************************************************/
@@ -190,5 +229,40 @@ TC_API_EXPORT NPCFlags EnumUtils<NPCFlags>::FromIndex(size_t index)
default: throw std::out_of_range("index");
}
}
+
+template <>
+TC_API_EXPORT size_t EnumUtils<NPCFlags>::ToIndex(NPCFlags value)
+{
+ switch (value)
+ {
+ case UNIT_NPC_FLAG_GOSSIP: return 0;
+ case UNIT_NPC_FLAG_QUESTGIVER: return 1;
+ case UNIT_NPC_FLAG_UNK1: return 2;
+ case UNIT_NPC_FLAG_UNK2: return 3;
+ case UNIT_NPC_FLAG_TRAINER: return 4;
+ case UNIT_NPC_FLAG_TRAINER_CLASS: return 5;
+ case UNIT_NPC_FLAG_TRAINER_PROFESSION: return 6;
+ case UNIT_NPC_FLAG_VENDOR: return 7;
+ case UNIT_NPC_FLAG_VENDOR_AMMO: return 8;
+ case UNIT_NPC_FLAG_VENDOR_FOOD: return 9;
+ case UNIT_NPC_FLAG_VENDOR_POISON: return 10;
+ case UNIT_NPC_FLAG_VENDOR_REAGENT: return 11;
+ case UNIT_NPC_FLAG_REPAIR: return 12;
+ case UNIT_NPC_FLAG_FLIGHTMASTER: return 13;
+ case UNIT_NPC_FLAG_SPIRITHEALER: return 14;
+ case UNIT_NPC_FLAG_SPIRITGUIDE: return 15;
+ case UNIT_NPC_FLAG_INNKEEPER: return 16;
+ case UNIT_NPC_FLAG_BANKER: return 17;
+ case UNIT_NPC_FLAG_PETITIONER: return 18;
+ case UNIT_NPC_FLAG_TABARDDESIGNER: return 19;
+ case UNIT_NPC_FLAG_BATTLEMASTER: return 20;
+ case UNIT_NPC_FLAG_AUCTIONEER: return 21;
+ case UNIT_NPC_FLAG_STABLEMASTER: return 22;
+ case UNIT_NPC_FLAG_GUILD_BANKER: return 23;
+ case UNIT_NPC_FLAG_SPELLCLICK: return 24;
+ case UNIT_NPC_FLAG_PLAYER_VEHICLE: return 25;
+ case UNIT_NPC_FLAG_MAILBOX: return 26;
+ default: throw std::out_of_range("value");
+ }
}
}
diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h
index 96b2a9f2245..5b6846ec562 100644
--- a/src/server/game/Instances/InstanceScript.h
+++ b/src/server/game/Instances/InstanceScript.h
@@ -64,6 +64,7 @@ enum EncounterFrameType
ENCOUNTER_FRAME_UNK7 = 7 // Seems to have something to do with sorting the encounter units
};
+// EnumUtils: DESCRIBE THIS
enum EncounterState
{
NOT_STARTED = 0,
diff --git a/src/server/game/Instances/enuminfo_InstanceScript.cpp b/src/server/game/Instances/enuminfo_InstanceScript.cpp
new file mode 100644
index 00000000000..7fcbc5d3036
--- /dev/null
+++ b/src/server/game/Instances/enuminfo_InstanceScript.cpp
@@ -0,0 +1,76 @@
+/*
+ * This file is part of the TrinityCore 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 "InstanceScript.h"
+#include "Define.h"
+#include "SmartEnum.h"
+#include <stdexcept>
+
+namespace Trinity::Impl
+{
+
+/***********************************************************************\
+|* data for enum 'EncounterState' in 'InstanceScript.h' auto-generated *|
+\***********************************************************************/
+template <>
+TC_API_EXPORT EnumText EnumUtils<EncounterState>::ToString(EncounterState value)
+{
+ switch (value)
+ {
+ case NOT_STARTED: return { "NOT_STARTED", "NOT_STARTED", "" };
+ case IN_PROGRESS: return { "IN_PROGRESS", "IN_PROGRESS", "" };
+ case FAIL: return { "FAIL", "FAIL", "" };
+ case DONE: return { "DONE", "DONE", "" };
+ case SPECIAL: return { "SPECIAL", "SPECIAL", "" };
+ case TO_BE_DECIDED: return { "TO_BE_DECIDED", "TO_BE_DECIDED", "" };
+ default: throw std::out_of_range("value");
+ }
+}
+
+template <>
+TC_API_EXPORT size_t EnumUtils<EncounterState>::Count() { return 6; }
+
+template <>
+TC_API_EXPORT EncounterState EnumUtils<EncounterState>::FromIndex(size_t index)
+{
+ switch (index)
+ {
+ case 0: return NOT_STARTED;
+ case 1: return IN_PROGRESS;
+ case 2: return FAIL;
+ case 3: return DONE;
+ case 4: return SPECIAL;
+ case 5: return TO_BE_DECIDED;
+ default: throw std::out_of_range("index");
+ }
+}
+
+template <>
+TC_API_EXPORT size_t EnumUtils<EncounterState>::ToIndex(EncounterState value)
+{
+ switch (value)
+ {
+ case NOT_STARTED: return 0;
+ case IN_PROGRESS: return 1;
+ case FAIL: return 2;
+ case DONE: return 3;
+ case SPECIAL: return 4;
+ case TO_BE_DECIDED: return 5;
+ default: throw std::out_of_range("value");
+ }
+}
+}
diff --git a/src/server/game/Maps/enuminfo_SpawnData.cpp b/src/server/game/Maps/enuminfo_SpawnData.cpp
index 92226f25572..82b75acb148 100644
--- a/src/server/game/Maps/enuminfo_SpawnData.cpp
+++ b/src/server/game/Maps/enuminfo_SpawnData.cpp
@@ -20,9 +20,7 @@
#include "SmartEnum.h"
#include <stdexcept>
-namespace Trinity
-{
-namespace Impl
+namespace Trinity::Impl
{
/*******************************************************************\
@@ -52,5 +50,15 @@ TC_API_EXPORT SpawnObjectType EnumUtils<SpawnObjectType>::FromIndex(size_t index
default: throw std::out_of_range("index");
}
}
+
+template <>
+TC_API_EXPORT size_t EnumUtils<SpawnObjectType>::ToIndex(SpawnObjectType value)
+{
+ switch (value)
+ {
+ case SPAWN_TYPE_CREATURE: return 0;
+ case SPAWN_TYPE_GAMEOBJECT: return 1;
+ default: throw std::out_of_range("value");
+ }
}
}
diff --git a/src/server/game/Warden/enuminfo_WardenCheckMgr.cpp b/src/server/game/Warden/enuminfo_WardenCheckMgr.cpp
index e4c5fc4efa3..450760148f0 100644
--- a/src/server/game/Warden/enuminfo_WardenCheckMgr.cpp
+++ b/src/server/game/Warden/enuminfo_WardenCheckMgr.cpp
@@ -20,9 +20,7 @@
#include "SmartEnum.h"
#include <stdexcept>
-namespace Trinity
-{
-namespace Impl
+namespace Trinity::Impl
{
/**********************************************************************\
@@ -55,6 +53,18 @@ TC_API_EXPORT WardenActions EnumUtils<WardenActions>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<WardenActions>::ToIndex(WardenActions value)
+{
+ switch (value)
+ {
+ case WARDEN_ACTION_LOG: return 0;
+ case WARDEN_ACTION_KICK: return 1;
+ case WARDEN_ACTION_BAN: return 2;
+ default: throw std::out_of_range("value");
+ }
+}
+
/************************************************************************\
|* data for enum 'WardenCheckType' in 'WardenCheckMgr.h' auto-generated *|
\************************************************************************/
@@ -96,5 +106,22 @@ TC_API_EXPORT WardenCheckType EnumUtils<WardenCheckType>::FromIndex(size_t index
default: throw std::out_of_range("index");
}
}
+
+template <>
+TC_API_EXPORT size_t EnumUtils<WardenCheckType>::ToIndex(WardenCheckType value)
+{
+ switch (value)
+ {
+ case MEM_CHECK: return 0;
+ case PAGE_CHECK_A: return 1;
+ case PAGE_CHECK_B: return 2;
+ case MPQ_CHECK: return 3;
+ case LUA_STR_CHECK: return 4;
+ case DRIVER_CHECK: return 5;
+ case TIMING_CHECK: return 6;
+ case PROC_CHECK: return 7;
+ case MODULE_CHECK: return 8;
+ default: throw std::out_of_range("value");
+ }
}
}
diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp
index 6ce53150238..22654c48b42 100644
--- a/src/server/scripts/Commands/cs_debug.cpp
+++ b/src/server/scripts/Commands/cs_debug.cpp
@@ -1140,13 +1140,8 @@ public:
if (Unit* unit = handler->getSelectedUnit())
unit->HandleEmoteCommand(emote);
- try
- {
- handler->PSendSysMessage("Playing emote %s", EnumUtils::ToConstant(emote));
- } catch (...)
- {
- handler->PSendSysMessage("Playing unknown emote");
- }
+ handler->PSendSysMessage("Playing emote %s", EnumUtils::ToConstant(emote));
+
return true;
}
diff --git a/src/server/shared/enuminfo_SharedDefines.cpp b/src/server/shared/enuminfo_SharedDefines.cpp
index c2fa150bcf6..d3a684a6bd5 100644
--- a/src/server/shared/enuminfo_SharedDefines.cpp
+++ b/src/server/shared/enuminfo_SharedDefines.cpp
@@ -20,9 +20,7 @@
#include "SmartEnum.h"
#include <stdexcept>
-namespace Trinity
-{
-namespace Impl
+namespace Trinity::Impl
{
/*************************************************************\
@@ -69,6 +67,25 @@ TC_API_EXPORT Races EnumUtils<Races>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<Races>::ToIndex(Races value)
+{
+ switch (value)
+ {
+ case RACE_HUMAN: return 0;
+ case RACE_ORC: return 1;
+ case RACE_DWARF: return 2;
+ case RACE_NIGHTELF: return 3;
+ case RACE_UNDEAD_PLAYER: return 4;
+ case RACE_TAUREN: return 5;
+ case RACE_GNOME: return 6;
+ case RACE_TROLL: return 7;
+ case RACE_BLOODELF: return 8;
+ case RACE_DRAENEI: return 9;
+ default: throw std::out_of_range("value");
+ }
+}
+
/***************************************************************\
|* data for enum 'Classes' in 'SharedDefines.h' auto-generated *|
\***************************************************************/
@@ -113,6 +130,25 @@ TC_API_EXPORT Classes EnumUtils<Classes>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<Classes>::ToIndex(Classes value)
+{
+ switch (value)
+ {
+ case CLASS_WARRIOR: return 0;
+ case CLASS_PALADIN: return 1;
+ case CLASS_HUNTER: return 2;
+ case CLASS_ROGUE: return 3;
+ case CLASS_PRIEST: return 4;
+ case CLASS_DEATH_KNIGHT: return 5;
+ case CLASS_SHAMAN: return 6;
+ case CLASS_MAGE: return 7;
+ case CLASS_WARLOCK: return 8;
+ case CLASS_DRUID: return 9;
+ default: throw std::out_of_range("value");
+ }
+}
+
/**************************************************************\
|* data for enum 'Powers' in 'SharedDefines.h' auto-generated *|
\**************************************************************/
@@ -153,6 +189,23 @@ TC_API_EXPORT Powers EnumUtils<Powers>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<Powers>::ToIndex(Powers value)
+{
+ switch (value)
+ {
+ case POWER_HEALTH: return 0;
+ case POWER_MANA: return 1;
+ case POWER_RAGE: return 2;
+ case POWER_FOCUS: return 3;
+ case POWER_ENERGY: return 4;
+ case POWER_HAPPINESS: return 5;
+ case POWER_RUNE: return 6;
+ case POWER_RUNIC_POWER: return 7;
+ default: throw std::out_of_range("value");
+ }
+}
+
/********************************************************************\
|* data for enum 'SpellSchools' in 'SharedDefines.h' auto-generated *|
\********************************************************************/
@@ -191,6 +244,22 @@ TC_API_EXPORT SpellSchools EnumUtils<SpellSchools>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<SpellSchools>::ToIndex(SpellSchools value)
+{
+ switch (value)
+ {
+ case SPELL_SCHOOL_NORMAL: return 0;
+ case SPELL_SCHOOL_HOLY: return 1;
+ case SPELL_SCHOOL_FIRE: return 2;
+ case SPELL_SCHOOL_NATURE: return 3;
+ case SPELL_SCHOOL_FROST: return 4;
+ case SPELL_SCHOOL_SHADOW: return 5;
+ case SPELL_SCHOOL_ARCANE: return 6;
+ default: throw std::out_of_range("value");
+ }
+}
+
/******************************************************************\
|* data for enum 'SpellAttr0' in 'SharedDefines.h' auto-generated *|
\******************************************************************/
@@ -279,6 +348,47 @@ TC_API_EXPORT SpellAttr0 EnumUtils<SpellAttr0>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<SpellAttr0>::ToIndex(SpellAttr0 value)
+{
+ switch (value)
+ {
+ case SPELL_ATTR0_UNK0: return 0;
+ case SPELL_ATTR0_REQ_AMMO: return 1;
+ case SPELL_ATTR0_ON_NEXT_SWING: return 2;
+ case SPELL_ATTR0_IS_REPLENISHMENT: return 3;
+ case SPELL_ATTR0_ABILITY: return 4;
+ case SPELL_ATTR0_TRADESPELL: return 5;
+ case SPELL_ATTR0_PASSIVE: return 6;
+ case SPELL_ATTR0_HIDDEN_CLIENTSIDE: return 7;
+ case SPELL_ATTR0_HIDE_IN_COMBAT_LOG: return 8;
+ case SPELL_ATTR0_TARGET_MAINHAND_ITEM: return 9;
+ case SPELL_ATTR0_ON_NEXT_SWING_2: return 10;
+ case SPELL_ATTR0_UNK11: return 11;
+ case SPELL_ATTR0_DAYTIME_ONLY: return 12;
+ case SPELL_ATTR0_NIGHT_ONLY: return 13;
+ case SPELL_ATTR0_INDOORS_ONLY: return 14;
+ case SPELL_ATTR0_OUTDOORS_ONLY: return 15;
+ case SPELL_ATTR0_NOT_SHAPESHIFT: return 16;
+ case SPELL_ATTR0_ONLY_STEALTHED: return 17;
+ case SPELL_ATTR0_DONT_AFFECT_SHEATH_STATE: return 18;
+ case SPELL_ATTR0_LEVEL_DAMAGE_CALCULATION: return 19;
+ case SPELL_ATTR0_STOP_ATTACK_TARGET: return 20;
+ case SPELL_ATTR0_IMPOSSIBLE_DODGE_PARRY_BLOCK: return 21;
+ case SPELL_ATTR0_CAST_TRACK_TARGET: return 22;
+ case SPELL_ATTR0_CASTABLE_WHILE_DEAD: return 23;
+ case SPELL_ATTR0_CASTABLE_WHILE_MOUNTED: return 24;
+ case SPELL_ATTR0_DISABLED_WHILE_ACTIVE: return 25;
+ case SPELL_ATTR0_NEGATIVE_1: return 26;
+ case SPELL_ATTR0_CASTABLE_WHILE_SITTING: return 27;
+ case SPELL_ATTR0_CANT_USED_IN_COMBAT: return 28;
+ case SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY: return 29;
+ case SPELL_ATTR0_HEARTBEAT_RESIST_CHECK: return 30;
+ case SPELL_ATTR0_CANT_CANCEL: return 31;
+ default: throw std::out_of_range("value");
+ }
+}
+
/******************************************************************\
|* data for enum 'SpellAttr1' in 'SharedDefines.h' auto-generated *|
\******************************************************************/
@@ -367,6 +477,47 @@ TC_API_EXPORT SpellAttr1 EnumUtils<SpellAttr1>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<SpellAttr1>::ToIndex(SpellAttr1 value)
+{
+ switch (value)
+ {
+ case SPELL_ATTR1_DISMISS_PET: return 0;
+ case SPELL_ATTR1_DRAIN_ALL_POWER: return 1;
+ case SPELL_ATTR1_CHANNELED_1: return 2;
+ case SPELL_ATTR1_CANT_BE_REDIRECTED: return 3;
+ case SPELL_ATTR1_UNK4: return 4;
+ case SPELL_ATTR1_NOT_BREAK_STEALTH: return 5;
+ case SPELL_ATTR1_CHANNELED_2: return 6;
+ case SPELL_ATTR1_CANT_BE_REFLECTED: return 7;
+ case SPELL_ATTR1_CANT_TARGET_IN_COMBAT: return 8;
+ case SPELL_ATTR1_MELEE_COMBAT_START: return 9;
+ case SPELL_ATTR1_NO_THREAT: return 10;
+ case SPELL_ATTR1_UNK11: return 11;
+ case SPELL_ATTR1_IS_PICKPOCKET: return 12;
+ case SPELL_ATTR1_FARSIGHT: return 13;
+ case SPELL_ATTR1_CHANNEL_TRACK_TARGET: return 14;
+ case SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY: return 15;
+ case SPELL_ATTR1_UNAFFECTED_BY_SCHOOL_IMMUNE: return 16;
+ case SPELL_ATTR1_UNAUTOCASTABLE_BY_PET: return 17;
+ case SPELL_ATTR1_UNK18: return 18;
+ case SPELL_ATTR1_CANT_TARGET_SELF: return 19;
+ case SPELL_ATTR1_REQ_COMBO_POINTS1: return 20;
+ case SPELL_ATTR1_UNK21: return 21;
+ case SPELL_ATTR1_REQ_COMBO_POINTS2: return 22;
+ case SPELL_ATTR1_UNK23: return 23;
+ case SPELL_ATTR1_IS_FISHING: return 24;
+ case SPELL_ATTR1_UNK25: return 25;
+ case SPELL_ATTR1_UNK26: return 26;
+ case SPELL_ATTR1_UNK27: return 27;
+ case SPELL_ATTR1_DONT_DISPLAY_IN_AURA_BAR: return 28;
+ case SPELL_ATTR1_CHANNEL_DISPLAY_SPELL_NAME: return 29;
+ case SPELL_ATTR1_ENABLE_AT_DODGE: return 30;
+ case SPELL_ATTR1_UNK31: return 31;
+ default: throw std::out_of_range("value");
+ }
+}
+
/******************************************************************\
|* data for enum 'SpellAttr2' in 'SharedDefines.h' auto-generated *|
\******************************************************************/
@@ -455,6 +606,47 @@ TC_API_EXPORT SpellAttr2 EnumUtils<SpellAttr2>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<SpellAttr2>::ToIndex(SpellAttr2 value)
+{
+ switch (value)
+ {
+ case SPELL_ATTR2_CAN_TARGET_DEAD: return 0;
+ case SPELL_ATTR2_UNK1: return 1;
+ case SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS: return 2;
+ case SPELL_ATTR2_UNK3: return 3;
+ case SPELL_ATTR2_DISPLAY_IN_STANCE_BAR: return 4;
+ case SPELL_ATTR2_AUTOREPEAT_FLAG: return 5;
+ case SPELL_ATTR2_CANT_TARGET_TAPPED: return 6;
+ case SPELL_ATTR2_UNK7: return 7;
+ case SPELL_ATTR2_UNK8: return 8;
+ case SPELL_ATTR2_UNK9: return 9;
+ case SPELL_ATTR2_UNK10: return 10;
+ case SPELL_ATTR2_HEALTH_FUNNEL: return 11;
+ case SPELL_ATTR2_UNK12: return 12;
+ case SPELL_ATTR2_PRESERVE_ENCHANT_IN_ARENA: return 13;
+ case SPELL_ATTR2_UNK14: return 14;
+ case SPELL_ATTR2_UNK15: return 15;
+ case SPELL_ATTR2_TAME_BEAST: return 16;
+ case SPELL_ATTR2_NOT_RESET_AUTO_ACTIONS: return 17;
+ case SPELL_ATTR2_REQ_DEAD_PET: return 18;
+ case SPELL_ATTR2_NOT_NEED_SHAPESHIFT: return 19;
+ case SPELL_ATTR2_UNK20: return 20;
+ case SPELL_ATTR2_DAMAGE_REDUCED_SHIELD: return 21;
+ case SPELL_ATTR2_UNK22: return 22;
+ case SPELL_ATTR2_IS_ARCANE_CONCENTRATION: return 23;
+ case SPELL_ATTR2_UNK24: return 24;
+ case SPELL_ATTR2_UNK25: return 25;
+ case SPELL_ATTR2_UNAFFECTED_BY_AURA_SCHOOL_IMMUNE: return 26;
+ case SPELL_ATTR2_UNK27: return 27;
+ case SPELL_ATTR2_UNK28: return 28;
+ case SPELL_ATTR2_CANT_CRIT: return 29;
+ case SPELL_ATTR2_TRIGGERED_CAN_TRIGGER_PROC: return 30;
+ case SPELL_ATTR2_FOOD_BUFF: return 31;
+ default: throw std::out_of_range("value");
+ }
+}
+
/******************************************************************\
|* data for enum 'SpellAttr3' in 'SharedDefines.h' auto-generated *|
\******************************************************************/
@@ -543,6 +735,47 @@ TC_API_EXPORT SpellAttr3 EnumUtils<SpellAttr3>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<SpellAttr3>::ToIndex(SpellAttr3 value)
+{
+ switch (value)
+ {
+ case SPELL_ATTR3_UNK0: return 0;
+ case SPELL_ATTR3_IGNORE_PROC_SUBCLASS_MASK: return 1;
+ case SPELL_ATTR3_UNK2: return 2;
+ case SPELL_ATTR3_BLOCKABLE_SPELL: return 3;
+ case SPELL_ATTR3_IGNORE_RESURRECTION_TIMER: return 4;
+ case SPELL_ATTR3_UNK5: return 5;
+ case SPELL_ATTR3_UNK6: return 6;
+ case SPELL_ATTR3_STACK_FOR_DIFF_CASTERS: return 7;
+ case SPELL_ATTR3_ONLY_TARGET_PLAYERS: return 8;
+ case SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_PROC_2: return 9;
+ case SPELL_ATTR3_MAIN_HAND: return 10;
+ case SPELL_ATTR3_BATTLEGROUND: return 11;
+ case SPELL_ATTR3_ONLY_TARGET_GHOSTS: return 12;
+ case SPELL_ATTR3_DONT_DISPLAY_CHANNEL_BAR: return 13;
+ case SPELL_ATTR3_IS_HONORLESS_TARGET: return 14;
+ case SPELL_ATTR3_UNK15: return 15;
+ case SPELL_ATTR3_CANT_TRIGGER_PROC: return 16;
+ case SPELL_ATTR3_NO_INITIAL_AGGRO: return 17;
+ case SPELL_ATTR3_IGNORE_HIT_RESULT: return 18;
+ case SPELL_ATTR3_DISABLE_PROC: return 19;
+ case SPELL_ATTR3_DEATH_PERSISTENT: return 20;
+ case SPELL_ATTR3_UNK21: return 21;
+ case SPELL_ATTR3_REQ_WAND: return 22;
+ case SPELL_ATTR3_UNK23: return 23;
+ case SPELL_ATTR3_REQ_OFFHAND: return 24;
+ case SPELL_ATTR3_TREAT_AS_PERIODIC: return 25;
+ case SPELL_ATTR3_CAN_PROC_WITH_TRIGGERED: return 26;
+ case SPELL_ATTR3_DRAIN_SOUL: return 27;
+ case SPELL_ATTR3_UNK28: return 28;
+ case SPELL_ATTR3_NO_DONE_BONUS: return 29;
+ case SPELL_ATTR3_DONT_DISPLAY_RANGE: return 30;
+ case SPELL_ATTR3_UNK31: return 31;
+ default: throw std::out_of_range("value");
+ }
+}
+
/******************************************************************\
|* data for enum 'SpellAttr4' in 'SharedDefines.h' auto-generated *|
\******************************************************************/
@@ -631,6 +864,47 @@ TC_API_EXPORT SpellAttr4 EnumUtils<SpellAttr4>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<SpellAttr4>::ToIndex(SpellAttr4 value)
+{
+ switch (value)
+ {
+ case SPELL_ATTR4_IGNORE_RESISTANCES: return 0;
+ case SPELL_ATTR4_PROC_ONLY_ON_CASTER: return 1;
+ case SPELL_ATTR4_FADES_WHILE_LOGGED_OUT: return 2;
+ case SPELL_ATTR4_UNK3: return 3;
+ case SPELL_ATTR4_UNK4: return 4;
+ case SPELL_ATTR4_UNK5: return 5;
+ case SPELL_ATTR4_NOT_STEALABLE: return 6;
+ case SPELL_ATTR4_CAN_CAST_WHILE_CASTING: return 7;
+ case SPELL_ATTR4_FIXED_DAMAGE: return 8;
+ case SPELL_ATTR4_TRIGGER_ACTIVATE: return 9;
+ case SPELL_ATTR4_SPELL_VS_EXTEND_COST: return 10;
+ case SPELL_ATTR4_UNK11: return 11;
+ case SPELL_ATTR4_UNK12: return 12;
+ case SPELL_ATTR4_UNK13: return 13;
+ case SPELL_ATTR4_DAMAGE_DOESNT_BREAK_AURAS: return 14;
+ case SPELL_ATTR4_UNK15: return 15;
+ case SPELL_ATTR4_NOT_USABLE_IN_ARENA: return 16;
+ case SPELL_ATTR4_USABLE_IN_ARENA: return 17;
+ case SPELL_ATTR4_AREA_TARGET_CHAIN: return 18;
+ case SPELL_ATTR4_UNK19: return 19;
+ case SPELL_ATTR4_NOT_CHECK_SELFCAST_POWER: return 20;
+ case SPELL_ATTR4_UNK21: return 21;
+ case SPELL_ATTR4_UNK22: return 22;
+ case SPELL_ATTR4_CANT_TRIGGER_ITEM_SPELLS: return 23;
+ case SPELL_ATTR4_UNK24: return 24;
+ case SPELL_ATTR4_IS_PET_SCALING: return 25;
+ case SPELL_ATTR4_CAST_ONLY_IN_OUTLAND: return 26;
+ case SPELL_ATTR4_INHERIT_CRIT_FROM_AURA: return 27;
+ case SPELL_ATTR4_UNK28: return 28;
+ case SPELL_ATTR4_UNK29: return 29;
+ case SPELL_ATTR4_UNK30: return 30;
+ case SPELL_ATTR4_UNK31: return 31;
+ default: throw std::out_of_range("value");
+ }
+}
+
/******************************************************************\
|* data for enum 'SpellAttr5' in 'SharedDefines.h' auto-generated *|
\******************************************************************/
@@ -719,6 +993,47 @@ TC_API_EXPORT SpellAttr5 EnumUtils<SpellAttr5>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<SpellAttr5>::ToIndex(SpellAttr5 value)
+{
+ switch (value)
+ {
+ case SPELL_ATTR5_CAN_CHANNEL_WHEN_MOVING: return 0;
+ case SPELL_ATTR5_NO_REAGENT_WHILE_PREP: return 1;
+ case SPELL_ATTR5_REMOVE_ON_ARENA_ENTER: return 2;
+ case SPELL_ATTR5_USABLE_WHILE_STUNNED: return 3;
+ case SPELL_ATTR5_UNK4: return 4;
+ case SPELL_ATTR5_SINGLE_TARGET_SPELL: return 5;
+ case SPELL_ATTR5_UNK6: return 6;
+ case SPELL_ATTR5_UNK7: return 7;
+ case SPELL_ATTR5_UNK8: return 8;
+ case SPELL_ATTR5_START_PERIODIC_AT_APPLY: return 9;
+ case SPELL_ATTR5_HIDE_DURATION: return 10;
+ case SPELL_ATTR5_ALLOW_TARGET_OF_TARGET_AS_TARGET: return 11;
+ case SPELL_ATTR5_UNK12: return 12;
+ case SPELL_ATTR5_HASTE_AFFECT_DURATION: return 13;
+ case SPELL_ATTR5_UNK14: return 14;
+ case SPELL_ATTR5_UNK15: return 15;
+ case SPELL_ATTR5_UNK16: return 16;
+ case SPELL_ATTR5_USABLE_WHILE_FEARED: return 17;
+ case SPELL_ATTR5_USABLE_WHILE_CONFUSED: return 18;
+ case SPELL_ATTR5_DONT_TURN_DURING_CAST: return 19;
+ case SPELL_ATTR5_UNK20: return 20;
+ case SPELL_ATTR5_UNK21: return 21;
+ case SPELL_ATTR5_UNK22: return 22;
+ case SPELL_ATTR5_UNK23: return 23;
+ case SPELL_ATTR5_UNK24: return 24;
+ case SPELL_ATTR5_UNK25: return 25;
+ case SPELL_ATTR5_SKIP_CHECKCAST_LOS_CHECK: return 26;
+ case SPELL_ATTR5_DONT_SHOW_AURA_IF_SELF_CAST: return 27;
+ case SPELL_ATTR5_DONT_SHOW_AURA_IF_NOT_SELF_CAST: return 28;
+ case SPELL_ATTR5_UNK29: return 29;
+ case SPELL_ATTR5_UNK30: return 30;
+ case SPELL_ATTR5_UNK31: return 31;
+ default: throw std::out_of_range("value");
+ }
+}
+
/******************************************************************\
|* data for enum 'SpellAttr6' in 'SharedDefines.h' auto-generated *|
\******************************************************************/
@@ -807,6 +1122,47 @@ TC_API_EXPORT SpellAttr6 EnumUtils<SpellAttr6>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<SpellAttr6>::ToIndex(SpellAttr6 value)
+{
+ switch (value)
+ {
+ case SPELL_ATTR6_DONT_DISPLAY_COOLDOWN: return 0;
+ case SPELL_ATTR6_ONLY_IN_ARENA: return 1;
+ case SPELL_ATTR6_IGNORE_CASTER_AURAS: return 2;
+ case SPELL_ATTR6_ASSIST_IGNORE_IMMUNE_FLAG: return 3;
+ case SPELL_ATTR6_UNK4: return 4;
+ case SPELL_ATTR6_DONT_CONSUME_PROC_CHARGES: return 5;
+ case SPELL_ATTR6_USE_SPELL_CAST_EVENT: return 6;
+ case SPELL_ATTR6_UNK7: return 7;
+ case SPELL_ATTR6_CANT_TARGET_CROWD_CONTROLLED: return 8;
+ case SPELL_ATTR6_UNK9: return 9;
+ case SPELL_ATTR6_CAN_TARGET_POSSESSED_FRIENDS: return 10;
+ case SPELL_ATTR6_NOT_IN_RAID_INSTANCE: return 11;
+ case SPELL_ATTR6_CASTABLE_WHILE_ON_VEHICLE: return 12;
+ case SPELL_ATTR6_CAN_TARGET_INVISIBLE: return 13;
+ case SPELL_ATTR6_UNK14: return 14;
+ case SPELL_ATTR6_UNK15: return 15;
+ case SPELL_ATTR6_UNK16: return 16;
+ case SPELL_ATTR6_UNK17: return 17;
+ case SPELL_ATTR6_CAST_BY_CHARMER: return 18;
+ case SPELL_ATTR6_UNK19: return 19;
+ case SPELL_ATTR6_ONLY_VISIBLE_TO_CASTER: return 20;
+ case SPELL_ATTR6_CLIENT_UI_TARGET_EFFECTS: return 21;
+ case SPELL_ATTR6_UNK22: return 22;
+ case SPELL_ATTR6_UNK23: return 23;
+ case SPELL_ATTR6_CAN_TARGET_UNTARGETABLE: return 24;
+ case SPELL_ATTR6_NOT_RESET_SWING_IF_INSTANT: return 25;
+ case SPELL_ATTR6_UNK26: return 26;
+ case SPELL_ATTR6_LIMIT_PCT_HEALING_MODS: return 27;
+ case SPELL_ATTR6_UNK28: return 28;
+ case SPELL_ATTR6_LIMIT_PCT_DAMAGE_MODS: return 29;
+ case SPELL_ATTR6_UNK30: return 30;
+ case SPELL_ATTR6_IGNORE_CATEGORY_COOLDOWN_MODS: return 31;
+ default: throw std::out_of_range("value");
+ }
+}
+
/******************************************************************\
|* data for enum 'SpellAttr7' in 'SharedDefines.h' auto-generated *|
\******************************************************************/
@@ -895,6 +1251,47 @@ TC_API_EXPORT SpellAttr7 EnumUtils<SpellAttr7>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<SpellAttr7>::ToIndex(SpellAttr7 value)
+{
+ switch (value)
+ {
+ case SPELL_ATTR7_UNK0: return 0;
+ case SPELL_ATTR7_IGNORE_DURATION_MODS: return 1;
+ case SPELL_ATTR7_REACTIVATE_AT_RESURRECT: return 2;
+ case SPELL_ATTR7_IS_CHEAT_SPELL: return 3;
+ case SPELL_ATTR7_UNK4: return 4;
+ case SPELL_ATTR7_SUMMON_PLAYER_TOTEM: return 5;
+ case SPELL_ATTR7_NO_PUSHBACK_ON_DAMAGE: return 6;
+ case SPELL_ATTR7_UNK7: return 7;
+ case SPELL_ATTR7_HORDE_ONLY: return 8;
+ case SPELL_ATTR7_ALLIANCE_ONLY: return 9;
+ case SPELL_ATTR7_DISPEL_CHARGES: return 10;
+ case SPELL_ATTR7_INTERRUPT_ONLY_NONPLAYER: return 11;
+ case SPELL_ATTR7_UNK12: return 12;
+ case SPELL_ATTR7_UNK13: return 13;
+ case SPELL_ATTR7_UNK14: return 14;
+ case SPELL_ATTR7_UNK15: return 15;
+ case SPELL_ATTR7_CAN_RESTORE_SECONDARY_POWER: return 16;
+ case SPELL_ATTR7_UNK17: return 17;
+ case SPELL_ATTR7_HAS_CHARGE_EFFECT: return 18;
+ case SPELL_ATTR7_ZONE_TELEPORT: return 19;
+ case SPELL_ATTR7_UNK20: return 20;
+ case SPELL_ATTR7_UNK21: return 21;
+ case SPELL_ATTR7_IGNORE_COLD_WEATHER_FLYING: return 22;
+ case SPELL_ATTR7_UNK23: return 23;
+ case SPELL_ATTR7_UNK24: return 24;
+ case SPELL_ATTR7_UNK25: return 25;
+ case SPELL_ATTR7_UNK26: return 26;
+ case SPELL_ATTR7_UNK27: return 27;
+ case SPELL_ATTR7_CONSOLIDATED_RAID_BUFF: return 28;
+ case SPELL_ATTR7_UNK29: return 29;
+ case SPELL_ATTR7_UNK30: return 30;
+ case SPELL_ATTR7_CLIENT_INDICATOR: return 31;
+ default: throw std::out_of_range("value");
+ }
+}
+
/*****************************************************************\
|* data for enum 'Mechanics' in 'SharedDefines.h' auto-generated *|
\*****************************************************************/
@@ -983,6 +1380,47 @@ TC_API_EXPORT Mechanics EnumUtils<Mechanics>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<Mechanics>::ToIndex(Mechanics value)
+{
+ switch (value)
+ {
+ case MECHANIC_NONE: return 0;
+ case MECHANIC_CHARM: return 1;
+ case MECHANIC_DISORIENTED: return 2;
+ case MECHANIC_DISARM: return 3;
+ case MECHANIC_DISTRACT: return 4;
+ case MECHANIC_FEAR: return 5;
+ case MECHANIC_GRIP: return 6;
+ case MECHANIC_ROOT: return 7;
+ case MECHANIC_SLOW_ATTACK: return 8;
+ case MECHANIC_SILENCE: return 9;
+ case MECHANIC_SLEEP: return 10;
+ case MECHANIC_SNARE: return 11;
+ case MECHANIC_STUN: return 12;
+ case MECHANIC_FREEZE: return 13;
+ case MECHANIC_KNOCKOUT: return 14;
+ case MECHANIC_BLEED: return 15;
+ case MECHANIC_BANDAGE: return 16;
+ case MECHANIC_POLYMORPH: return 17;
+ case MECHANIC_BANISH: return 18;
+ case MECHANIC_SHIELD: return 19;
+ case MECHANIC_SHACKLE: return 20;
+ case MECHANIC_MOUNT: return 21;
+ case MECHANIC_INFECTED: return 22;
+ case MECHANIC_TURN: return 23;
+ case MECHANIC_HORROR: return 24;
+ case MECHANIC_INVULNERABILITY: return 25;
+ case MECHANIC_INTERRUPT: return 26;
+ case MECHANIC_DAZE: return 27;
+ case MECHANIC_DISCOVERY: return 28;
+ case MECHANIC_IMMUNE_SHIELD: return 29;
+ case MECHANIC_SAPPED: return 30;
+ case MECHANIC_ENRAGED: return 31;
+ default: throw std::out_of_range("value");
+ }
+}
+
/*********************************************************************\
|* data for enum 'SpellDmgClass' in 'SharedDefines.h' auto-generated *|
\*********************************************************************/
@@ -1015,6 +1453,19 @@ TC_API_EXPORT SpellDmgClass EnumUtils<SpellDmgClass>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<SpellDmgClass>::ToIndex(SpellDmgClass value)
+{
+ switch (value)
+ {
+ case SPELL_DAMAGE_CLASS_NONE: return 0;
+ case SPELL_DAMAGE_CLASS_MAGIC: return 1;
+ case SPELL_DAMAGE_CLASS_MELEE: return 2;
+ case SPELL_DAMAGE_CLASS_RANGED: return 3;
+ default: throw std::out_of_range("value");
+ }
+}
+
/***************************************************************************\
|* data for enum 'SpellPreventionType' in 'SharedDefines.h' auto-generated *|
\***************************************************************************/
@@ -1045,6 +1496,18 @@ TC_API_EXPORT SpellPreventionType EnumUtils<SpellPreventionType>::FromIndex(size
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<SpellPreventionType>::ToIndex(SpellPreventionType value)
+{
+ switch (value)
+ {
+ case SPELL_PREVENTION_TYPE_NONE: return 0;
+ case SPELL_PREVENTION_TYPE_SILENCE: return 1;
+ case SPELL_PREVENTION_TYPE_PACIFY: return 2;
+ default: throw std::out_of_range("value");
+ }
+}
+
/*************************************************************\
|* data for enum 'Emote' in 'SharedDefines.h' auto-generated *|
\*************************************************************/
@@ -1417,6 +1880,189 @@ TC_API_EXPORT Emote EnumUtils<Emote>::FromIndex(size_t index)
}
}
+template <>
+TC_API_EXPORT size_t EnumUtils<Emote>::ToIndex(Emote value)
+{
+ switch (value)
+ {
+ case EMOTE_ONESHOT_TALK: return 0;
+ case EMOTE_ONESHOT_BOW: return 1;
+ case EMOTE_ONESHOT_WAVE: return 2;
+ case EMOTE_ONESHOT_CHEER: return 3;
+ case EMOTE_ONESHOT_EXCLAMATION: return 4;
+ case EMOTE_ONESHOT_QUESTION: return 5;
+ case EMOTE_ONESHOT_EAT: return 6;
+ case EMOTE_STATE_DANCE: return 7;
+ case EMOTE_ONESHOT_LAUGH: return 8;
+ case EMOTE_STATE_SLEEP: return 9;
+ case EMOTE_STATE_SIT: return 10;
+ case EMOTE_ONESHOT_RUDE: return 11;
+ case EMOTE_ONESHOT_ROAR: return 12;
+ case EMOTE_ONESHOT_KNEEL: return 13;
+ case EMOTE_ONESHOT_KISS: return 14;
+ case EMOTE_ONESHOT_CRY: return 15;
+ case EMOTE_ONESHOT_CHICKEN: return 16;
+ case EMOTE_ONESHOT_BEG: return 17;
+ case EMOTE_ONESHOT_APPLAUD: return 18;
+ case EMOTE_ONESHOT_SHOUT: return 19;
+ case EMOTE_ONESHOT_FLEX: return 20;
+ case EMOTE_ONESHOT_SHY: return 21;
+ case EMOTE_ONESHOT_POINT: return 22;
+ case EMOTE_STATE_STAND: return 23;
+ case EMOTE_STATE_READY_UNARMED: return 24;
+ case EMOTE_STATE_WORK_SHEATHED: return 25;
+ case EMOTE_STATE_POINT: return 26;
+ case EMOTE_STATE_NONE: return 27;
+ case EMOTE_ONESHOT_WOUND: return 28;
+ case EMOTE_ONESHOT_WOUND_CRITICAL: return 29;
+ case EMOTE_ONESHOT_ATTACK_UNARMED: return 30;
+ case EMOTE_ONESHOT_ATTACK1H: return 31;
+ case EMOTE_ONESHOT_ATTACK2HTIGHT: return 32;
+ case EMOTE_ONESHOT_ATTACK2H_LOOSE: return 33;
+ case EMOTE_ONESHOT_PARRY_UNARMED: return 34;
+ case EMOTE_ONESHOT_PARRY_SHIELD: return 35;
+ case EMOTE_ONESHOT_READY_UNARMED: return 36;
+ case EMOTE_ONESHOT_READY1H: return 37;
+ case EMOTE_ONESHOT_READY_BOW: return 38;
+ case EMOTE_ONESHOT_SPELL_PRECAST: return 39;
+ case EMOTE_ONESHOT_SPELL_CAST: return 40;
+ case EMOTE_ONESHOT_BATTLE_ROAR: return 41;
+ case EMOTE_ONESHOT_SPECIALATTACK1H: return 42;
+ case EMOTE_ONESHOT_KICK: return 43;
+ case EMOTE_ONESHOT_ATTACK_THROWN: return 44;
+ case EMOTE_STATE_STUN: return 45;
+ case EMOTE_STATE_DEAD: return 46;
+ case EMOTE_ONESHOT_SALUTE: return 47;
+ case EMOTE_STATE_KNEEL: return 48;
+ case EMOTE_STATE_USE_STANDING: return 49;
+ case EMOTE_ONESHOT_WAVE_NO_SHEATHE: return 50;
+ case EMOTE_ONESHOT_CHEER_NO_SHEATHE: return 51;
+ case EMOTE_ONESHOT_EAT_NO_SHEATHE: return 52;
+ case EMOTE_STATE_STUN_NO_SHEATHE: return 53;
+ case EMOTE_ONESHOT_DANCE: return 54;
+ case EMOTE_ONESHOT_SALUTE_NO_SHEATH: return 55;
+ case EMOTE_STATE_USE_STANDING_NO_SHEATHE: return 56;
+ case EMOTE_ONESHOT_LAUGH_NO_SHEATHE: return 57;
+ case EMOTE_STATE_WORK: return 58;
+ case EMOTE_STATE_SPELL_PRECAST: return 59;
+ case EMOTE_ONESHOT_READY_RIFLE: return 60;
+ case EMOTE_STATE_READY_RIFLE: return 61;
+ case EMOTE_STATE_WORK_MINING: return 62;
+ case EMOTE_STATE_WORK_CHOPWOOD: return 63;
+ case EMOTE_STATE_APPLAUD: return 64;
+ case EMOTE_ONESHOT_LIFTOFF: return 65;
+ case EMOTE_ONESHOT_YES: return 66;
+ case EMOTE_ONESHOT_NO: return 67;
+ case EMOTE_ONESHOT_TRAIN: return 68;
+ case EMOTE_ONESHOT_LAND: return 69;
+ case EMOTE_STATE_AT_EASE: return 70;
+ case EMOTE_STATE_READY1H: return 71;
+ case EMOTE_STATE_SPELL_KNEEL_START: return 72;
+ case EMOTE_STATE_SUBMERGED: return 73;
+ case EMOTE_ONESHOT_SUBMERGE: return 74;
+ case EMOTE_STATE_READY2H: return 75;
+ case EMOTE_STATE_READY_BOW: return 76;
+ case EMOTE_ONESHOT_MOUNT_SPECIAL: return 77;
+ case EMOTE_STATE_TALK: return 78;
+ case EMOTE_STATE_FISHING: return 79;
+ case EMOTE_ONESHOT_FISHING: return 80;
+ case EMOTE_ONESHOT_LOOT: return 81;
+ case EMOTE_STATE_WHIRLWIND: return 82;
+ case EMOTE_STATE_DROWNED: return 83;
+ case EMOTE_STATE_HOLD_BOW: return 84;
+ case EMOTE_STATE_HOLD_RIFLE: return 85;
+ case EMOTE_STATE_HOLD_THROWN: return 86;
+ case EMOTE_ONESHOT_DROWN: return 87;
+ case EMOTE_ONESHOT_STOMP: return 88;
+ case EMOTE_ONESHOT_ATTACK_OFF: return 89;
+ case EMOTE_ONESHOT_ATTACK_OFF_PIERCE: return 90;
+ case EMOTE_STATE_ROAR: return 91;
+ case EMOTE_STATE_LAUGH: return 92;
+ case EMOTE_ONESHOT_CREATURE_SPECIAL: return 93;
+ case EMOTE_ONESHOT_JUMPLANDRUN: return 94;
+ case EMOTE_ONESHOT_JUMPEND: return 95;
+ case EMOTE_ONESHOT_TALK_NO_SHEATHE: return 96;
+ case EMOTE_ONESHOT_POINT_NO_SHEATHE: return 97;
+ case EMOTE_STATE_CANNIBALIZE: return 98;
+ case EMOTE_ONESHOT_JUMPSTART: return 99;
+ case EMOTE_STATE_DANCESPECIAL: return 100;
+ case EMOTE_ONESHOT_DANCESPECIAL: return 101;
+ case EMOTE_ONESHOT_CUSTOM_SPELL_01: return 102;
+ case EMOTE_ONESHOT_CUSTOM_SPELL_02: return 103;
+ case EMOTE_ONESHOT_CUSTOM_SPELL_03: return 104;
+ case EMOTE_ONESHOT_CUSTOM_SPELL_04: return 105;
+ case EMOTE_ONESHOT_CUSTOM_SPELL_05: return 106;
+ case EMOTE_ONESHOT_CUSTOM_SPELL_06: return 107;
+ case EMOTE_ONESHOT_CUSTOM_SPELL_07: return 108;
+ case EMOTE_ONESHOT_CUSTOM_SPELL_08: return 109;
+ case EMOTE_ONESHOT_CUSTOM_SPELL_09: return 110;
+ case EMOTE_ONESHOT_CUSTOM_SPELL_10: return 111;
+ case EMOTE_STATE_EXCLAIM: return 112;
+ case EMOTE_STATE_DANCE_CUSTOM: return 113;
+ case EMOTE_STATE_SIT_CHAIR_MED: return 114;
+ case EMOTE_STATE_CUSTOM_SPELL_01: return 115;
+ case EMOTE_STATE_CUSTOM_SPELL_02: return 116;
+ case EMOTE_STATE_EAT: return 117;
+ case EMOTE_STATE_CUSTOM_SPELL_04: return 118;
+ case EMOTE_STATE_CUSTOM_SPELL_03: return 119;
+ case EMOTE_STATE_CUSTOM_SPELL_05: return 120;
+ case EMOTE_STATE_SPELLEFFECT_HOLD: return 121;
+ case EMOTE_STATE_EAT_NO_SHEATHE: return 122;
+ case EMOTE_STATE_MOUNT: return 123;
+ case EMOTE_STATE_READY2HL: return 124;
+ case EMOTE_STATE_SIT_CHAIR_HIGH: return 125;
+ case EMOTE_STATE_FALL: return 126;
+ case EMOTE_STATE_LOOT: return 127;
+ case EMOTE_STATE_SUBMERGED_NEW: return 128;
+ case EMOTE_ONESHOT_COWER: return 129;
+ case EMOTE_STATE_COWER: return 130;
+ case EMOTE_ONESHOT_USE_STANDING: return 131;
+ case EMOTE_STATE_STEALTH_STAND: return 132;
+ case EMOTE_ONESHOT_OMNICAST_GHOUL: return 133;
+ case EMOTE_ONESHOT_ATTACK_BOW: return 134;
+ case EMOTE_ONESHOT_ATTACK_RIFLE: return 135;
+ case EMOTE_STATE_SWIM_IDLE: return 136;
+ case EMOTE_STATE_ATTACK_UNARMED: return 137;
+ case EMOTE_ONESHOT_SPELL_CAST_W_SOUND: return 138;
+ case EMOTE_ONESHOT_DODGE: return 139;
+ case EMOTE_ONESHOT_PARRY1H: return 140;
+ case EMOTE_ONESHOT_PARRY2H: return 141;
+ case EMOTE_ONESHOT_PARRY2HL: return 142;
+ case EMOTE_STATE_FLYFALL: return 143;
+ case EMOTE_ONESHOT_FLYDEATH: return 144;
+ case EMOTE_STATE_FLY_FALL: return 145;
+ case EMOTE_ONESHOT_FLY_SIT_GROUND_DOWN: return 146;
+ case EMOTE_ONESHOT_FLY_SIT_GROUND_UP: return 147;
+ case EMOTE_ONESHOT_EMERGE: return 148;
+ case EMOTE_ONESHOT_DRAGON_SPIT: return 149;
+ case EMOTE_STATE_SPECIAL_UNARMED: return 150;
+ case EMOTE_ONESHOT_FLYGRAB: return 151;
+ case EMOTE_STATE_FLYGRABCLOSED: return 152;
+ case EMOTE_ONESHOT_FLYGRABTHROWN: return 153;
+ case EMOTE_STATE_FLY_SIT_GROUND: return 154;
+ case EMOTE_STATE_WALK_BACKWARDS: return 155;
+ case EMOTE_ONESHOT_FLYTALK: return 156;
+ case EMOTE_ONESHOT_FLYATTACK1H: return 157;
+ case EMOTE_STATE_CUSTOM_SPELL_08: return 158;
+ case EMOTE_ONESHOT_FLY_DRAGON_SPIT: return 159;
+ case EMOTE_STATE_SIT_CHAIR_LOW: return 160;
+ case EMOTE_ONESHOT_STUN: return 161;
+ case EMOTE_ONESHOT_SPELL_CAST_OMNI: return 162;
+ case EMOTE_STATE_READY_THROWN: return 163;
+ case EMOTE_ONESHOT_WORK_CHOPWOOD: return 164;
+ case EMOTE_ONESHOT_WORK_MINING: return 165;
+ case EMOTE_STATE_SPELL_CHANNEL_OMNI: return 166;
+ case EMOTE_STATE_SPELL_CHANNEL_DIRECTED: return 167;
+ case EMOTE_STAND_STATE_NONE: return 168;
+ case EMOTE_STATE_READYJOUST: return 169;
+ case EMOTE_STATE_STRANGULATE: return 170;
+ case EMOTE_STATE_READY_SPELL_OMNI: return 171;
+ case EMOTE_STATE_HOLD_JOUST: return 172;
+ case EMOTE_ONESHOT_CRY_JAINA: return 173;
+ default: throw std::out_of_range("value");
+ }
+}
+
/************************************************************************\
|* data for enum 'SpellFamilyNames' in 'SharedDefines.h' auto-generated *|
\************************************************************************/
@@ -1470,5 +2116,28 @@ TC_API_EXPORT SpellFamilyNames EnumUtils<SpellFamilyNames>::FromIndex(size_t ind
default: throw std::out_of_range("index");
}
}
+
+template <>
+TC_API_EXPORT size_t EnumUtils<SpellFamilyNames>::ToIndex(SpellFamilyNames value)
+{
+ switch (value)
+ {
+ case SPELLFAMILY_GENERIC: return 0;
+ case SPELLFAMILY_UNK1: return 1;
+ case SPELLFAMILY_MAGE: return 2;
+ case SPELLFAMILY_WARRIOR: return 3;
+ case SPELLFAMILY_WARLOCK: return 4;
+ case SPELLFAMILY_PRIEST: return 5;
+ case SPELLFAMILY_DRUID: return 6;
+ case SPELLFAMILY_ROGUE: return 7;
+ case SPELLFAMILY_HUNTER: return 8;
+ case SPELLFAMILY_PALADIN: return 9;
+ case SPELLFAMILY_SHAMAN: return 10;
+ case SPELLFAMILY_UNK2: return 11;
+ case SPELLFAMILY_POTION: return 12;
+ case SPELLFAMILY_DEATHKNIGHT: return 13;
+ case SPELLFAMILY_PET: return 14;
+ default: throw std::out_of_range("value");
+ }
}
}