diff options
| author | Peter Keresztes Schmidt <carbenium@outlook.com> | 2020-08-20 00:46:52 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-02-03 00:18:48 +0100 |
| commit | 3c82863c528fa9ea1bd5eb75fa596a99266431b7 (patch) | |
| tree | 7434bb682d3ff216357055500947c5a1fb8237f6 /src/server/game/Entities/Creature | |
| parent | 3ba767c438f2def1d619eda34c6b843c29ebc518 (diff) | |
Core/ChatCommands: Check whether a passed numeric enum value is valid (#25285)
(cherry picked from commit 4286e7aa02e777268b25d8a5bcc1ee87f7b16c4d)
Diffstat (limited to 'src/server/game/Entities/Creature')
| -rw-r--r-- | src/server/game/Entities/Creature/enuminfo_CreatureData.cpp | 44 |
1 files changed, 41 insertions, 3 deletions
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"); + } } } |
