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