Yep, I saw that, GiGs. But, like I said, someone else had already asked me to work something like this up for them, so it's not really extra work. Besides, the OP mentioned the potential of learning mods to make this happen, so it sounds like if mods are not an option currently, there is the possibility that they could be an option in the future, so h ere's what I came up with... This is predicated on the understanding that you have "tiles" (or "squares", "hexes", or "sectors") you want too be able to explore, but you want to have whatever you find, there, be documented so that it doesn't change between searching right now and searching 5 minutes from now. The initial request I had for something like this was very similar, just that the GM wanted to pre-generate all of the info at each sector, have it recorded, and then let the players investigate, revealing what was already randomly generated. In your case, it sounds like you want it to be randomized in the moment. Not a huge difference. We still need to generate the content and record it somewhere. For now, I'm going to assume a grid map, where every grid square is one sector, and I'm going to refer to them like a spreadsheet (A1, A2, B3, C14, etc.). (If this is different from what you imagined, the indexing syntax can be changed.) Setup Install the MetaScriptToolbox mod script in your game. Designate or create a character to hold your mules (abilities that will act as tables). I'll call mine PublicTables. Give controlling rights to "All Players". On this character, create 3 abilities: SectorInfo GetSectorInfo SectorSource SectorInfo can be left blank for now ( once you read on and understand the format required of the data, you could prefill this with whatever you wanted to pre-generate for your map). SectorSource should be filled with your potential items to find -- that is, what do the players find if they roll a d100 and get a 23? Fill in the data in the format: 1=Dentist 2=Latrine 3=Textiles market etc. You can also use ranges if you want something to have a greater chance of coming up, or if you don't want to fill in 100 lines. As a proof of concept, I'll use this trick and only populate with 5 entries. Here is my SectorSource: 1-20=Tavern 21-40=Band 41-60=Tiny horse parade 61-80=Underground fighting ring 81-100=Flash mob GetSectorInfo is where all of the magic happens, so here are a couple of ways to go about doing it. First up is a version that relies on a query. The player runs the command and enters a valid sector (A1, A2, etc.). Based on that, EITHER the sector has been explored before and the results (recorded in the SectorInfo mule) are returned, or NEW results are rolled, retrieved from the SectorSource mule, and stored in the SectorInfo mule. &{template:default} {&if 'get.PublicTables.SectorInfo.?{Sector|A2}/get ' = ' '}{{name=Exploring Sector ?{Sector|A2}}} {{Found=get.PublicTables.SectorSource.[[1d100]].value/get }} set\.PublicTables.SectorInfo.?{Sector} = get\.PublicTables.SectorSource.$[[0]].value/get/set{&else}{{name=Information for Sector ?{Sector|A2}}}{{Found=get.PublicTables.SectorInfo.?{Sector}/get}} {&end} {&simple} After running it a few times (and duplicating the sector I was asking for to demonstrate that this doesn't overwrite a value already there, here's the output: You can see if it is the first time a sector is explored, the title of the template is "Exploring Sector XX". On the other hand, if a previously-explored sector is rolled again, the title is, "Information for Sector XX". If you check the SectorInfo mule, you will see the same data recorded as was shown in the chat. Here is another option where you'd use the position of a selected token to know which sector you want to explore... this one assumes a 70px grid size and a 1x1 token. It also makes use of one more mule (ability) called GridRowConversion . GridRowConversion looks like this: 1=A 2=B 3=C ... 29=AC 30=AD ...etc. Here is the alternate GetSectorInfo command utilizing the selected token: !&{template:default} {\\&global ([gridRow]get\.PublicTables.GridRowConversion.{&math 1 + (round(@(selected.top) - 35,2) - (round(@(selected.top) - 35,2) % 70))/70}/get)([gridCol]{&math 1 + (round(@(selected.left) - 35,2) - (round(@(selected.left) - 35,2) % 70))/70})} {\\&if 'get\\.PublicTables.SectorInfo.gridRowgridCol/get ' = ' '}{{name=Exploring Sector gridRowgridCol}} {{Found=get.PublicTables.SectorSource.[[1d100]].value/get }} set\\\\.PublicTables.SectorInfo.gridRowgridCol = get\.PublicTables.SectorSource.$[[0]].value/get/set{\\&else}{{name=Information for Sector gridRowgridCol}}{{Found=get\\.PublicTables.SectorInfo.gridRowgridCol/get}} {\\&end} {&simple} And a short video demonstrating it: Exploring Sectors