Sorry for not posting for so long.
Here is my trimmed-down code. I cannot find the problem… :\
[spoiler][code]Definition: a supporter is occupied if it supports something.
Definition: a supporter is empty if it is not occupied.
Before pushing an enterable supporter (called a chair):
if the chair supports a person:
say “I don’t think [a list of persons on the noun] want[s] to be pushed around.”;
stop the action.
Instead of entering an enterable occupied supporter:
if the noun supports a person:
say “You cannot get on [the noun], because it is currently occupied by [a list of persons on the noun].”;
otherwise:
say “You squeeze on [the noun] next to [the list of things supported by the noun].”.
Before pushing an occupied enterable supporter to a direction:
if the noun supports a person:
say “I don’t think [list of persons on the noun] want[s] to be pushed around.”;
stop the action;
otherwise:
say “You push [the noun] [second noun][if the noun is occupied], together with [the list of things supported by the noun][end if].”;
continue the action.
Definition: a container is non-empty if it contains something.
Definition: a container is empty if it contains nothing.
Definition: a container is full if the number of things in the noun is the carrying capacity of the noun.
[+++ reachability +++]
A thing can be reachable or unreachable. A thing is usually reachable.
Definition: A thing is unreachable if it is not reachable.
Instead of doing something other than examining or standing under or pushing or pulling to an unreachable thing:
say “You can’t reach [the noun] from here.”
Instead of eating or drinking something inedible, say “I have another understanding of food.”
[+++ vertical arrangement relation +++]
[Section 1 - Vertical Arrangement]
Vertical arrangement relates various things to one thing (called the uber).
The verb to be under means the vertical arrangement relation.
The verb to be over means the reversed vertical arrangement relation.
Definition: a thing is sub if it is under something.
Definition: a thing is super if it is over something.
Rule for printing room description details of a sub thing (called S):
say " (under [the uber of S])"
After examining a sub thing:
say “[The noun] [are] under [the uber of the noun].”;
continue the action.
[After examining a super thing:
if the player is under the noun:
say “[We] [are] currently standing under [the noun].”;
otherwise:
say “Underneath [the noun] [we] [can] see [the list of things under the noun with indefinite articles].”;
continue the action.]
Definition: a thing is nonplayer if it is not the player.
After examining a super thing:
if the number of nonplayer things under the noun > 0:
say “Underneath [the noun] [we] [can] see [the list of nonplayer things under the noun with indefinite articles].”;
if the player is under the noun:
say “[We] [are] currently standing under [the noun].”;
continue the action.
A thing can be uberistic or non-uberistic. A thing is usually non-uberistic.
test bells with “push chair under bells / get on chair /x bells / take bells / x bells / get off / x bells”
[Section 2 - Pushing/Pulling It Under]
Pushing it under is an action applying to two things.
Pulling it under is an action applying to two things.
Putting it under is an action applying to two things.
Understand “push [something] under [something]” as pushing it under.
Understand “pull [something] under [something]” as pulling it under.
Understand “put [something] under [something]” as putting it under.
[Instead of putting something under an uberistic thing (called an UT):
say “I’ll try pushing [the noun] under [the second noun] instead.”;
try pushing the noun under the UT.]
Check pushing it under when the second noun is non-uberistic (this is the can’t push something under something non-uberistic rule):
instead say “[We] [can’t push] anything under [the second noun]. There’s no space under it.” (A).
Check pulling it under when the second noun is non-uberistic (this is the can’t pull something under something non-uberistic rule):
instead say “[We] [can’t pull] anything under [the second noun]. There’s no space under it.” (A).
Check putting it under when the second noun is non-uberistic (this is the can’t put something under something non-uberistic rule):
instead say “[We] [can’t put] anything under [the second noun]. There’s no space under it.” (A).
Check pushing it under when the noun is the second noun (this is the can’t push something under itself rule):
instead say “[We] [can’t push] [the noun] under [themselves].” (A).
Check pulling it under when the noun is the second noun (this is the can’t pull something under itself rule):
instead say “[We] [can’t pull] [the noun] under [themselves].” (A).
Check putting it under when the noun is the second noun (this is the can’t put something under itself rule):
instead say “[We] [can’t put] [the noun] under [themselves].” (A).
Check pushing it under when the player encloses the noun (this is the can’t push something held under rule):
instead say “[We] [can’t push] [the noun] while [we]['re] carrying [regarding the noun][them].” (A).
Check pulling it under when the player encloses the noun (this is the can’t pull something held under rule):
instead say “[We] [can’t pull] [the noun] while [we]['re] carrying [regarding the noun][them].” (A).
Check pushing it under when the player encloses the second noun (this is the can’t push something under something held rule):
instead say “[We] [can’t push] [the noun] under [the second noun] while [we]['re] carrying [regarding the second noun][them].” (A).
Check pulling it under when the player encloses the second noun (this is the can’t pull something under something held rule):
instead say “[We] [can’t pull] [the noun] under [the second noun] while [we]['re] carrying [regarding the second noun][them].” (A).
[May need to relax this for pushing furniture around]
To move is a verb.
Check pushing a fixed in place thing under (this is the can’t push fixed in place things under rule):
instead say “[We] [can’t move] [the noun].” (A).
Check pulling a fixed in place thing under (this is the can’t pull fixed in place things under rule):
instead say “[We] [can’t move] [the noun].” (A).
Check pushing it under when the noun is under the second noun (this is the can’t push something under its uber rule):
instead say “[The noun] [are] already under [the second noun].” (A).
Check pulling it under when the noun is under the second noun (this is the can’t pull something under its uber rule):
instead say “[The noun] [are] already under [the second noun].” (A).
Check pushing it under when the noun is over the second noun (this is the can’t push something under its subordinate rule):
instead say “[We] [can’t push] [the noun] under [the second noun], because [the second noun] [are] under [the noun].” (A).
Check pulling it under when the noun is over the second noun (this is the can’t pull something under its subordinate rule):
instead say “[We] [can’t pull] [the noun] under [the second noun], because [the second noun] [are] under [the noun].” (A).
Check pushing it under when the second noun encloses noun (this is the can’t push something under its container or supporter rule):
instead say “[We] [can’t push] [the noun] under [the second noun], because [the noun] is already [if the second noun is a container]in[else]on[end if] [the second noun].” (A).
Check pulling it under when the second noun encloses noun (this is the can’t pull something under its container or supporter rule):
instead say “[We] [can’t pull] [the noun] under [the second noun], because [the noun] is already [if the second noun is a container]in[else]on[end if] [the second noun].” (A).
Check pushing it under when the noun encloses the second noun (this is the can’t push something under its contents rule):
instead say “[We] [can’t push] [the noun] under [the second noun], because [the second noun] [are] in [the noun].” (A).
Check pulling it under when the noun encloses the second noun (this is the can’t pull something under its contents rule):
instead say “[We] [can’t pull] [the noun] under [the second noun], because [the second noun] [are] in [the noun].” (A).
Instead of putting something under an uberfull thing when a supporter is under the second noun:
let S be a random supporter that is under the second noun;
say “(putting [the noun] on [the S], because there are already too many things under [the second noun])[command clarification break]”;
try putting the noun on S.
[TODO: component parts. See tests with bucket handle.]
Carry out pushing it under:
now all things under the noun are not under the noun;
now the noun is under the second noun.
Carry out pulling it under:
now all things under the noun are not under the noun;
now the noun is under the second noun.
Report pushing it under (this is the report pushing it under rule):
say “[We] [push] [the noun] under [the second noun].” (A).
Report pulling it under (this is the report pulling it under rule):
say “[We] [pull] [the noun] under [the second noun].” (A).
[TODO: If we have pushing it under, we should probably have putting it under as well]
[Section 3 - Severing the Relation]
The pushing action has an object called the old uber.
The pulling action has an object called the old uber.
Setting action variables for pushing:
now the old uber is nothing.
Setting action variables for pulling:
now the old uber is nothing.
Before pushing a sub thing:
[save the uber before clearing it so we can use it in our report rule later]
now the old uber is the uber of the noun.
Before pulling a sub thing:
[save the uber before clearing it so we can use it in our report rule later]
now the old uber is the uber of the noun.
After taking or pushing a sub thing:
now the noun is not under the uber of the noun;
continue the action.
After pulling a sub thing:
now the noun is not under the uber of the noun;
continue the action.
After taking or pushing a super thing (called a sup):
now all things under the noun are not under the sup;
continue the action.
After pulling a super thing:
now all things under the noun are not under the noun;
continue the action.
After putting something on a sub supporter:
now the noun is under the uber of the second noun;
continue the action.
Report pushing when the old uber is not nothing (this is the report pushing a sub thing rule):
instead say “[We] [move] [the noun] out from under [the old uber].” (A).
Report pulling when the old uber is not nothing (this is the report pulling a sub thing rule):
instead say “[We] [move] [the noun] out from under [the old uber].” (A).
The report pushing a sub thing rule is listed first in the report pushing rules.
The report pulling a sub thing rule is listed first in the report pulling rules.
Moving out is an action applying to one thing. Understand “move [something]” as moving out.
Carry out moving out a sub thing:
now the noun is not under the uber of the noun;
now the uber of the noun is not over the noun.
Instead of moving out yourself when the player is sub:
now the player is not under the uber of the player.
Carry out moving out a super thing:
now all things under the noun are not under the noun.
Before entering something that is not sub:
if the player is sub, now the player is not under the uber of the player.
[Section 4 - Coverage Capacity]
A thing has a number called coverage capacity. The coverage capacity of a thing is usually 0.
When play begins:
repeat with U running through uberistic things:
now the coverage capacity of U is 999.
Definition: a thing is uberfull if the number of things under it >= its coverage capacity.
Check pushing it under when the second noun is uberfull (this is the can’t push something under an uberfull thing rule):
instead say “[if the coverage capacity of the second noun is 0][We] [can’t put] anything under [the second noun][else][The second noun] already [have] too many things under [them][end if].” (A).
Check pulling it under when the second noun is uberfull (this is the can’t pull something under an uberfull thing rule):
instead say “[if the coverage capacity of the second noun is 0][We] [can’t put] anything under [the second noun][else][The second noun] already [have] too many things under [them][end if].” (A).
[Section 5 - Standing Under]
Standing under is an action applying to one thing.
Understand “Stand under [something]” as standing under.
To stand is a verb.
[TO DO: Printing room descripton with addition (under the noun)]
Check standing under when the noun is non-uberistic (this is the can’t stand under a non-uberistic thing rule):
instead say "There’s no place to stand under [the noun]. " (A).
Check standing under when the noun is enclosed by the player (this is the can’t stand under a thing enclosed by the player rule):
instead say “[We] [can’t] stand under [the noun] while [we] [are] holding it.” (A).
Check standing under when the noun is uberfull (this is the can’t stand under an uberfull thing rule):
if an enterable supporter (called an underporter) is under the noun:
silently try entering the underporter;
now the player is under the noun;
instead say “[We] [can’t] find any more space to stand under [the noun].” (A).
Instead of standing under an uberfull thing (called the UFT) when an enterable supporter is under the second noun:
let ES be a random enterable supporter that is under the second noun;
say “(getting onto [the ES], because there are already too many things under [the second noun])[command clarification break]”;
try entering ES;
now the player is under the UFT.
After entering a sub supporter:
now the player is under the uber of the noun;
continue the action.
Carry out entering when the noun is a sub thing (called the sub):
now the player is under the sub.
After exiting from a sub supporter:
if the player is sub, now the player is not under the uber of the player;
if the holder of the player is sub, now the player is under the uber of the holder of the player;
continue the action.
Carry out standing under:
now the player is under the noun.
To position is a verb.
Report standing under:
say “[We] [position] [ourselves] under [the noun][if the list of nonplayer things under the noun is not empty] next to [the list of nonplayer things under the noun][end if].”
Carry out going when the player is under something (called the header):
now the player is not under the header.
AB front is a room with printed name “Bookshop (front)”.
Some brass bells are in AB front. The brass bells are unreachable. The bells are uberistic. The coverage capacity of the brass bells is 1.
Before taking the brass bells:
if the player is under the brass bells and the player is on an enterable sub supporter:
now the brass bells are reachable.
A small chair is furniture in AB front.
After taking the brass bells, say “You remove the brass bells from the fixture as carefully as possible to not make them jingle.”.[/code][/spoiler] Thanks for your help! 