2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
|
this case, a warp occurs. The movement is restarted, using the specified
object as the origin of the movement, and that object's direction as the
direction of movement.
=== Pattern matching ===
(TODO)
=== Compatibility ===
Compatible objects have the following differences from the default:
* VisualOnly implies Stealthy.
|
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
|
this case, a warp occurs. The movement is restarted, using the specified
object as the origin of the movement, and that object's direction as the
direction of movement.
=== Pattern matching ===
Where an instruction is expected, you can have pattern matching. This can
be (P <pattern...>) or (,P <pattern...>) where the first one uses the
current location, and the second kind uses the position and direction of
the specified object as the matching. It pushes the found object to the
stack, or pushes zero if the pattern does not match.
<class>
Match an object of the specified class.
<dir>
Move in the specified direction. (This does not move any objects; it
only moves the cursor for pattern matching.) The direction can be
relative to the current direction (initially the Dir variable of the
origin object) or absolute.
<message>
Send the message to all objects at the current location. From is the
position from which pattern matching started. Arg1 is the direction.
Arg2 is the currently matched object (which may be zero). If the
return value is zero, it continues normally; if one, the match fails;
if two, it continues without sending more messages at this location;
if an object, sets the matched object and current location.
<userflag>
Match an object with the specified flag.
,<userflag>
Fail if there are any objects having the specified flag here.
+
Push the matched object to the stack.
-
Push zero to the stack.
*
Update the current choice point with the location and direction.
_
Push a mark to the stack.
again
End a block with begin or if, allowing it to occur more than once; it
is repeated until it no longer matches. If the first word is begin,
then it must match at least once; if it is if, then it can match zero
or more times. The match is greedy; it will match as much as possible.
begin
Begin a block.
Climb
Fail the match if the origin object cannot climb here.
(Climb <number>)
Fail the match if the height here is greater than this number.
cut
Discards the most recent choice point.
else
Delimits alternatives within a block.
Four
Try four directions (E, N, W, and S).
Eight
Try all eight directions.
Height
Fail the match if the origin object can climb here.
(Height <number>)
Fail the match if the height here isn't greater than this number.
if
Begin a block that can optionally match.
ObjAbove
Match the object above the currently matched object.
ObjBelow
Match the object below the currently matched object.
ObjBottomAt
Match the object at the bottom of this location.
ObjTopAt
Match the object at the top of this location.
then
Ends a block started with begin or if.
Trace
Used for debugging.
=== Compatibility ===
Compatible objects have the following differences from the default:
* VisualOnly implies Stealthy.
|