MPI is underpowered when it comes to variables. So, here's a few routines to improve that. There are four macros for local variable handling, the first two of which are {peek} and {poke}. Peek simply looks up a variable, and poke stores one. If you wanted to increment a variable, you would do this: {poke:{add:1,{peek:counter}},counter} The only special things these do are store the props in a propdir to make sure you don't accidently overwrite any important props, and it stores them locally. @set me=_msgmacs/peek:{prop:_vars/{:1},this} @set me=_msgmacs/poke:{store:{:1},_vars/{:2},this} Lists are a little bit trickier, as there's no built-in way to store a list. @set me=_msgmacs/peeklist:{list:_vars/{:1},this} @set me=_msgmacs/pokelist:{with:inlist,{:1},{delprop:_vars/{:2}#,this}{parse:line,{&inlist},{null:{store:{add:1,{prop:_vars/{:2}#,this}},_vars/{:2}#,this}}{store:{if:{&line},{&line}, },_vars/{:2}#/{prop:_vars/{:2}#,this},this}}} The following four routines are for storing your variables on your character, instead of the local object. You would do this only if you wanted to have global variables available from multiple trigger objects. @set me=_msgmacs/gpeek:{prop:_vars/{:1},{owner:this}} @set me=_msgmacs/gpeeklist:{list:_vars/{:1},{owner:this}} @set me=_msgmacs/gpoke:{store:{:1},_vars/{:2},{owner:this}} @set me=_msgmacs/gpokelist:{with:inlist,{:1},{with:ot,{owner:this},{delprop:_vars/{:2}#,{&ot}}{parse:line,{&inlist},{null:{store:{add:1,{prop:_vars/{:2}#,{&ot}}},_vars/{:2}#,{&ot}}}{store:{if:{&line},{&line}, },_vars/{:2}#/{prop:_vars/{:2}#,{&ot}},{&ot}}}}}