Workbench and other stuff, take 2
This is still a draft, not a proposal.
WORKBENCH. A grid of 6 rows labeled “A” through “F” (with A at the bottom) and 8 columns labeled “1” through “8” (with 1 on the left). Individual grid-squares are thus identified “1A” (at the lower left” and so on through “6F” at the upper right.
In order for a Part to become part of the Machine, it must be placed in the Workbench. This is accomplished by indicating which column (or adjacent columns, if the Part is more than 1 column wide) the Part is dropped into. The Part then drops down to the lowest vacant grid squares in that column. For example, if the grid is empty and a 1x1 sized Part is dropped in column 3 then the Part falls down to location 3A. If another 1x1 sized Part is then dropped in column 3 it falls down to location 3B. If a 2-wide by 1-high Part is then dropped in columns 3 and 4 then it falls down to locations 3C-4C.
Changes to the concepts of Parts and Variables:
Parts are physical, tangible objects such as a lever, a bell, a shotgun, an aircraft carrier, or a shark. Variables are factual states such as: Position of Lever (permitted states: up, down). Time of day (permitted states: Morning, Afternoon, Night). Status of Mouse (permitted states: Awake, Asleep, Dead).
Some Variables refer to conditions applicable to a particular Part- these can be referred to as “Part Variables”. (examples: Position of Lever, Status of Mouse). Other Variables do not refer directly to conditions applicable to a particular Part, but simply refer to a condition of the universe (example: Time of Day). The definitions of “Part” and “Variable” in the rules are amended to conform with this.
A Part may become part of the Machine by being placed at a location in the Workbench. Variables, being concepts rather than tangible things, do not have locations.
When a Part is activated, the Part may (but is not required to) check the status of any number of Variables, and the status of those Variables may affect the result of activating that Part. For example, if a Part is a Lever, and there exists a variable entitled “Status of Lever (permitted states: Up, Down)”, and the description of the Lever is “If Lever is activated, check the status of Lever. If Status of Lever is Down then do nothing. If Status of Lever is up, then change the Status of Lever to Down activate the Part that is located immediately above the Lever, and increase the value of the Variable entitled “Number of Lever Clicks” by one. Valid results of activating a Part may include, for example: changing the state of one or more Variables in specified ways, activating or deactivating one or more specifically named Parts or one or more Parts having a specified spatial relationship to the Part in question, or changing the location of one or more Parts. Only Parts that are part of the Machine (i.e., that have locations) can be affected.
spikebrennan:
When a Variable is created, it is designated as either “Part-specific” or “Global”. If it is “Part-specific” then the Part that it relates to must be specified, and if the Part that it relates to does not pass or is deleted from the gamestate then that Variable automatically also gets deleted from the gamestate.