More testing and efforts, along with one of my new meta-commands- “SendToItemAUTO Num1 Num2”- a meta-command I do not often use, have confirmed so far the ability to have EXACT same nouns in an environment.
This means you can have six BRONZE BLOCKS in a line of six rooms, one in each. Or scattered about all throughout the game world, but placing two or more in the same place…no. Except with literary illusion: three rooms make up “one” room, “You are in the middle of a large chamber. Against the east wall is a bronze block; against the west wall is another bronze block. They are each thirty feet away…”
Normally this presents a problem: if you type in PUT BRASS LANTERN ON BLOCK all is well by default but if you type in PUT BRASS LANTERN ON BRONZE BLOCK you will receive a “what block?” error message except for wherever the first block is. This is because when the player is specific with adjectives AGT scans down the list of nouns in numerical order, and in this case the first bronze block is noun 310. Because this noun is only located in one room that is the only place typing in PUT BRASS LANTERN ON BRONZE BLOCK will work.
Google Gemini suggested a “floating noun” as in the same noun being placed in whichever room you are in but admitted I was right about the obvious problem: if you put a ruby on the “first” block then it will be on the “second” block as well, then the “third” etc. So that won’t work.
AGT has meta-commands for making variables into noun and object values. The proper values are there when just saying BLOCK but for some reason BRONZE BLOCK always yields 310. This means when using BLOCK it scans through all of them but not with BRONZE BLOCK.
“SendToItemAUTO Num1 Num 2” sends an item to another based on whatever you typed in. Type in ON and the item is ON the block; type in BESIDE and the item is beside, etc. Arranging the meta-commands so “PrepIS #” comes first disallows you doing something, in this case putting the lantern UNDER or BEHIND any of the blocks. It only takes two meta-commands to do this for all of the blocks.
That part is akin to TADS in its way. With TADS you can define an object in a way that says “do not allow putting something under this object.” “PrepIS #” somewhat indirectly achieves the same exact thing, and does have considerable flexibility as do most meta-commands. If TADS has this based on each item then both TADS and AGT can do the same thing: not allow you to put anything under any of the bronze blocks except for the fourth for example.
The only problem right now is that “SendToItemAUTO Num1 Num2” uses hard numbers. Therefore I intend to change the numbers to variables. All you have to do is set the second one to the value of the bronze block (object) in question; the first (noun) can be done automatically.
Thus you can have a line of rooms or hallway sections lined with bronze blocks and you can interact with any of them. For AGT this is quite nifty and expands its abilities even more. You can have more than one FIREFRUIT TREE in an area so you can bribe the magnesium fire mook away rather than using all of your Splash magic to extinguish it.
(My fantasy/sci-fi settings usually have a basis in reality. If a magnesium fire is heavily flooded with water it must get its oxygen from the water, so its net energy gain is only roughly half- this, combined with the large amount of water acting as a heat sink, will extinguish it. A “thermite level” salamander is impervious to 99.99% of any water magic so forget using Splash magic at all.)
All of these modifications combined still will not make AGT the equal of TADS 2+ and other text game engines but they do make AGT a viable game engine able to reach the lower professional part of the text game spectrum. Since that is as high as I will ever go (I’m old get off my lawn) it’s good enough. Certainly from what I have seen the first “Unnkulia” game is well within its reach. Also at this point it is unlikely I’ll be able to handle the learning curve TADS requires.