Hm. Well, the “action-to-be” business exhausts my knowledge of how to get stuff out of the parser internals, so I don’t know whether it’s possible to figure out whether the player input “hot substance” or “cold substance” given my code.
For the behavior in your ranted example, would it help to have some archetypes of the various possibilities in some inaccessible room? This gets you part of the way, but you’ll have to decide how to disambiguate when the player types “ponder hot.” Also, it seems to me that if you want “ponder hot” to work you need to say “Understand the temperature property as describing a substance”; if you have “referring to” it’ll require you to add “substance” or some other name.
[rant][code]“Forms and Things”
Section - New Kinds
A substance is a kind of thing. Understand “substance” as a substance.
Temperature is a kind of value. The temperatures are hot and cold. A substance has a temperature. A substance is usually cold. Understand the temperature property as describing a substance.
Humidity is a kind of value. The humidities are dry and moist. A substance has a humidity. A substance is usually dry. Understand the humidity property as describing a substance.
Section - Setting
The Laboratory is a room. “A perfect place to practice pondering.”
The lump of slag is a substance, here. The description of the slag is “It is cold, dry, and worthless.”
Section - Archetypes
The Formitorium is a room.
Earth is a substance in Formitorium. Earth is cold and dry.
Air is a substance in Formitorium. Air is hot and moist.
Water is a substance in Formitorium. Water is cold and moist.
Fire is a substance in Formitorium. Fire is hot and dry.
Section - Pondering
Pondering is an action applying to one visible thing. Understand “ponder [any thing]” as pondering.
Report pondering:
if the noun is hot begin;
if the noun is dry begin;
say “Fire.”;
otherwise;
say “Air.”;
end if;
otherwise;
if the noun is dry begin;
say “Earth.”;
otherwise;
say “Water.”;
end if;
end if.
To decide what action-name is the action-to-be: (- action_to_be -).
After deciding the scope of the player when the action-to-be is the pondering action:
place the contents of the Formitorium in scope.
[/code][/rant]