home · contact · privacy
Server: Don't calculate eat_vs_hunger_threshold more often than needed.
[plomrogue] / server / config / commands.py
1 # This file is part of PlomRogue. PlomRogue is licensed under the GPL version 3
2 # or any later version. For details on its copyright, license, and warranties,
3 # see the file NOTICE in the root directory of the PlomRogue source package.
4
5
6 from server.commands import command_plugin, command_quit, command_ping, \
7     command_thingshere, command_makeworld, command_seedrandomness, setter, \
8     command_maplength, command_worldactive, setter_map, command_taid, \
9     command_taname, command_ttid, command_ttname, command_tttool, \
10     command_ttsymbol, command_ttcorpseid, command_tid, command_tcommand, \
11     command_ttype, command_tcarries, command_tmemthing, setter_tpos, \
12     play_wait, play_move, play_pickup, play_drop, play_use, command_ai, \
13     command_ttlifepoints, command_taeffort
14
15
16 """Commands database.
17
18 Map command start tokens to ([0]) number of expected command arguments, ([1])
19 the command's meta-ness (i.e. is it to be written to the record file, is it to
20 be ignored in replay mode if read from server input file), and ([2]) a function
21 to be called on it.
22 """
23 commands_db = {
24     "PLUGIN": (1, False, command_plugin),
25     "QUIT": (0, True, command_quit),
26     "PING": (0, True, command_ping),
27     "THINGS_HERE": (2, True, command_thingshere),
28     "MAKE_WORLD": (1, False, command_makeworld),
29     "SEED_RANDOMNESS": (1, False, command_seedrandomness),
30     "TURN": (1, False, setter(None, "TURN", 0, 65535)),
31     "PLAYER_TYPE": (1, False, setter(None, "PLAYER_TYPE", 0)),
32     "MAP_LENGTH": (1, False, command_maplength),
33     "WORLD_ACTIVE": (1, False, command_worldactive),
34     "MAP": (2, False, setter_map("MAP")),
35     "TA_ID": (1, False, command_taid),
36     "TA_EFFORT": (1, False, command_taeffort),
37     "TA_NAME": (1, False, command_taname),
38     "TT_ID": (1, False, command_ttid),
39     "TT_NAME": (1, False, command_ttname),
40     "TT_TOOL": (1, False, command_tttool),
41     "TT_SYMBOL": (1, False, command_ttsymbol),
42     "TT_CORPSE_ID": (1, False, command_ttcorpseid),
43     "TT_TOOLPOWER": (1, False, setter("ThingType", "TT_TOOLPOWER", 0, 65535)),
44     "TT_START_NUMBER": (1, False, setter("ThingType", "TT_START_NUMBER",
45                                          0, 255)),
46     "TT_PROLIFERATE": (1, False, setter("ThingType", "TT_PROLIFERATE",
47                                         0, 65535)),
48     "TT_LIFEPOINTS": (1, False, command_ttlifepoints),
49     "T_ID": (1, False, command_tid),
50     "T_ARGUMENT": (1, False, setter("Thing", "T_ARGUMENT", 0, 255)),
51     "T_PROGRESS": (1, False, setter("Thing", "T_PROGRESS", 0, 255)),
52     "T_LIFEPOINTS": (1, False, setter("Thing", "T_LIFEPOINTS", 0, 255)),
53     "T_SATIATION": (1, False, setter("Thing", "T_SATIATION", -32768, 32767)),
54     "T_COMMAND": (1, False, command_tcommand),
55     "T_TYPE": (1, False, command_ttype),
56     "T_CARRIES": (1, False, command_tcarries),
57     "T_MEMMAP": (2, False, setter_map("T_MEMMAP")),
58     "T_MEMDEPTHMAP": (2, False, setter_map("T_MEMDEPTHMAP")),
59     "T_MEMTHING": (3, False, command_tmemthing),
60     "T_POSY": (1, False, setter_tpos("Y")),
61     "T_POSX": (1, False, setter_tpos("X")),
62     "wait": (0, False, play_wait),
63     "move": (1, False, play_move),
64     "pickup": (0, False, play_pickup),
65     "drop": (1, False, play_drop),
66     "use": (1, False, play_use),
67     "ai": (0, False, command_ai)
68 }
69 # TODO: Unhandled cases: (Un-)killing animates (esp. player!) with T_LIFEPOINTS.
70
71 command_worldactive_test_hook = lambda: True
72 play_move_attempt_hook = lambda x, y, z: False
73 play_use_attempt_hook = lambda x, y: None
74 play_pickup_attempt_hook = lambda x: True