home · contact · privacy
Server: Send THINGS_HERE data only about things in player's map memory.
[plomrogue] / SERVER_COMMANDS
index 585804df0a364158227c691a37df296405d979f9..04092ac2ce446238eae4194b46a44be4ac10a4c9 100644 (file)
@@ -14,8 +14,10 @@ In any case, from then on, further commands are read in from ./server/in. New
 commands must be appended to the file – which is what the client does. All
 commands from ./server/in except meta commands are also written to ./record.
 
-At the end of each turn, ./savefile is written – with a list of all god commands
-necessary to recreate the current world state.
+Every fifteen seconds, if any turns have passed, ./savefile is written – with a
+list of all god commands necessary to recreate the current world state. On each
+world state change, ./server/worldstate is updated and a message "WORLD_UPDATED"
+written to ./server/out.
 
 Replay mode
 -----------
@@ -24,23 +26,23 @@ In replay mode, commands from ./record are read. If a turn number is given as an
 argument, the file is read until the given turn is reached, or, if the turn
 number is higher than the last turn of the recorded play, the last turn. If no
 turn number is given as argument, the record file is replayed until turn 1 is
-reached.
+reached. Meta commands in ./record are not understood.
 
-From then on, ./server/in is also read. Meta commands are interpreted normally,
-but any player and god command merely furthers reading of ./record by one line
-and is otherwise ignored.
+From then on, ./server/in is also read. Meta commands sent by the client are
+interpreted normally, but any player and god command merely furthers reading of
+./record by one line and is otherwise ignored.
 
 Command list
 ============
 
 Each command is of a single line. It consists at least of one command stringe,
-followed by an optional argument. Argument fields are described below in square
-brackets. Number ranges are described by the first legal number, followed by
-" to ", followed by the last legal number. "[string]" means any text string is
-expected, which must be enclosed in single quotes if it contains whitespaces.
-"[char]" means a single ASCII character is expected. If one of a set of
-pre-defined strings is expected, the legal strings are divided by pipe symbols
-("|").
+in some cases followed by an obligatory argument. Argument fields are described
+below in square brackets. Number ranges are described by the first legal number,
+followed by " to ", followed by the last legal number. "[string]" means any text
+string is expected, which must be enclosed in single quotes if it contains
+whitespaces. "[char]" means a single ASCII character is expected. If one of a
+set of pre-defined strings is expected, the legal strings are divided by pipe
+symbols ("|").
 
 Meta commands
 -------------
@@ -51,9 +53,17 @@ Write "PONG" line to ./server/out file.
 QUIT
 Shut down server.
 
+THINGS_HERE [0 to 255] [0 to 255]
+If world exists, write line-by-line list of things in memory at y position of
+first argument, x position of second argument of map into ./server/out file,
+enclosed by two lines "THINGS_HERE START" and "THINGS_HERE END".
+
 Player commands
 ---------------
 
+ai
+Do what the AI would do.
+
 wait
 Make player character wait one turn.
 
@@ -92,7 +102,8 @@ MAKE_WORLD [0 to 4294967296]
 Set map seed and randomness seed to argument. Remove all things. (Re-)generate
 map. Add to map things specified in thing types table in quantity defined there
 by START_NUMBER command, with first thing (of thing ID of 0) of type defined as
-player type by PLAYER_TYPE command. Set world turn to 1. Activate world.
+player type by PLAYER_TYPE command. Set world turn to 1. Activate world. Answer
+with 'NEW_WORLD' message in ./server/out file.
 
 MAP_LENGTH [1 to 256]
 Deactivate world. Remove ./server/worldstate file. Remove all things. Remove
@@ -113,16 +124,17 @@ exist yet, create it with default name "wait" and default effort 1.
 TA_EFFORT [0 to 255]
 Set to argument the number of turns finishing the selected thing action takes.
 
-TA_NAME {wait|move|use|drop|pick_up}
-Set selected thing action's name (and thereby function). Legal worlds need at
-least one action of name "wait", so if this unsets the world's only "wait"
-action, the world is deactivated, and the ./server/worldstate file removed.
+TA_NAME [wait|move|use|drop|pick_up]
+Set selected thing action's name (and thereby function, equal to player
+command). Legal worlds need at least one action of name "wait", so if this
+unsets the world's only "wait" action, the world is deactivated, and the
+./server/worldstate file removed.
 
 T_ID [-32768 to 32767]
 Select thing to manipulate by argument as ID. If argument is <0 or >255, change
 it to the lowest unused thing ID. If thing of ID does not exist yet, create it
 with default position of y=0/x=0, the first thing type's ID, and that type's
-lifepoints value. If world is active and the thing is animate, build its field
+lifepoints value; if world is active and the thing is animate, build its field
 of view.
 
 T_TYPE [0 to 255]
@@ -156,6 +168,14 @@ T_CARRIES [0 to 255]
 Add thing of ID in argument to inventory of selected thing, if said thing is
 available for carrying and not the selected thing.
 
+T_MEMMAP [0 to 255] [string]
+Set part of selected thing's memory of the game map to string argument: the line
+of the argument's number.
+
+T_MEMTHING [0 to 255] [0 to 255] [0 to 255]
+Add to selected thing's memory of things on map thing of ID of first argument,
+y position of second argument and x position of third argument.
+
 TT_ID [-32768 to 32767]
 Select thing type to manipulate by argument as ID. If argument is <0 or <255,
 change it to the lowest unused thing type ID. If thing type of ID does not exist
@@ -184,4 +204,10 @@ game log and the inventory.
 
 TT_CORPSE_ID [0-255]
 Set to argument the ID of the thing type that things of the selected type
-transform into when their change changes from animate to inanimate.
+transform into when their state changes from animate to inanimate.
+
+TT_PROLIFERATE [0-255]
+If non-zero, there is a chance of 1 divided by the given value each turn for any
+thing of the selected type to emit an offspring to a random neighbor cell if one
+is available that is passable and not inhabited by a thing of the same same type
+or, if the proliferating thing is animate, any other animate thing.