Table shapes
The fields of the tables the API returns.
Apart from Agent and Item handles, the game's data comes back as plain tables, copied when you ask for them. They don't change afterwards: ask again for fresh values. A field the game has no value for is nil.
Skill
A skill a character has, from agent:skills(), combat.skills() and similar.
idslotnameiconui.image.readycooldown, max_cooldowncooldown_alacrity_adjustedammo, ammo_cooldown, max_ammo_cooldownground_targetcast_time, cast_time_quicknessSkillDef
What a skill is, from content.skill(id).
id, name, iconinteract_typeground_targetbreaks_stuninstant_castskill_palette_idscast_time, cast_time_quicknessinfo{stack_type, max_cooldown, max_ammo, max_ammo_cooldown, cost, unblockable, affected_by_quickness, flip_skill_ids, facts, range, static_radius, dyn_radius, distance0, distance1, static_damage, dyn_damage, static_barrier, dyn_barrier, dyn_life_force_cost}.Each entry of info.facts has a kind and the fields that go with it: damage (hits, m1, m2), apply_buff (buff_id, duration, stack_count), duration, evade, stun, daze, knockdown, float (duration), knockback, launch, pull (distance), radius, distance, number_of_targets, healing, life_force_cost, revive_percentage, conditions_removed (value), barrier (base, scalar...), pierces and reflects_missiles. Every fact also has req_trait_id.
Buff
A boon, condition or effect on an agent, from agent:buffs().
idcontent_idnamestackstime_leftmax_durationtimestampstack_typesource_agent_idsItemDef
What an item is, from content.item(id), item:def() and others.
id, name, iconrarityinventory.RARITY_* constants.item_typeinventory.ITEM_TYPE_* constants.flagsreq_leveltradeable, salvageable, usable, consumablevendor_valuebag_capacityarmor_type, armor_weight_classweapon_typetrinket_type, upgrade_component_typeskin{id, name, icon}.container{flags, has_use_all, container_type, choices}, each choice {item_id, quantity}.MapDef
A map, from map.def(), content.map(id) and others.
idguidnamemap_typemap.TYPE_*.min_level, max_levelis_wvw_mapMarker
A marker on the map, from map.markers().
uidname, dynamic_name, hashed_name, descriptionpositionagent, agent_idmap_icon, world_iconis_commander, is_mentor, is_event, is_hero_challenge, is_mastery_insightmarker_type1, marker_type2, content_def_id1, content_def_id2, sector_def_idObjective
An event objective, from objectives.list() and events.list(). Every objective has id, objective_type and kind; the other fields depend on the kind:
break_moralecount, namecapture_locationpercentage, namecollect_itemspercentage, contributioncountercurrent, max, namecullremaining, namedefend_gadgetname, agent_id, percentagedefend_gadgetscurrent, maxescortagent_id, nameintimidatepercentage, agent_idkill_countagent_id, namerepair_gadgetsagent_idstimertime_leftSpec
One of a player's three specializations, from specs.selected() and agent:specs(). An empty specialization slot is false.
indexid, nameminor_trait_ids, major_trait_idsselected_traits{id, name, description, icon}. A tier with no trait selected is nil, so loop over 1 to 3 rather than with ipairs.Stats
From agent:core_stats().
levelpower, precision, toughness, vitalityferocity, healing_power, condition_damage, concentration, expertiseagony_resistance