home · contact · privacy
Update SERVER_COMMANDS documentation.
[plomrogue] / SERVER_COMMANDS
1 Command reading and writing
2 ===========================
3
4 Normal mode
5 -----------
6
7 In normal mode, the server on start up checks for the existence of ./savefile
8 and, on success, reads all commands from it. If no savefile exists, commands
9 from ./confserver/world are read instead – and written to the file ./record.
10 Afterwards, the command "MAKE_WORLD" with the current Unix time as argument is
11 interpreted (and also written to ./record).
12
13 In any case, from then on, further commands are read in from ./server/in. New
14 commands must be appended to the file – which is what the client does. All
15 commands from ./server/in except meta commands are also written to ./record.
16
17 Every fifteen seconds, if any turns have passed, ./savefile is written – with a
18 list of all god commands necessary to recreate the current world state. On each
19 world state change, ./server/worldstate is updated and a message "WORLD_UPDATED"
20 written to ./server/out.
21
22 Replay mode
23 -----------
24
25 In replay mode, commands from ./record are read. If a turn number is given as an
26 argument, the file is read until the given turn is reached, or, if the turn
27 number is higher than the last turn of the recorded play, the last turn. If no
28 turn number is given as argument, the record file is replayed until turn 1 is
29 reached. Meta commands in ./record are not understood.
30
31 From then on, ./server/in is also read. Meta commands sent by the client are
32 interpreted normally, but any player and god command merely furthers reading of
33 ./record by one line and is otherwise ignored.
34
35 Command list
36 ============
37
38 Each command is of a single line. It consists at least of one command stringe,
39 in some cases followed by an obligatory argument. Argument fields are described
40 below in square brackets. Number ranges are described by the first legal number,
41 followed by " to ", followed by the last legal number. "[string]" means any text
42 string is expected, which must be enclosed in single quotes if it contains
43 whitespaces. "[char]" means a single ASCII character is expected. If one of a
44 set of pre-defined strings is expected, the legal strings are divided by pipe
45 symbols ("|").
46
47 Commands in lowercase characters ("player commands") are only interpreted if the
48 game world is set active.
49
50 Meta commands
51 -------------
52
53 PING
54 Write "PONG" line to ./server/out file.
55
56 QUIT
57 Shut down server.
58
59 THINGS_HERE [0 to 255] [0 to 255]
60 If world exists, write line-by-line list of things visible or in memory at y
61 position of first argument, x position of second argument of map into
62 ./server/out file, enclosed by two lines "THINGS_HERE START" and
63 "THINGS_HERE END".
64
65 Player commands
66 ---------------
67
68 ai
69 Do what the AI would do.
70
71 wait
72 Make player character wait one turn.
73
74 move [east|south-east|south-west|west|north-west|north-east]
75 Make player character move into direction described by argument, or attack into
76 that direction if there is an enemy.
77
78 pick_up
79 Make player character pick up topmost thing it is standing on.
80
81 drop [0 to 255]
82 Make player character drop to the ground item of argument's position in the
83 player character's inventory.
84
85 use [0 to 255]
86 Make player character use item of argument's position in player character's
87 inventory.
88
89 God commands
90 ------------
91
92 TURN [0 to 65535]
93 Set world turn to argument. (Initial value: 0.)
94
95 PLAYER_TYPE [0 to infinity]
96 Set to argument ID of thing type into which a new world's player character will
97 be generated. (Initial value: 0.)
98
99 SEED_RANDOMNESS [0 to 4294967295]
100 Set randomness seed to argument. (Initial value: 0.)
101
102 SEED_MAP [0 to 4294967295]
103 (Re-)generate map to seed of argument and map size.
104
105 MAKE_WORLD [0 to 4294967295]
106 Set map seed and randomness seed to argument. Remove all things. (Re-)generate
107 map. Add to map things specified in thing types table in quantity defined there
108 by START_NUMBER command, with first thing (of thing ID of 0) of type defined as
109 player type by PLAYER_TYPE command. Set world turn to 1. Activate world. Answer
110 with 'NEW_WORLD' message in ./server/out file.
111
112 MAP_LENGTH [1 to 256]
113 Deactivate world. Remove ./server/worldstate file. Remove all things. Remove
114 map. Set map edge length to argument. (Initial value: 64.)
115
116 WORLD_ACTIVE [0|1]
117 Set world activity state to argument. If 0, remove ./server/worldstate file.
118 Else, if world was so far inactive, a map exists, at least one "wait" thing
119 action is defined, and a thing of ID 0 (= a player character) that is not part
120 of any other thing's inventory, (re-)build all animate things' fields of view,
121 and activate world. (Initial value: 0.)
122
123 TA_ID [0 to infinity]
124 Select thing action to manipulate by argument as ID. If argument is 0, change it
125 to the lowest unused thing action ID greater than 0. If action of ID does not
126 exist yet, create it with default name "wait" and default effort 1.
127
128 TA_EFFORT [0 to 255]
129 Set to argument the number of turns finishing the selected thing action takes.
130
131 TA_NAME [wait|move|use|drop|pick_up]
132 Set selected thing action's name (and thereby function, equal to player
133 command). Legal worlds need at least one action of name "wait", so if this
134 unsets the world's only "wait" action, the world is deactivated, and the
135 ./server/worldstate file removed.
136
137 T_ID [-1 to infinity]
138 Select thing to manipulate by argument as ID. If argument is <0, change it to
139 the lowest unused thing ID. If thing of ID does not exist yet, create it with
140 default position of y=0/x=0, the first thing type's ID, and that type's
141 lifepoints value; if world is active and the thing is animate, build its field
142 of view.
143
144 T_TYPE [0 to infinity]
145 Set selected thing's type ID to argument, if the respective ThingType exists.
146
147 T_POSY [0 to 255]
148 Set selected thing's map row position to argument. Delete thing's field of view
149 and, if world is active, rebuild it.
150
151 T_POSX [0 to 255]
152 Set selected thing's map column position to argument. Delete thing's field of
153 view and, if world is active, rebuild it.
154
155 T_COMMAND [0 to infinity]
156 Set to argument the action thing is currently performing, as identified by its
157 thing action ID, if a thing action of that ID is defined. If argument is 0, the
158 thing's command ID is set to that, implying that it is not performing any
159 action.
160
161 T_ARGUMENT [0 to 255]
162 Set selected thing's action argument value to argument.
163
164 T_PROGRESS [0 to 255]
165 Set selected thing's action progress (number of turns already invested in
166 performing the action) value to argument.
167
168 T_LIFEPOINTS [0 to 255]
169 Set selected thing's lifepoints to argument.
170
171 T_SATIATION [-32768 to 32767]
172 Set selected thing's satiation score. If above zero, and thing's lifepoints are
173 below its thing type's initial lifepoints, there is a 1/32 chance each turn of
174 waiting action that the thing's lifepoints will rise. For values affecting the
175 thing's lifepoints negatively, see note on TT_LIFEPOINTS.
176
177 T_CARRIES [0 to infinity]
178 Add thing of ID in argument to inventory of selected thing, if said thing is
179 available for carrying and not the selected thing.
180
181 T_MEMMAP [0 to 255] [string]
182 Set part of selected thing's memory of the game map to string argument: the line
183 of the argument's number.
184
185 T_MEMDEPTHMAP [0 to 255] [string]
186 Set part of selected thing's game map memory depth map to string argument: the
187 line of the argument's number.
188
189 T_MEMTHING [0 to infinity] [0 to 255] [0 to 255]
190 Add to selected thing's memory of things on map thing of ID of first argument,
191 y position of second argument and x position of third argument.
192
193 TT_ID [-1 to infinity]
194 Select thing type to manipulate by argument as ID. If argument is < 0, change it
195 to the lowest unused thing type ID. If thing type of ID does not exist yet,
196 create it with default name "(none)", corpse ID equal to the new thing type's
197 ID, symbol "?", and remaining thing type attributes to 0.
198
199 TT_CONSUMABLE [0-65535]
200 Set selected thing type's consumability value to argument – the number of
201 .satiation score points earned by consuming/using things of that type.
202
203 TT_START_NUMBER [0-255]
204 Set selected thing type's number of things of type to spawn on successful
205 MAKE_WORLD command to argument.
206
207 TT_LIFEPOINTS [0-255]
208 Set selected thing type's initial lifepoints value to argument. Things of 0
209 lifepoints are considered inanimate, otherwise animate. This value also sets the
210 degree to which the selected type's things suffer from under- or over-satiation:
211 If 0, not at all. Else, it defines a stomach size value of 32767 divided by it.
212 Each turn a thing of the given type may then suffer a lifepoint decrement to the
213 chance of the rounded down quotient of its satiation score's absolute value by
214 its stomach size value, then again divided by the latter. (This means that the
215 change is always zero when the absolute value of the satiation score is lower
216 than the stomach size value.)
217
218 TT_SYMBOL [char]
219 Set to argument symbol by which things of the selected type are represented on
220 the map.
221
222 TT_NAME [string]
223 Set selected thing type's name to argument. This name identifies things in the
224 game log and the inventory.
225
226 TT_CORPSE_ID [0 to infinity]
227 Set to argument the ID of the thing type that things of the selected type
228 transform into when their state changes from animate to inanimate.
229
230 TT_PROLIFERATE [0-255]
231 If non-zero, there is a chance of 1 divided by the given value each turn for any
232 thing of the selected type to emit an offspring to a random neighbor cell if one
233 is available that is passable and not inhabited by any thing.