Crossfire Server, Trunk
commands.cpp
Go to the documentation of this file.
1 /*
2  * Crossfire -- cooperative multi-player graphical RPG and adventure game
3  *
4  * Copyright (c) 1999-2014 Mark Wedel and the Crossfire Development Team
5  * Copyright (c) 1992 Frank Tore Johansen
6  *
7  * Crossfire is free software and comes with ABSOLUTELY NO WARRANTY. You are
8  * welcome to redistribute it under certain conditions. For details, please
9  * see COPYING and LICENSE.
10  *
11  * The authors can be reached via e-mail at <crossfire@metalforge.org>.
12  */
13 
19 extern "C" {
20 #include "global.h"
21 
22 #include <ctype.h>
23 #include <stdlib.h>
24 #include <string.h>
25 
26 #include "commands.h"
27 #include "sproto.h"
28 #include "assert.h"
29 }
30 #include <map>
31 #include <vector>
32 #include <string>
33 #include <algorithm>
34 
40  char *extra;
41  float time;
42  uint8_t type;
43 };
44 
48 static std::map<std::string, std::vector<registered_command *> > registered_commands;
49 
62 static command_registration do_register(const char *name, uint8_t type, command_function func_std, command_function_extra func_extra, const char *extra, float time) {
63  auto existing = registered_commands.find(name);
64  if (existing != registered_commands.end()) {
65  assert(!existing->second.empty());
66  if (existing->second.back()->type != type) {
67  return 0;
68  }
69  }
70 
74  add->type = type;
75  add->func_std = func_std;
76  add->func_extra = func_extra;
77  add->extra = extra ? strdup(extra) : nullptr;
78  add->time = time;
79  registered_commands[name].push_back(add);
80  return add->registration;
81 }
82 
92 command_registration command_register(const char *name, uint8_t type, command_function func, float time) {
93  return do_register(name, type, func, nullptr, nullptr, time);
94 }
95 
99 void commands_init(void) {
100 #define RN(name, func, time) command_register(name, COMMAND_TYPE_NORMAL, func, time)
101 #define RC(name, func, time) command_register(name, COMMAND_TYPE_COMMUNICATION, func, time)
102 #define RW(name, func, time) command_register(name, COMMAND_TYPE_WIZARD, func, time)
103 
104  /* Normal game commands. */
105  RN("afk", command_afk, 0.0);
106  RN("apply", command_apply, 1.0); /* should be variable */
107  RN("applymode", command_applymode, 1.0); /* should be variable */
108  RN("body", command_body, 0.0);
109  RN("bowmode", command_bowmode, 0.0);
110  RN("brace", command_brace, 0.0);
111  RN("cast", command_cast, 0.2); /* Is this right? */
112  RN("delete", command_delete, 0.0);
113  RN("disarm", command_disarm, 1.0);
114  RN("dm", command_dm, 0.0);
115  RN("dmhide", command_dmhide, 0.0); /* Like dm, but don't tell a dm arrived, hide player */
116  RN("drop", command_drop, 1.0);
117  RN("dropall", command_dropall, 1.0);
118  RN("empty", command_empty, 1.0);
119  RN("examine", command_examine, 0.5);
120  RN("fix_me", command_fix_me, 0.0);
121  RN("follow", command_follow, 0.0);
122  RN("forget_spell", command_forget_spell, 0.0);
123  RN("get", command_take, 1.0);
124  RN("help", command_help, 0.0);
125  RN("hiscore", command_hiscore, 0.0);
126  RN("inventory", command_inventory, 0.0);
127  RN("invoke", command_invoke, 1.0);
128  RN("killpets", command_kill_pets, 0.0);
129  RN("language", command_language, 0.0);
130  RN("listen", command_listen, 0.0);
131  RN("lock", command_lock_item, 0.0);
132  RN("maps", command_maps, 0.0);
133  RN("mapinfo", command_mapinfo, 0.0);
134  RN("mark", command_mark, 0.0);
135  RN("motd", command_motd, 0.0);
136  RN("news", command_news, 0.0);
137  RN("party", command_party, 0.0);
138  RN("party_rejoin", command_party_rejoin, 0.0);
139  RN("passwd", command_passwd, 0.0);
140  RN("peaceful", command_peaceful, 0.0);
141  RN("petmode", command_petmode, 0.0);
142  RN("pickup", command_pickup, 1.0);
143  RN("prepare", command_prepare, 1.0);
144  RN("printlos", command_printlos, 0.0);
145  RN("quit", command_quit, 0.0);
146  RN("ready_skill", command_rskill, 1.0);
147  RN("rename", command_rename_item, 0.0);
148  RN("resistances", command_resistances, 0.0);
149  RN("rotateshoottype", command_rotateshoottype, 0.0);
150  RN("rules", command_rules, 0.0);
151  RN("save", command_save, 0.0);
152  RN("skills", command_skills, 0.0); /* shows player list of skills */
153  RN("use_skill", command_uskill, 1.0);
154  RN("search", command_search, 1.0);
155  RN("search-items", command_search_items, 0.0);
156  RN("showpets", command_showpets, 1.0);
157  RN("sound", command_sound, 0.0);
158  RN("statistics", command_statistics, 0.0);
159  RN("take", command_take, 1.0);
160  RN("throw", command_throw, 1.0);
161  RN("time", command_time, 0.0);
162  RN("title", command_title, 0.0);
163  RN("use", command_use, 1.0);
164  RN("usekeys", command_usekeys, 0.0);
165  RN("whereabouts", command_whereabouts, 0.0);
166  RN("whereami", command_whereami, 0.0);
167  RN("unarmed_skill", command_unarmed_skill, 0.0);
168 #ifdef DEBUG_MALLOC_LEVEL
169  RN("verify", command_malloc_verify, 0.0);
170 #endif
171  RN("version", command_version, 0.0);
172  RN("wimpy", command_wimpy, 0.0);
173  RN("who", command_who, 0.0);
174  /*
175  * directional commands
176  */
177  RN("stay", command_stay, 1.0); /* 1.0 because it is used when using a
178  * skill on yourself */
179  RN("north", command_north, 1.0);
180  RN("east", command_east, 1.0);
181  RN("south", command_south, 1.0);
182  RN("west", command_west, 1.0);
183  RN("northeast", command_northeast, 1.0);
184  RN("southeast", command_southeast, 1.0);
185  RN("southwest", command_southwest, 1.0);
186  RN("northwest", command_northwest, 1.0);
187  RN("run", command_run, 1.0);
188  RN("run_stop", command_run_stop, 0.0);
189  RN("fire", command_fire, 1.0);
190  RN("fire_stop", command_fire_stop, 0.0);
191  RN("face", command_face, 0.0);
192  RN("quest", command_quest, 0.0);
193  RN("knowledge", command_knowledge, 0.0);
194 
195  /* Chat/shout related commands. */
196  RC("tell", command_tell, 0.1);
197  RC("reply", command_reply, 0.0);
198  RC("say", command_say, 0.1);
199  RC("gsay", command_gsay, 1.0);
200  RC("shout", command_shout, 0.1);
201  RC("chat", command_chat, 0.1);
202  RC("me", command_me, 0.1);
203  RC("cointoss", command_cointoss, 0.0);
204  RC("orcknuckle", command_orcknuckle, 0.0);
205  /*
206  * begin emotions
207  */
208  RC("nod", command_nod, 0.0);
209  RC("dance", command_dance, 0.0);
210  RC("kiss", command_kiss, 0.0);
211  RC("bounce", command_bounce, 0.0);
212  RC("smile", command_smile, 0.0);
213  RC("cackle", command_cackle, 0.0);
214  RC("laugh", command_laugh, 0.0);
215  RC("giggle", command_giggle, 0.0);
216  RC("shake", command_shake, 0.0);
217  RC("puke", command_puke, 0.0);
218  RC("growl", command_growl, 0.0);
219  RC("scream", command_scream, 0.0);
220  RC("sigh", command_sigh, 0.0);
221  RC("sulk", command_sulk, 0.0);
222  RC("hug", command_hug, 0.0);
223  RC("cry", command_cry, 0.0);
224  RC("poke", command_poke, 0.0);
225  RC("accuse", command_accuse, 0.0);
226  RC("grin", command_grin, 0.0);
227  RC("bow", command_bow, 0.0);
228  RC("clap", command_clap, 0.0);
229  RC("blush", command_blush, 0.0);
230  RC("burp", command_burp, 0.0);
231  RC("chuckle", command_chuckle, 0.0);
232  RC("cough", command_cough, 0.0);
233  RC("flip", command_flip, 0.0);
234  RC("frown", command_frown, 0.0);
235  RC("gasp", command_gasp, 0.0);
236  RC("glare", command_glare, 0.0);
237  RC("groan", command_groan, 0.0);
238  RC("hiccup", command_hiccup, 0.0);
239  RC("lick", command_lick, 0.0);
240  RC("pout", command_pout, 0.0);
241  RC("shiver", command_shiver, 0.0);
242  RC("shrug", command_shrug, 0.0);
243  RC("slap", command_slap, 0.0);
244  RC("smirk", command_smirk, 0.0);
245  RC("snap", command_snap, 0.0);
246  RC("sneeze", command_sneeze, 0.0);
247  RC("snicker", command_snicker, 0.0);
248  RC("sniff", command_sniff, 0.0);
249  RC("snore", command_snore, 0.0);
250  RC("spit", command_spit, 0.0);
251  RC("strut", command_strut, 0.0);
252  RC("thank", command_thank, 0.0);
253  RC("twiddle", command_twiddle, 0.0);
254  RC("wave", command_wave, 0.0);
255  RC("whistle", command_whistle, 0.0);
256  RC("wink", command_wink, 0.0);
257  RC("yawn", command_yawn, 0.0);
258  RC("beg", command_beg, 0.0);
259  RC("bleed", command_bleed, 0.0);
260  RC("cringe", command_cringe, 0.0);
261  RC("think", command_think, 0.0);
262 
264  RW("abil", command_abil, 0.0);
265  RW("accountpasswd", command_accountpasswd, 0.0);
266  RW("addexp", command_addexp, 0.0);
267  RW("arrest", command_arrest, 0.0);
268  RW("banish", command_banish, 0.0);
269  RW("create", command_create, 0.0);
270  RW("debug", command_debug, 0.0);
271  RW("diff", command_diff, 0.0);
272  RW("dmtell", command_dmtell, 0.0);
273  RW("dump", command_dump, 0.0);
274  RW("dumpabove", command_dumpabove, 0.0);
275  RW("dumpbelow", command_dumpbelow, 0.0);
276  RW("dumpfriendlyobjects", command_dumpfriendlyobjects, 0.0);
277  RW("dumpallarchetypes", command_dumpallarchetypes, 0.0);
278  RW("dumpallmaps", command_dumpallmaps, 0.0);
279  RW("dumpallobjects", command_dumpallobjects, 0.0);
280  RW("dumpmap", command_dumpmap, 0.0);
281  RW("free", command_free, 0.0);
282  RW("freeze", command_freeze, 0.0);
283  RW("goto", command_goto, 0.0);
284  RW("hide", command_hide, 0.0);
285  RW("insert_into", command_insert_into, 0.0);
286  RW("invisible", command_invisible, 0.0);
287  RW("kick", command_kick, 0.0);
288  RW("learn_special_prayer", command_learn_special_prayer, 0.0);
289  RW("learn_spell", command_learn_spell, 0.0);
290  RW("malloc", command_malloc, 0.0);
291  RW("nodm", command_nowiz, 0.0);
292  RW("nowiz", command_nowiz, 0.0);
293  RW("patch", command_patch, 0.0);
294  RW("players", command_players, 0.0);
295  RW("plugin", command_loadplugin, 0.0);
296  RW("pluglist", command_listplugins, 0.0);
297  RW("plugout", command_unloadplugin, 0.0);
298  RW("purge_quest_state", command_purge_quest, 0.0);
299  RW("purge_quests", command_purge_quest_definitions, 0.0);
300  RW("remove", command_remove, 0.0);
301  RW("reset", command_reset, 0.0);
302  RW("set_god", command_setgod, 0.0);
303  RW("settings", command_settings, 0.0);
304  RW("server_speed", command_speed, 0.0);
305  RW("shutdown", command_shutdown, 0.0);
306  RW("ssdumptable", command_ssdumptable, 0.0);
307  RW("stack_clear", command_stack_clear, 0.0);
308  RW("stack_list", command_stack_list, 0.0);
309  RW("stack_pop", command_stack_pop, 0.0);
310  RW("stack_push", command_stack_push, 0.0);
311  RW("stats", command_stats, 0.0);
312  RW("strings", command_strings, 0.0);
313  RW("style_info", command_style_map_info, 0.0); /* Costly command, so make it wiz only */
314  RW("summon", command_summon, 0.0);
315  RW("teleport", command_teleport, 0.0);
316  RW("toggle_shout", command_toggle_shout, 0.0);
317  RW("wizpass", command_wizpass, 0.0);
318  RW("wizcast", command_wizcast, 0.0);
319  RW("overlay_save", command_overlay_save, 0.0);
320  RW("overlay_reset", command_overlay_reset, 0.0);
321  /* RW("possess", command_possess, 0.0); */
322  RW("mon_aggr", command_mon_aggr, 0.0);
323  RW("loadtest", command_loadtest, 0.0);
324 
325 #undef RN
326 #undef RC
327 #undef RW
328 }
329 
334  for (auto cmd = registered_commands.begin(); cmd != registered_commands.end(); cmd++) {
335  for (auto h = cmd->second.begin(); h != cmd->second.end(); h++) {
336  free((*h)->extra);
337  delete *h;
338  }
339  cmd->second.clear();
340  }
341  registered_commands.clear();
342 
343  next_registration = 1;
344 }
345 
356 static void show_commands(object *op, uint8_t type, const char *legend) {
357  char line[HUGE_BUF];
358 
360 
361  line[0] = '\0';
362  std::for_each(registered_commands.begin(), registered_commands.end(), [&type, &line] (auto cmd) {
363  if (cmd.second.back()->type == type) {
364  strcat(line, cmd.first.c_str());
365  strcat(line, " ");
366  }
367  });
369 }
370 
377 void command_list(object *pl, bool is_dm) {
378  show_commands(pl, COMMAND_TYPE_NORMAL, " Commands:");
380  show_commands(pl, COMMAND_TYPE_COMMUNICATION, " Communication commands:");
381  if (is_dm) {
383  show_commands(pl, COMMAND_TYPE_WIZARD, " Wiz commands:");
384  }
385 }
386 
393 static registered_command *command_find(const char *name, bool is_dm) {
394  auto existing = registered_commands.find(name);
395  if (existing == registered_commands.end()) {
396  return NULL;
397  }
398  if (!is_dm && existing->second.back()->type == COMMAND_TYPE_WIZARD) {
399  return NULL;
400  }
401  return existing->second.back();
402 }
403 
412 void command_execute(object *pl, char *command) {
413  registered_command *csp;
414  char *cp, *low;
415 
416  pl->contr->has_hit = 0;
417 
418  /*
419  * remove trailing spaces from commant
420  */
421  cp = command+strlen(command)-1;
422  while ((cp >= command) && (*cp == ' ')) {
423  *cp = '\0';
424  cp--;
425  }
426  cp = strchr(command, ' ');
427  if (cp) {
428  *(cp++) = '\0';
429  while (*cp == ' ')
430  cp++;
431  } else {
432  cp = strchr(command, '\0');
433  }
434 
435  for (low = command; *low; low++)
436  *low = tolower(*low);
437 
439 
440  if (csp == NULL) {
443  "'%s' is not a valid command.",
444  command);
445  return;
446  }
447 
448  pl->speed_left -= csp->time;
449 
450  /* A character time can never exceed his speed (which in many cases,
451  * if wearing armor, is less than one.) Thus, in most cases, if
452  * the command takes 1.0, the player's speed will be less than zero.
453  * it is only really an issue if time goes below -1
454  * Due to various reasons that are too long to go into here, we will
455  * actually still execute player even if his time is less than 0,
456  * but greater than -1. This is to improve the performance of the
457  * new client/server. In theory, it shouldn't make much difference.
458  */
459 
460  if (csp->time && pl->speed_left < -2.0) {
461  LOG(llevDebug, "execute_newclient_command: Player issued command that takes more time than he has left.\n");
462  }
463  if (csp->extra) {
464  csp->func_extra(pl, cp, csp->extra);
465  } else {
466  csp->func_std(pl, cp);
467  }
468 }
469 
482 command_registration command_register_extra(const char *name, const char *extra, uint8_t type, command_function_extra func, float time) {
483  assert(extra);
484  return do_register(name, type, nullptr, func, extra, time);
485 }
486 
492  for (auto cmd = registered_commands.begin(); cmd != registered_commands.end(); cmd++) {
493  for (auto h = cmd->second.begin(); h != cmd->second.end(); h++) {
494  if ((*h)->registration == command) {
495  free((*h)->extra);
496  delete (*h);
497  cmd->second.erase(h);
498  if (cmd->second.empty()) {
499  registered_commands.erase(cmd);
500  }
501  return;
502  }
503  }
504  }
505 }
registered_command::registration
command_registration registration
Definition: commands.cpp:37
command_stack_pop
void command_stack_pop(object *op, const char *params)
Definition: c_wiz.c:2483
command_style_map_info
void command_style_map_info(object *op, const char *params)
Definition: c_wiz.c:2712
command_dance
void command_dance(object *op, const char *params)
Definition: c_chat.c:733
global.h
tolower
#define tolower(C)
Definition: c_new.c:30
command_shutdown
void command_shutdown(object *op, const char *params)
Definition: c_wiz.c:678
command_cackle
void command_cackle(object *op, const char *params)
Definition: c_chat.c:777
command_stack_push
void command_stack_push(object *op, const char *params)
Definition: c_wiz.c:2496
command_northeast
void command_northeast(object *op, const char *params)
Definition: c_move.c:79
command_sound
void command_sound(object *op, const char *params)
Definition: c_misc.c:1904
command_bleed
void command_bleed(object *op, const char *params)
Definition: c_chat.c:1283
command_glare
void command_glare(object *op, const char *params)
Definition: c_chat.c:1030
command_delete
void command_delete(object *op, const char *params)
Definition: c_misc.c:1883
command_dumpallmaps
void command_dumpallmaps(object *op, const char *params)
Definition: c_misc.c:1044
command_players
void command_players(object *op, const char *params)
Definition: c_misc.c:1224
command_nowiz
void command_nowiz(object *op, const char *params)
Definition: c_wiz.c:2028
command_snore
void command_snore(object *op, const char *params)
Definition: c_chat.c:1173
command_remove
void command_remove(object *op, const char *params)
Definition: c_wiz.c:1535
command_dumpfriendlyobjects
void command_dumpfriendlyobjects(object *op, const char *params)
Definition: c_misc.c:988
command_wizcast
void command_wizcast(object *op, const char *params)
Definition: c_misc.c:944
command_growl
void command_growl(object *op, const char *params)
Definition: c_chat.c:832
command_search_items
void command_search_items(object *op, const char *params)
Definition: c_object.c:2328
command_say
void command_say(object *op, const char *params)
Definition: c_chat.c:34
command_sulk
void command_sulk(object *op, const char *params)
Definition: c_chat.c:865
command_whistle
void command_whistle(object *op, const char *params)
Definition: c_chat.c:1239
command_cringe
void command_cringe(object *op, const char *params)
Definition: c_chat.c:1294
command_unarmed_skill
void command_unarmed_skill(object *op, const char *params)
Definition: c_misc.c:1378
command_clap
void command_clap(object *op, const char *params)
Definition: c_chat.c:942
command_cough
void command_cough(object *op, const char *params)
Definition: c_chat.c:986
next_registration
static command_registration next_registration
Definition: commands.cpp:46
command_spit
void command_spit(object *op, const char *params)
Definition: c_chat.c:1184
command_poke
void command_poke(object *op, const char *params)
Definition: c_chat.c:898
QUERY_FLAG
#define QUERY_FLAG(xyz, p)
Definition: define.h:226
command_shrug
void command_shrug(object *op, const char *params)
Definition: c_chat.c:1096
command_time
void command_time(object *op, const char *params)
Definition: c_misc.c:865
command_groan
void command_groan(object *op, const char *params)
Definition: c_chat.c:1041
command_wave
void command_wave(object *op, const char *params)
Definition: c_chat.c:1228
command_beg
void command_beg(object *op, const char *params)
Definition: c_chat.c:1272
command_hiccup
void command_hiccup(object *op, const char *params)
Definition: c_chat.c:1052
command_me
void command_me(object *op, const char *params)
Definition: c_chat.c:47
command_south
void command_south(object *op, const char *params)
Definition: c_move.c:101
command_kiss
void command_kiss(object *op, const char *params)
Definition: c_chat.c:744
command_shout
void command_shout(object *op, const char *params)
Definition: c_chat.c:210
command_thank
void command_thank(object *op, const char *params)
Definition: c_chat.c:1206
command_disarm
void command_disarm(object *op, const char *params)
Definition: c_object.c:224
command_snap
void command_snap(object *op, const char *params)
Definition: c_chat.c:1129
command_party
void command_party(object *op, const char *params)
Definition: c_party.c:97
command_wink
void command_wink(object *op, const char *params)
Definition: c_chat.c:1250
do_register
static command_registration do_register(const char *name, uint8_t type, command_function func_std, command_function_extra func_extra, const char *extra, float time)
Definition: commands.cpp:62
pl
Definition: player.h:92
command_run_stop
void command_run_stop(object *op, const char *params)
Definition: c_new.c:64
show_commands
static void show_commands(object *op, uint8_t type, const char *legend)
Definition: commands.cpp:356
command_printlos
void command_printlos(object *op, const char *params)
Definition: c_misc.c:1058
command_usekeys
void command_usekeys(object *op, const char *params)
Definition: c_misc.c:1550
command_party_rejoin
void command_party_rejoin(object *op, const char *params)
Definition: c_party.c:307
command_lock_item
void command_lock_item(object *op, const char *params)
Definition: c_object.c:2558
COMMAND_TYPE_COMMUNICATION
#define COMMAND_TYPE_COMMUNICATION
Definition: commands.h:37
command_hiscore
void command_hiscore(object *op, const char *params)
Definition: c_misc.c:878
command_invoke
void command_invoke(object *op, const char *params)
Definition: c_range.c:38
command_twiddle
void command_twiddle(object *op, const char *params)
Definition: c_chat.c:1217
command_statistics
void command_statistics(object *pl, const char *params)
Definition: c_misc.c:1118
command_northwest
void command_northwest(object *op, const char *params)
Definition: c_move.c:90
command_diff
void command_diff(object *op, const char *params)
Definition: c_wiz.c:2571
command_who
void command_who(object *op, const char *params)
Definition: c_misc.c:623
command_overlay_reset
void command_overlay_reset(object *op, const char *params)
Definition: c_wiz.c:609
command_throw
void command_throw(object *op, const char *params)
Definition: c_object.c:239
registered_commands
static std::map< std::string, std::vector< registered_command * > > registered_commands
Definition: commands.cpp:48
command_puke
void command_puke(object *op, const char *params)
Definition: c_chat.c:821
COMMAND_TYPE_NORMAL
#define COMMAND_TYPE_NORMAL
Definition: commands.h:35
command_debug
void command_debug(object *op, const char *params)
Definition: c_misc.c:890
command_execute
void command_execute(object *pl, char *command)
Definition: commands.cpp:412
command_whereami
void command_whereami(object *op, const char *params)
Definition: c_misc.c:819
MSG_TYPE_COMMAND_ERROR
#define MSG_TYPE_COMMAND_ERROR
Definition: newclient.h:529
command_overlay_save
void command_overlay_save(object *op, const char *params)
Definition: c_wiz.c:588
command_arrest
void command_arrest(object *op, const char *params)
Definition: c_wiz.c:841
command_hug
void command_hug(object *op, const char *params)
Definition: c_chat.c:876
command_face
void command_face(object *op, const char *params)
Definition: c_new.c:111
command_rename_item
void command_rename_item(object *op, const char *params)
Definition: c_object.c:2373
command_petmode
void command_petmode(object *op, const char *params)
Definition: c_misc.c:1434
command_rules
void command_rules(object *op, const char *params)
Definition: c_misc.c:229
HUGE_BUF
#define HUGE_BUF
Definition: define.h:37
command_grin
void command_grin(object *op, const char *params)
Definition: c_chat.c:920
MSG_TYPE_COMMAND
#define MSG_TYPE_COMMAND
Definition: newclient.h:404
command_stack_clear
void command_stack_clear(object *op, const char *params)
Definition: c_wiz.c:2545
command_nod
void command_nod(object *op, const char *params)
Definition: c_chat.c:722
command_west
void command_west(object *op, const char *params)
Definition: c_move.c:134
command_quit
void command_quit(object *op, const char *params)
Definition: c_misc.c:1867
command_rskill
void command_rskill(object *pl, const char *params)
Definition: c_object.c:161
command_unregister
void command_unregister(command_registration command)
Definition: commands.cpp:491
command_malloc
void command_malloc(object *op, const char *params)
Definition: c_misc.c:793
command_banish
void command_banish(object *op, const char *params)
Definition: c_wiz.c:522
command_inventory
void command_inventory(object *op, const char *params)
Definition: c_wiz.c:1337
command_kill_pets
void command_kill_pets(object *op, const char *params)
Definition: c_misc.c:2191
is_valid_types_gen.line
line
Definition: is_valid_types_gen.py:34
command_accountpasswd
void command_accountpasswd(object *op, const char *params)
Definition: c_wiz.c:1608
command_forget_spell
void command_forget_spell(object *op, const char *params)
Definition: c_wiz.c:2364
command_mark
void command_mark(object *op, const char *params)
Definition: c_object.c:1567
command_teleport
void command_teleport(object *op, const char *params)
Definition: c_wiz.c:933
command_uskill
void command_uskill(object *pl, const char *params)
Definition: c_object.c:144
command_dump
void command_dump(object *op, const char *params)
Definition: c_wiz.c:1379
command_take
void command_take(object *op, const char *params)
Definition: c_object.c:845
command_north
void command_north(object *op, const char *params)
Definition: c_move.c:68
command_find
static registered_command * command_find(const char *name, bool is_dm)
Definition: commands.cpp:393
command_save
void command_save(object *op, const char *params)
Definition: c_misc.c:2092
commands_clear
void commands_clear()
Definition: commands.cpp:333
command_mon_aggr
void command_mon_aggr(object *op, const char *params)
Definition: c_wiz.c:1407
command_dropall
void command_dropall(object *op, const char *params)
Definition: c_object.c:1230
command_ssdumptable
void command_ssdumptable(object *op, const char *params)
Definition: c_misc.c:1016
MSG_TYPE_COMMAND_INFO
#define MSG_TYPE_COMMAND_INFO
Definition: newclient.h:526
command_listen
void command_listen(object *op, const char *params)
Definition: c_misc.c:1087
command_loadplugin
void command_loadplugin(object *op, const char *params)
Definition: c_wiz.c:2407
command_scream
void command_scream(object *op, const char *params)
Definition: c_chat.c:843
command_follow
void command_follow(object *op, const char *params)
Definition: c_wiz.c:2758
command_strut
void command_strut(object *op, const char *params)
Definition: c_chat.c:1195
command_chuckle
void command_chuckle(object *op, const char *params)
Definition: c_chat.c:975
command_unloadplugin
void command_unloadplugin(object *op, const char *params)
Definition: c_wiz.c:2439
command_think
void command_think(object *op, const char *params)
Definition: c_chat.c:1305
command_help
void command_help(object *op, const char *params)
Definition: c_misc.c:1766
command_examine
void command_examine(object *op, const char *params)
Definition: c_object.c:1489
command_prepare
void command_prepare(object *op, const char *params)
Definition: c_range.c:63
registered_command::time
float time
Definition: commands.cpp:41
command_free
void command_free(object *op, const char *params)
Definition: c_wiz.c:1582
RN
#define RN(name, func, time)
command_cry
void command_cry(object *op, const char *params)
Definition: c_chat.c:887
RW
#define RW(name, func, time)
pl::has_hit
uint32_t has_hit
Definition: player.h:131
command_kick
void command_kick(object *op, const char *params)
Definition: c_wiz.c:576
command_pout
void command_pout(object *op, const char *params)
Definition: c_chat.c:1074
command_orcknuckle
void command_orcknuckle(object *op, const char *params)
Definition: c_chat.c:108
command_search
void command_search(object *op, const char *params)
Definition: c_object.c:212
command_abil
void command_abil(object *op, const char *params)
Definition: c_wiz.c:1789
command_flip
void command_flip(object *op, const char *params)
Definition: c_chat.c:997
sproto.h
command_language
void command_language(object *op, const char *params)
Definition: c_misc.c:131
command_dumpallobjects
void command_dumpallobjects(object *op, const char *params)
Definition: c_misc.c:974
devourers.command
command
Definition: devourers.py:16
command_giggle
void command_giggle(object *op, const char *params)
Definition: c_chat.c:799
command_hide
void command_hide(object *op, const char *params)
Definition: c_wiz.c:388
command_accuse
void command_accuse(object *op, const char *params)
Definition: c_chat.c:909
command_stay
void command_stay(object *op, const char *params)
Definition: c_move.c:145
command_dumpmap
void command_dumpmap(object *op, const char *params)
Definition: c_misc.c:1030
command_settings
void command_settings(object *op, const char *ignored)
Definition: c_wiz.c:2863
command_purge_quest_definitions
void command_purge_quest_definitions(object *op, const char *param)
Definition: c_wiz.c:2808
command_east
void command_east(object *op, const char *params)
Definition: c_move.c:57
COMMAND_TYPE_WIZARD
#define COMMAND_TYPE_WIZARD
Definition: commands.h:39
command_dumpbelow
void command_dumpbelow(object *op, const char *params)
Definition: c_wiz.c:2836
command_peaceful
void command_peaceful(object *op, const char *params)
Definition: c_misc.c:2118
command_list
void command_list(object *pl, bool is_dm)
Definition: commands.cpp:377
command_wimpy
void command_wimpy(object *op, const char *params)
Definition: c_misc.c:2136
command_bow
void command_bow(object *op, const char *params)
Definition: c_chat.c:931
command_drop
void command_drop(object *op, const char *params)
Definition: c_object.c:1354
command_shake
void command_shake(object *op, const char *params)
Definition: c_chat.c:810
command_use
void command_use(object *op, const char *params)
Definition: c_object.c:2601
command_fire_stop
void command_fire_stop(object *op, const char *params)
Definition: c_new.c:98
command_motd
void command_motd(object *op, const char *params)
Definition: c_misc.c:216
command_loadtest
void command_loadtest(object *op, const char *params)
Definition: c_wiz.c:305
command_smile
void command_smile(object *op, const char *params)
Definition: c_chat.c:766
command_learn_special_prayer
void command_learn_special_prayer(object *op, const char *params)
Definition: c_wiz.c:2351
command_applymode
void command_applymode(object *op, const char *params)
Definition: c_misc.c:1274
FLAG_WIZ
#define FLAG_WIZ
Definition: define.h:231
command_news
void command_news(object *op, const char *params)
Definition: c_misc.c:242
command_quest
void command_quest(object *op, const char *params)
Definition: quest.c:750
command_whereabouts
void command_whereabouts(object *op, const char *params)
Definition: c_misc.c:483
NDI_UNIQUE
#define NDI_UNIQUE
Definition: newclient.h:262
command_afk
void command_afk(object *op, const char *params)
Definition: c_misc.c:772
command_summon
void command_summon(object *op, const char *params)
Definition: c_wiz.c:886
command_knowledge
void command_knowledge(object *pl, const char *params)
Definition: knowledge.c:1207
command_reset
void command_reset(object *op, const char *params)
Definition: c_wiz.c:1855
command_learn_spell
void command_learn_spell(object *op, const char *params)
Definition: c_wiz.c:2339
command_version
void command_version(object *op, const char *params)
Definition: c_misc.c:1073
command_frown
void command_frown(object *op, const char *params)
Definition: c_chat.c:1008
command_toggle_shout
void command_toggle_shout(object *op, const char *params)
Definition: c_wiz.c:635
registered_command::extra
char * extra
Definition: commands.cpp:40
command_snicker
void command_snicker(object *op, const char *params)
Definition: c_chat.c:1151
registered_command
Definition: commands.cpp:36
command_reply
void command_reply(object *op, const char *params)
Definition: c_chat.c:336
LOG
void LOG(LogLevel logLevel, const char *format,...)
Definition: logger.c:51
command_strings
void command_strings(object *op, const char *params)
Definition: c_misc.c:844
command_yawn
void command_yawn(object *op, const char *params)
Definition: c_chat.c:1261
command_setgod
void command_setgod(object *op, const char *params)
Definition: c_wiz.c:417
command_pickup
void command_pickup(object *op, const char *params)
Definition: c_object.c:2210
give.op
op
Definition: give.py:33
command_skills
void command_skills(object *op, const char *params)
Definition: c_wiz.c:1367
command_patch
void command_patch(object *op, const char *params)
Definition: c_wiz.c:1495
command_dmtell
void command_dmtell(object *op, const char *params)
Definition: c_chat.c:320
command_rotateshoottype
void command_rotateshoottype(object *op, const char *params)
Definition: c_range.c:368
command_shiver
void command_shiver(object *op, const char *params)
Definition: c_chat.c:1085
command_stats
void command_stats(object *op, const char *params)
Definition: c_wiz.c:1732
command_lick
void command_lick(object *op, const char *params)
Definition: c_chat.c:1063
command_chat
void command_chat(object *op, const char *params)
Definition: c_chat.c:221
command_southwest
void command_southwest(object *op, const char *params)
Definition: c_move.c:123
command_bounce
void command_bounce(object *op, const char *params)
Definition: c_chat.c:755
command_smirk
void command_smirk(object *op, const char *params)
Definition: c_chat.c:1118
command_resistances
void command_resistances(object *op, const char *params)
Definition: c_misc.c:1591
command_slap
void command_slap(object *op, const char *params)
Definition: c_chat.c:1107
command_stack_list
void command_stack_list(object *op, const char *params)
Definition: c_wiz.c:2514
command_fire
void command_fire(object *op, const char *params)
Definition: c_new.c:77
command_invisible
void command_invisible(object *op, const char *params)
Definition: c_wiz.c:2174
command_purge_quest
void command_purge_quest(object *op, const char *param)
Definition: c_wiz.c:2802
command_run
void command_run(object *op, const char *params)
Definition: c_new.c:41
command_freeze
void command_freeze(object *op, const char *params)
Definition: c_wiz.c:765
command_register_extra
command_registration command_register_extra(const char *name, const char *extra, uint8_t type, command_function_extra func, float time)
Definition: commands.cpp:482
draw_ext_info
void draw_ext_info(int flags, int pri, const object *pl, uint8_t type, uint8_t subtype, const char *message)
Definition: main.c:309
command_maps
void command_maps(object *op, const char *params)
Definition: c_misc.c:832
command_dumpabove
void command_dumpabove(object *op, const char *params)
Definition: c_wiz.c:2851
command_function_extra
void(* command_function_extra)(object *op, const char *params, const char *extra)
Definition: commands.h:29
command_dumpallarchetypes
void command_dumpallarchetypes(object *op, const char *params)
Definition: c_misc.c:1002
command_speed
void command_speed(object *op, const char *params)
Definition: c_wiz.c:1702
command_fix_me
void command_fix_me(object *op, const char *params)
Definition: c_misc.c:1210
command_registration
uint64_t command_registration
Definition: commands.h:32
command_dm
void command_dm(object *op, const char *params)
Definition: c_wiz.c:2162
command_addexp
void command_addexp(object *op, const char *params)
Definition: c_wiz.c:1646
command_goto
void command_goto(object *op, const char *params)
Definition: c_wiz.c:744
command_empty
void command_empty(object *op, const char *params)
Definition: c_object.c:1450
commands.h
command_cointoss
void command_cointoss(object *op, const char *params)
Definition: c_chat.c:64
command_tell
void command_tell(object *op, const char *params)
Definition: c_chat.c:308
commands_init
void commands_init(void)
Definition: commands.cpp:99
command_showpets
void command_showpets(object *op, const char *params)
Definition: c_misc.c:1478
command_gsay
void command_gsay(object *op, const char *params)
Definition: c_party.c:75
command_mapinfo
void command_mapinfo(object *op, const char *params)
Definition: c_misc.c:806
command_gasp
void command_gasp(object *op, const char *params)
Definition: c_chat.c:1019
command_brace
void command_brace(object *op, const char *params)
Definition: c_misc.c:2167
command_body
void command_body(object *op, const char *params)
Definition: c_misc.c:174
command_passwd
void command_passwd(object *pl, const char *params)
Definition: c_misc.c:2231
command_function
void(* command_function)(object *op, const char *params)
Definition: commands.h:17
registered_command::func_std
command_function func_std
Definition: commands.cpp:38
command_sniff
void command_sniff(object *op, const char *params)
Definition: c_chat.c:1162
command_insert_into
void command_insert_into(object *op, const char *params)
Definition: c_wiz.c:2635
RC
#define RC(name, func, time)
command_apply
void command_apply(object *op, const char *params)
Definition: c_object.c:251
command_cast
void command_cast(object *op, const char *params)
Definition: c_range.c:50
command_listplugins
void command_listplugins(object *op, const char *params)
Definition: c_wiz.c:2392
command_bowmode
void command_bowmode(object *op, const char *params)
Definition: c_misc.c:1315
command_title
void command_title(object *op, const char *params)
Definition: c_misc.c:2041
command_wizpass
void command_wizpass(object *op, const char *params)
Definition: c_misc.c:914
registered_command::func_extra
command_function_extra func_extra
Definition: commands.cpp:39
draw_ext_info_format
void draw_ext_info_format(int flags, int pri, const object *pl, uint8_t type, uint8_t subtype, const char *format,...)
Definition: main.c:319
command_create
void command_create(object *op, const char *params)
Definition: c_wiz.c:999
llevDebug
@ llevDebug
Definition: logger.h:13
command_dmhide
void command_dmhide(object *op, const char *params)
Definition: c_wiz.c:2468
command_blush
void command_blush(object *op, const char *params)
Definition: c_chat.c:953
is_valid_types_gen.type
list type
Definition: is_valid_types_gen.py:25
command_register
command_registration command_register(const char *name, uint8_t type, command_function func, float time)
Definition: commands.cpp:92
command_sneeze
void command_sneeze(object *op, const char *params)
Definition: c_chat.c:1140
command_burp
void command_burp(object *op, const char *params)
Definition: c_chat.c:964
registered_command::type
uint8_t type
Definition: commands.cpp:42
give.name
name
Definition: give.py:27
command_southeast
void command_southeast(object *op, const char *params)
Definition: c_move.c:112
command_laugh
void command_laugh(object *op, const char *params)
Definition: c_chat.c:788
command_sigh
void command_sigh(object *op, const char *params)
Definition: c_chat.c:854