Scripts/Commands: Convert remaining debug commands (PR #25429)

(cherry picked from commit 062c55f1ab9c84396ce5b054945f5a908e3a354f)
This commit is contained in:
Peter Keresztes Schmidt
2022-02-05 20:50:33 +01:00
committed by Shauren
parent 54fc62db52
commit 26f3c25dae
12 changed files with 2378 additions and 217 deletions
@@ -0,0 +1 @@
DELETE FROM `command` WHERE name='debug setvid';
+4 -3
View File
@@ -35,7 +35,8 @@ namespace WorldPackets
} }
} }
enum ChatNotify // EnumUtils: DESCRIBE THIS
enum ChatNotify : uint8
{ {
CHAT_JOINED_NOTICE = 0x00, //+ "%s joined channel."; CHAT_JOINED_NOTICE = 0x00, //+ "%s joined channel.";
CHAT_LEFT_NOTICE = 0x01, //+ "%s left channel."; CHAT_LEFT_NOTICE = 0x01, //+ "%s left channel.";
@@ -75,8 +76,8 @@ enum ChatNotify
CHAT_NOT_IN_LFG_NOTICE = 0x21, //+ "[%s] You must be queued in looking for group before joining this channel."; -- The user must be in the looking for group system to join LFG chat channels. CHAT_NOT_IN_LFG_NOTICE = 0x21, //+ "[%s] You must be queued in looking for group before joining this channel."; -- The user must be in the looking for group system to join LFG chat channels.
CHAT_VOICE_ON_NOTICE = 0x22, //+ "[%s] Channel voice enabled by %s."; CHAT_VOICE_ON_NOTICE = 0x22, //+ "[%s] Channel voice enabled by %s.";
CHAT_VOICE_OFF_NOTICE = 0x23, //+ "[%s] Channel voice disabled by %s."; CHAT_VOICE_OFF_NOTICE = 0x23, //+ "[%s] Channel voice disabled by %s.";
CHAT_TRIAL_RESTRICTED = 0x24, CHAT_TRIAL_RESTRICTED = 0x24, //+ "[%s] Free Trial accounts cannot send messages to this channel. |cffffd000|Hstorecategory:gametime|h[Click To Upgrade]|h|r"
CHAT_NOT_ALLOWED_IN_CHANNEL = 0x25 CHAT_NOT_ALLOWED_IN_CHANNEL = 0x25 //+ "That operation is not permitted in this channel."
}; };
enum ChannelFlags enum ChannelFlags
@@ -0,0 +1,172 @@
/*
* 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 "Channel.h"
#include "Define.h"
#include "SmartEnum.h"
#include <stdexcept>
namespace Trinity::Impl::EnumUtilsImpl
{
/************************************************************\
|* data for enum 'ChatNotify' in 'Channel.h' auto-generated *|
\************************************************************/
template <>
TC_API_EXPORT EnumText EnumUtils<ChatNotify>::ToString(ChatNotify value)
{
switch (value)
{
case CHAT_JOINED_NOTICE: return { "CHAT_JOINED_NOTICE", "CHAT_JOINED_NOTICE", "+ \042%s joined channel.\042;" };
case CHAT_LEFT_NOTICE: return { "CHAT_LEFT_NOTICE", "CHAT_LEFT_NOTICE", "+ \042%s left channel.\042;" };
case CHAT_YOU_JOINED_NOTICE: return { "CHAT_YOU_JOINED_NOTICE", "CHAT_YOU_JOINED_NOTICE", "+ \042Joined Channel: [%s]\042; -- You joined" };
case CHAT_YOU_LEFT_NOTICE: return { "CHAT_YOU_LEFT_NOTICE", "CHAT_YOU_LEFT_NOTICE", "+ \042Left Channel: [%s]\042; -- You left" };
case CHAT_WRONG_PASSWORD_NOTICE: return { "CHAT_WRONG_PASSWORD_NOTICE", "CHAT_WRONG_PASSWORD_NOTICE", "+ \042Wrong password for %s.\042;" };
case CHAT_NOT_MEMBER_NOTICE: return { "CHAT_NOT_MEMBER_NOTICE", "CHAT_NOT_MEMBER_NOTICE", "+ \042Not on channel %s.\042;" };
case CHAT_NOT_MODERATOR_NOTICE: return { "CHAT_NOT_MODERATOR_NOTICE", "CHAT_NOT_MODERATOR_NOTICE", "+ \042Not a moderator of %s.\042;" };
case CHAT_PASSWORD_CHANGED_NOTICE: return { "CHAT_PASSWORD_CHANGED_NOTICE", "CHAT_PASSWORD_CHANGED_NOTICE", "+ \042[%s] Password changed by %s.\042;" };
case CHAT_OWNER_CHANGED_NOTICE: return { "CHAT_OWNER_CHANGED_NOTICE", "CHAT_OWNER_CHANGED_NOTICE", "+ \042[%s] Owner changed to %s.\042;" };
case CHAT_PLAYER_NOT_FOUND_NOTICE: return { "CHAT_PLAYER_NOT_FOUND_NOTICE", "CHAT_PLAYER_NOT_FOUND_NOTICE", "+ \042[%s] Player %s was not found.\042;" };
case CHAT_NOT_OWNER_NOTICE: return { "CHAT_NOT_OWNER_NOTICE", "CHAT_NOT_OWNER_NOTICE", "+ \042[%s] You are not the channel owner.\042;" };
case CHAT_CHANNEL_OWNER_NOTICE: return { "CHAT_CHANNEL_OWNER_NOTICE", "CHAT_CHANNEL_OWNER_NOTICE", "+ \042[%s] Channel owner is %s.\042;" };
case CHAT_MODE_CHANGE_NOTICE: return { "CHAT_MODE_CHANGE_NOTICE", "CHAT_MODE_CHANGE_NOTICE", "?" };
case CHAT_ANNOUNCEMENTS_ON_NOTICE: return { "CHAT_ANNOUNCEMENTS_ON_NOTICE", "CHAT_ANNOUNCEMENTS_ON_NOTICE", "+ \042[%s] Channel announcements enabled by %s.\042;" };
case CHAT_ANNOUNCEMENTS_OFF_NOTICE: return { "CHAT_ANNOUNCEMENTS_OFF_NOTICE", "CHAT_ANNOUNCEMENTS_OFF_NOTICE", "+ \042[%s] Channel announcements disabled by %s.\042;" };
case CHAT_MODERATION_ON_NOTICE: return { "CHAT_MODERATION_ON_NOTICE", "CHAT_MODERATION_ON_NOTICE", "+ \042[%s] Channel moderation enabled by %s.\042;" };
case CHAT_MODERATION_OFF_NOTICE: return { "CHAT_MODERATION_OFF_NOTICE", "CHAT_MODERATION_OFF_NOTICE", "+ \042[%s] Channel moderation disabled by %s.\042;" };
case CHAT_MUTED_NOTICE: return { "CHAT_MUTED_NOTICE", "CHAT_MUTED_NOTICE", "+ \042[%s] You do not have permission to speak.\042;" };
case CHAT_PLAYER_KICKED_NOTICE: return { "CHAT_PLAYER_KICKED_NOTICE", "CHAT_PLAYER_KICKED_NOTICE", "? \042[%s] Player %s kicked by %s.\042;" };
case CHAT_BANNED_NOTICE: return { "CHAT_BANNED_NOTICE", "CHAT_BANNED_NOTICE", "+ \042[%s] You are banned from that channel.\042;" };
case CHAT_PLAYER_BANNED_NOTICE: return { "CHAT_PLAYER_BANNED_NOTICE", "CHAT_PLAYER_BANNED_NOTICE", "? \042[%s] Player %s banned by %s.\042;" };
case CHAT_PLAYER_UNBANNED_NOTICE: return { "CHAT_PLAYER_UNBANNED_NOTICE", "CHAT_PLAYER_UNBANNED_NOTICE", "? \042[%s] Player %s unbanned by %s.\042;" };
case CHAT_PLAYER_NOT_BANNED_NOTICE: return { "CHAT_PLAYER_NOT_BANNED_NOTICE", "CHAT_PLAYER_NOT_BANNED_NOTICE", "+ \042[%s] Player %s is not banned.\042;" };
case CHAT_PLAYER_ALREADY_MEMBER_NOTICE: return { "CHAT_PLAYER_ALREADY_MEMBER_NOTICE", "CHAT_PLAYER_ALREADY_MEMBER_NOTICE", "+ \042[%s] Player %s is already on the channel.\042;" };
case CHAT_INVITE_NOTICE: return { "CHAT_INVITE_NOTICE", "CHAT_INVITE_NOTICE", "+ \042%2$s has invited you to join the channel '%1$s'.\042;" };
case CHAT_INVITE_WRONG_FACTION_NOTICE: return { "CHAT_INVITE_WRONG_FACTION_NOTICE", "CHAT_INVITE_WRONG_FACTION_NOTICE", "+ \042Target is in the wrong alliance for %s.\042;" };
case CHAT_WRONG_FACTION_NOTICE: return { "CHAT_WRONG_FACTION_NOTICE", "CHAT_WRONG_FACTION_NOTICE", "+ \042Wrong alliance for %s.\042;" };
case CHAT_INVALID_NAME_NOTICE: return { "CHAT_INVALID_NAME_NOTICE", "CHAT_INVALID_NAME_NOTICE", "+ \042Invalid channel name\042;" };
case CHAT_NOT_MODERATED_NOTICE: return { "CHAT_NOT_MODERATED_NOTICE", "CHAT_NOT_MODERATED_NOTICE", "+ \042%s is not moderated\042;" };
case CHAT_PLAYER_INVITED_NOTICE: return { "CHAT_PLAYER_INVITED_NOTICE", "CHAT_PLAYER_INVITED_NOTICE", "+ \042[%s] You invited %s to join the channel\042;" };
case CHAT_PLAYER_INVITE_BANNED_NOTICE: return { "CHAT_PLAYER_INVITE_BANNED_NOTICE", "CHAT_PLAYER_INVITE_BANNED_NOTICE", "+ \042[%s] %s has been banned.\042;" };
case CHAT_THROTTLED_NOTICE: return { "CHAT_THROTTLED_NOTICE", "CHAT_THROTTLED_NOTICE", "+ \042[%s] The number of messages that can be sent to this channel is limited, please wait to send another message.\042;" };
case CHAT_NOT_IN_AREA_NOTICE: return { "CHAT_NOT_IN_AREA_NOTICE", "CHAT_NOT_IN_AREA_NOTICE", "+ \042[%s] You are not in the correct area for this channel.\042; -- The user is trying to send a chat to a zone specific channel, and they're not physically in that zone." };
case CHAT_NOT_IN_LFG_NOTICE: return { "CHAT_NOT_IN_LFG_NOTICE", "CHAT_NOT_IN_LFG_NOTICE", "+ \042[%s] You must be queued in looking for group before joining this channel.\042; -- The user must be in the looking for group system to join LFG chat channels." };
case CHAT_VOICE_ON_NOTICE: return { "CHAT_VOICE_ON_NOTICE", "CHAT_VOICE_ON_NOTICE", "+ \042[%s] Channel voice enabled by %s.\042;" };
case CHAT_VOICE_OFF_NOTICE: return { "CHAT_VOICE_OFF_NOTICE", "CHAT_VOICE_OFF_NOTICE", "+ \042[%s] Channel voice disabled by %s.\042;" };
case CHAT_TRIAL_RESTRICTED: return { "CHAT_TRIAL_RESTRICTED", "CHAT_TRIAL_RESTRICTED", "+ \042[%s] Free Trial accounts cannot send messages to this channel. |cffffd000|Hstorecategory:gametime|h[Click To Upgrade]|h|r\042" };
case CHAT_NOT_ALLOWED_IN_CHANNEL: return { "CHAT_NOT_ALLOWED_IN_CHANNEL", "CHAT_NOT_ALLOWED_IN_CHANNEL", "+ \042That operation is not permitted in this channel.\042" };
default: throw std::out_of_range("value");
}
}
template <>
TC_API_EXPORT size_t EnumUtils<ChatNotify>::Count() { return 38; }
template <>
TC_API_EXPORT ChatNotify EnumUtils<ChatNotify>::FromIndex(size_t index)
{
switch (index)
{
case 0: return CHAT_JOINED_NOTICE;
case 1: return CHAT_LEFT_NOTICE;
case 2: return CHAT_YOU_JOINED_NOTICE;
case 3: return CHAT_YOU_LEFT_NOTICE;
case 4: return CHAT_WRONG_PASSWORD_NOTICE;
case 5: return CHAT_NOT_MEMBER_NOTICE;
case 6: return CHAT_NOT_MODERATOR_NOTICE;
case 7: return CHAT_PASSWORD_CHANGED_NOTICE;
case 8: return CHAT_OWNER_CHANGED_NOTICE;
case 9: return CHAT_PLAYER_NOT_FOUND_NOTICE;
case 10: return CHAT_NOT_OWNER_NOTICE;
case 11: return CHAT_CHANNEL_OWNER_NOTICE;
case 12: return CHAT_MODE_CHANGE_NOTICE;
case 13: return CHAT_ANNOUNCEMENTS_ON_NOTICE;
case 14: return CHAT_ANNOUNCEMENTS_OFF_NOTICE;
case 15: return CHAT_MODERATION_ON_NOTICE;
case 16: return CHAT_MODERATION_OFF_NOTICE;
case 17: return CHAT_MUTED_NOTICE;
case 18: return CHAT_PLAYER_KICKED_NOTICE;
case 19: return CHAT_BANNED_NOTICE;
case 20: return CHAT_PLAYER_BANNED_NOTICE;
case 21: return CHAT_PLAYER_UNBANNED_NOTICE;
case 22: return CHAT_PLAYER_NOT_BANNED_NOTICE;
case 23: return CHAT_PLAYER_ALREADY_MEMBER_NOTICE;
case 24: return CHAT_INVITE_NOTICE;
case 25: return CHAT_INVITE_WRONG_FACTION_NOTICE;
case 26: return CHAT_WRONG_FACTION_NOTICE;
case 27: return CHAT_INVALID_NAME_NOTICE;
case 28: return CHAT_NOT_MODERATED_NOTICE;
case 29: return CHAT_PLAYER_INVITED_NOTICE;
case 30: return CHAT_PLAYER_INVITE_BANNED_NOTICE;
case 31: return CHAT_THROTTLED_NOTICE;
case 32: return CHAT_NOT_IN_AREA_NOTICE;
case 33: return CHAT_NOT_IN_LFG_NOTICE;
case 34: return CHAT_VOICE_ON_NOTICE;
case 35: return CHAT_VOICE_OFF_NOTICE;
case 36: return CHAT_TRIAL_RESTRICTED;
case 37: return CHAT_NOT_ALLOWED_IN_CHANNEL;
default: throw std::out_of_range("index");
}
}
template <>
TC_API_EXPORT size_t EnumUtils<ChatNotify>::ToIndex(ChatNotify value)
{
switch (value)
{
case CHAT_JOINED_NOTICE: return 0;
case CHAT_LEFT_NOTICE: return 1;
case CHAT_YOU_JOINED_NOTICE: return 2;
case CHAT_YOU_LEFT_NOTICE: return 3;
case CHAT_WRONG_PASSWORD_NOTICE: return 4;
case CHAT_NOT_MEMBER_NOTICE: return 5;
case CHAT_NOT_MODERATOR_NOTICE: return 6;
case CHAT_PASSWORD_CHANGED_NOTICE: return 7;
case CHAT_OWNER_CHANGED_NOTICE: return 8;
case CHAT_PLAYER_NOT_FOUND_NOTICE: return 9;
case CHAT_NOT_OWNER_NOTICE: return 10;
case CHAT_CHANNEL_OWNER_NOTICE: return 11;
case CHAT_MODE_CHANGE_NOTICE: return 12;
case CHAT_ANNOUNCEMENTS_ON_NOTICE: return 13;
case CHAT_ANNOUNCEMENTS_OFF_NOTICE: return 14;
case CHAT_MODERATION_ON_NOTICE: return 15;
case CHAT_MODERATION_OFF_NOTICE: return 16;
case CHAT_MUTED_NOTICE: return 17;
case CHAT_PLAYER_KICKED_NOTICE: return 18;
case CHAT_BANNED_NOTICE: return 19;
case CHAT_PLAYER_BANNED_NOTICE: return 20;
case CHAT_PLAYER_UNBANNED_NOTICE: return 21;
case CHAT_PLAYER_NOT_BANNED_NOTICE: return 22;
case CHAT_PLAYER_ALREADY_MEMBER_NOTICE: return 23;
case CHAT_INVITE_NOTICE: return 24;
case CHAT_INVITE_WRONG_FACTION_NOTICE: return 25;
case CHAT_WRONG_FACTION_NOTICE: return 26;
case CHAT_INVALID_NAME_NOTICE: return 27;
case CHAT_NOT_MODERATED_NOTICE: return 28;
case CHAT_PLAYER_INVITED_NOTICE: return 29;
case CHAT_PLAYER_INVITE_BANNED_NOTICE: return 30;
case CHAT_THROTTLED_NOTICE: return 31;
case CHAT_NOT_IN_AREA_NOTICE: return 32;
case CHAT_NOT_IN_LFG_NOTICE: return 33;
case CHAT_VOICE_ON_NOTICE: return 34;
case CHAT_VOICE_OFF_NOTICE: return 35;
case CHAT_TRIAL_RESTRICTED: return 36;
case CHAT_NOT_ALLOWED_IN_CHANNEL: return 37;
default: throw std::out_of_range("value");
}
}
}
+10 -7
View File
@@ -20,6 +20,7 @@
#include "Define.h" #include "Define.h"
// EnumUtils: DESCRIBE THIS
enum InventoryResult : uint8 enum InventoryResult : uint8
{ {
EQUIP_ERR_OK = 0, EQUIP_ERR_OK = 0,
@@ -136,6 +137,7 @@ enum InventoryResult : uint8
EQUIP_ERR_NOT_IN_RATED_BATTLEGROUND = 111,// You can't do that in a rated battleground. EQUIP_ERR_NOT_IN_RATED_BATTLEGROUND = 111,// You can't do that in a rated battleground.
}; };
// EnumUtils: DESCRIBE THIS
enum BuyResult enum BuyResult
{ {
BUY_ERR_CANT_FIND_ITEM = 0, BUY_ERR_CANT_FIND_ITEM = 0,
@@ -149,15 +151,16 @@ enum BuyResult
BUY_ERR_REPUTATION_REQUIRE = 12 BUY_ERR_REPUTATION_REQUIRE = 12
}; };
// EnumUtils: DESCRIBE THIS
enum SellResult enum SellResult
{ {
SELL_ERR_CANT_FIND_ITEM = 1, // The item was not found. SELL_ERR_CANT_FIND_ITEM = 1, // DESCRIPTION The item was not found.
SELL_ERR_CANT_SELL_ITEM = 2, // The merchant doesn't want that item. SELL_ERR_CANT_SELL_ITEM = 2, // DESCRIPTION The merchant doesn't want that item.
SELL_ERR_CANT_FIND_VENDOR = 3, // The merchant doesn't like you. SELL_ERR_CANT_FIND_VENDOR = 3, // DESCRIPTION The merchant doesn't like you.
SELL_ERR_YOU_DONT_OWN_THAT_ITEM = 4, // You don't own that item. SELL_ERR_YOU_DONT_OWN_THAT_ITEM = 4, // DESCRIPTION You don't own that item.
SELL_ERR_UNK = 5, // nothing appears... SELL_ERR_UNK = 5, // DESCRIPTION nothing appears...
SELL_ERR_ONLY_EMPTY_BAG = 6, // You can only do that with empty bags. SELL_ERR_ONLY_EMPTY_BAG = 6, // DESCRIPTION You can only do that with empty bags.
SELL_ERR_CANT_SELL_TO_THIS_MERCHANT = 7 // You cannot sell items to this merchant. SELL_ERR_CANT_SELL_TO_THIS_MERCHANT = 7 // DESCRIPTION You cannot sell items to this merchant.
}; };
// -1 from client enchantment slot number // -1 from client enchantment slot number
@@ -0,0 +1,508 @@
/*
* 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 "ItemDefines.h"
#include "Define.h"
#include "SmartEnum.h"
#include <stdexcept>
namespace Trinity::Impl::EnumUtilsImpl
{
/*********************************************************************\
|* data for enum 'InventoryResult' in 'ItemDefines.h' auto-generated *|
\*********************************************************************/
template <>
TC_API_EXPORT EnumText EnumUtils<InventoryResult>::ToString(InventoryResult value)
{
switch (value)
{
case EQUIP_ERR_OK: return { "EQUIP_ERR_OK", "EQUIP_ERR_OK", "" };
case EQUIP_ERR_CANT_EQUIP_LEVEL_I: return { "EQUIP_ERR_CANT_EQUIP_LEVEL_I", "EQUIP_ERR_CANT_EQUIP_LEVEL_I", "You must reach level %d to use that item." };
case EQUIP_ERR_CANT_EQUIP_SKILL: return { "EQUIP_ERR_CANT_EQUIP_SKILL", "EQUIP_ERR_CANT_EQUIP_SKILL", "You aren't skilled enough to use that item." };
case EQUIP_ERR_WRONG_SLOT: return { "EQUIP_ERR_WRONG_SLOT", "EQUIP_ERR_WRONG_SLOT", "That item does not go in that slot." };
case EQUIP_ERR_BAG_FULL: return { "EQUIP_ERR_BAG_FULL", "EQUIP_ERR_BAG_FULL", "That bag is full." };
case EQUIP_ERR_BAG_IN_BAG: return { "EQUIP_ERR_BAG_IN_BAG", "EQUIP_ERR_BAG_IN_BAG", "Can't put non-empty bags in other bags." };
case EQUIP_ERR_TRADE_EQUIPPED_BAG: return { "EQUIP_ERR_TRADE_EQUIPPED_BAG", "EQUIP_ERR_TRADE_EQUIPPED_BAG", "You can't trade equipped bags." };
case EQUIP_ERR_AMMO_ONLY: return { "EQUIP_ERR_AMMO_ONLY", "EQUIP_ERR_AMMO_ONLY", "Only ammo can go there." };
case EQUIP_ERR_PROFICIENCY_NEEDED: return { "EQUIP_ERR_PROFICIENCY_NEEDED", "EQUIP_ERR_PROFICIENCY_NEEDED", "You do not have the required proficiency for that item." };
case EQUIP_ERR_NO_SLOT_AVAILABLE: return { "EQUIP_ERR_NO_SLOT_AVAILABLE", "EQUIP_ERR_NO_SLOT_AVAILABLE", "No equipment slot is available for that item." };
case EQUIP_ERR_CANT_EQUIP_EVER: return { "EQUIP_ERR_CANT_EQUIP_EVER", "EQUIP_ERR_CANT_EQUIP_EVER", "You can never use that item." };
case EQUIP_ERR_CANT_EQUIP_EVER_2: return { "EQUIP_ERR_CANT_EQUIP_EVER_2", "EQUIP_ERR_CANT_EQUIP_EVER_2", "You can never use that item." };
case EQUIP_ERR_NO_SLOT_AVAILABLE_2: return { "EQUIP_ERR_NO_SLOT_AVAILABLE_2", "EQUIP_ERR_NO_SLOT_AVAILABLE_2", "No equipment slot is available for that item." };
case EQUIP_ERR_2HANDED_EQUIPPED: return { "EQUIP_ERR_2HANDED_EQUIPPED", "EQUIP_ERR_2HANDED_EQUIPPED", "Cannot equip that with a two-handed weapon." };
case EQUIP_ERR_2HSKILLNOTFOUND: return { "EQUIP_ERR_2HSKILLNOTFOUND", "EQUIP_ERR_2HSKILLNOTFOUND", "You cannot dual-wield" };
case EQUIP_ERR_WRONG_BAG_TYPE: return { "EQUIP_ERR_WRONG_BAG_TYPE", "EQUIP_ERR_WRONG_BAG_TYPE", "That item doesn't go in that container." };
case EQUIP_ERR_WRONG_BAG_TYPE_2: return { "EQUIP_ERR_WRONG_BAG_TYPE_2", "EQUIP_ERR_WRONG_BAG_TYPE_2", "That item doesn't go in that container." };
case EQUIP_ERR_ITEM_MAX_COUNT: return { "EQUIP_ERR_ITEM_MAX_COUNT", "EQUIP_ERR_ITEM_MAX_COUNT", "You can't carry any more of those items." };
case EQUIP_ERR_NO_SLOT_AVAILABLE_3: return { "EQUIP_ERR_NO_SLOT_AVAILABLE_3", "EQUIP_ERR_NO_SLOT_AVAILABLE_3", "No equipment slot is available for that item." };
case EQUIP_ERR_CANT_STACK: return { "EQUIP_ERR_CANT_STACK", "EQUIP_ERR_CANT_STACK", "This item cannot stack." };
case EQUIP_ERR_NOT_EQUIPPABLE: return { "EQUIP_ERR_NOT_EQUIPPABLE", "EQUIP_ERR_NOT_EQUIPPABLE", "This item cannot be equipped." };
case EQUIP_ERR_CANT_SWAP: return { "EQUIP_ERR_CANT_SWAP", "EQUIP_ERR_CANT_SWAP", "These items can't be swapped." };
case EQUIP_ERR_SLOT_EMPTY: return { "EQUIP_ERR_SLOT_EMPTY", "EQUIP_ERR_SLOT_EMPTY", "That slot is empty." };
case EQUIP_ERR_ITEM_NOT_FOUND: return { "EQUIP_ERR_ITEM_NOT_FOUND", "EQUIP_ERR_ITEM_NOT_FOUND", "The item was not found." };
case EQUIP_ERR_DROP_BOUND_ITEM: return { "EQUIP_ERR_DROP_BOUND_ITEM", "EQUIP_ERR_DROP_BOUND_ITEM", "You can't drop a soulbound item." };
case EQUIP_ERR_OUT_OF_RANGE: return { "EQUIP_ERR_OUT_OF_RANGE", "EQUIP_ERR_OUT_OF_RANGE", "Out of range." };
case EQUIP_ERR_TOO_FEW_TO_SPLIT: return { "EQUIP_ERR_TOO_FEW_TO_SPLIT", "EQUIP_ERR_TOO_FEW_TO_SPLIT", "Tried to split more than number in stack." };
case EQUIP_ERR_SPLIT_FAILED: return { "EQUIP_ERR_SPLIT_FAILED", "EQUIP_ERR_SPLIT_FAILED", "Couldn't split those items." };
case EQUIP_ERR_SPELL_FAILED_REAGENTS_GENERIC: return { "EQUIP_ERR_SPELL_FAILED_REAGENTS_GENERIC", "EQUIP_ERR_SPELL_FAILED_REAGENTS_GENERIC", "Missing reagent" };
case EQUIP_ERR_CANT_TRADE_GOLD: return { "EQUIP_ERR_CANT_TRADE_GOLD", "EQUIP_ERR_CANT_TRADE_GOLD", "Gold may only be offered by one trader." };
case EQUIP_ERR_NOT_ENOUGH_MONEY: return { "EQUIP_ERR_NOT_ENOUGH_MONEY", "EQUIP_ERR_NOT_ENOUGH_MONEY", "You don't have enough money." };
case EQUIP_ERR_NOT_A_BAG: return { "EQUIP_ERR_NOT_A_BAG", "EQUIP_ERR_NOT_A_BAG", "Not a bag." };
case EQUIP_ERR_DESTROY_NONEMPTY_BAG: return { "EQUIP_ERR_DESTROY_NONEMPTY_BAG", "EQUIP_ERR_DESTROY_NONEMPTY_BAG", "You can only do that with empty bags." };
case EQUIP_ERR_NOT_OWNER: return { "EQUIP_ERR_NOT_OWNER", "EQUIP_ERR_NOT_OWNER", "You don't own that item." };
case EQUIP_ERR_ONLY_ONE_QUIVER: return { "EQUIP_ERR_ONLY_ONE_QUIVER", "EQUIP_ERR_ONLY_ONE_QUIVER", "You can only equip one quiver." };
case EQUIP_ERR_NO_BANK_SLOT: return { "EQUIP_ERR_NO_BANK_SLOT", "EQUIP_ERR_NO_BANK_SLOT", "You must purchase that bag slot first" };
case EQUIP_ERR_NO_BANK_HERE: return { "EQUIP_ERR_NO_BANK_HERE", "EQUIP_ERR_NO_BANK_HERE", "You are too far away from a bank." };
case EQUIP_ERR_ITEM_LOCKED: return { "EQUIP_ERR_ITEM_LOCKED", "EQUIP_ERR_ITEM_LOCKED", "Item is locked." };
case EQUIP_ERR_GENERIC_STUNNED: return { "EQUIP_ERR_GENERIC_STUNNED", "EQUIP_ERR_GENERIC_STUNNED", "You are stunned" };
case EQUIP_ERR_PLAYER_DEAD: return { "EQUIP_ERR_PLAYER_DEAD", "EQUIP_ERR_PLAYER_DEAD", "You can't do that when you're dead." };
case EQUIP_ERR_CLIENT_LOCKED_OUT: return { "EQUIP_ERR_CLIENT_LOCKED_OUT", "EQUIP_ERR_CLIENT_LOCKED_OUT", "You can't do that right now." };
case EQUIP_ERR_INTERNAL_BAG_ERROR: return { "EQUIP_ERR_INTERNAL_BAG_ERROR", "EQUIP_ERR_INTERNAL_BAG_ERROR", "Internal Bag Error" };
case EQUIP_ERR_ONLY_ONE_BOLT: return { "EQUIP_ERR_ONLY_ONE_BOLT", "EQUIP_ERR_ONLY_ONE_BOLT", "You can only equip one quiver." };
case EQUIP_ERR_ONLY_ONE_AMMO: return { "EQUIP_ERR_ONLY_ONE_AMMO", "EQUIP_ERR_ONLY_ONE_AMMO", "You can only equip one ammo pouch." };
case EQUIP_ERR_CANT_WRAP_STACKABLE: return { "EQUIP_ERR_CANT_WRAP_STACKABLE", "EQUIP_ERR_CANT_WRAP_STACKABLE", "Stackable items can't be wrapped." };
case EQUIP_ERR_CANT_WRAP_EQUIPPED: return { "EQUIP_ERR_CANT_WRAP_EQUIPPED", "EQUIP_ERR_CANT_WRAP_EQUIPPED", "Equipped items can't be wrapped." };
case EQUIP_ERR_CANT_WRAP_WRAPPED: return { "EQUIP_ERR_CANT_WRAP_WRAPPED", "EQUIP_ERR_CANT_WRAP_WRAPPED", "Wrapped items can't be wrapped." };
case EQUIP_ERR_CANT_WRAP_BOUND: return { "EQUIP_ERR_CANT_WRAP_BOUND", "EQUIP_ERR_CANT_WRAP_BOUND", "Bound items can't be wrapped." };
case EQUIP_ERR_CANT_WRAP_UNIQUE: return { "EQUIP_ERR_CANT_WRAP_UNIQUE", "EQUIP_ERR_CANT_WRAP_UNIQUE", "Unique items can't be wrapped." };
case EQUIP_ERR_CANT_WRAP_BAGS: return { "EQUIP_ERR_CANT_WRAP_BAGS", "EQUIP_ERR_CANT_WRAP_BAGS", "Bags can't be wrapped." };
case EQUIP_ERR_LOOT_GONE: return { "EQUIP_ERR_LOOT_GONE", "EQUIP_ERR_LOOT_GONE", "Already looted" };
case EQUIP_ERR_INV_FULL: return { "EQUIP_ERR_INV_FULL", "EQUIP_ERR_INV_FULL", "Inventory is full." };
case EQUIP_ERR_BANK_FULL: return { "EQUIP_ERR_BANK_FULL", "EQUIP_ERR_BANK_FULL", "Your bank is full" };
case EQUIP_ERR_VENDOR_SOLD_OUT: return { "EQUIP_ERR_VENDOR_SOLD_OUT", "EQUIP_ERR_VENDOR_SOLD_OUT", "That item is currently sold out." };
case EQUIP_ERR_BAG_FULL_2: return { "EQUIP_ERR_BAG_FULL_2", "EQUIP_ERR_BAG_FULL_2", "That bag is full." };
case EQUIP_ERR_ITEM_NOT_FOUND_2: return { "EQUIP_ERR_ITEM_NOT_FOUND_2", "EQUIP_ERR_ITEM_NOT_FOUND_2", "The item was not found." };
case EQUIP_ERR_CANT_STACK_2: return { "EQUIP_ERR_CANT_STACK_2", "EQUIP_ERR_CANT_STACK_2", "This item cannot stack." };
case EQUIP_ERR_BAG_FULL_3: return { "EQUIP_ERR_BAG_FULL_3", "EQUIP_ERR_BAG_FULL_3", "That bag is full." };
case EQUIP_ERR_VENDOR_SOLD_OUT_2: return { "EQUIP_ERR_VENDOR_SOLD_OUT_2", "EQUIP_ERR_VENDOR_SOLD_OUT_2", "That item is currently sold out." };
case EQUIP_ERR_OBJECT_IS_BUSY: return { "EQUIP_ERR_OBJECT_IS_BUSY", "EQUIP_ERR_OBJECT_IS_BUSY", "That object is busy." };
case EQUIP_ERR_CANT_BE_DISENCHANTED: return { "EQUIP_ERR_CANT_BE_DISENCHANTED", "EQUIP_ERR_CANT_BE_DISENCHANTED", "Item cannot be disenchanted" };
case EQUIP_ERR_NOT_IN_COMBAT: return { "EQUIP_ERR_NOT_IN_COMBAT", "EQUIP_ERR_NOT_IN_COMBAT", "You can't do that while in combat" };
case EQUIP_ERR_NOT_WHILE_DISARMED: return { "EQUIP_ERR_NOT_WHILE_DISARMED", "EQUIP_ERR_NOT_WHILE_DISARMED", "You can't do that while disarmed" };
case EQUIP_ERR_BAG_FULL_4: return { "EQUIP_ERR_BAG_FULL_4", "EQUIP_ERR_BAG_FULL_4", "That bag is full." };
case EQUIP_ERR_CANT_EQUIP_RANK: return { "EQUIP_ERR_CANT_EQUIP_RANK", "EQUIP_ERR_CANT_EQUIP_RANK", "You don't have the required rank for that item" };
case EQUIP_ERR_CANT_EQUIP_REPUTATION: return { "EQUIP_ERR_CANT_EQUIP_REPUTATION", "EQUIP_ERR_CANT_EQUIP_REPUTATION", "You don't have the required reputation for that item" };
case EQUIP_ERR_TOO_MANY_SPECIAL_BAGS: return { "EQUIP_ERR_TOO_MANY_SPECIAL_BAGS", "EQUIP_ERR_TOO_MANY_SPECIAL_BAGS", "You cannot equip another bag of that type" };
case EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW: return { "EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW", "EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW", "You can't loot that item now." };
case EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE: return { "EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE", "EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE", "You cannot equip more than one of those." };
case EQUIP_ERR_VENDOR_MISSING_TURNINS: return { "EQUIP_ERR_VENDOR_MISSING_TURNINS", "EQUIP_ERR_VENDOR_MISSING_TURNINS", "You do not have the required items for that purchase" };
case EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS: return { "EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS", "EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS", "You don't have enough honor points" };
case EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS: return { "EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS", "EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS", "You don't have enough arena points" };
case EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED: return { "EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED", "EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED", "You have the maximum number of those gems in your inventory or socketed into items." };
case EQUIP_ERR_MAIL_BOUND_ITEM: return { "EQUIP_ERR_MAIL_BOUND_ITEM", "EQUIP_ERR_MAIL_BOUND_ITEM", "You can't mail soulbound items." };
case EQUIP_ERR_INTERNAL_BAG_ERROR_2: return { "EQUIP_ERR_INTERNAL_BAG_ERROR_2", "EQUIP_ERR_INTERNAL_BAG_ERROR_2", "Internal Bag Error" };
case EQUIP_ERR_BAG_FULL_5: return { "EQUIP_ERR_BAG_FULL_5", "EQUIP_ERR_BAG_FULL_5", "That bag is full." };
case EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED: return { "EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED", "EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED", "You have the maximum number of those gems socketed into equipped items." };
case EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED: return { "EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED", "EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED", "You cannot socket more than one of those gems into a single item." };
case EQUIP_ERR_TOO_MUCH_GOLD: return { "EQUIP_ERR_TOO_MUCH_GOLD", "EQUIP_ERR_TOO_MUCH_GOLD", "At gold limit" };
case EQUIP_ERR_NOT_DURING_ARENA_MATCH: return { "EQUIP_ERR_NOT_DURING_ARENA_MATCH", "EQUIP_ERR_NOT_DURING_ARENA_MATCH", "You can't do that while in an arena match" };
case EQUIP_ERR_TRADE_BOUND_ITEM: return { "EQUIP_ERR_TRADE_BOUND_ITEM", "EQUIP_ERR_TRADE_BOUND_ITEM", "You can't trade a soulbound item." };
case EQUIP_ERR_CANT_EQUIP_RATING: return { "EQUIP_ERR_CANT_EQUIP_RATING", "EQUIP_ERR_CANT_EQUIP_RATING", "You don't have the personal, team, or battleground rating required to buy that item" };
case EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM: return { "EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM", "EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM", "" };
case EQUIP_ERR_NOT_SAME_ACCOUNT: return { "EQUIP_ERR_NOT_SAME_ACCOUNT", "EQUIP_ERR_NOT_SAME_ACCOUNT", "Account-bound items can only be given to your own characters." };
case EQUIP_NONE_3: return { "EQUIP_NONE_3", "EQUIP_NONE_3", "" };
case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS: return { "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS", "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS", "You can only carry %d %s" };
case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS: return { "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS", "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS", "You can only equip %d |4item:items in the %s category" };
case EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED: return { "EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED", "EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED", "Your level is too high to use that item" };
case EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW: return { "EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW", "EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW", "You must reach level %d to purchase that item." };
case EQUIP_ERR_CANT_EQUIP_NEED_TALENT: return { "EQUIP_ERR_CANT_EQUIP_NEED_TALENT", "EQUIP_ERR_CANT_EQUIP_NEED_TALENT", "You do not have the required talent to equip that." };
case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS: return { "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS", "EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS", "You can only equip %d |4item:items in the %s category" };
case EQUIP_ERR_SHAPESHIFT_FORM_CANNOT_EQUIP: return { "EQUIP_ERR_SHAPESHIFT_FORM_CANNOT_EQUIP", "EQUIP_ERR_SHAPESHIFT_FORM_CANNOT_EQUIP", "Cannot equip item in this form" };
case EQUIP_ERR_ITEM_INVENTORY_FULL_SATCHEL: return { "EQUIP_ERR_ITEM_INVENTORY_FULL_SATCHEL", "EQUIP_ERR_ITEM_INVENTORY_FULL_SATCHEL", "Your inventory is full. Your satchel has been delivered to your mailbox." };
case EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW: return { "EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW", "EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW", "Your level is too low to use that item" };
case EQUIP_ERR_CANT_BUY_QUANTITY: return { "EQUIP_ERR_CANT_BUY_QUANTITY", "EQUIP_ERR_CANT_BUY_QUANTITY", "You can't buy the specified quantity of that item." };
case EQUIP_ERR_ITEM_IS_BATTLE_PAY_LOCKED: return { "EQUIP_ERR_ITEM_IS_BATTLE_PAY_LOCKED", "EQUIP_ERR_ITEM_IS_BATTLE_PAY_LOCKED", "Your purchased item is still waiting to be unlocked" };
case EQUIP_ERR_REAGENT_BANK_FULL: return { "EQUIP_ERR_REAGENT_BANK_FULL", "EQUIP_ERR_REAGENT_BANK_FULL", "Your reagent bank is full" };
case EQUIP_ERR_REAGENT_BANK_LOCKED: return { "EQUIP_ERR_REAGENT_BANK_LOCKED", "EQUIP_ERR_REAGENT_BANK_LOCKED", "" };
case EQUIP_ERR_WRONG_BAG_TYPE_3: return { "EQUIP_ERR_WRONG_BAG_TYPE_3", "EQUIP_ERR_WRONG_BAG_TYPE_3", "That item doesn't go in that container." };
case EQUIP_ERR_CANT_USE_ITEM: return { "EQUIP_ERR_CANT_USE_ITEM", "EQUIP_ERR_CANT_USE_ITEM", "You can't use that item." };
case EQUIP_ERR_CANT_BE_OBLITERATED: return { "EQUIP_ERR_CANT_BE_OBLITERATED", "EQUIP_ERR_CANT_BE_OBLITERATED", "You can't obliterate that item" };
case EQUIP_ERR_GUILD_BANK_CONJURED_ITEM: return { "EQUIP_ERR_GUILD_BANK_CONJURED_ITEM", "EQUIP_ERR_GUILD_BANK_CONJURED_ITEM", "You cannot store conjured items in the guild bank" };
case EQUIP_ERR_BAG_FULL_6: return { "EQUIP_ERR_BAG_FULL_6", "EQUIP_ERR_BAG_FULL_6", "That bag is full." };
case EQUIP_ERR_CANT_BE_SCRAPPED: return { "EQUIP_ERR_CANT_BE_SCRAPPED", "EQUIP_ERR_CANT_BE_SCRAPPED", "You can't scrap that item" };
case EQUIP_ERR_BAG_FULL_7: return { "EQUIP_ERR_BAG_FULL_7", "EQUIP_ERR_BAG_FULL_7", "That bag is full." };
case EQUIP_ERR_NOT_IN_PET_BATTLE: return { "EQUIP_ERR_NOT_IN_PET_BATTLE", "EQUIP_ERR_NOT_IN_PET_BATTLE", "You cannot do that while in a pet battle" };
case EQUIP_ERR_BAG_FULL_8: return { "EQUIP_ERR_BAG_FULL_8", "EQUIP_ERR_BAG_FULL_8", "That bag is full." };
case EQUIP_ERR_CANT_DO_THAT_RIGHT_NOW: return { "EQUIP_ERR_CANT_DO_THAT_RIGHT_NOW", "EQUIP_ERR_CANT_DO_THAT_RIGHT_NOW", "You can't do that right now." };
case EQUIP_ERR_CANT_DO_THAT_RIGHT_NOW_2: return { "EQUIP_ERR_CANT_DO_THAT_RIGHT_NOW_2", "EQUIP_ERR_CANT_DO_THAT_RIGHT_NOW_2", "You can't do that right now." };
case EQUIP_ERR_NOT_IN_NPE: return { "EQUIP_ERR_NOT_IN_NPE", "EQUIP_ERR_NOT_IN_NPE", "Not available during the tutorial" };
case EQUIP_ERR_ITEM_COOLDOWN: return { "EQUIP_ERR_ITEM_COOLDOWN", "EQUIP_ERR_ITEM_COOLDOWN", "Item is not ready yet." };
case EQUIP_ERR_NOT_IN_RATED_BATTLEGROUND: return { "EQUIP_ERR_NOT_IN_RATED_BATTLEGROUND", "EQUIP_ERR_NOT_IN_RATED_BATTLEGROUND", "You can't do that in a rated battleground." };
default: throw std::out_of_range("value");
}
}
template <>
TC_API_EXPORT size_t EnumUtils<InventoryResult>::Count() { return 112; }
template <>
TC_API_EXPORT InventoryResult EnumUtils<InventoryResult>::FromIndex(size_t index)
{
switch (index)
{
case 0: return EQUIP_ERR_OK;
case 1: return EQUIP_ERR_CANT_EQUIP_LEVEL_I;
case 2: return EQUIP_ERR_CANT_EQUIP_SKILL;
case 3: return EQUIP_ERR_WRONG_SLOT;
case 4: return EQUIP_ERR_BAG_FULL;
case 5: return EQUIP_ERR_BAG_IN_BAG;
case 6: return EQUIP_ERR_TRADE_EQUIPPED_BAG;
case 7: return EQUIP_ERR_AMMO_ONLY;
case 8: return EQUIP_ERR_PROFICIENCY_NEEDED;
case 9: return EQUIP_ERR_NO_SLOT_AVAILABLE;
case 10: return EQUIP_ERR_CANT_EQUIP_EVER;
case 11: return EQUIP_ERR_CANT_EQUIP_EVER_2;
case 12: return EQUIP_ERR_NO_SLOT_AVAILABLE_2;
case 13: return EQUIP_ERR_2HANDED_EQUIPPED;
case 14: return EQUIP_ERR_2HSKILLNOTFOUND;
case 15: return EQUIP_ERR_WRONG_BAG_TYPE;
case 16: return EQUIP_ERR_WRONG_BAG_TYPE_2;
case 17: return EQUIP_ERR_ITEM_MAX_COUNT;
case 18: return EQUIP_ERR_NO_SLOT_AVAILABLE_3;
case 19: return EQUIP_ERR_CANT_STACK;
case 20: return EQUIP_ERR_NOT_EQUIPPABLE;
case 21: return EQUIP_ERR_CANT_SWAP;
case 22: return EQUIP_ERR_SLOT_EMPTY;
case 23: return EQUIP_ERR_ITEM_NOT_FOUND;
case 24: return EQUIP_ERR_DROP_BOUND_ITEM;
case 25: return EQUIP_ERR_OUT_OF_RANGE;
case 26: return EQUIP_ERR_TOO_FEW_TO_SPLIT;
case 27: return EQUIP_ERR_SPLIT_FAILED;
case 28: return EQUIP_ERR_SPELL_FAILED_REAGENTS_GENERIC;
case 29: return EQUIP_ERR_CANT_TRADE_GOLD;
case 30: return EQUIP_ERR_NOT_ENOUGH_MONEY;
case 31: return EQUIP_ERR_NOT_A_BAG;
case 32: return EQUIP_ERR_DESTROY_NONEMPTY_BAG;
case 33: return EQUIP_ERR_NOT_OWNER;
case 34: return EQUIP_ERR_ONLY_ONE_QUIVER;
case 35: return EQUIP_ERR_NO_BANK_SLOT;
case 36: return EQUIP_ERR_NO_BANK_HERE;
case 37: return EQUIP_ERR_ITEM_LOCKED;
case 38: return EQUIP_ERR_GENERIC_STUNNED;
case 39: return EQUIP_ERR_PLAYER_DEAD;
case 40: return EQUIP_ERR_CLIENT_LOCKED_OUT;
case 41: return EQUIP_ERR_INTERNAL_BAG_ERROR;
case 42: return EQUIP_ERR_ONLY_ONE_BOLT;
case 43: return EQUIP_ERR_ONLY_ONE_AMMO;
case 44: return EQUIP_ERR_CANT_WRAP_STACKABLE;
case 45: return EQUIP_ERR_CANT_WRAP_EQUIPPED;
case 46: return EQUIP_ERR_CANT_WRAP_WRAPPED;
case 47: return EQUIP_ERR_CANT_WRAP_BOUND;
case 48: return EQUIP_ERR_CANT_WRAP_UNIQUE;
case 49: return EQUIP_ERR_CANT_WRAP_BAGS;
case 50: return EQUIP_ERR_LOOT_GONE;
case 51: return EQUIP_ERR_INV_FULL;
case 52: return EQUIP_ERR_BANK_FULL;
case 53: return EQUIP_ERR_VENDOR_SOLD_OUT;
case 54: return EQUIP_ERR_BAG_FULL_2;
case 55: return EQUIP_ERR_ITEM_NOT_FOUND_2;
case 56: return EQUIP_ERR_CANT_STACK_2;
case 57: return EQUIP_ERR_BAG_FULL_3;
case 58: return EQUIP_ERR_VENDOR_SOLD_OUT_2;
case 59: return EQUIP_ERR_OBJECT_IS_BUSY;
case 60: return EQUIP_ERR_CANT_BE_DISENCHANTED;
case 61: return EQUIP_ERR_NOT_IN_COMBAT;
case 62: return EQUIP_ERR_NOT_WHILE_DISARMED;
case 63: return EQUIP_ERR_BAG_FULL_4;
case 64: return EQUIP_ERR_CANT_EQUIP_RANK;
case 65: return EQUIP_ERR_CANT_EQUIP_REPUTATION;
case 66: return EQUIP_ERR_TOO_MANY_SPECIAL_BAGS;
case 67: return EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW;
case 68: return EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE;
case 69: return EQUIP_ERR_VENDOR_MISSING_TURNINS;
case 70: return EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS;
case 71: return EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS;
case 72: return EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED;
case 73: return EQUIP_ERR_MAIL_BOUND_ITEM;
case 74: return EQUIP_ERR_INTERNAL_BAG_ERROR_2;
case 75: return EQUIP_ERR_BAG_FULL_5;
case 76: return EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED;
case 77: return EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED;
case 78: return EQUIP_ERR_TOO_MUCH_GOLD;
case 79: return EQUIP_ERR_NOT_DURING_ARENA_MATCH;
case 80: return EQUIP_ERR_TRADE_BOUND_ITEM;
case 81: return EQUIP_ERR_CANT_EQUIP_RATING;
case 82: return EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM;
case 83: return EQUIP_ERR_NOT_SAME_ACCOUNT;
case 84: return EQUIP_NONE_3;
case 85: return EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS;
case 86: return EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS;
case 87: return EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED;
case 88: return EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW;
case 89: return EQUIP_ERR_CANT_EQUIP_NEED_TALENT;
case 90: return EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS;
case 91: return EQUIP_ERR_SHAPESHIFT_FORM_CANNOT_EQUIP;
case 92: return EQUIP_ERR_ITEM_INVENTORY_FULL_SATCHEL;
case 93: return EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW;
case 94: return EQUIP_ERR_CANT_BUY_QUANTITY;
case 95: return EQUIP_ERR_ITEM_IS_BATTLE_PAY_LOCKED;
case 96: return EQUIP_ERR_REAGENT_BANK_FULL;
case 97: return EQUIP_ERR_REAGENT_BANK_LOCKED;
case 98: return EQUIP_ERR_WRONG_BAG_TYPE_3;
case 99: return EQUIP_ERR_CANT_USE_ITEM;
case 100: return EQUIP_ERR_CANT_BE_OBLITERATED;
case 101: return EQUIP_ERR_GUILD_BANK_CONJURED_ITEM;
case 102: return EQUIP_ERR_BAG_FULL_6;
case 103: return EQUIP_ERR_CANT_BE_SCRAPPED;
case 104: return EQUIP_ERR_BAG_FULL_7;
case 105: return EQUIP_ERR_NOT_IN_PET_BATTLE;
case 106: return EQUIP_ERR_BAG_FULL_8;
case 107: return EQUIP_ERR_CANT_DO_THAT_RIGHT_NOW;
case 108: return EQUIP_ERR_CANT_DO_THAT_RIGHT_NOW_2;
case 109: return EQUIP_ERR_NOT_IN_NPE;
case 110: return EQUIP_ERR_ITEM_COOLDOWN;
case 111: return EQUIP_ERR_NOT_IN_RATED_BATTLEGROUND;
default: throw std::out_of_range("index");
}
}
template <>
TC_API_EXPORT size_t EnumUtils<InventoryResult>::ToIndex(InventoryResult value)
{
switch (value)
{
case EQUIP_ERR_OK: return 0;
case EQUIP_ERR_CANT_EQUIP_LEVEL_I: return 1;
case EQUIP_ERR_CANT_EQUIP_SKILL: return 2;
case EQUIP_ERR_WRONG_SLOT: return 3;
case EQUIP_ERR_BAG_FULL: return 4;
case EQUIP_ERR_BAG_IN_BAG: return 5;
case EQUIP_ERR_TRADE_EQUIPPED_BAG: return 6;
case EQUIP_ERR_AMMO_ONLY: return 7;
case EQUIP_ERR_PROFICIENCY_NEEDED: return 8;
case EQUIP_ERR_NO_SLOT_AVAILABLE: return 9;
case EQUIP_ERR_CANT_EQUIP_EVER: return 10;
case EQUIP_ERR_CANT_EQUIP_EVER_2: return 11;
case EQUIP_ERR_NO_SLOT_AVAILABLE_2: return 12;
case EQUIP_ERR_2HANDED_EQUIPPED: return 13;
case EQUIP_ERR_2HSKILLNOTFOUND: return 14;
case EQUIP_ERR_WRONG_BAG_TYPE: return 15;
case EQUIP_ERR_WRONG_BAG_TYPE_2: return 16;
case EQUIP_ERR_ITEM_MAX_COUNT: return 17;
case EQUIP_ERR_NO_SLOT_AVAILABLE_3: return 18;
case EQUIP_ERR_CANT_STACK: return 19;
case EQUIP_ERR_NOT_EQUIPPABLE: return 20;
case EQUIP_ERR_CANT_SWAP: return 21;
case EQUIP_ERR_SLOT_EMPTY: return 22;
case EQUIP_ERR_ITEM_NOT_FOUND: return 23;
case EQUIP_ERR_DROP_BOUND_ITEM: return 24;
case EQUIP_ERR_OUT_OF_RANGE: return 25;
case EQUIP_ERR_TOO_FEW_TO_SPLIT: return 26;
case EQUIP_ERR_SPLIT_FAILED: return 27;
case EQUIP_ERR_SPELL_FAILED_REAGENTS_GENERIC: return 28;
case EQUIP_ERR_CANT_TRADE_GOLD: return 29;
case EQUIP_ERR_NOT_ENOUGH_MONEY: return 30;
case EQUIP_ERR_NOT_A_BAG: return 31;
case EQUIP_ERR_DESTROY_NONEMPTY_BAG: return 32;
case EQUIP_ERR_NOT_OWNER: return 33;
case EQUIP_ERR_ONLY_ONE_QUIVER: return 34;
case EQUIP_ERR_NO_BANK_SLOT: return 35;
case EQUIP_ERR_NO_BANK_HERE: return 36;
case EQUIP_ERR_ITEM_LOCKED: return 37;
case EQUIP_ERR_GENERIC_STUNNED: return 38;
case EQUIP_ERR_PLAYER_DEAD: return 39;
case EQUIP_ERR_CLIENT_LOCKED_OUT: return 40;
case EQUIP_ERR_INTERNAL_BAG_ERROR: return 41;
case EQUIP_ERR_ONLY_ONE_BOLT: return 42;
case EQUIP_ERR_ONLY_ONE_AMMO: return 43;
case EQUIP_ERR_CANT_WRAP_STACKABLE: return 44;
case EQUIP_ERR_CANT_WRAP_EQUIPPED: return 45;
case EQUIP_ERR_CANT_WRAP_WRAPPED: return 46;
case EQUIP_ERR_CANT_WRAP_BOUND: return 47;
case EQUIP_ERR_CANT_WRAP_UNIQUE: return 48;
case EQUIP_ERR_CANT_WRAP_BAGS: return 49;
case EQUIP_ERR_LOOT_GONE: return 50;
case EQUIP_ERR_INV_FULL: return 51;
case EQUIP_ERR_BANK_FULL: return 52;
case EQUIP_ERR_VENDOR_SOLD_OUT: return 53;
case EQUIP_ERR_BAG_FULL_2: return 54;
case EQUIP_ERR_ITEM_NOT_FOUND_2: return 55;
case EQUIP_ERR_CANT_STACK_2: return 56;
case EQUIP_ERR_BAG_FULL_3: return 57;
case EQUIP_ERR_VENDOR_SOLD_OUT_2: return 58;
case EQUIP_ERR_OBJECT_IS_BUSY: return 59;
case EQUIP_ERR_CANT_BE_DISENCHANTED: return 60;
case EQUIP_ERR_NOT_IN_COMBAT: return 61;
case EQUIP_ERR_NOT_WHILE_DISARMED: return 62;
case EQUIP_ERR_BAG_FULL_4: return 63;
case EQUIP_ERR_CANT_EQUIP_RANK: return 64;
case EQUIP_ERR_CANT_EQUIP_REPUTATION: return 65;
case EQUIP_ERR_TOO_MANY_SPECIAL_BAGS: return 66;
case EQUIP_ERR_LOOT_CANT_LOOT_THAT_NOW: return 67;
case EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE: return 68;
case EQUIP_ERR_VENDOR_MISSING_TURNINS: return 69;
case EQUIP_ERR_NOT_ENOUGH_HONOR_POINTS: return 70;
case EQUIP_ERR_NOT_ENOUGH_ARENA_POINTS: return 71;
case EQUIP_ERR_ITEM_MAX_COUNT_SOCKETED: return 72;
case EQUIP_ERR_MAIL_BOUND_ITEM: return 73;
case EQUIP_ERR_INTERNAL_BAG_ERROR_2: return 74;
case EQUIP_ERR_BAG_FULL_5: return 75;
case EQUIP_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED: return 76;
case EQUIP_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED: return 77;
case EQUIP_ERR_TOO_MUCH_GOLD: return 78;
case EQUIP_ERR_NOT_DURING_ARENA_MATCH: return 79;
case EQUIP_ERR_TRADE_BOUND_ITEM: return 80;
case EQUIP_ERR_CANT_EQUIP_RATING: return 81;
case EQUIP_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM: return 82;
case EQUIP_ERR_NOT_SAME_ACCOUNT: return 83;
case EQUIP_NONE_3: return 84;
case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS: return 85;
case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS: return 86;
case EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED: return 87;
case EQUIP_ERR_PURCHASE_LEVEL_TOO_LOW: return 88;
case EQUIP_ERR_CANT_EQUIP_NEED_TALENT: return 89;
case EQUIP_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS: return 90;
case EQUIP_ERR_SHAPESHIFT_FORM_CANNOT_EQUIP: return 91;
case EQUIP_ERR_ITEM_INVENTORY_FULL_SATCHEL: return 92;
case EQUIP_ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW: return 93;
case EQUIP_ERR_CANT_BUY_QUANTITY: return 94;
case EQUIP_ERR_ITEM_IS_BATTLE_PAY_LOCKED: return 95;
case EQUIP_ERR_REAGENT_BANK_FULL: return 96;
case EQUIP_ERR_REAGENT_BANK_LOCKED: return 97;
case EQUIP_ERR_WRONG_BAG_TYPE_3: return 98;
case EQUIP_ERR_CANT_USE_ITEM: return 99;
case EQUIP_ERR_CANT_BE_OBLITERATED: return 100;
case EQUIP_ERR_GUILD_BANK_CONJURED_ITEM: return 101;
case EQUIP_ERR_BAG_FULL_6: return 102;
case EQUIP_ERR_CANT_BE_SCRAPPED: return 103;
case EQUIP_ERR_BAG_FULL_7: return 104;
case EQUIP_ERR_NOT_IN_PET_BATTLE: return 105;
case EQUIP_ERR_BAG_FULL_8: return 106;
case EQUIP_ERR_CANT_DO_THAT_RIGHT_NOW: return 107;
case EQUIP_ERR_CANT_DO_THAT_RIGHT_NOW_2: return 108;
case EQUIP_ERR_NOT_IN_NPE: return 109;
case EQUIP_ERR_ITEM_COOLDOWN: return 110;
case EQUIP_ERR_NOT_IN_RATED_BATTLEGROUND: return 111;
default: throw std::out_of_range("value");
}
}
/***************************************************************\
|* data for enum 'BuyResult' in 'ItemDefines.h' auto-generated *|
\***************************************************************/
template <>
TC_API_EXPORT EnumText EnumUtils<BuyResult>::ToString(BuyResult value)
{
switch (value)
{
case BUY_ERR_CANT_FIND_ITEM: return { "BUY_ERR_CANT_FIND_ITEM", "BUY_ERR_CANT_FIND_ITEM", "" };
case BUY_ERR_ITEM_ALREADY_SOLD: return { "BUY_ERR_ITEM_ALREADY_SOLD", "BUY_ERR_ITEM_ALREADY_SOLD", "" };
case BUY_ERR_NOT_ENOUGHT_MONEY: return { "BUY_ERR_NOT_ENOUGHT_MONEY", "BUY_ERR_NOT_ENOUGHT_MONEY", "" };
case BUY_ERR_SELLER_DONT_LIKE_YOU: return { "BUY_ERR_SELLER_DONT_LIKE_YOU", "BUY_ERR_SELLER_DONT_LIKE_YOU", "" };
case BUY_ERR_DISTANCE_TOO_FAR: return { "BUY_ERR_DISTANCE_TOO_FAR", "BUY_ERR_DISTANCE_TOO_FAR", "" };
case BUY_ERR_ITEM_SOLD_OUT: return { "BUY_ERR_ITEM_SOLD_OUT", "BUY_ERR_ITEM_SOLD_OUT", "" };
case BUY_ERR_CANT_CARRY_MORE: return { "BUY_ERR_CANT_CARRY_MORE", "BUY_ERR_CANT_CARRY_MORE", "" };
case BUY_ERR_RANK_REQUIRE: return { "BUY_ERR_RANK_REQUIRE", "BUY_ERR_RANK_REQUIRE", "" };
case BUY_ERR_REPUTATION_REQUIRE: return { "BUY_ERR_REPUTATION_REQUIRE", "BUY_ERR_REPUTATION_REQUIRE", "" };
default: throw std::out_of_range("value");
}
}
template <>
TC_API_EXPORT size_t EnumUtils<BuyResult>::Count() { return 9; }
template <>
TC_API_EXPORT BuyResult EnumUtils<BuyResult>::FromIndex(size_t index)
{
switch (index)
{
case 0: return BUY_ERR_CANT_FIND_ITEM;
case 1: return BUY_ERR_ITEM_ALREADY_SOLD;
case 2: return BUY_ERR_NOT_ENOUGHT_MONEY;
case 3: return BUY_ERR_SELLER_DONT_LIKE_YOU;
case 4: return BUY_ERR_DISTANCE_TOO_FAR;
case 5: return BUY_ERR_ITEM_SOLD_OUT;
case 6: return BUY_ERR_CANT_CARRY_MORE;
case 7: return BUY_ERR_RANK_REQUIRE;
case 8: return BUY_ERR_REPUTATION_REQUIRE;
default: throw std::out_of_range("index");
}
}
template <>
TC_API_EXPORT size_t EnumUtils<BuyResult>::ToIndex(BuyResult value)
{
switch (value)
{
case BUY_ERR_CANT_FIND_ITEM: return 0;
case BUY_ERR_ITEM_ALREADY_SOLD: return 1;
case BUY_ERR_NOT_ENOUGHT_MONEY: return 2;
case BUY_ERR_SELLER_DONT_LIKE_YOU: return 3;
case BUY_ERR_DISTANCE_TOO_FAR: return 4;
case BUY_ERR_ITEM_SOLD_OUT: return 5;
case BUY_ERR_CANT_CARRY_MORE: return 6;
case BUY_ERR_RANK_REQUIRE: return 7;
case BUY_ERR_REPUTATION_REQUIRE: return 8;
default: throw std::out_of_range("value");
}
}
/****************************************************************\
|* data for enum 'SellResult' in 'ItemDefines.h' auto-generated *|
\****************************************************************/
template <>
TC_API_EXPORT EnumText EnumUtils<SellResult>::ToString(SellResult value)
{
switch (value)
{
case SELL_ERR_CANT_FIND_ITEM: return { "SELL_ERR_CANT_FIND_ITEM", "SELL_ERR_CANT_FIND_ITEM", "The item was not found." };
case SELL_ERR_CANT_SELL_ITEM: return { "SELL_ERR_CANT_SELL_ITEM", "SELL_ERR_CANT_SELL_ITEM", "The merchant doesn't want that item." };
case SELL_ERR_CANT_FIND_VENDOR: return { "SELL_ERR_CANT_FIND_VENDOR", "SELL_ERR_CANT_FIND_VENDOR", "The merchant doesn't like you." };
case SELL_ERR_YOU_DONT_OWN_THAT_ITEM: return { "SELL_ERR_YOU_DONT_OWN_THAT_ITEM", "SELL_ERR_YOU_DONT_OWN_THAT_ITEM", "You don't own that item." };
case SELL_ERR_UNK: return { "SELL_ERR_UNK", "SELL_ERR_UNK", "nothing appears..." };
case SELL_ERR_ONLY_EMPTY_BAG: return { "SELL_ERR_ONLY_EMPTY_BAG", "SELL_ERR_ONLY_EMPTY_BAG", "You can only do that with empty bags." };
case SELL_ERR_CANT_SELL_TO_THIS_MERCHANT: return { "SELL_ERR_CANT_SELL_TO_THIS_MERCHANT", "SELL_ERR_CANT_SELL_TO_THIS_MERCHANT", "You cannot sell items to this merchant." };
default: throw std::out_of_range("value");
}
}
template <>
TC_API_EXPORT size_t EnumUtils<SellResult>::Count() { return 7; }
template <>
TC_API_EXPORT SellResult EnumUtils<SellResult>::FromIndex(size_t index)
{
switch (index)
{
case 0: return SELL_ERR_CANT_FIND_ITEM;
case 1: return SELL_ERR_CANT_SELL_ITEM;
case 2: return SELL_ERR_CANT_FIND_VENDOR;
case 3: return SELL_ERR_YOU_DONT_OWN_THAT_ITEM;
case 4: return SELL_ERR_UNK;
case 5: return SELL_ERR_ONLY_EMPTY_BAG;
case 6: return SELL_ERR_CANT_SELL_TO_THIS_MERCHANT;
default: throw std::out_of_range("index");
}
}
template <>
TC_API_EXPORT size_t EnumUtils<SellResult>::ToIndex(SellResult value)
{
switch (value)
{
case SELL_ERR_CANT_FIND_ITEM: return 0;
case SELL_ERR_CANT_SELL_ITEM: return 1;
case SELL_ERR_CANT_FIND_VENDOR: return 2;
case SELL_ERR_YOU_DONT_OWN_THAT_ITEM: return 3;
case SELL_ERR_UNK: return 4;
case SELL_ERR_ONLY_EMPTY_BAG: return 5;
case SELL_ERR_CANT_SELL_TO_THIS_MERCHANT: return 6;
default: throw std::out_of_range("value");
}
}
}
+6 -6
View File
@@ -17417,23 +17417,23 @@ void Player::SendQuestReward(Quest const* quest, Creature const* questGiver, uin
SendDirectMessage(packet.Write()); SendDirectMessage(packet.Write());
} }
void Player::SendQuestFailed(uint32 questID, InventoryResult reason) const void Player::SendQuestFailed(uint32 questId, InventoryResult reason) const
{ {
if (questID) if (questId)
{ {
WorldPackets::Quest::QuestGiverQuestFailed questGiverQuestFailed; WorldPackets::Quest::QuestGiverQuestFailed questGiverQuestFailed;
questGiverQuestFailed.QuestID = questID; questGiverQuestFailed.QuestID = questId;
questGiverQuestFailed.Reason = reason; // failed reason (valid reasons: 4, 16, 50, 17, other values show default message) questGiverQuestFailed.Reason = reason; // failed reason (valid reasons: 4, 16, 50, 17, other values show default message)
SendDirectMessage(questGiverQuestFailed.Write()); SendDirectMessage(questGiverQuestFailed.Write());
} }
} }
void Player::SendQuestTimerFailed(uint32 questID) const void Player::SendQuestTimerFailed(uint32 questId) const
{ {
if (questID) if (questId)
{ {
WorldPackets::Quest::QuestUpdateFailedTimer questUpdateFailedTimer; WorldPackets::Quest::QuestUpdateFailedTimer questUpdateFailedTimer;
questUpdateFailedTimer.QuestID = questID; questUpdateFailedTimer.QuestID = questId;
SendDirectMessage(questUpdateFailedTimer.Write()); SendDirectMessage(questUpdateFailedTimer.Write());
} }
} }
+2 -2
View File
@@ -1622,8 +1622,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
bool IsQuestObjectiveProgressBarComplete(uint16 slot, Quest const* quest) const; bool IsQuestObjectiveProgressBarComplete(uint16 slot, Quest const* quest) const;
void SendQuestComplete(uint32 questId) const; void SendQuestComplete(uint32 questId) const;
void SendQuestReward(Quest const* quest, Creature const* questGiver, uint32 xp, bool hideChatMessage) const; void SendQuestReward(Quest const* quest, Creature const* questGiver, uint32 xp, bool hideChatMessage) const;
void SendQuestFailed(uint32 questID, InventoryResult reason = EQUIP_ERR_OK) const; void SendQuestFailed(uint32 questId, InventoryResult reason = EQUIP_ERR_OK) const;
void SendQuestTimerFailed(uint32 questID) const; void SendQuestTimerFailed(uint32 questId) const;
void SendCanTakeQuestResponse(QuestFailedReason reason, bool sendErrorMessage = true, std::string reasonText = "") const; void SendCanTakeQuestResponse(QuestFailedReason reason, bool sendErrorMessage = true, std::string reasonText = "") const;
void SendQuestConfirmAccept(Quest const* quest, Player* receiver) const; void SendQuestConfirmAccept(Quest const* quest, Player* receiver) const;
void SendPushToPartyResponse(Player const* player, QuestPushReason reason, Quest const* quest = nullptr) const; void SendPushToPartyResponse(Player const* player, QuestPushReason reason, Quest const* quest = nullptr) const;
@@ -1422,6 +1422,7 @@ enum SpellEffectName
TOTAL_SPELL_EFFECTS TOTAL_SPELL_EFFECTS
}; };
// EnumUtils: DESCRIBE THIS
enum SpellCastResult enum SpellCastResult
{ {
SPELL_FAILED_SUCCESS = 0, SPELL_FAILED_SUCCESS = 0,
@@ -1740,7 +1741,7 @@ enum SpellCastResult
SPELL_FAILED_UNKNOWN = 313, SPELL_FAILED_UNKNOWN = 313,
// ok cast value - here in case a future version removes SPELL_FAILED_SUCCESS and we need to use a custom value (not sent to client either way) // ok cast value - here in case a future version removes SPELL_FAILED_SUCCESS and we need to use a custom value (not sent to client either way)
SPELL_CAST_OK = SPELL_FAILED_SUCCESS SPELL_CAST_OK = SPELL_FAILED_SUCCESS // SKIP
}; };
enum SpellCustomErrors enum SpellCustomErrors
@@ -2381,6 +2382,7 @@ enum GhostVisibilityType
}; };
// Spell aura states // Spell aura states
// EnumUtils: DESCRIBE THIS
enum AuraStateType enum AuraStateType
{ // (C) used in caster aura state (T) used in target aura state { // (C) used in caster aura state (T) used in target aura state
// (c) used in caster aura state-not (t) used in target aura state-not // (c) used in caster aura state-not (t) used in target aura state-not
@@ -5643,6 +5645,7 @@ enum WeatherType
#define MAX_WEATHER_TYPE 4 #define MAX_WEATHER_TYPE 4
// EnumUtils: DESCRIBE THIS
enum ChatMsg : int32 enum ChatMsg : int32
{ {
CHAT_MSG_ADDON = -1, CHAT_MSG_ADDON = -1,
File diff suppressed because it is too large Load Diff
+16 -14
View File
@@ -50,24 +50,26 @@ namespace WorldPackets
#define QUEST_REWARD_CURRENCY_COUNT 4 #define QUEST_REWARD_CURRENCY_COUNT 4
#define QUEST_REWARD_DISPLAY_SPELL_COUNT 3 #define QUEST_REWARD_DISPLAY_SPELL_COUNT 3
enum QuestFailedReason // EnumUtils: DESCRIBE THIS
enum QuestFailedReason : uint32
{ {
QUEST_ERR_NONE = 0, QUEST_ERR_NONE = 0,
QUEST_ERR_FAILED_LOW_LEVEL = 1, // "You are not high enough level for that quest."" QUEST_ERR_FAILED_LOW_LEVEL = 1, // DESCRIPTION "You are not high enough level for that quest.""
QUEST_ERR_FAILED_WRONG_RACE = 6, // "That quest is not available to your race." QUEST_ERR_FAILED_WRONG_RACE = 6, // DESCRIPTION "That quest is not available to your race."
QUEST_ERR_ALREADY_DONE = 7, // "You have completed that daily quest today." QUEST_ERR_ALREADY_DONE = 7, // DESCRIPTION "You have completed that daily quest today."
QUEST_ERR_ONLY_ONE_TIMED = 12, // "You can only be on one timed quest at a time" QUEST_ERR_ONLY_ONE_TIMED = 12, // DESCRIPTION "You can only be on one timed quest at a time"
QUEST_ERR_ALREADY_ON1 = 13, // "You are already on that quest" QUEST_ERR_ALREADY_ON1 = 13, // DESCRIPTION "You are already on that quest"
QUEST_ERR_FAILED_EXPANSION = 16, // "This quest requires an expansion enabled account." QUEST_ERR_FAILED_EXPANSION = 16, // DESCRIPTION "This quest requires an expansion enabled account."
QUEST_ERR_ALREADY_ON2 = 18, // "You are already on that quest" QUEST_ERR_ALREADY_ON2 = 18, // DESCRIPTION "You are already on that quest"
QUEST_ERR_FAILED_MISSING_ITEMS = 21, // "You don't have the required items with you. Check storage." QUEST_ERR_FAILED_MISSING_ITEMS = 21, // DESCRIPTION "You don't have the required items with you. Check storage."
QUEST_ERR_FAILED_NOT_ENOUGH_MONEY = 23, // "You don't have enough money for that quest" QUEST_ERR_FAILED_NOT_ENOUGH_MONEY = 23, // DESCRIPTION "You don't have enough money for that quest"
QUEST_ERR_FAILED_CAIS = 24, // "You cannot complete quests once you have reached tired time" QUEST_ERR_FAILED_CAIS = 24, // DESCRIPTION "You cannot complete quests once you have reached tired time"
QUEST_ERR_ALREADY_DONE_DAILY = 26, // "You have completed that daily quest today." QUEST_ERR_ALREADY_DONE_DAILY = 26, // DESCRIPTION "You have completed that daily quest today."
QUEST_ERR_FAILED_SPELL = 28, // "You haven't learned the required spell." QUEST_ERR_FAILED_SPELL = 28, // DESCRIPTION "You haven't learned the required spell."
QUEST_ERR_HAS_IN_PROGRESS = 30 // "Progress Bar objective not completed" QUEST_ERR_HAS_IN_PROGRESS = 30 // DESCRIPTION "Progress Bar objective not completed"
}; };
// EnumUtils: DESCRIBE THIS
enum class QuestPushReason : uint8 enum class QuestPushReason : uint8
{ {
Success = 0, // "Sharing quest with %s..." Success = 0, // "Sharing quest with %s..."
@@ -0,0 +1,259 @@
/*
* 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 "QuestDef.h"
#include "Define.h"
#include "SmartEnum.h"
#include <stdexcept>
namespace Trinity::Impl::EnumUtilsImpl
{
/********************************************************************\
|* data for enum 'QuestFailedReason' in 'QuestDef.h' auto-generated *|
\********************************************************************/
template <>
TC_API_EXPORT EnumText EnumUtils<QuestFailedReason>::ToString(QuestFailedReason value)
{
switch (value)
{
case QUEST_ERR_NONE: return { "QUEST_ERR_NONE", "QUEST_ERR_NONE", "" };
case QUEST_ERR_FAILED_LOW_LEVEL: return { "QUEST_ERR_FAILED_LOW_LEVEL", "QUEST_ERR_FAILED_LOW_LEVEL", "\042You are not high enough level for that quest.\042\042" };
case QUEST_ERR_FAILED_WRONG_RACE: return { "QUEST_ERR_FAILED_WRONG_RACE", "QUEST_ERR_FAILED_WRONG_RACE", "\042That quest is not available to your race.\042" };
case QUEST_ERR_ALREADY_DONE: return { "QUEST_ERR_ALREADY_DONE", "QUEST_ERR_ALREADY_DONE", "\042You have completed that daily quest today.\042" };
case QUEST_ERR_ONLY_ONE_TIMED: return { "QUEST_ERR_ONLY_ONE_TIMED", "QUEST_ERR_ONLY_ONE_TIMED", "\042You can only be on one timed quest at a time\042" };
case QUEST_ERR_ALREADY_ON1: return { "QUEST_ERR_ALREADY_ON1", "QUEST_ERR_ALREADY_ON1", "\042You are already on that quest\042" };
case QUEST_ERR_FAILED_EXPANSION: return { "QUEST_ERR_FAILED_EXPANSION", "QUEST_ERR_FAILED_EXPANSION", "\042This quest requires an expansion enabled account.\042" };
case QUEST_ERR_ALREADY_ON2: return { "QUEST_ERR_ALREADY_ON2", "QUEST_ERR_ALREADY_ON2", "\042You are already on that quest\042" };
case QUEST_ERR_FAILED_MISSING_ITEMS: return { "QUEST_ERR_FAILED_MISSING_ITEMS", "QUEST_ERR_FAILED_MISSING_ITEMS", "\042You don't have the required items with you. Check storage.\042" };
case QUEST_ERR_FAILED_NOT_ENOUGH_MONEY: return { "QUEST_ERR_FAILED_NOT_ENOUGH_MONEY", "QUEST_ERR_FAILED_NOT_ENOUGH_MONEY", "\042You don't have enough money for that quest\042" };
case QUEST_ERR_FAILED_CAIS: return { "QUEST_ERR_FAILED_CAIS", "QUEST_ERR_FAILED_CAIS", "\042You cannot complete quests once you have reached tired time\042" };
case QUEST_ERR_ALREADY_DONE_DAILY: return { "QUEST_ERR_ALREADY_DONE_DAILY", "QUEST_ERR_ALREADY_DONE_DAILY", "\042You have completed that daily quest today.\042" };
case QUEST_ERR_FAILED_SPELL: return { "QUEST_ERR_FAILED_SPELL", "QUEST_ERR_FAILED_SPELL", "\042You haven't learned the required spell.\042" };
case QUEST_ERR_HAS_IN_PROGRESS: return { "QUEST_ERR_HAS_IN_PROGRESS", "QUEST_ERR_HAS_IN_PROGRESS", "\042Progress Bar objective not completed\042" };
default: throw std::out_of_range("value");
}
}
template <>
TC_API_EXPORT size_t EnumUtils<QuestFailedReason>::Count() { return 14; }
template <>
TC_API_EXPORT QuestFailedReason EnumUtils<QuestFailedReason>::FromIndex(size_t index)
{
switch (index)
{
case 0: return QUEST_ERR_NONE;
case 1: return QUEST_ERR_FAILED_LOW_LEVEL;
case 2: return QUEST_ERR_FAILED_WRONG_RACE;
case 3: return QUEST_ERR_ALREADY_DONE;
case 4: return QUEST_ERR_ONLY_ONE_TIMED;
case 5: return QUEST_ERR_ALREADY_ON1;
case 6: return QUEST_ERR_FAILED_EXPANSION;
case 7: return QUEST_ERR_ALREADY_ON2;
case 8: return QUEST_ERR_FAILED_MISSING_ITEMS;
case 9: return QUEST_ERR_FAILED_NOT_ENOUGH_MONEY;
case 10: return QUEST_ERR_FAILED_CAIS;
case 11: return QUEST_ERR_ALREADY_DONE_DAILY;
case 12: return QUEST_ERR_FAILED_SPELL;
case 13: return QUEST_ERR_HAS_IN_PROGRESS;
default: throw std::out_of_range("index");
}
}
template <>
TC_API_EXPORT size_t EnumUtils<QuestFailedReason>::ToIndex(QuestFailedReason value)
{
switch (value)
{
case QUEST_ERR_NONE: return 0;
case QUEST_ERR_FAILED_LOW_LEVEL: return 1;
case QUEST_ERR_FAILED_WRONG_RACE: return 2;
case QUEST_ERR_ALREADY_DONE: return 3;
case QUEST_ERR_ONLY_ONE_TIMED: return 4;
case QUEST_ERR_ALREADY_ON1: return 5;
case QUEST_ERR_FAILED_EXPANSION: return 6;
case QUEST_ERR_ALREADY_ON2: return 7;
case QUEST_ERR_FAILED_MISSING_ITEMS: return 8;
case QUEST_ERR_FAILED_NOT_ENOUGH_MONEY: return 9;
case QUEST_ERR_FAILED_CAIS: return 10;
case QUEST_ERR_ALREADY_DONE_DAILY: return 11;
case QUEST_ERR_FAILED_SPELL: return 12;
case QUEST_ERR_HAS_IN_PROGRESS: return 13;
default: throw std::out_of_range("value");
}
}
/******************************************************************\
|* data for enum 'QuestPushReason' in 'QuestDef.h' auto-generated *|
\******************************************************************/
template <>
TC_API_EXPORT EnumText EnumUtils<QuestPushReason>::ToString(QuestPushReason value)
{
switch (value)
{
case QuestPushReason::Success: return { "Success", "Success", "\042Sharing quest with %s...\042" };
case QuestPushReason::Invalid: return { "Invalid", "Invalid", "\042%s is not eligible for that quest\042" };
case QuestPushReason::InvalidToRecipient: return { "InvalidToRecipient", "InvalidToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You are not eligible for that quest.\042" };
case QuestPushReason::Accepted: return { "Accepted", "Accepted", "\042%s has accepted your quest\042" };
case QuestPushReason::Declined: return { "Declined", "Declined", "\042%s has declined your quest\042" };
case QuestPushReason::Busy: return { "Busy", "Busy", "\042%s is busy\042" };
case QuestPushReason::Dead: return { "Dead", "Dead", "\042%s is dead.\042" };
case QuestPushReason::DeadToRecipient: return { "DeadToRecipient", "DeadToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You are dead.\042" };
case QuestPushReason::LogFull: return { "LogFull", "LogFull", "\042%s's quest log is full\042" };
case QuestPushReason::LogFullToRecipient: return { "LogFullToRecipient", "LogFullToRecipient", "\042%s's attempt to share quest \042%s\042 failed. Your quest log is full.\042" };
case QuestPushReason::OnQuest: return { "OnQuest", "OnQuest", "\042%s is already on that quest\042" };
case QuestPushReason::OnQuestToRecipient: return { "OnQuestToRecipient", "OnQuestToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You are already on that quest.\042" };
case QuestPushReason::AlreadyDone: return { "AlreadyDone", "AlreadyDone", "\042%s has completed that quest\042" };
case QuestPushReason::AlreadyDoneToRecipient: return { "AlreadyDoneToRecipient", "AlreadyDoneToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You have completed that quest.\042" };
case QuestPushReason::NotDaily: return { "NotDaily", "NotDaily", "\042That quest cannot be shared today\042" };
case QuestPushReason::TimerExpired: return { "TimerExpired", "TimerExpired", "\042Quest sharing timer has expired\042" };
case QuestPushReason::NotInParty: return { "NotInParty", "NotInParty", "\042You are not in a party\042" };
case QuestPushReason::DifferentServerDaily: return { "DifferentServerDaily", "DifferentServerDaily", "\042%s is not eligible for that quest today\042" };
case QuestPushReason::DifferentServerDailyToRecipient: return { "DifferentServerDailyToRecipient", "DifferentServerDailyToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You are not eligible for that quest today.\042" };
case QuestPushReason::NotAllowed: return { "NotAllowed", "NotAllowed", "\042That quest cannot be shared\042" };
case QuestPushReason::Prerequisite: return { "Prerequisite", "Prerequisite", "\042%s hasn't completed all of the prerequisite quests required for that quest.\042" };
case QuestPushReason::PrerequisiteToRecipient: return { "PrerequisiteToRecipient", "PrerequisiteToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You must complete all of the prerequisite quests first.\042" };
case QuestPushReason::LowLevel: return { "LowLevel", "LowLevel", "\042%s is too low level for that quest.\042" };
case QuestPushReason::LowLevelToRecipient: return { "LowLevelToRecipient", "LowLevelToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You are too low level for that quest.\042" };
case QuestPushReason::HighLevel: return { "HighLevel", "HighLevel", "\042%s is too high level for that quest.\042" };
case QuestPushReason::HighLevelToRecipient: return { "HighLevelToRecipient", "HighLevelToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You are too high level for that quest.\042" };
case QuestPushReason::Class: return { "Class", "Class", "\042%s is the wrong class for that quest.\042" };
case QuestPushReason::ClassToRecipient: return { "ClassToRecipient", "ClassToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You are the wrong class for that quest.\042" };
case QuestPushReason::Race: return { "Race", "Race", "\042%s is the wrong race for that quest.\042" };
case QuestPushReason::RaceToRecipient: return { "RaceToRecipient", "RaceToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You are the wrong race for that quest.\042" };
case QuestPushReason::LowFaction: return { "LowFaction", "LowFaction", "\042%s's reputation is too low for that quest.\042" };
case QuestPushReason::LowFactionToRecipient: return { "LowFactionToRecipient", "LowFactionToRecipient", "\042%s's attempt to share quest \042%s\042 failed. Your reputation is too low for that quest.\042" };
case QuestPushReason::Expansion: return { "Expansion", "Expansion", "\042%s doesn't own the required expansion for that quest.\042" };
case QuestPushReason::ExpansionToRecipient: return { "ExpansionToRecipient", "ExpansionToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You do not own the required expansion for that quest.\042" };
case QuestPushReason::NotGarrisonOwner: return { "NotGarrisonOwner", "NotGarrisonOwner", "\042%s must own a garrison to accept that quest.\042" };
case QuestPushReason::NotGarrisonOwnerToRecipient: return { "NotGarrisonOwnerToRecipient", "NotGarrisonOwnerToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You must own a garrison to accept that quest.\042" };
case QuestPushReason::WrongCovenant: return { "WrongCovenant", "WrongCovenant", "\042%s is in the wrong covenant for that quest.\042" };
case QuestPushReason::WrongCovenantToRecipient: return { "WrongCovenantToRecipient", "WrongCovenantToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You are in the wrong covenant for that quest.\042" };
case QuestPushReason::NewPlayerExperience: return { "NewPlayerExperience", "NewPlayerExperience", "\042%s must complete Exile's Reach to accept that quest.\042" };
case QuestPushReason::NewPlayerExperienceToRecipient: return { "NewPlayerExperienceToRecipient", "NewPlayerExperienceToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You must complete Exile's Reach to accept that quest.\042" };
case QuestPushReason::WrongFaction: return { "WrongFaction", "WrongFaction", "\042%s is the wrong faction for that quest.\042" };
case QuestPushReason::WrongFactionToRecipient: return { "WrongFactionToRecipient", "WrongFactionToRecipient", "\042%s's attempt to share quest \042%s\042 failed. You are the wrong faction for that quest.\042" };
default: throw std::out_of_range("value");
}
}
template <>
TC_API_EXPORT size_t EnumUtils<QuestPushReason>::Count() { return 42; }
template <>
TC_API_EXPORT QuestPushReason EnumUtils<QuestPushReason>::FromIndex(size_t index)
{
switch (index)
{
case 0: return QuestPushReason::Success;
case 1: return QuestPushReason::Invalid;
case 2: return QuestPushReason::InvalidToRecipient;
case 3: return QuestPushReason::Accepted;
case 4: return QuestPushReason::Declined;
case 5: return QuestPushReason::Busy;
case 6: return QuestPushReason::Dead;
case 7: return QuestPushReason::DeadToRecipient;
case 8: return QuestPushReason::LogFull;
case 9: return QuestPushReason::LogFullToRecipient;
case 10: return QuestPushReason::OnQuest;
case 11: return QuestPushReason::OnQuestToRecipient;
case 12: return QuestPushReason::AlreadyDone;
case 13: return QuestPushReason::AlreadyDoneToRecipient;
case 14: return QuestPushReason::NotDaily;
case 15: return QuestPushReason::TimerExpired;
case 16: return QuestPushReason::NotInParty;
case 17: return QuestPushReason::DifferentServerDaily;
case 18: return QuestPushReason::DifferentServerDailyToRecipient;
case 19: return QuestPushReason::NotAllowed;
case 20: return QuestPushReason::Prerequisite;
case 21: return QuestPushReason::PrerequisiteToRecipient;
case 22: return QuestPushReason::LowLevel;
case 23: return QuestPushReason::LowLevelToRecipient;
case 24: return QuestPushReason::HighLevel;
case 25: return QuestPushReason::HighLevelToRecipient;
case 26: return QuestPushReason::Class;
case 27: return QuestPushReason::ClassToRecipient;
case 28: return QuestPushReason::Race;
case 29: return QuestPushReason::RaceToRecipient;
case 30: return QuestPushReason::LowFaction;
case 31: return QuestPushReason::LowFactionToRecipient;
case 32: return QuestPushReason::Expansion;
case 33: return QuestPushReason::ExpansionToRecipient;
case 34: return QuestPushReason::NotGarrisonOwner;
case 35: return QuestPushReason::NotGarrisonOwnerToRecipient;
case 36: return QuestPushReason::WrongCovenant;
case 37: return QuestPushReason::WrongCovenantToRecipient;
case 38: return QuestPushReason::NewPlayerExperience;
case 39: return QuestPushReason::NewPlayerExperienceToRecipient;
case 40: return QuestPushReason::WrongFaction;
case 41: return QuestPushReason::WrongFactionToRecipient;
default: throw std::out_of_range("index");
}
}
template <>
TC_API_EXPORT size_t EnumUtils<QuestPushReason>::ToIndex(QuestPushReason value)
{
switch (value)
{
case QuestPushReason::Success: return 0;
case QuestPushReason::Invalid: return 1;
case QuestPushReason::InvalidToRecipient: return 2;
case QuestPushReason::Accepted: return 3;
case QuestPushReason::Declined: return 4;
case QuestPushReason::Busy: return 5;
case QuestPushReason::Dead: return 6;
case QuestPushReason::DeadToRecipient: return 7;
case QuestPushReason::LogFull: return 8;
case QuestPushReason::LogFullToRecipient: return 9;
case QuestPushReason::OnQuest: return 10;
case QuestPushReason::OnQuestToRecipient: return 11;
case QuestPushReason::AlreadyDone: return 12;
case QuestPushReason::AlreadyDoneToRecipient: return 13;
case QuestPushReason::NotDaily: return 14;
case QuestPushReason::TimerExpired: return 15;
case QuestPushReason::NotInParty: return 16;
case QuestPushReason::DifferentServerDaily: return 17;
case QuestPushReason::DifferentServerDailyToRecipient: return 18;
case QuestPushReason::NotAllowed: return 19;
case QuestPushReason::Prerequisite: return 20;
case QuestPushReason::PrerequisiteToRecipient: return 21;
case QuestPushReason::LowLevel: return 22;
case QuestPushReason::LowLevelToRecipient: return 23;
case QuestPushReason::HighLevel: return 24;
case QuestPushReason::HighLevelToRecipient: return 25;
case QuestPushReason::Class: return 26;
case QuestPushReason::ClassToRecipient: return 27;
case QuestPushReason::Race: return 28;
case QuestPushReason::RaceToRecipient: return 29;
case QuestPushReason::LowFaction: return 30;
case QuestPushReason::LowFactionToRecipient: return 31;
case QuestPushReason::Expansion: return 32;
case QuestPushReason::ExpansionToRecipient: return 33;
case QuestPushReason::NotGarrisonOwner: return 34;
case QuestPushReason::NotGarrisonOwnerToRecipient: return 35;
case QuestPushReason::WrongCovenant: return 36;
case QuestPushReason::WrongCovenantToRecipient: return 37;
case QuestPushReason::NewPlayerExperience: return 38;
case QuestPushReason::NewPlayerExperienceToRecipient: return 39;
case QuestPushReason::WrongFaction: return 40;
case QuestPushReason::WrongFactionToRecipient: return 41;
default: throw std::out_of_range("value");
}
}
}
+70 -184
View File
@@ -27,6 +27,7 @@ EndScriptData */
#include "BattlefieldMgr.h" #include "BattlefieldMgr.h"
#include "BattlegroundMgr.h" #include "BattlegroundMgr.h"
#include "CellImpl.h" #include "CellImpl.h"
#include "Channel.h"
#include "ChannelPackets.h" #include "ChannelPackets.h"
#include "Chat.h" #include "Chat.h"
#include "ChatPackets.h" #include "ChatPackets.h"
@@ -116,7 +117,6 @@ public:
{ "send", rbac::RBAC_PERM_COMMAND_DEBUG_SEND, false, nullptr, "", debugSendCommandTable }, { "send", rbac::RBAC_PERM_COMMAND_DEBUG_SEND, false, nullptr, "", debugSendCommandTable },
{ "setaurastate", rbac::RBAC_PERM_COMMAND_DEBUG_SETAURASTATE, false, &HandleDebugSetAuraStateCommand, "" }, { "setaurastate", rbac::RBAC_PERM_COMMAND_DEBUG_SETAURASTATE, false, &HandleDebugSetAuraStateCommand, "" },
{ "spawnvehicle", rbac::RBAC_PERM_COMMAND_DEBUG_SPAWNVEHICLE, false, &HandleDebugSpawnVehicleCommand, "" }, { "spawnvehicle", rbac::RBAC_PERM_COMMAND_DEBUG_SPAWNVEHICLE, false, &HandleDebugSpawnVehicleCommand, "" },
{ "setvid", rbac::RBAC_PERM_COMMAND_DEBUG_SETVID, false, &HandleDebugSetVehicleIdCommand, "" },
{ "entervehicle", rbac::RBAC_PERM_COMMAND_DEBUG_ENTERVEHICLE, false, &HandleDebugEnterVehicleCommand, "" }, { "entervehicle", rbac::RBAC_PERM_COMMAND_DEBUG_ENTERVEHICLE, false, &HandleDebugEnterVehicleCommand, "" },
{ "worldstate", rbac::RBAC_PERM_COMMAND_DEBUG_WORLDSTATE, false, &HandleDebugUpdateWorldStateCommand, "" }, { "worldstate", rbac::RBAC_PERM_COMMAND_DEBUG_WORLDSTATE, false, &HandleDebugUpdateWorldStateCommand, "" },
{ "itemexpire", rbac::RBAC_PERM_COMMAND_DEBUG_ITEMEXPIRE, false, &HandleDebugItemExpireCommand, "" }, { "itemexpire", rbac::RBAC_PERM_COMMAND_DEBUG_ITEMEXPIRE, false, &HandleDebugItemExpireCommand, "" },
@@ -218,7 +218,7 @@ public:
handler->PSendSysMessage(SZFMTD " waypoints dumped", flyByCameras->size()); handler->PSendSysMessage(SZFMTD " waypoints dumped", flyByCameras->size());
} }
handler->GetSession()->GetPlayer()->SendCinematicStart(cinematicId); handler->GetPlayer()->SendCinematicStart(cinematicId);
return true; return true;
} }
@@ -233,7 +233,7 @@ public:
return false; return false;
} }
handler->GetSession()->GetPlayer()->SendMovieStart(movieId); handler->GetPlayer()->SendMovieStart(movieId);
return true; return true;
} }
@@ -247,7 +247,7 @@ public:
return false; return false;
} }
Player* player = handler->GetSession()->GetPlayer(); Player* player = handler->GetPlayer();
Unit* unit = handler->getSelectedUnit(); Unit* unit = handler->getSelectedUnit();
if (!unit) if (!unit)
@@ -276,7 +276,7 @@ public:
return false; return false;
} }
Player* player = handler->GetSession()->GetPlayer(); Player* player = handler->GetPlayer();
player->PlayDirectMusic(musicId, player); player->PlayDirectMusic(musicId, player);
@@ -284,74 +284,41 @@ public:
return true; return true;
} }
static bool HandleDebugSendSpellFailCommand(ChatHandler* handler, char const* args) static bool HandleDebugSendSpellFailCommand(ChatHandler* handler, SpellCastResult result, Optional<int32> failArg1, Optional<int32> failArg2)
{ {
if (!*args)
return false;
char* result = strtok((char*)args, " ");
if (!result)
return false;
uint8 failNum = (uint8)atoi(result);
if (failNum == 0 && *result != '0')
return false;
char* fail1 = strtok(nullptr, " ");
uint8 failArg1 = fail1 ? (uint8)atoi(fail1) : 0;
char* fail2 = strtok(nullptr, " ");
uint8 failArg2 = fail2 ? (uint8)atoi(fail2) : 0;
WorldPackets::Spells::CastFailed castFailed; WorldPackets::Spells::CastFailed castFailed;
castFailed.CastID = ObjectGuid::Empty; castFailed.CastID = ObjectGuid::Empty;
castFailed.SpellID = 133; castFailed.SpellID = 133;
castFailed.Reason = failNum; castFailed.Reason = result;
castFailed.FailedArg1 = failArg1; castFailed.FailedArg1 = failArg1.value_or(-1);
castFailed.FailedArg2 = failArg2; castFailed.FailedArg2 = failArg2.value_or(-1);
handler->GetSession()->SendPacket(castFailed.Write()); handler->GetSession()->SendPacket(castFailed.Write());
return true; return true;
} }
static bool HandleDebugSendPlayerChoiceCommand(ChatHandler* handler, char const* args)
static bool HandleDebugSendPlayerChoiceCommand(ChatHandler* handler, int32 choiceId)
{ {
if (!*args) Player* player = handler->GetPlayer();
return false;
int32 choiceId = atoi(args);
Player* player = handler->GetSession()->GetPlayer();
player->SendPlayerChoice(player->GetGUID(), choiceId); player->SendPlayerChoice(player->GetGUID(), choiceId);
return true; return true;
} }
static bool HandleDebugSendEquipErrorCommand(ChatHandler* handler, char const* args) static bool HandleDebugSendEquipErrorCommand(ChatHandler* handler, InventoryResult error)
{ {
if (!*args) handler->GetPlayer()->SendEquipError(error, nullptr, nullptr);
return false;
InventoryResult msg = InventoryResult(atoi(args));
handler->GetSession()->GetPlayer()->SendEquipError(msg, nullptr, nullptr);
return true; return true;
} }
static bool HandleDebugSendSellErrorCommand(ChatHandler* handler, char const* args) static bool HandleDebugSendSellErrorCommand(ChatHandler* handler, SellResult error)
{ {
if (!*args) handler->GetPlayer()->SendSellError(error, nullptr, ObjectGuid::Empty);
return false;
SellResult msg = SellResult(atoi(args));
handler->GetSession()->GetPlayer()->SendSellError(msg, nullptr, ObjectGuid::Empty);
return true; return true;
} }
static bool HandleDebugSendBuyErrorCommand(ChatHandler* handler, char const* args) static bool HandleDebugSendBuyErrorCommand(ChatHandler* handler, BuyResult error)
{ {
if (!*args) handler->GetPlayer()->SendBuyError(error, nullptr, 0, 0);
return false;
BuyResult msg = BuyResult(atoi(args));
handler->GetSession()->GetPlayer()->SendBuyError(msg, nullptr, 0, 0);
return true; return true;
} }
@@ -360,7 +327,7 @@ public:
Unit* unit = handler->getSelectedUnit(); Unit* unit = handler->getSelectedUnit();
Player* player = nullptr; Player* player = nullptr;
if (!unit || (unit->GetTypeId() != TYPEID_PLAYER)) if (!unit || (unit->GetTypeId() != TYPEID_PLAYER))
player = handler->GetSession()->GetPlayer(); player = handler->GetPlayer();
else else
player = unit->ToPlayer(); player = unit->ToPlayer();
@@ -508,13 +475,13 @@ public:
static bool HandleDebugUpdateWorldStateCommand(ChatHandler* handler, uint32 variable, uint32 value) static bool HandleDebugUpdateWorldStateCommand(ChatHandler* handler, uint32 variable, uint32 value)
{ {
handler->GetSession()->GetPlayer()->SendUpdateWorldState(variable, value); handler->GetPlayer()->SendUpdateWorldState(variable, value);
return true; return true;
} }
static bool HandleDebugAreaTriggersCommand(ChatHandler* handler) static bool HandleDebugAreaTriggersCommand(ChatHandler* handler)
{ {
Player* player = handler->GetSession()->GetPlayer(); Player* player = handler->GetPlayer();
if (!player->isDebugAreaTriggers) if (!player->isDebugAreaTriggers)
{ {
handler->PSendSysMessage(LANG_DEBUG_AREATRIGGER_ON); handler->PSendSysMessage(LANG_DEBUG_AREATRIGGER_ON);
@@ -528,38 +495,26 @@ public:
return true; return true;
} }
static bool HandleDebugSendChannelNotifyCommand(ChatHandler* handler, char const* args) static bool HandleDebugSendChannelNotifyCommand(ChatHandler* handler, ChatNotify type)
{ {
if (!*args)
return false;
char const* name = "test";
uint8 code = atoi(args);
WorldPackets::Channel::ChannelNotify channelNotify; WorldPackets::Channel::ChannelNotify channelNotify;
channelNotify.Type = code; channelNotify.Type = type;
channelNotify._Channel = name; channelNotify._Channel = "test";
handler->GetSession()->SendPacket(channelNotify.Write()); handler->GetSession()->SendPacket(channelNotify.Write());
return true; return true;
} }
static bool HandleDebugSendChatMsgCommand(ChatHandler* handler, char const* args) static bool HandleDebugSendChatMsgCommand(ChatHandler* handler, ChatMsg type)
{ {
if (!*args)
return false;
char const* msg = "testtest";
uint8 type = atoi(args);
WorldPackets::Chat::Chat packet; WorldPackets::Chat::Chat packet;
packet.Initialize(ChatMsg(type), LANG_UNIVERSAL, handler->GetSession()->GetPlayer(), handler->GetSession()->GetPlayer(), msg, 0, "chan"); packet.Initialize(type, LANG_UNIVERSAL, handler->GetPlayer(), handler->GetPlayer(), "testtest", 0, "chan");
handler->GetSession()->SendPacket(packet.Write()); handler->GetSession()->SendPacket(packet.Write());
return true; return true;
} }
static bool HandleDebugSendQuestPartyMsgCommand(ChatHandler* handler, char const* args) static bool HandleDebugSendQuestPartyMsgCommand(ChatHandler* handler, QuestPushReason msg)
{ {
uint32 msg = atoul(args); handler->GetSession()->GetPlayer()->SendPushToPartyResponse(handler->GetPlayer(), msg);
handler->GetSession()->GetPlayer()->SendPushToPartyResponse(handler->GetSession()->GetPlayer(), static_cast<QuestPushReason>(msg));
return true; return true;
} }
@@ -575,10 +530,9 @@ public:
return true; return true;
} }
static bool HandleDebugSendQuestInvalidMsgCommand(ChatHandler* handler, char const* args) static bool HandleDebugSendQuestInvalidMsgCommand(ChatHandler* handler, QuestFailedReason msg)
{ {
QuestFailedReason msg = static_cast<QuestFailedReason>(atoul(args)); handler->GetPlayer()->SendCanTakeQuestResponse(msg);
handler->GetSession()->GetPlayer()->SendCanTakeQuestResponse(msg);
return true; return true;
} }
@@ -605,7 +559,7 @@ public:
Player* player = handler->getSelectedPlayer(); Player* player = handler->getSelectedPlayer();
if (!player) if (!player)
player = handler->GetSession()->GetPlayer(); player = handler->GetPlayer();
if (!listQueue && !checkAll) if (!listQueue && !checkAll)
{ {
@@ -864,7 +818,7 @@ public:
{ {
Unit* target = handler->getSelectedUnit(); Unit* target = handler->getSelectedUnit();
if (!target) if (!target)
target = handler->GetSession()->GetPlayer(); target = handler->GetPlayer();
ThreatManager& mgr = target->GetThreatManager(); ThreatManager& mgr = target->GetThreatManager();
if (!target->IsAlive()) if (!target->IsAlive())
@@ -1024,7 +978,7 @@ public:
{ {
Unit* target = handler->getSelectedUnit(); Unit* target = handler->getSelectedUnit();
if (!target) if (!target)
target = handler->GetSession()->GetPlayer(); target = handler->GetPlayer();
handler->PSendSysMessage("Combat refs: (Combat state: %d | Manager state: %d)", target->IsInCombat(), target->GetCombatManager().HasCombat()); handler->PSendSysMessage("Combat refs: (Combat state: %d | Manager state: %d)", target->IsInCombat(), target->GetCombatManager().HasCombat());
for (auto const& ref : target->GetCombatManager().GetPvPCombatRefs()) for (auto const& ref : target->GetCombatManager().GetPvPCombatRefs())
@@ -1040,25 +994,6 @@ public:
return true; return true;
} }
static bool HandleDebugSetVehicleIdCommand(ChatHandler* handler, char const* args)
{
Unit* target = handler->getSelectedUnit();
if (!target || target->IsVehicle())
return false;
if (!args)
return false;
char* i = strtok((char*)args, " ");
if (!i)
return false;
uint32 id = atoul(i);
//target->SetVehicleId(id);
handler->PSendSysMessage("Vehicle id set to %u", id);
return true;
}
static bool HandleDebugEnterVehicleCommand(ChatHandler* handler, uint32 entry, Optional<int8> seatId) static bool HandleDebugEnterVehicleCommand(ChatHandler* handler, uint32 entry, Optional<int8> seatId)
{ {
Unit* target = handler->getSelectedUnit(); Unit* target = handler->getSelectedUnit();
@@ -1069,13 +1004,13 @@ public:
seatId = -1; seatId = -1;
if (!entry) if (!entry)
handler->GetSession()->GetPlayer()->EnterVehicle(target, *seatId); handler->GetPlayer()->EnterVehicle(target, *seatId);
else else
{ {
Creature* passenger = nullptr; Creature* passenger = nullptr;
Trinity::AllCreaturesOfEntryInRange check(handler->GetSession()->GetPlayer(), entry, 20.0f); Trinity::AllCreaturesOfEntryInRange check(handler->GetPlayer(), entry, 20.0f);
Trinity::CreatureSearcher<Trinity::AllCreaturesOfEntryInRange> searcher(handler->GetSession()->GetPlayer(), passenger, check); Trinity::CreatureSearcher<Trinity::AllCreaturesOfEntryInRange> searcher(handler->GetPlayer(), passenger, check);
Cell::VisitAllObjects(handler->GetSession()->GetPlayer(), searcher, 30.0f); Cell::VisitAllObjects(handler->GetPlayer(), searcher, 30.0f);
if (!passenger || passenger == target) if (!passenger || passenger == target)
return false; return false;
passenger->EnterVehicle(target, *seatId); passenger->EnterVehicle(target, *seatId);
@@ -1087,11 +1022,11 @@ public:
static bool HandleDebugSpawnVehicleCommand(ChatHandler* handler, uint32 entry, Optional<uint32> id) static bool HandleDebugSpawnVehicleCommand(ChatHandler* handler, uint32 entry, Optional<uint32> id)
{ {
float x, y, z, o = handler->GetSession()->GetPlayer()->GetOrientation(); float x, y, z, o = handler->GetPlayer()->GetOrientation();
handler->GetSession()->GetPlayer()->GetClosePoint(x, y, z, handler->GetSession()->GetPlayer()->GetCombatReach()); handler->GetPlayer()->GetClosePoint(x, y, z, handler->GetPlayer()->GetCombatReach());
if (!id) if (!id)
return handler->GetSession()->GetPlayer()->SummonCreature(entry, x, y, z, o) != nullptr; return handler->GetPlayer()->SummonCreature(entry, x, y, z, o) != nullptr;
CreatureTemplate const* ci = sObjectMgr->GetCreatureTemplate(entry); CreatureTemplate const* ci = sObjectMgr->GetCreatureTemplate(entry);
@@ -1103,14 +1038,14 @@ public:
if (!ve) if (!ve)
return false; return false;
Map* map = handler->GetSession()->GetPlayer()->GetMap(); Map* map = handler->GetPlayer()->GetMap();
Position pos = { x, y, z, o }; Position pos = { x, y, z, o };
Creature* v = Creature::CreateCreature(entry, map, pos, *id); Creature* v = Creature::CreateCreature(entry, map, pos, *id);
if (!v) if (!v)
return false; return false;
PhasingHandler::InheritPhaseShift(v, handler->GetSession()->GetPlayer()); PhasingHandler::InheritPhaseShift(v, handler->GetPlayer());
map->AddToMap(v); map->AddToMap(v);
@@ -1119,10 +1054,9 @@ public:
static bool HandleDebugSendLargePacketCommand(ChatHandler* handler) static bool HandleDebugSendLargePacketCommand(ChatHandler* handler)
{ {
char const* stuffingString = "This is a dummy string to push the packet's size beyond 128000 bytes. ";
std::ostringstream ss; std::ostringstream ss;
while (ss.str().size() < 128000) while (ss.str().size() < 128000)
ss << stuffingString; ss << "This is a dummy string to push the packet's size beyond 128000 bytes. ";
handler->SendSysMessage(ss.str().c_str()); handler->SendSysMessage(ss.str().c_str());
return true; return true;
} }
@@ -1146,13 +1080,13 @@ public:
static bool HandleDebugItemExpireCommand(ChatHandler* handler, ObjectGuid::LowType guid) static bool HandleDebugItemExpireCommand(ChatHandler* handler, ObjectGuid::LowType guid)
{ {
Item* i = handler->GetSession()->GetPlayer()->GetItemByGuid(ObjectGuid::Create<HighGuid::Item>(guid)); Item* i = handler->GetPlayer()->GetItemByGuid(ObjectGuid::Create<HighGuid::Item>(guid));
if (!i) if (!i)
return false; return false;
handler->GetSession()->GetPlayer()->DestroyItem(i->GetBagSlot(), i->GetSlot(), true); handler->GetPlayer()->DestroyItem(i->GetBagSlot(), i->GetSlot(), true);
sScriptMgr->OnItemExpire(handler->GetSession()->GetPlayer(), i->GetTemplate()); sScriptMgr->OnItemExpire(handler->GetPlayer(), i->GetTemplate());
return true; return true;
} }
@@ -1172,7 +1106,7 @@ public:
{ {
if (Unit* unit = handler->getSelectedUnit()) if (Unit* unit = handler->getSelectedUnit())
{ {
Player* player = handler->GetSession()->GetPlayer(); Player* player = handler->GetPlayer();
handler->PSendSysMessage("Checking LoS %s -> %s:", player->GetName().c_str(), unit->GetName().c_str()); handler->PSendSysMessage("Checking LoS %s -> %s:", player->GetName().c_str(), unit->GetName().c_str());
handler->PSendSysMessage(" VMAP LoS: %s", player->IsWithinLOSInMap(unit, LINEOFSIGHT_CHECK_VMAP) ? "clear" : "obstructed"); handler->PSendSysMessage(" VMAP LoS: %s", player->IsWithinLOSInMap(unit, LINEOFSIGHT_CHECK_VMAP) ? "clear" : "obstructed");
handler->PSendSysMessage(" GObj LoS: %s", player->IsWithinLOSInMap(unit, LINEOFSIGHT_CHECK_GOBJECT) ? "clear" : "obstructed"); handler->PSendSysMessage(" GObj LoS: %s", player->IsWithinLOSInMap(unit, LINEOFSIGHT_CHECK_GOBJECT) ? "clear" : "obstructed");
@@ -1182,15 +1116,8 @@ public:
return false; return false;
} }
static bool HandleDebugSetAuraStateCommand(ChatHandler* handler, char const* args) static bool HandleDebugSetAuraStateCommand(ChatHandler* handler, Optional<AuraStateType> state, bool apply)
{ {
if (!*args)
{
handler->SendSysMessage(LANG_BAD_VALUE);
handler->SetSentErrorMessage(true);
return false;
}
Unit* unit = handler->getSelectedUnit(); Unit* unit = handler->getSelectedUnit();
if (!unit) if (!unit)
{ {
@@ -1199,47 +1126,36 @@ public:
return false; return false;
} }
int32 state = atoi((char*)args);
if (!state) if (!state)
{ {
// reset all states // reset all states
for (int i = 1; i <= 32; ++i) for (AuraStateType s : EnumUtils::Iterate<AuraStateType>())
unit->ModifyAuraState(AuraStateType(i), false); unit->ModifyAuraState(s, false);
return true; return true;
} }
unit->ModifyAuraState(AuraStateType(abs(state)), state > 0); unit->ModifyAuraState(*state, apply);
return true; return true;
} }
static bool HandleDebugMoveflagsCommand(ChatHandler* handler, char const* args) static bool HandleDebugMoveflagsCommand(ChatHandler* handler, Optional<uint32> moveFlags, Optional<uint32> moveFlagsExtra)
{ {
Unit* target = handler->getSelectedUnit(); Unit* target = handler->getSelectedUnit();
if (!target) if (!target)
target = handler->GetSession()->GetPlayer(); target = handler->GetPlayer();
if (!*args) if (!moveFlags)
{ {
//! Display case //! Display case
handler->PSendSysMessage(LANG_MOVEFLAGS_GET, target->GetUnitMovementFlags(), target->GetExtraUnitMovementFlags()); handler->PSendSysMessage(LANG_MOVEFLAGS_GET, target->GetUnitMovementFlags(), target->GetExtraUnitMovementFlags());
} }
else else
{ {
char* mask1 = strtok((char*)args, " ");
if (!mask1)
return false;
char* mask2 = strtok(nullptr, " \n");
uint32 moveFlags = (uint32)atoi(mask1);
target->SetUnitMovementFlags(moveFlags);
/// @fixme: port master's HandleDebugMoveflagsCommand; flags need different handling /// @fixme: port master's HandleDebugMoveflagsCommand; flags need different handling
if (mask2) if (moveFlagsExtra)
{ {
uint32 moveFlagsExtra = uint32(atoi(mask2)); target->SetExtraUnitMovementFlags(*moveFlagsExtra);
target->SetExtraUnitMovementFlags(moveFlagsExtra);
} }
if (target->GetTypeId() != TYPEID_PLAYER) if (target->GetTypeId() != TYPEID_PLAYER)
@@ -1259,7 +1175,7 @@ public:
static bool HandleWPGPSCommand(ChatHandler* handler) static bool HandleWPGPSCommand(ChatHandler* handler)
{ {
Player* player = handler->GetSession()->GetPlayer(); Player* player = handler->GetPlayer();
TC_LOG_INFO("sql.dev", "(@PATH, XX, %.3f, %.3f, %.5f, %.5f, 0, 0, 0, 100, 0),", player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation()); TC_LOG_INFO("sql.dev", "(@PATH, XX, %.3f, %.3f, %.5f, %.5f, 0, 0, 0, 100, 0),", player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation());
@@ -1269,7 +1185,7 @@ public:
static bool HandleDebugTransportCommand(ChatHandler* handler, std::string operation) static bool HandleDebugTransportCommand(ChatHandler* handler, std::string operation)
{ {
Transport* transport = handler->GetSession()->GetPlayer()->GetTransport(); Transport* transport = handler->GetPlayer()->GetTransport();
if (!transport) if (!transport)
return false; return false;
@@ -1295,7 +1211,7 @@ public:
static bool HandleDebugLoadCellsCommand(ChatHandler* handler, Optional<uint32> mapId) static bool HandleDebugLoadCellsCommand(ChatHandler* handler, Optional<uint32> mapId)
{ {
Player* player = handler->GetSession()->GetPlayer(); Player* player = handler->GetPlayer();
if (!player) if (!player)
return false; return false;
@@ -1313,7 +1229,7 @@ public:
static bool HandleDebugBoundaryCommand(ChatHandler* handler, Optional<ExactSequence<'f', 'i', 'l','l'>> fill, Optional<uint32> durationArg) static bool HandleDebugBoundaryCommand(ChatHandler* handler, Optional<ExactSequence<'f', 'i', 'l','l'>> fill, Optional<uint32> durationArg)
{ {
Player* player = handler->GetSession()->GetPlayer(); Player* player = handler->GetPlayer();
if (!player) if (!player)
return false; return false;
Creature* target = handler->getSelectedCreature(); Creature* target = handler->getSelectedCreature();
@@ -1437,7 +1353,7 @@ public:
static bool HandleDebugNearGraveyard(ChatHandler* handler, Optional<ExactSequence<'l', 'i', 'n', 'k', 'e', 'd'>> linked) static bool HandleDebugNearGraveyard(ChatHandler* handler, Optional<ExactSequence<'l', 'i', 'n', 'k', 'e', 'd'>> linked)
{ {
Player* player = handler->GetSession()->GetPlayer(); Player* player = handler->GetPlayer();
WorldSafeLocsEntry const* nearestLoc = nullptr; WorldSafeLocsEntry const* nearestLoc = nullptr;
if (linked) if (linked)
@@ -1483,18 +1399,18 @@ public:
return true; return true;
} }
static bool HandleDebugInstanceSpawns(ChatHandler* handler, char const* args) static bool HandleDebugInstanceSpawns(ChatHandler* handler, Variant<uint32, ExactSequence<'e', 'x', 'p', 'l', 'a', 'i', 'n'>> optArg)
{ {
Player const* const player = handler->GetSession()->GetPlayer(); Player const* const player = handler->GetPlayer();
if (!player) if (!player)
return false; return false;
bool explain = false; bool explain = false;
uint32 groupID = 0; uint32 groupID = 0;
if (!stricmp(args, "explain")) if (optArg.holds_alternative<ExactSequence<'e', 'x', 'p', 'l', 'a', 'i', 'n'>>())
explain = true; explain = true;
else else
groupID = atoi(args); groupID = optArg.get<uint32>();
if (groupID && !sObjectMgr->GetSpawnGroupData(groupID)) if (groupID && !sObjectMgr->GetSpawnGroupData(groupID))
{ {
@@ -1592,17 +1508,8 @@ public:
return true; return true;
} }
static bool HandleDebugConversationCommand(ChatHandler* handler, char const* args) static bool HandleDebugConversationCommand(ChatHandler* handler, uint32 conversationEntry)
{ {
if (!*args)
return false;
char const* conversationEntryStr = strtok((char*)args, " ");
if (!conversationEntryStr)
return false;
uint32 conversationEntry = atoi(conversationEntryStr);
Player* target = handler->getSelectedPlayerOrSelf(); Player* target = handler->getSelectedPlayerOrSelf();
if (!target) if (!target)
@@ -1615,17 +1522,8 @@ public:
return Conversation::CreateConversation(conversationEntry, target, *target, target->GetGUID()) != nullptr; return Conversation::CreateConversation(conversationEntry, target, *target, target->GetGUID()) != nullptr;
} }
static bool HandleDebugWorldStateCommand(ChatHandler* handler, char const* args) static bool HandleDebugWorldStateCommand(ChatHandler* handler, uint32 worldStateId, Optional<uint32> value)
{ {
if (!*args)
return false;
char const* worldStateIdStr = strtok((char*)args, " ");
char const* valueStr = args ? strtok(nullptr, " ") : nullptr;
if (!worldStateIdStr)
return false;
Player* target = handler->getSelectedPlayerOrSelf(); Player* target = handler->getSelectedPlayerOrSelf();
if (!target) if (!target)
@@ -1635,13 +1533,10 @@ public:
return false; return false;
} }
uint32 worldStateId = atoi(worldStateIdStr);
uint32 value = valueStr ? atoi(valueStr) : 0;
if (value) if (value)
{ {
sWorld->setWorldState(worldStateId, value); sWorld->setWorldState(worldStateId, *value);
target->SendUpdateWorldState(worldStateId, value); target->SendUpdateWorldState(worldStateId, *value);
} }
else else
handler->PSendSysMessage("Worldstate %u actual value : %u", worldStateId, sWorld->getWorldState(worldStateId)); handler->PSendSysMessage("Worldstate %u actual value : %u", worldStateId, sWorld->getWorldState(worldStateId));
@@ -1649,17 +1544,8 @@ public:
return true; return true;
} }
static bool HandleDebugWSExpressionCommand(ChatHandler* handler, char const* args) static bool HandleDebugWSExpressionCommand(ChatHandler* handler, uint32 expressionId)
{ {
if (!*args)
return false;
char const* expressionIdStr = strtok((char*)args, " ");
if (!expressionIdStr)
return false;
uint32 expressionId = atoi(expressionIdStr);
Player* target = handler->getSelectedPlayerOrSelf(); Player* target = handler->getSelectedPlayerOrSelf();
if (!target) if (!target)