For any of these, no part of the object's baseline (the bottom row of pixels of the object) can be on a part of the screen the object is not allowed on.
Control lines on the priority screen
On the priority screen, the first four colours (0-3) have special meaning. Colour 0 (black) is an unconditional barrier. No object is ever allowed to be on parts of the screen with a pixel of this colour in the priority screen.
Colour 1 (dark blue) is a conditional barrier. Objects are not normally allowed to be on a conditional barrier, unless the ignore.blocks command is used to allow them to do so.
Colour 2 (dark green) is a signal barrier. This can be used to test if ego is walking into a certain place. Whenever ego is touching a signal barrier, flag 3 is set.
Colour 3(dark cyan) signifies water. This is explained shortly.
Blocks
You can set up an invisible rectangular block on the screen using the block command. The interpreter will not allow objects to cross the borders of the block (unless they are told to ignore blocks). You can remove the block using the unblock command. Objects can be told to ignore blocks using the ignore.blocks command and be told to observe blocks by using the objserve.blocks command.
Land/water
Parts of the priority screen which are colour 3 (dark cyan) are considered to be "water". If you look at the priority screen of rooms that have lakes or rivers in them, you will usually see this. Parts of the priority screen which are not colour 3 are considered to be "land". You do not have to use colour 3 to represent water - it could also represent some other surface such as ice, lava, sand, a slippery floor, or whatever you need for that particular room.
Objects can be allowed only on water, only on land or on both. This is set be the object.on.water, object.on.land and object.on.anything commands.
Whenever ego's baseline is completely on water, flag 0 is set.
The horizon
The horizon is an invisible horizontal line, usually near the top of the screen. Its position is set using the set.horizon command.
Normally, objects can not go above the horizon. This can be changed using the ignore.horizon and observe.horizon commands.
Other objects
Objects are normally blocked by other objects on screen - that is, the baselines of objects are not allowed to touch each other. This can be changed, however, with the ignore.objs and observe.objs commands.
See also