Core/Packets: Implemented SMSG_CAST_FAILED and updated SpellCastResult enum

This commit is contained in:
Intel
2014-12-05 00:33:21 +02:00
parent 60a6a8ba44
commit 0d21ed3f86
5 changed files with 282 additions and 234 deletions

View File

@@ -1253,7 +1253,7 @@ enum SpellEffectName
TOTAL_SPELL_EFFECTS = 245,
};
enum SpellCastResult // (6.0)
enum SpellCastResult // 19116
{
SPELL_FAILED_SUCCESS = 0,
SPELL_FAILED_AFFECTING_COMBAT = 1,
@@ -1299,203 +1299,224 @@ enum SpellCastResult // (6.0)
SPELL_FAILED_GARRISON_OWNED = 41,
SPELL_FAILED_GARRISON_MAX_LEVEL = 42,
SPELL_FAILED_GARRISON_NOT_UPGRADEABLE = 43,
SPELL_FAILED_HIGHLEVEL = 44,
SPELL_FAILED_HUNGER_SATIATED = 45,
SPELL_FAILED_IMMUNE = 46,
SPELL_FAILED_INCORRECT_AREA = 47,
SPELL_FAILED_INTERRUPTED = 48,
SPELL_FAILED_INTERRUPTED_COMBAT = 49,
SPELL_FAILED_ITEM_ALREADY_ENCHANTED = 50,
SPELL_FAILED_ITEM_GONE = 51,
SPELL_FAILED_ITEM_NOT_FOUND = 52,
SPELL_FAILED_ITEM_NOT_READY = 53,
SPELL_FAILED_LEVEL_REQUIREMENT = 54,
SPELL_FAILED_LINE_OF_SIGHT = 55,
SPELL_FAILED_LOWLEVEL = 56,
SPELL_FAILED_LOW_CASTLEVEL = 57,
SPELL_FAILED_MAINHAND_EMPTY = 58,
SPELL_FAILED_MOVING = 59,
SPELL_FAILED_NEED_AMMO = 60,
SPELL_FAILED_NEED_AMMO_POUCH = 61,
SPELL_FAILED_NEED_EXOTIC_AMMO = 62,
SPELL_FAILED_NEED_MORE_ITEMS = 63,
SPELL_FAILED_NOPATH = 64,
SPELL_FAILED_NOT_BEHIND = 65,
SPELL_FAILED_NOT_FISHABLE = 66,
SPELL_FAILED_NOT_FLYING = 67,
SPELL_FAILED_NOT_HERE = 68,
SPELL_FAILED_NOT_INFRONT = 69,
SPELL_FAILED_NOT_IN_CONTROL = 70,
SPELL_FAILED_NOT_KNOWN = 71,
SPELL_FAILED_NOT_MOUNTED = 72,
SPELL_FAILED_NOT_ON_TAXI = 73,
SPELL_FAILED_NOT_ON_TRANSPORT = 74,
SPELL_FAILED_NOT_READY = 75,
SPELL_FAILED_NOT_SHAPESHIFT = 76,
SPELL_FAILED_NOT_STANDING = 77,
SPELL_FAILED_NOT_TRADEABLE = 78,
SPELL_FAILED_NOT_TRADING = 79,
SPELL_FAILED_NOT_UNSHEATHED = 80,
SPELL_FAILED_NOT_WHILE_GHOST = 81,
SPELL_FAILED_NOT_WHILE_LOOTING = 82,
SPELL_FAILED_NO_AMMO = 83,
SPELL_FAILED_NO_CHARGES_REMAIN = 84,
SPELL_FAILED_NO_CHAMPION = 85,
SPELL_FAILED_NO_COMBO_POINTS = 86,
SPELL_FAILED_NO_DUELING = 87,
SPELL_FAILED_NO_ENDURANCE = 88,
SPELL_FAILED_NO_FISH = 89,
SPELL_FAILED_NO_ITEMS_WHILE_SHAPESHIFTED = 90,
SPELL_FAILED_NO_MOUNTS_ALLOWED = 91,
SPELL_FAILED_NO_PET = 92,
SPELL_FAILED_NO_POWER = 93,
SPELL_FAILED_NOTHING_TO_DISPEL = 94,
SPELL_FAILED_NOTHING_TO_STEAL = 95,
SPELL_FAILED_ONLY_ABOVEWATER = 96,
SPELL_FAILED_ONLY_DAYTIME = 97,
SPELL_FAILED_ONLY_INDOORS = 98,
SPELL_FAILED_ONLY_MOUNTED = 99,
SPELL_FAILED_ONLY_NIGHTTIME = 100,
SPELL_FAILED_ONLY_OUTDOORS = 101,
SPELL_FAILED_ONLY_SHAPESHIFT = 102,
SPELL_FAILED_ONLY_STEALTHED = 103,
SPELL_FAILED_ONLY_UNDERWATER = 104,
SPELL_FAILED_OUT_OF_RANGE = 105,
SPELL_FAILED_PACIFIED = 106,
SPELL_FAILED_POSSESSED = 107,
SPELL_FAILED_REAGENTS = 108,
SPELL_FAILED_REQUIRES_AREA = 109,
SPELL_FAILED_REQUIRES_SPELL_FOCUS = 110,
SPELL_FAILED_ROOTED = 111,
SPELL_FAILED_SILENCED = 112,
SPELL_FAILED_SPELL_IN_PROGRESS = 113,
SPELL_FAILED_SPELL_LEARNED = 114,
SPELL_FAILED_SPELL_UNAVAILABLE = 115,
SPELL_FAILED_STUNNED = 116,
SPELL_FAILED_TARGETS_DEAD = 117,
SPELL_FAILED_TARGET_AFFECTING_COMBAT = 118,
SPELL_FAILED_TARGET_AURASTATE = 119,
SPELL_FAILED_TARGET_DUELING = 120,
SPELL_FAILED_TARGET_ENEMY = 121,
SPELL_FAILED_TARGET_ENRAGED = 122,
SPELL_FAILED_TARGET_FRIENDLY = 123,
SPELL_FAILED_TARGET_IN_COMBAT = 124,
SPELL_FAILED_TARGET_IN_PET_BATTLE = 125,
SPELL_FAILED_TARGET_IS_PLAYER = 126,
SPELL_FAILED_TARGET_IS_PLAYER_CONTROLLED = 127,
SPELL_FAILED_TARGET_NOT_DEAD = 128,
SPELL_FAILED_TARGET_NOT_IN_PARTY = 129,
SPELL_FAILED_TARGET_NOT_LOOTED = 130,
SPELL_FAILED_TARGET_NOT_PLAYER = 131,
SPELL_FAILED_TARGET_NO_POCKETS = 132,
SPELL_FAILED_TARGET_NO_WEAPONS = 133,
SPELL_FAILED_TARGET_NO_RANGED_WEAPONS = 134,
SPELL_FAILED_TARGET_UNSKINNABLE = 135,
SPELL_FAILED_THIRST_SATIATED = 136,
SPELL_FAILED_TOO_CLOSE = 137,
SPELL_FAILED_TOO_MANY_OF_ITEM = 138,
SPELL_FAILED_TOTEM_CATEGORY = 139,
SPELL_FAILED_TOTEMS = 140,
SPELL_FAILED_TRY_AGAIN = 141,
SPELL_FAILED_UNIT_NOT_BEHIND = 142,
SPELL_FAILED_UNIT_NOT_INFRONT = 143,
SPELL_FAILED_VISION_OBSCURED = 144,
SPELL_FAILED_WRONG_PET_FOOD = 145,
SPELL_FAILED_NOT_WHILE_FATIGUED = 146,
SPELL_FAILED_TARGET_NOT_IN_INSTANCE = 147,
SPELL_FAILED_NOT_WHILE_TRADING = 148,
SPELL_FAILED_TARGET_NOT_IN_RAID = 149,
SPELL_FAILED_TARGET_FREEFORALL = 150,
SPELL_FAILED_NO_EDIBLE_CORPSES = 151,
SPELL_FAILED_ONLY_BATTLEGROUNDS = 152,
SPELL_FAILED_TARGET_NOT_GHOST = 153,
SPELL_FAILED_TRANSFORM_UNUSABLE = 154,
SPELL_FAILED_WRONG_WEATHER = 155,
SPELL_FAILED_DAMAGE_IMMUNE = 156,
SPELL_FAILED_PREVENTED_BY_MECHANIC = 157,
SPELL_FAILED_PLAY_TIME = 158,
SPELL_FAILED_REPUTATION = 159,
SPELL_FAILED_MIN_SKILL = 160,
SPELL_FAILED_NOT_IN_RATED_BATTLEGROUND = 161,
SPELL_FAILED_NOT_ON_SHAPESHIFT = 162,
SPELL_FAILED_NOT_ON_STEALTHED = 163,
SPELL_FAILED_NOT_ON_DAMAGE_IMMUNE = 164,
SPELL_FAILED_NOT_ON_MOUNTED = 165,
SPELL_FAILED_TOO_SHALLOW = 166,
SPELL_FAILED_TARGET_NOT_IN_SANCTUARY = 167,
SPELL_FAILED_TARGET_IS_TRIVIAL = 168,
SPELL_FAILED_BM_OR_INVISGOD = 169,
SPELL_FAILED_GROUND_MOUNT_NOT_ALLOWED = 170,
SPELL_FAILED_FLOATING_MOUNT_NOT_ALLOWED = 171,
SPELL_FAILED_UNDERWATER_MOUNT_NOT_ALLOWED = 172,
SPELL_FAILED_FLYING_MOUNT_NOT_ALLOWED = 173,
SPELL_FAILED_APPRENTICE_RIDING_REQUIREMENT = 174,
SPELL_FAILED_JOURNEYMAN_RIDING_REQUIREMENT = 175,
SPELL_FAILED_EXPERT_RIDING_REQUIREMENT = 176,
SPELL_FAILED_ARTISAN_RIDING_REQUIREMENT = 177,
SPELL_FAILED_MASTER_RIDING_REQUIREMENT = 178,
SPELL_FAILED_COLD_RIDING_REQUIREMENT = 179,
SPELL_FAILED_FLIGHT_MASTER_RIDING_REQUIREMENT = 180,
SPELL_FAILED_CS_RIDING_REQUIREMENT = 181,
SPELL_FAILED_PANDA_RIDING_REQUIREMENT = 182,
SPELL_FAILED_MOUNT_NO_FLOAT_HERE = 183,
SPELL_FAILED_MOUNT_NO_UNDERWATER_HERE = 184,
SPELL_FAILED_MOUNT_ABOVE_WATER_HERE = 185,
SPELL_FAILED_MOUNT_COLLECTED_ON_OTHER_CHAR = 186,
SPELL_FAILED_NOT_IDLE = 187,
SPELL_FAILED_NOT_INACTIVE = 188,
SPELL_FAILED_PARTIAL_PLAYTIME = 189,
SPELL_FAILED_NO_PLAYTIME = 190,
SPELL_FAILED_NOT_IN_BATTLEGROUND = 191,
SPELL_FAILED_NOT_IN_RAID_INSTANCE = 192,
SPELL_FAILED_ONLY_IN_ARENA = 193,
SPELL_FAILED_TARGET_LOCKED_TO_RAID_INSTANCE = 194,
SPELL_FAILED_ON_USE_ENCHANT = 195,
SPELL_FAILED_NOT_ON_GROUND = 196,
SPELL_FAILED_CUSTOM_ERROR = 197,
SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW = 198,
SPELL_FAILED_TOO_MANY_SOCKETS = 199,
SPELL_FAILED_INVALID_GLYPH = 200,
SPELL_FAILED_UNIQUE_GLYPH = 201,
SPELL_FAILED_GLYPH_SOCKET_LOCKED = 202,
SPELL_FAILED_GLYPH_EXCLUSIVE_CATEGORY = 203,
SPELL_FAILED_GLYPH_INVALID_SPEC = 204,
SPELL_FAILED_GLYPH_NO_SPEC = 205,
SPELL_FAILED_NO_VALID_TARGETS = 206,
SPELL_FAILED_ITEM_AT_MAX_CHARGES = 207,
SPELL_FAILED_NOT_IN_BARBERSHOP = 208,
SPELL_FAILED_FISHING_TOO_LOW = 209,
SPELL_FAILED_ITEM_ENCHANT_TRADE_WINDOW = 210,
SPELL_FAILED_SUMMON_PENDING = 211,
SPELL_FAILED_MAX_SOCKETS = 212,
SPELL_FAILED_PET_CAN_RENAME = 213,
SPELL_FAILED_TARGET_CANNOT_BE_RESURRECTED = 214,
SPELL_FAILED_TARGET_HAS_RESURRECT_PENDING = 215,
SPELL_FAILED_NO_ACTIONS = 216,
SPELL_FAILED_CURRENCY_WEIGHT_MISMATCH = 217,
SPELL_FAILED_WEIGHT_NOT_ENOUGH = 218,
SPELL_FAILED_WEIGHT_TOO_MUCH = 219,
SPELL_FAILED_NO_VACANT_SEAT = 220,
SPELL_FAILED_NO_LIQUID = 221,
SPELL_FAILED_ONLY_NOT_SWIMMING = 222,
SPELL_FAILED_BY_NOT_MOVING = 223,
SPELL_FAILED_IN_COMBAT_RES_LIMIT_REACHED = 224,
SPELL_FAILED_NOT_IN_ARENA = 225,
SPELL_FAILED_TARGET_NOT_GROUNDED = 226,
SPELL_FAILED_EXCEEDED_WEEKLY_USAGE = 227,
SPELL_FAILED_NOT_IN_LFG_DUNGEON = 228,
SPELL_FAILED_BAD_TARGET_FILTER = 229,
SPELL_FAILED_NOT_ENOUGH_TARGETS = 230,
SPELL_FAILED_NO_SPEC = 231,
SPELL_FAILED_CANT_ADD_BATTLE_PET = 232,
SPELL_FAILED_CANT_UPGRADE_BATTLE_PET = 233,
SPELL_FAILED_WRONG_BATTLE_PET_TYPE = 234,
SPELL_FAILED_NO_DUNGEON_ENCOUNTER = 235,
SPELL_FAILED_NO_TELEPORT_FROM_DUNGEON = 236,
SPELL_FAILED_MAX_LEVEL_TOO_LOW = 237,
SPELL_FAILED_CANT_REPLACE_ITEM_BONUS = 238,
SPELL_FAILED_UNKNOWN = 254, // custom value, default case
SPELL_CAST_OK = 255 // custom value, must not be sent to client
SPELL_FAILED_GARRISON_FOLLOWER_ON_MISSION = 44,
SPELL_FAILED_GARRISON_FOLLOWER_IN_BUILDING = 45,
SPELL_FAILED_GARRISON_FOLLOWER_MAX_LEVEL = 46,
SPELL_FAILED_GARRISON_FOLLOWER_MAX_ITEM_LEVEL = 47,
SPELL_FAILED_GARRISON_FOLLOWER_MAX_QUALITY = 48,
SPELL_FAILED_GARRISON_FOLLOWER_NOT_MAX_LEVEL = 49,
SPELL_FAILED_GARRISON_FOLLOWER_HAS_ABILITY = 50,
SPELL_FAILED_GARRISON_FOLLOWER_NO_OVERRIDEABLE_ABILITY = 51,
SPELL_FAILED_HIGHLEVEL = 52,
SPELL_FAILED_HUNGER_SATIATED = 53,
SPELL_FAILED_IMMUNE = 54,
SPELL_FAILED_INCORRECT_AREA = 55,
SPELL_FAILED_INTERRUPTED = 56,
SPELL_FAILED_INTERRUPTED_COMBAT = 57,
SPELL_FAILED_ITEM_ALREADY_ENCHANTED = 58,
SPELL_FAILED_ITEM_GONE = 59,
SPELL_FAILED_ITEM_NOT_FOUND = 60,
SPELL_FAILED_ITEM_NOT_READY = 61,
SPELL_FAILED_LEVEL_REQUIREMENT = 62,
SPELL_FAILED_LINE_OF_SIGHT = 63,
SPELL_FAILED_LOWLEVEL = 64,
SPELL_FAILED_LOW_CASTLEVEL = 65,
SPELL_FAILED_MAINHAND_EMPTY = 66,
SPELL_FAILED_MOVING = 67,
SPELL_FAILED_NEED_AMMO = 68,
SPELL_FAILED_NEED_AMMO_POUCH = 69,
SPELL_FAILED_NEED_EXOTIC_AMMO = 70,
SPELL_FAILED_NEED_MORE_ITEMS = 71,
SPELL_FAILED_NOPATH = 72,
SPELL_FAILED_NOT_BEHIND = 73,
SPELL_FAILED_NOT_FISHABLE = 74,
SPELL_FAILED_NOT_FLYING = 75,
SPELL_FAILED_NOT_HERE = 76,
SPELL_FAILED_NOT_INFRONT = 77,
SPELL_FAILED_NOT_IN_CONTROL = 78,
SPELL_FAILED_NOT_KNOWN = 79,
SPELL_FAILED_NOT_MOUNTED = 80,
SPELL_FAILED_NOT_ON_TAXI = 81,
SPELL_FAILED_NOT_ON_TRANSPORT = 82,
SPELL_FAILED_NOT_READY = 83,
SPELL_FAILED_NOT_SHAPESHIFT = 84,
SPELL_FAILED_NOT_STANDING = 85,
SPELL_FAILED_NOT_TRADEABLE = 86,
SPELL_FAILED_NOT_TRADING = 87,
SPELL_FAILED_NOT_UNSHEATHED = 88,
SPELL_FAILED_NOT_WHILE_GHOST = 89,
SPELL_FAILED_NOT_WHILE_LOOTING = 90,
SPELL_FAILED_NO_AMMO = 91,
SPELL_FAILED_NO_CHARGES_REMAIN = 92,
SPELL_FAILED_NO_CHAMPION = 93,
SPELL_FAILED_NO_COMBO_POINTS = 94,
SPELL_FAILED_NO_DUELING = 95,
SPELL_FAILED_NO_ENDURANCE = 96,
SPELL_FAILED_NO_FISH = 97,
SPELL_FAILED_NO_ITEMS_WHILE_SHAPESHIFTED = 98,
SPELL_FAILED_NO_MOUNTS_ALLOWED = 99,
SPELL_FAILED_NO_PET = 100,
SPELL_FAILED_NO_POWER = 101,
SPELL_FAILED_NOTHING_TO_DISPEL = 102,
SPELL_FAILED_NOTHING_TO_STEAL = 103,
SPELL_FAILED_ONLY_ABOVEWATER = 104,
SPELL_FAILED_ONLY_DAYTIME = 105,
SPELL_FAILED_ONLY_INDOORS = 106,
SPELL_FAILED_ONLY_MOUNTED = 107,
SPELL_FAILED_ONLY_NIGHTTIME = 108,
SPELL_FAILED_ONLY_OUTDOORS = 109,
SPELL_FAILED_ONLY_SHAPESHIFT = 110,
SPELL_FAILED_ONLY_STEALTHED = 111,
SPELL_FAILED_ONLY_UNDERWATER = 112,
SPELL_FAILED_OUT_OF_RANGE = 113,
SPELL_FAILED_PACIFIED = 114,
SPELL_FAILED_POSSESSED = 115,
SPELL_FAILED_REAGENTS = 116,
SPELL_FAILED_REQUIRES_AREA = 117,
SPELL_FAILED_REQUIRES_SPELL_FOCUS = 118,
SPELL_FAILED_ROOTED = 119,
SPELL_FAILED_SILENCED = 120,
SPELL_FAILED_SPELL_IN_PROGRESS = 121,
SPELL_FAILED_SPELL_LEARNED = 122,
SPELL_FAILED_SPELL_UNAVAILABLE = 123,
SPELL_FAILED_STUNNED = 124,
SPELL_FAILED_TARGETS_DEAD = 125,
SPELL_FAILED_TARGET_AFFECTING_COMBAT = 126,
SPELL_FAILED_TARGET_AURASTATE = 127,
SPELL_FAILED_TARGET_DUELING = 128,
SPELL_FAILED_TARGET_ENEMY = 129,
SPELL_FAILED_TARGET_ENRAGED = 130,
SPELL_FAILED_TARGET_FRIENDLY = 131,
SPELL_FAILED_TARGET_IN_COMBAT = 132,
SPELL_FAILED_TARGET_IN_PET_BATTLE = 133,
SPELL_FAILED_TARGET_IS_PLAYER = 134,
SPELL_FAILED_TARGET_IS_PLAYER_CONTROLLED = 135,
SPELL_FAILED_TARGET_NOT_DEAD = 136,
SPELL_FAILED_TARGET_NOT_IN_PARTY = 137,
SPELL_FAILED_TARGET_NOT_LOOTED = 138,
SPELL_FAILED_TARGET_NOT_PLAYER = 139,
SPELL_FAILED_TARGET_NO_POCKETS = 140,
SPELL_FAILED_TARGET_NO_WEAPONS = 141,
SPELL_FAILED_TARGET_NO_RANGED_WEAPONS = 142,
SPELL_FAILED_TARGET_UNSKINNABLE = 143,
SPELL_FAILED_THIRST_SATIATED = 144,
SPELL_FAILED_TOO_CLOSE = 145,
SPELL_FAILED_TOO_MANY_OF_ITEM = 146,
SPELL_FAILED_TOTEM_CATEGORY = 147,
SPELL_FAILED_TOTEMS = 148,
SPELL_FAILED_TRY_AGAIN = 149,
SPELL_FAILED_UNIT_NOT_BEHIND = 150,
SPELL_FAILED_UNIT_NOT_INFRONT = 151,
SPELL_FAILED_VISION_OBSCURED = 152,
SPELL_FAILED_WRONG_PET_FOOD = 153,
SPELL_FAILED_NOT_WHILE_FATIGUED = 154,
SPELL_FAILED_TARGET_NOT_IN_INSTANCE = 155,
SPELL_FAILED_NOT_WHILE_TRADING = 156,
SPELL_FAILED_TARGET_NOT_IN_RAID = 157,
SPELL_FAILED_TARGET_FREEFORALL = 158,
SPELL_FAILED_NO_EDIBLE_CORPSES = 159,
SPELL_FAILED_ONLY_BATTLEGROUNDS = 160,
SPELL_FAILED_TARGET_NOT_GHOST = 161,
SPELL_FAILED_TRANSFORM_UNUSABLE = 162,
SPELL_FAILED_WRONG_WEATHER = 163,
SPELL_FAILED_DAMAGE_IMMUNE = 164,
SPELL_FAILED_PREVENTED_BY_MECHANIC = 165,
SPELL_FAILED_PLAY_TIME = 166,
SPELL_FAILED_REPUTATION = 167,
SPELL_FAILED_MIN_SKILL = 168,
SPELL_FAILED_NOT_IN_RATED_BATTLEGROUND = 169,
SPELL_FAILED_NOT_ON_SHAPESHIFT = 170,
SPELL_FAILED_NOT_ON_STEALTHED = 171,
SPELL_FAILED_NOT_ON_DAMAGE_IMMUNE = 172,
SPELL_FAILED_NOT_ON_MOUNTED = 173,
SPELL_FAILED_TOO_SHALLOW = 174,
SPELL_FAILED_TARGET_NOT_IN_SANCTUARY = 175,
SPELL_FAILED_TARGET_IS_TRIVIAL = 176,
SPELL_FAILED_BM_OR_INVISGOD = 177,
SPELL_FAILED_GROUND_MOUNT_NOT_ALLOWED = 178,
SPELL_FAILED_FLOATING_MOUNT_NOT_ALLOWED = 179,
SPELL_FAILED_UNDERWATER_MOUNT_NOT_ALLOWED = 180,
SPELL_FAILED_FLYING_MOUNT_NOT_ALLOWED = 181,
SPELL_FAILED_APPRENTICE_RIDING_REQUIREMENT = 182,
SPELL_FAILED_JOURNEYMAN_RIDING_REQUIREMENT = 183,
SPELL_FAILED_EXPERT_RIDING_REQUIREMENT = 184,
SPELL_FAILED_ARTISAN_RIDING_REQUIREMENT = 185,
SPELL_FAILED_MASTER_RIDING_REQUIREMENT = 186,
SPELL_FAILED_COLD_RIDING_REQUIREMENT = 187,
SPELL_FAILED_FLIGHT_MASTER_RIDING_REQUIREMENT = 188,
SPELL_FAILED_CS_RIDING_REQUIREMENT = 189,
SPELL_FAILED_PANDA_RIDING_REQUIREMENT = 190,
SPELL_FAILED_MOUNT_NO_FLOAT_HERE = 191,
SPELL_FAILED_MOUNT_NO_UNDERWATER_HERE = 192,
SPELL_FAILED_MOUNT_ABOVE_WATER_HERE = 193,
SPELL_FAILED_MOUNT_COLLECTED_ON_OTHER_CHAR = 194,
SPELL_FAILED_NOT_IDLE = 195,
SPELL_FAILED_NOT_INACTIVE = 196,
SPELL_FAILED_PARTIAL_PLAYTIME = 197,
SPELL_FAILED_NO_PLAYTIME = 198,
SPELL_FAILED_NOT_IN_BATTLEGROUND = 199,
SPELL_FAILED_NOT_IN_RAID_INSTANCE = 200,
SPELL_FAILED_ONLY_IN_ARENA = 201,
SPELL_FAILED_TARGET_LOCKED_TO_RAID_INSTANCE = 202,
SPELL_FAILED_ON_USE_ENCHANT = 203,
SPELL_FAILED_NOT_ON_GROUND = 204,
SPELL_FAILED_CUSTOM_ERROR = 205,
SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW = 206,
SPELL_FAILED_TOO_MANY_SOCKETS = 207,
SPELL_FAILED_INVALID_GLYPH = 208,
SPELL_FAILED_UNIQUE_GLYPH = 209,
SPELL_FAILED_GLYPH_SOCKET_LOCKED = 210,
SPELL_FAILED_GLYPH_EXCLUSIVE_CATEGORY = 211,
SPELL_FAILED_GLYPH_INVALID_SPEC = 212,
SPELL_FAILED_GLYPH_NO_SPEC = 213,
SPELL_FAILED_NO_VALID_TARGETS = 214,
SPELL_FAILED_ITEM_AT_MAX_CHARGES = 215,
SPELL_FAILED_NOT_IN_BARBERSHOP = 216,
SPELL_FAILED_FISHING_TOO_LOW = 217,
SPELL_FAILED_ITEM_ENCHANT_TRADE_WINDOW = 218,
SPELL_FAILED_SUMMON_PENDING = 219,
SPELL_FAILED_MAX_SOCKETS = 220,
SPELL_FAILED_PET_CAN_RENAME = 221,
SPELL_FAILED_TARGET_CANNOT_BE_RESURRECTED = 222,
SPELL_FAILED_TARGET_HAS_RESURRECT_PENDING = 223,
SPELL_FAILED_NO_ACTIONS = 224,
SPELL_FAILED_CURRENCY_WEIGHT_MISMATCH = 225,
SPELL_FAILED_WEIGHT_NOT_ENOUGH = 226,
SPELL_FAILED_WEIGHT_TOO_MUCH = 227,
SPELL_FAILED_NO_VACANT_SEAT = 228,
SPELL_FAILED_NO_LIQUID = 229,
SPELL_FAILED_ONLY_NOT_SWIMMING = 230,
SPELL_FAILED_BY_NOT_MOVING = 231,
SPELL_FAILED_IN_COMBAT_RES_LIMIT_REACHED = 232,
SPELL_FAILED_NOT_IN_ARENA = 233,
SPELL_FAILED_TARGET_NOT_GROUNDED = 234,
SPELL_FAILED_EXCEEDED_WEEKLY_USAGE = 235,
SPELL_FAILED_NOT_IN_LFG_DUNGEON = 236,
SPELL_FAILED_BAD_TARGET_FILTER = 237,
SPELL_FAILED_NOT_ENOUGH_TARGETS = 238,
SPELL_FAILED_NO_SPEC = 239,
SPELL_FAILED_CANT_ADD_BATTLE_PET = 240,
SPELL_FAILED_CANT_UPGRADE_BATTLE_PET = 241,
SPELL_FAILED_WRONG_BATTLE_PET_TYPE = 242,
SPELL_FAILED_NO_DUNGEON_ENCOUNTER = 243,
SPELL_FAILED_NO_TELEPORT_FROM_DUNGEON = 244,
SPELL_FAILED_MAX_LEVEL_TOO_LOW = 245,
SPELL_FAILED_CANT_REPLACE_ITEM_BONUS = 246,
SPELL_FAILED_GRANT_PET_LEVEL_FAIL = 247,
SPELL_FAILED_SKILL_LINE_NOT_KNOWN = 248,
SPELL_FAILED_BLUEPRINT_KNOWN = 249,
SPELL_FAILED_FOLLOWER_KNOWN = 250,
SPELL_FAILED_CANT_OVERRIDE_ENCHANT_VISUAL = 251,
SPELL_FAILED_ITEM_NOT_A_WEAPON = 252,
SPELL_FAILED_SAME_ENCHANT_VISUAL = 253,
SPELL_FAILED_TOY_USE_LIMIT_REACHED = 254,
SPELL_FAILED_SHIPMENTS_FULL = 255,
SPELL_FAILED_HAS_MISSION = 256,
SPELL_FAILED_BUILDING_ACTIVATE_NOT_READY = 257,
SPELL_FAILED_NOT_SOULBOUND = 258,
SPELL_FAILED_RIDING_VEHICLE = 259,
SPELL_FAILED_UNKNOWN = 260, // custom value, default case
SPELL_CAST_OK = 0xFFFF // custom value, must not be sent to client
};
enum SpellCustomErrors

View File

@@ -447,6 +447,17 @@ WorldPacket const* WorldPackets::Spells::SpellFailedOther::Write()
return &_worldPacket;
}
WorldPacket const* WorldPackets::Spells::CastFailed::Write()
{
_worldPacket << SpellID;
_worldPacket << Reason;
_worldPacket << FailedArg1;
_worldPacket << FailedArg2;
_worldPacket << CastID;
return &_worldPacket;
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellModifierData const& spellModifierData)
{
data << spellModifierData.ModifierValue;

View File

@@ -303,6 +303,20 @@ namespace WorldPackets
uint8 CastID = 0;
};
class CastFailed final : public ServerPacket
{
public:
CastFailed(OpcodeServer opcode) : ServerPacket(opcode, 4+4+4+4+1) { }
WorldPacket const* Write() override;
int32 Reason = 0;
int32 FailedArg1 = -1;
int32 FailedArg2 = -1;
int32 SpellID = 0;
uint8 CastID = 0;
};
struct SpellModifierData
{
float ModifierValue = 0.0f;

View File

@@ -799,7 +799,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAMERA_SHAKE, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_AUTO_REPEAT, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_COMBAT, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAST_FAILED, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAST_FAILED, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_LIST, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_MEMBER_COUNT, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHANNEL_NOTIFY, STATUS_UNHANDLED);

View File

@@ -3764,17 +3764,18 @@ void Spell::SendCastResult(Player* caster, SpellInfo const* spellInfo, uint8 cas
if (result == SPELL_CAST_OK)
return;
WorldPacket data(opcode, (4+1+1));
data << uint8(cast_count);
data << uint32(spellInfo->Id);
data << uint8(result); // problem
WorldPackets::Spells::CastFailed packet(opcode);
packet.CastID = cast_count;
packet.SpellID = spellInfo->Id;
packet.Reason = result;
switch (result)
{
case SPELL_FAILED_NOT_READY:
data << uint32(0); // unknown (value 1 update cooldowns on client flag)
packet.FailedArg1 = 0; // unknown (value 1 update cooldowns on client flag)
break;
case SPELL_FAILED_REQUIRES_SPELL_FOCUS:
data << uint32(spellInfo->RequiresSpellFocus); // SpellFocusObject.dbc id
packet.FailedArg1 = spellInfo->RequiresSpellFocus; // SpellFocusObject.dbc id
break;
case SPELL_FAILED_REQUIRES_AREA: // AreaTable.dbc id
// hardcode areas limitation case
@@ -3782,71 +3783,71 @@ void Spell::SendCastResult(Player* caster, SpellInfo const* spellInfo, uint8 cas
{
case 41617: // Cenarion Mana Salve
case 41619: // Cenarion Healing Salve
data << uint32(3905);
packet.FailedArg1 = 3905;
break;
case 41618: // Bottled Nethergon Energy
case 41620: // Bottled Nethergon Vapor
data << uint32(3842);
packet.FailedArg1 = 3842;
break;
case 45373: // Bloodberry Elixir
data << uint32(4075);
packet.FailedArg1 = 4075;
break;
default: // default case (don't must be)
data << uint32(0);
packet.FailedArg1 = 0;
break;
}
break;
case SPELL_FAILED_TOTEMS:
if (spellInfo->Totem[0])
data << uint32(spellInfo->Totem[0]);
packet.FailedArg1 = spellInfo->Totem[0];
if (spellInfo->Totem[1])
data << uint32(spellInfo->Totem[1]);
packet.FailedArg2 = spellInfo->Totem[1];
break;
case SPELL_FAILED_TOTEM_CATEGORY:
if (spellInfo->TotemCategory[0])
data << uint32(spellInfo->TotemCategory[0]);
packet.FailedArg1 = spellInfo->TotemCategory[0];
if (spellInfo->TotemCategory[1])
data << uint32(spellInfo->TotemCategory[1]);
packet.FailedArg2 = spellInfo->TotemCategory[1];
break;
case SPELL_FAILED_EQUIPPED_ITEM_CLASS:
case SPELL_FAILED_EQUIPPED_ITEM_CLASS_MAINHAND:
case SPELL_FAILED_EQUIPPED_ITEM_CLASS_OFFHAND:
data << uint32(spellInfo->EquippedItemClass);
data << uint32(spellInfo->EquippedItemSubClassMask);
packet.FailedArg1 = spellInfo->EquippedItemClass;
packet.FailedArg2 = spellInfo->EquippedItemSubClassMask;
break;
case SPELL_FAILED_TOO_MANY_OF_ITEM:
{
uint32 item = 0;
for (SpellEffectInfo const* effect : spellInfo->GetEffectsForDifficulty(caster->GetMap()->GetDifficulty()))
if (effect->ItemType)
item = effect->ItemType;
ItemTemplate const* proto = sObjectMgr->GetItemTemplate(item);
if (proto && proto->ItemLimitCategory)
data << uint32(proto->ItemLimitCategory);
break;
uint32 item = 0;
for (SpellEffectInfo const* effect : spellInfo->GetEffectsForDifficulty(caster->GetMap()->GetDifficulty()))
if (effect->ItemType)
item = effect->ItemType;
ItemTemplate const* proto = sObjectMgr->GetItemTemplate(item);
if (proto && proto->ItemLimitCategory)
packet.FailedArg1 = proto->ItemLimitCategory;
break;
}
case SPELL_FAILED_PREVENTED_BY_MECHANIC:
data << uint32(spellInfo->GetAllEffectsMechanicMask()); // SpellMechanic.dbc id
packet.FailedArg1 = spellInfo->GetAllEffectsMechanicMask(); // SpellMechanic.dbc id
break;
case SPELL_FAILED_NEED_EXOTIC_AMMO:
data << uint32(spellInfo->EquippedItemSubClassMask); // seems correct...
packet.FailedArg1 = spellInfo->EquippedItemSubClassMask; // seems correct...
break;
case SPELL_FAILED_NEED_MORE_ITEMS:
data << uint32(0); // Item id
data << uint32(0); // Item count?
packet.FailedArg1 = 0; // Item id
packet.FailedArg2 = 0; // Item count?
break;
case SPELL_FAILED_MIN_SKILL:
data << uint32(0); // SkillLine.dbc id
data << uint32(0); // required skill value
packet.FailedArg1 = 0; // SkillLine.dbc id
packet.FailedArg2 = 0; // required skill value
break;
case SPELL_FAILED_FISHING_TOO_LOW:
data << uint32(0); // required fishing skill
packet.FailedArg1 = 0; // required fishing skill
break;
case SPELL_FAILED_CUSTOM_ERROR:
data << uint32(customError);
packet.FailedArg1 = customError;
break;
case SPELL_FAILED_SILENCED:
data << uint32(0); // Unknown
packet.FailedArg1 = 0; // Unknown
break;
case SPELL_FAILED_REAGENTS:
{
@@ -3866,14 +3867,15 @@ void Spell::SendCastResult(Player* caster, SpellInfo const* spellInfo, uint8 cas
}
}
data << uint32(missingItem); // first missing item
packet.FailedArg1 = missingItem; // first missing item
break;
}
// TODO: SPELL_FAILED_NOT_STANDING
default:
break;
}
caster->GetSession()->SendPacket(&data);
caster->GetSession()->SendPacket(packet.Write());
}
void Spell::SendSpellStart()