SPELL_FAILED_AFFECTING_COMBAT = "You are in combat";
SPELL_FAILED_ALREADY_BEING_TAMED = "That creature is already being tamed";
SPELL_FAILED_ALREADY_HAVE_CHARM = "You already control a charmed creature";
SPELL_FAILED_ALREADY_HAVE_SUMMON = "You already control a summoned creature";
SPELL_FAILED_ALREADY_OPEN = "Already open";
SPELL_FAILED_ARTISAN_RIDING_REQUIREMENT = "Requires artisan riding skill"; -- Failure message for mounts with additional requirements (called through script)
SPELL_FAILED_AURA_BOUNCED = "A more powerful spell is already active";
SPELL_FAILED_BAD_IMPLICIT_TARGETS = "No target";
SPELL_FAILED_BAD_TARGETS = "Invalid target";
SPELL_FAILED_BM_OR_INVISGOD = "The spell cannot be cast on beastmaster or invis god targets.";
SPELL_FAILED_CANT_BE_CHARMED = "Target can't be charmed";
SPELL_FAILED_CANT_BE_DISENCHANTED = "Item cannot be disenchanted";
SPELL_FAILED_CANT_BE_DISENCHANTED_SKILL = "Your Enchanting skill is not high enough to disenchant that";
SPELL_FAILED_CANT_BE_PROSPECTED = "There are no gems in this";
SPELL_FAILED_CANT_CAST_ON_TAPPED = "Target is tapped";
SPELL_FAILED_CANT_DUEL_WHILE_INVISIBLE = "You can't start a duel while invisible";
SPELL_FAILED_CANT_DUEL_WHILE_STEALTHED = "You can't start a duel while stealthed";
SPELL_FAILED_CANT_STEALTH = "You are too close to enemies";
SPELL_FAILED_CASTER_AURASTATE = "You can't do that yet";
SPELL_FAILED_CASTER_DEAD = "You are dead";
SPELL_FAILED_CAST_NOT_HERE = "You can't cast that here";
SPELL_FAILED_CHARMED = "Can't do that while charmed";
SPELL_FAILED_CHEST_IN_USE = "That is already being used";
SPELL_FAILED_CONFUSED = "Can't do that while confused";
SPELL_FAILED_DAMAGE_IMMUNE = "You can't do that while you are immune"; -- See ERR_USE_CANT_IMMUNE
SPELL_FAILED_DISENCHANT_WHILE_LOOTING = "Cannot disenchant while looting";
SPELL_FAILED_EQUIPPED_ITEM = "Must have the proper item equipped";
SPELL_FAILED_EQUIPPED_ITEM_CLASS = "Must have a %s equipped";
SPELL_FAILED_EQUIPPED_ITEM_CLASS_MAINHAND = "Must have a %s equipped in the main hand";
SPELL_FAILED_EQUIPPED_ITEM_CLASS_OFFHAND = "Must have a %s equipped in the offhand";
SPELL_FAILED_ERROR = "Internal error";
SPELL_FAILED_EXPERT_RIDING_REQUIREMENT = "Requires expert riding skill"; -- Failure message for mounts with additional requirements (called through script)
SPELL_FAILED_FIZZLE = "Fizzled";
SPELL_FAILED_FLEEING = "Can't do that while fleeing";
SPELL_FAILED_FOOD_LOWLEVEL = "That food's level is not high enough for your pet";
SPELL_FAILED_HIGHLEVEL = "Target is too high level";
SPELL_FAILED_IMMUNE = "Immune";
SPELL_FAILED_INTERRUPTED = "Interrupted";
SPELL_FAILED_INTERRUPTED_COMBAT = "Interrupted";
SPELL_FAILED_ITEM_ALREADY_ENCHANTED = "Item is already enchanted";
SPELL_FAILED_ITEM_GONE = "Item is gone";
SPELL_FAILED_ITEM_NOT_FOUND = "Tried to enchant an item that didn't exist";
SPELL_FAILED_ITEM_NOT_READY = "Item is not ready yet";
SPELL_FAILED_LEVEL_REQUIREMENT = "You are not high enough level";
SPELL_FAILED_LEVEL_REQUIREMENT_PET = "Your pet is not high enough level";
SPELL_FAILED_LINE_OF_SIGHT = "Target not in line of sight";
SPELL_FAILED_LOWLEVEL = "Target is too low level";
SPELL_FAILED_LOW_CASTLEVEL = "Skill not high enough";
SPELL_FAILED_MAINHAND_EMPTY = "Your weapon hand is empty";
SPELL_FAILED_MIN_SKILL = "Your skill is not high enough. Requires %s (%d)."; -- %s is the skill name, %d is the skill amount.
SPELL_FAILED_MOVING = "Can't do that while moving";
SPELL_FAILED_NEED_AMMO = "Ammo needs to be in the paper doll ammo slot before it can be fired.";
SPELL_FAILED_NEED_AMMO_POUCH = "Requires: %s";
SPELL_FAILED_NEED_EXOTIC_AMMO = "Requires exotic ammo: %s";
SPELL_FAILED_NOPATH = "No path available";
SPELL_FAILED_NOTHING_TO_DISPEL = "Nothing to dispel";
SPELL_FAILED_NOTHING_TO_STEAL = "Nothing to steal";
SPELL_FAILED_NOT_BEHIND = "You must be behind your target.";
SPELL_FAILED_NOT_FISHABLE = "Your cast didn't land in fishable water";
SPELL_FAILED_NOT_FLYING = "You are flying.";
SPELL_FAILED_NOT_HERE = "You can't use that here.";
SPELL_FAILED_NOT_IDLE = "Can't use while Idle";
SPELL_FAILED_NOT_INACTIVE = "Can't use while Inactive";
SPELL_FAILED_NOT_INFRONT = "You must be in front of your target.";
SPELL_FAILED_NOT_IN_ARENA = "You can't do that in an arena.";
SPELL_FAILED_NOT_IN_BATTLEGROUND = "You can't do that in a battleground.";
SPELL_FAILED_NOT_IN_CONTROL = "You are not in control of your actions";
SPELL_FAILED_NOT_KNOWN = "Spell not learned";
SPELL_FAILED_NOT_MOUNTED = "You are mounted.";
SPELL_FAILED_NOT_ON_DAMAGE_IMMUNE = "Spell cannot be cast on a damage immune target.";
SPELL_FAILED_NOT_ON_MOUNTED = "Spell cannot be cast on a mounted unit.";
SPELL_FAILED_NOT_ON_SHAPESHIFT = "Cannot be cast on shapeshifted target.";
SPELL_FAILED_NOT_ON_STEALTHED = "Spell cannot be cast on stealted target.";
SPELL_FAILED_NOT_ON_TAXI = "You are in flight";
SPELL_FAILED_NOT_ON_TRANSPORT = "You are on a transport";
SPELL_FAILED_NOT_READY = "Not yet recovered";
SPELL_FAILED_NOT_SHAPESHIFT = "You are in shapeshift form";
SPELL_FAILED_NOT_STANDING = "You must be standing to do that";
SPELL_FAILED_NOT_TRADEABLE = "You can only use this on an object you own";
SPELL_FAILED_NOT_TRADING = "Tried to enchant a trade item, but not trading";
SPELL_FAILED_NOT_UNSHEATHED = "You must be unsheathed";
SPELL_FAILED_NOT_WHILE_FATIGUED = "Can't cast while fatigued";
SPELL_FAILED_NOT_WHILE_GHOST = "Can't cast as ghost";
SPELL_FAILED_NOT_WHILE_TRADING = "Can't cast while trading";
SPELL_FAILED_NO_AMMO = "Out of ammo";
SPELL_FAILED_NO_CHAMPION = "You haven't selected a champion";
SPELL_FAILED_NO_CHARGES_REMAIN = "No charges remain";
SPELL_FAILED_NO_COMBO_POINTS = "That ability requires combo points";
SPELL_FAILED_NO_DUELING = "Dueling isn't allowed here.";
SPELL_FAILED_NO_EDIBLE_CORPSES = "There are no nearby corpses to eat";
SPELL_FAILED_NO_ENDURANCE = "Not enough endurance";
SPELL_FAILED_NO_FISH = "There aren't any fish here";
SPELL_FAILED_NO_ITEMS_WHILE_SHAPESHIFTED = "Can't use items while shapeshifted";
SPELL_FAILED_NO_MAGIC_TO_CONSUME = "No magic to consume";
SPELL_FAILED_NO_MOUNTS_ALLOWED = "You can't mount here.";
SPELL_FAILED_NO_PET = "You do not have a pet";
SPELL_FAILED_NO_PLAYTIME = "You can not do this. You have more than 5 hours of online time";
SPELL_FAILED_ONLY_ABOVEWATER = "Cannot use while swimming";
SPELL_FAILED_ONLY_BATTLEGROUNDS = "Can only use in battlegrounds";
SPELL_FAILED_ONLY_DAYTIME = "Can only use during the day";
SPELL_FAILED_ONLY_INDOORS = "Can only use indoors";
SPELL_FAILED_ONLY_IN_ARENA = "You can only do that in an arena.";
SPELL_FAILED_ONLY_MOUNTED = "Can only use while mounted";
SPELL_FAILED_ONLY_NIGHTTIME = "Can only use during the night";
SPELL_FAILED_ONLY_OUTDOORS = "Can only use outside";
SPELL_FAILED_ONLY_SHAPESHIFT = "Must be in %s"; -- %s is the required stance/form
SPELL_FAILED_ONLY_STEALTHED = "You must be in stealth mode.";
SPELL_FAILED_ONLY_UNDERWATER = "Can only use while swimming";
SPELL_FAILED_OUT_OF_RANGE = "Out of range";
SPELL_FAILED_PACIFIED = "Can't use that ability while pacified";
SPELL_FAILED_PARTIAL_PLAYTIME = "You can not do this. You have more than 3 hours of online time. ";
SPELL_FAILED_POSSESSED = "You are possessed";
SPELL_FAILED_PREVENTED_BY_MECHANIC = "Can't do that while %s"; -- %s is the mechanic state that prevented the action (e.g. disoriented, frozen, etc.)
SPELL_FAILED_PROSPECT_NEED_MORE = "Requires %d %s."; -- %d is the number of %s's required to prospect this type of material.
SPELL_FAILED_PROSPECT_WHILE_LOOTING = "Cannot prospect while looting";
SPELL_FAILED_REAGENTS = "Missing reagent: %s";
SPELL_FAILED_REPUTATION = "Your reputation isn't high enough";
SPELL_FAILED_REQUIRES_AREA = "You need to be in %s."; -- %s is an area name
SPELL_FAILED_REQUIRES_SPELL_FOCUS = "Requires %s";
SPELL_FAILED_ROOTED = "You are unable to move";
SPELL_FAILED_SILENCED = "Can't do that while silenced";
SPELL_FAILED_SPELL_IN_PROGRESS = "Another action is in progress";
SPELL_FAILED_SPELL_LEARNED = "You have already learned the spell";
SPELL_FAILED_SPELL_UNAVAILABLE = "The spell is not available to you";
SPELL_FAILED_SPELL_UNAVAILABLE_PET = "That ability is not available to your pet";
SPELL_FAILED_STUNNED = "Can't do that while stunned";
SPELL_FAILED_TARGETS_DEAD = "Your target is dead";
SPELL_FAILED_TARGET_AFFECTING_COMBAT = "Target is in combat";
SPELL_FAILED_TARGET_AURASTATE = "You can't do that yet";
SPELL_FAILED_TARGET_DUELING = "Target is currently dueling";
SPELL_FAILED_TARGET_ENEMY = "Target is hostile";
SPELL_FAILED_TARGET_ENRAGED = "Target is too enraged to be charmed";
SPELL_FAILED_TARGET_FREEFORALL = "Target is currently in free-for-all PvP combat";
SPELL_FAILED_TARGET_FRIENDLY = "Target is friendly";
SPELL_FAILED_TARGET_IN_COMBAT = "The target can't be in combat"; -- Spell failure message when trying to use a spell on something that is in combat when it should not be.
SPELL_FAILED_TARGET_IS_PLAYER = "Can't target players";
SPELL_FAILED_TARGET_IS_PLAYER_CONTROLLED = "Can't target player controlled units";
SPELL_FAILED_TARGET_IS_TRIVIAL = "Can't target trivial";
SPELL_FAILED_TARGET_LOCKED_TO_RAID_INSTANCE = "Target is locked to another raid instance";
SPELL_FAILED_TARGET_NOT_DEAD = "Target is alive";
SPELL_FAILED_TARGET_NOT_GHOST = "Target is not a ghost";
SPELL_FAILED_TARGET_NOT_IN_INSTANCE = "Target must be in this instance";
SPELL_FAILED_TARGET_NOT_IN_PARTY = "Target is not in your party";
SPELL_FAILED_TARGET_NOT_IN_RAID = "Target is not in your party or raid group";
SPELL_FAILED_TARGET_NOT_IN_SANCTUARY = "Target is not in a sanctuary";
SPELL_FAILED_TARGET_NOT_LOOTED = "Creature must be looted first";
SPELL_FAILED_TARGET_NOT_PLAYER = "Target is not a player";
SPELL_FAILED_TARGET_NO_POCKETS = "No pockets to pick";
SPELL_FAILED_TARGET_NO_WEAPONS = "Target has no weapons equipped";
SPELL_FAILED_TARGET_ON_TAXI = "Your target is in flight";
SPELL_FAILED_TARGET_UNSKINNABLE = "Creature is not skinnable";
SPELL_FAILED_TOO_CLOSE = "Target too close";
SPELL_FAILED_TOO_MANY_OF_ITEM = "You have too many of that item already";
SPELL_FAILED_TOO_MANY_SKILLS = "Your pet can't learn any more skills";
SPELL_FAILED_TOO_SHALLOW = "Water too shallow";
SPELL_FAILED_TOTEMS = "Requires %s";
SPELL_FAILED_TOTEM_CATEGORY = "Requires %s";
SPELL_FAILED_TRAINING_POINTS = "Not enough training points";
SPELL_FAILED_TRANSFORM_UNUSABLE = "You can't use the new item";
SPELL_FAILED_TRY_AGAIN = "Failed attempt";
SPELL_FAILED_UNIT_NOT_BEHIND = "Target needs to be behind you.";
SPELL_FAILED_UNIT_NOT_INFRONT = "Target needs to be in front of you.";
SPELL_FAILED_UNKNOWN = "Unknown reason";
SPELL_FAILED_WRONG_PET_FOOD = "Your pet doesn't like that food.";
SPELL_FAILED_WRONG_WEATHER = "The weather isn't right for that";
maybe someone with access to us forums could ask slouken if we could get a function to log a string to the combatlog.
since it would not be instant I don't see a problem with that .. it would be much easier then creating a channel, enter it and log that to the Chatlog.
Such a thing would make botting and automation too easy.
it was always possibe to log whatever you wanted by changing the globalstrings. It's not very useful for botting/automation since the writing to disk is delayed anyways.
Being able to log a custom event in the WoWCombatLog.txt would be no different than using the chatlog and just whispering yourself. Except it would be a lot easier to record stuff like group layout and changes for combatlog parsing without needing almost everybody to submit a log.
There is a global function in the new combat log code you can use (or copy). I don't have access to my current code to give you the exact name, but it is something like Combat_Log_Object_IsA. You pass in the object flag (destFlag, etc...) and one of global flag values/filters, and it returns a boolean indicating if the object is of the global flag type.
There's a ton of information in the new CombatLog.lua file if you extract it out using the Interface toolkit. I don't think there are any specific API calls we are missing, but the CombatLog does have quite a few global lua functions to make use of, learn from, etc...
I'm sure developers will come up with nicer, faster ways to do the same things, but as a starting point for getting things working the Blizzard code is very helpful.
Events which have _NONE depending on other information:
SPELL_CAST_SUCCESS: src NONE For spells that don't take targets, such as planting a totem, or life tapping.
There are two new combat log events for the next test realm update:
SPELL_SUMMON
SPELL_CREATE
These are sent with the guid and name of the creature or object that is created by a spell (along with who cast it, naturally)
Yeah this is good news. I'm st?ll curious if it will also contain an additional spellName, spellID pair to indicate which spell summoned/created the entity (resurrect pet, cast searing totem etc).
Once we have the final arg numbers/sematic I'll add it to the first post.
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
Also, I started a wowwiki page and Ctrl+C Ctrl+V'd most of this info over.
http://www.wowwiki.com/COMBAT_LOG_EVENT_Details
Looks very nice :D
since it would not be instant I don't see a problem with that .. it would be much easier then creating a channel, enter it and log that to the Chatlog.
Such a thing would make botting and automation too easy.
it was always possibe to log whatever you wanted by changing the globalstrings. It's not very useful for botting/automation since the writing to disk is delayed anyways.
By messing with global strings, you change what gets written, but not <the conditions> under which it is written.
For example, to see if the log-entry target is identical to you player-target. (Flag 0x00010000)
I guess the following would work:
I'm wondering though if there is an easier way. Something like bitwise comparators.
Edit: Seems the answer was was just a single search away http://www.wowwiki.com/Lua_functions#Bit_Functions :P
Still, something like a global "hasFlag" function would be nice.
Bit logic isn't all bad though. For example you can check for specific combinations by simply adding things together like:
Adding acts like bit or in this context.
I'm sure developers will come up with nicer, faster ways to do the same things, but as a starting point for getting things working the Blizzard code is very helpful.
I think with the extensive failType list by Sorata the information is now complete as of current PTR build.
This is for the current PTR build, please report if there is a conflict, or update.
The format for a target entry in the combat log is:
srcGUID, srcName, srcFlags
dstGUID, dstName, dstFlags
If one or both is not send with an event (no target present), or is not valid for the event the fields contain:
0x0000000000000000,nil,0x80000000
COMBATLOG_OBJECT_NONE = 0x80000000;
Events which have _NONE for either source or target for all events:
UNIT_DIED, SPELL_AURA_APPLIED, SPELL_AURA_REMOVED: NONE dst
SPELL_CAST_START: src NONE
Note: _DOSE suffix does not change this structure.
Examples:
2/15 09:59:41.270 UNIT_DIED,0x0000000000000000,nil,0x80000000,0xF13000618C067B44,Erratic Sentry,0xa28
2/15 09:59:45.689 SPELL_AURA_APPLIED,0x0000000000000000,nil,0x80000000,0xF1300061800673F4,Wretched Devourer,0xa48,6215,Fear,0x20,DEBUFF
2/15 09:59:42.866 SPELL_AURA_REMOVED,0x0000000000000000,nil,0x80000000,0xF1300061800663C2,Wretched Devourer,0xa48,12654,Ignite,0x4,DEBUFF
Events which have _NONE depending on other information:
SPELL_CAST_SUCCESS: src NONE For spells that don't take targets, such as planting a totem, or life tapping.
Examples:
2/16 15:56:06.151 SPELL_CAST_SUCCESS,0x00000000009880E2,Warlock1,0x514,0x0000000000000000,nil,0x80000000,27222,Life Tap,0x20
Notes:
*) There are currently some bugs with SPELL_CAST_SUCCESS it seems where for some spells dst isn't set when it should be present.
Example:
2/16 16:02:17.319 SPELL_CAST_SUCCESS,0x0000000000990C75,Priest1,0x514,0x0000000000000000,nil,0x80000000,41637,Prayer of Mending,0x1
http://forums.worldofwarcraft.com/thread.html?topicId=2968233433&postId=49757555677&sid=1#473
From the looks of it it'll be sent like this :)
Once we have the final arg numbers/sematic I'll add it to the first post.