NPC

/qm npc list
/qm npc create <name>
/qm npc remove
/qm npc spawn
/qm npc despawn
/qm npc move
/qm npc rename <new_name>
/qm npc trait registered
/qm npc trait list
/qm npc trait add <trait>
/qm npc trait remove <trait>
/qm npc select <npc>
/qm npc group
/qm npc group set <group>
/qm npc group remove
/qm npc import
<proc[qm_npc.list]>
<proc[qm_npc.exists].context[id]>+
<proc[qm_npc.find].context[name]>+
<proc[qm_npc.get.name].context[id]>
<proc[qm_npc.get.location].context[id]>
<proc[qm_npc.get.trait].context[id]>
qm_npc.create def:name
qm_npc.remove def:(name|id)
qm_npc.despawn def:(name|npc)
qm_npc.remove def:(name|npc)
qm_npc.rename def:(old_name|npc)|new_name
qm_npc.trait.register def:trait
qm_npc.trait.add def:(name|npc)|trait
qm_npc.trait.remove def:(name|npc)|trait
qm_npc.data.set def:(name|npc)|key|value
proc[qmp_npc.trait].context[(name|npc)]
proc[qmp_npc.data.get].context[(name|npc)|key]

Events for Traits

on trait_<trait>_proximity_entry
on trait_<trait>_proximity_exit
on trait_<trait>_player_click
on trait_<trait>_add
on trait_<trait>_remove
on trait_<trait>_load? - just use on load?
on trait_<trait>_save? - just use on save?