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-2022 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  if (type > COMMAND_TYPE_WIZARD) {
65  }
66  auto existing = registered_commands.find(name);
67  if (existing != registered_commands.end()) {
68  assert(!existing->second.empty());
69  if (existing->second.back()->type != type) {
70  return 0;
71  }
72  }
73 
77  add->type = type;
78  add->func_std = func_std;
79  add->func_extra = func_extra;
80  add->extra = extra ? strdup(extra) : nullptr;
81  add->time = time;
82  registered_commands[name].push_back(add);
83  return add->registration;
84 }
85 
86 static void command_partial_commands(object *op, const char *params) {
87  if (strcmp(params, "1") == 0 || strcmp(params, "on") == 0) {
88  op->contr->partial_commands = 1;
89  }
90  if (strcmp(params, "0") == 0 || strcmp(params, "off") == 0) {
91  op->contr->partial_commands = 0;
92  }
93  draw_ext_info_format(NDI_UNIQUE, 0, op, MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_INFO, "Partial commands %s.", op->contr->partial_commands ? "enabled" : "disabled");
94 }
95 
105 command_registration command_register(const char *name, uint8_t type, command_function func, float time) {
106  return do_register(name, type, func, nullptr, nullptr, time);
107 }
108 
112 void commands_init(void) {
113 #define RN(name, func, time) command_register(name, COMMAND_TYPE_NORMAL, func, time)
114 #define RC(name, func, time) command_register(name, COMMAND_TYPE_COMMUNICATION, func, time)
115 #define RW(name, func, time) command_register(name, COMMAND_TYPE_WIZARD, func, time)
116 
117  /* Normal game commands. */
118  RN("afk", command_afk, 0.0);
119  RN("apply", command_apply, 1.0); /* should be variable */
120  RN("applymode", command_applymode, 1.0); /* should be variable */
121  RN("body", command_body, 0.0);
122  RN("bowmode", command_bowmode, 0.0);
123  RN("brace", command_brace, 0.0);
124  RN("cast", command_cast, 0.2); /* Is this right? */
125  RN("delete", command_delete, 0.0);
126  RN("disarm", command_disarm, 1.0);
127  RN("dm", command_dm, 0.0);
128  RN("dmhide", command_dmhide, 0.0); /* Like dm, but don't tell a dm arrived, hide player */
129  RN("drop", command_drop, 1.0);
130  RN("dropall", command_dropall, 1.0);
131  RN("empty", command_empty, 1.0);
132  RN("examine", command_examine, 0.5);
133  RN("fix_me", command_fix_me, 0.0);
134  RN("follow", command_follow, 0.0);
135  RN("forget_spell", command_forget_spell, 0.0);
136  RN("get", command_take, 1.0);
137  RN("help", command_help, 0.0);
138  RN("hiscore", command_hiscore, 0.0);
139  RN("inventory", command_inventory, 0.0);
140  RN("invoke", command_invoke, 1.0);
141  RN("killpets", command_kill_pets, 0.0);
142  RN("language", command_language, 0.0);
143  RN("listen", command_listen, 0.0);
144  RN("lock", command_lock_item, 0.0);
145  RN("maps", command_maps, 0.0);
146  RN("mapinfo", command_mapinfo, 0.0);
147  RN("mark", command_mark, 0.0);
148  RN("motd", command_motd, 0.0);
149  RN("news", command_news, 0.0);
150  RN("partial_commands", command_partial_commands, 0.0);
151  RN("party", command_party, 0.0);
152  RN("party_rejoin", command_party_rejoin, 0.0);
153  RN("passwd", command_passwd, 0.0);
154  RN("peaceful", command_peaceful, 0.0);
155  RN("petmode", command_petmode, 0.0);
156  RN("pickup", command_pickup, 1.0);
157  RN("prepare", command_cast, 1.0);
158  RN("printlos", command_printlos, 0.0);
159  RN("quit", command_quit, 0.0);
160  RN("ready_skill", command_rskill, 1.0);
161  RN("rename", command_rename_item, 0.0);
162  RN("resistances", command_resistances, 0.0);
163  RN("rotateshoottype", command_rotateshoottype, 0.0);
164  RN("rules", command_rules, 0.0);
165  RN("save", command_save, 0.0);
166  RN("skills", command_skills, 0.0); /* shows player list of skills */
167  RN("use_skill", command_uskill, 1.0);
168  RN("search", command_search, 1.0);
169  RN("search-items", command_search_items, 0.0);
170  RN("showpets", command_showpets, 1.0);
171  RN("sound", command_sound, 0.0);
172  RN("statistics", command_statistics, 0.0);
173  RN("take", command_take, 1.0);
174  RN("throw", command_throw, 1.0);
175  RN("time", command_time, 0.0);
176  RN("title", command_title, 0.0);
177  RN("use", command_use, 1.0);
178  RN("usekeys", command_usekeys, 0.0);
179  RN("whereabouts", command_whereabouts, 0.0);
180  RN("whereami", command_whereami, 0.0);
181  RN("unarmed_skill", command_unarmed_skill, 0.0);
182 #ifdef DEBUG_MALLOC_LEVEL
183  RN("verify", command_malloc_verify, 0.0);
184 #endif
185  RN("version", command_version, 0.0);
186  RN("wimpy", command_wimpy, 0.0);
187  RN("who", command_who, 0.0);
188  /*
189  * directional commands
190  */
191  RN("stay", command_stay, 1.0); /* 1.0 because it is used when using a
192  * skill on yourself */
193  RN("north", command_north, 1.0);
194  RN("east", command_east, 1.0);
195  RN("south", command_south, 1.0);
196  RN("west", command_west, 1.0);
197  RN("northeast", command_northeast, 1.0);
198  RN("southeast", command_southeast, 1.0);
199  RN("southwest", command_southwest, 1.0);
200  RN("northwest", command_northwest, 1.0);
201  RN("run", command_run, 1.0);
202  RN("run_stop", command_run_stop, 0.0);
203  RN("fire", command_fire, 1.0);
204  RN("fire_stop", command_fire_stop, 0.0);
205  RN("face", command_face, 0.0);
206  RN("quest", command_quest, 0.0);
207  RN("knowledge", command_knowledge, 0.0);
208 
209  /* Chat/shout related commands. */
210  RC("tell", command_tell, 0.1);
211  RC("reply", command_reply, 0.0);
212  RC("say", command_say, 0.1);
213  RC("gsay", command_gsay, 1.0);
214  RC("shout", command_shout, 0.1);
215  RC("chat", command_chat, 0.1);
216  RC("me", command_me, 0.1);
217  RC("cointoss", command_cointoss, 0.0);
218  RC("orcknuckle", command_orcknuckle, 0.0);
219  /*
220  * begin emotions
221  */
222  RC("nod", command_nod, 0.0);
223  RC("dance", command_dance, 0.0);
224  RC("kiss", command_kiss, 0.0);
225  RC("bounce", command_bounce, 0.0);
226  RC("smile", command_smile, 0.0);
227  RC("cackle", command_cackle, 0.0);
228  RC("laugh", command_laugh, 0.0);
229  RC("giggle", command_giggle, 0.0);
230  RC("shake", command_shake, 0.0);
231  RC("puke", command_puke, 0.0);
232  RC("growl", command_growl, 0.0);
233  RC("scream", command_scream, 0.0);
234  RC("sigh", command_sigh, 0.0);
235  RC("sulk", command_sulk, 0.0);
236  RC("hug", command_hug, 0.0);
237  RC("cry", command_cry, 0.0);
238  RC("poke", command_poke, 0.0);
239  RC("accuse", command_accuse, 0.0);
240  RC("grin", command_grin, 0.0);
241  RC("bow", command_bow, 0.0);
242  RC("clap", command_clap, 0.0);
243  RC("blush", command_blush, 0.0);
244  RC("burp", command_burp, 0.0);
245  RC("chuckle", command_chuckle, 0.0);
246  RC("cough", command_cough, 0.0);
247  RC("flip", command_flip, 0.0);
248  RC("frown", command_frown, 0.0);
249  RC("gasp", command_gasp, 0.0);
250  RC("glare", command_glare, 0.0);
251  RC("groan", command_groan, 0.0);
252  RC("hiccup", command_hiccup, 0.0);
253  RC("lick", command_lick, 0.0);
254  RC("pout", command_pout, 0.0);
255  RC("shiver", command_shiver, 0.0);
256  RC("shrug", command_shrug, 0.0);
257  RC("slap", command_slap, 0.0);
258  RC("smirk", command_smirk, 0.0);
259  RC("snap", command_snap, 0.0);
260  RC("sneeze", command_sneeze, 0.0);
261  RC("snicker", command_snicker, 0.0);
262  RC("sniff", command_sniff, 0.0);
263  RC("snore", command_snore, 0.0);
264  RC("spit", command_spit, 0.0);
265  RC("strut", command_strut, 0.0);
266  RC("thank", command_thank, 0.0);
267  RC("twiddle", command_twiddle, 0.0);
268  RC("wave", command_wave, 0.0);
269  RC("whistle", command_whistle, 0.0);
270  RC("wink", command_wink, 0.0);
271  RC("yawn", command_yawn, 0.0);
272  RC("beg", command_beg, 0.0);
273  RC("bleed", command_bleed, 0.0);
274  RC("cringe", command_cringe, 0.0);
275  RC("think", command_think, 0.0);
276 
278  RW("abil", command_abil, 0.0);
279  RW("accountpasswd", command_accountpasswd, 0.0);
280  RW("addexp", command_addexp, 0.0);
281  RW("arrest", command_arrest, 0.0);
282  RW("banish", command_banish, 0.0);
283  RW("create", command_create, 0.0);
284  RW("debug", command_debug, 0.0);
285  RW("diff", command_diff, 0.0);
286  RW("dmtell", command_dmtell, 0.0);
287  RW("dump", command_dump, 0.0);
288  RW("dumpabove", command_dumpabove, 0.0);
289  RW("dumpbelow", command_dumpbelow, 0.0);
290  RW("dumpfriendlyobjects", command_dumpfriendlyobjects, 0.0);
291  RW("dumpallarchetypes", command_dumpallarchetypes, 0.0);
292  RW("dumpallmaps", command_dumpallmaps, 0.0);
293  RW("dumpallobjects", command_dumpallobjects, 0.0);
294  RW("dumpmap", command_dumpmap, 0.0);
295  RW("free", command_free, 0.0);
296  RW("freeze", command_freeze, 0.0);
297  RW("goto", command_goto, 0.0);
298  RW("hide", command_hide, 0.0);
299  RW("insert_into", command_insert_into, 0.0);
300  RW("invisible", command_invisible, 0.0);
301  RW("kick", command_kick, 0.0);
302  RW("learn_special_prayer", command_learn_special_prayer, 0.0);
303  RW("learn_spell", command_learn_spell, 0.0);
304  RW("malloc", command_malloc, 0.0);
305  RW("nodm", command_nowiz, 0.0);
306  RW("nowiz", command_nowiz, 0.0);
307  RW("patch", command_patch, 0.0);
308  RW("players", command_players, 0.0);
309  RW("plugin", command_loadplugin, 0.0);
310  RW("pluglist", command_listplugins, 0.0);
311  RW("plugout", command_unloadplugin, 0.0);
312  RW("purge_quest_state", command_purge_quest, 0.0);
313  RW("purge_quests", command_purge_quest_definitions, 0.0);
314  RW("recollect", command_recollect, 0.0);
315  RW("remove", command_remove, 0.0);
316  RW("reset", command_reset, 0.0);
317  RW("set_god", command_setgod, 0.0);
318  RW("settings", command_settings, 0.0);
319  RW("server_speed", command_speed, 0.0);
320  RW("shutdown", command_shutdown, 0.0);
321  RW("ssdumptable", command_ssdumptable, 0.0);
322  RW("stack_clear", command_stack_clear, 0.0);
323  RW("stack_list", command_stack_list, 0.0);
324  RW("stack_pop", command_stack_pop, 0.0);
325  RW("stack_push", command_stack_push, 0.0);
326  RW("stats", command_stats, 0.0);
327  RW("strings", command_strings, 0.0);
328  RW("style_info", command_style_map_info, 0.0); /* Costly command, so make it wiz only */
329  RW("summon", command_summon, 0.0);
330  RW("teleport", command_teleport, 0.0);
331  RW("toggle_shout", command_toggle_shout, 0.0);
332  RW("wizpass", command_wizpass, 0.0);
333  RW("wizcast", command_wizcast, 0.0);
334  RW("overlay_save", command_overlay_save, 0.0);
335  RW("overlay_reset", command_overlay_reset, 0.0);
336  /* RW("possess", command_possess, 0.0); */
337  RW("mon_aggr", command_mon_aggr, 0.0);
338  RW("loadtest", command_loadtest, 0.0);
339 
340 #undef RN
341 #undef RC
342 #undef RW
343 }
344 
349  for (auto cmd = registered_commands.begin(); cmd != registered_commands.end(); cmd++) {
350  for (auto h = cmd->second.begin(); h != cmd->second.end(); h++) {
351  free((*h)->extra);
352  delete *h;
353  }
354  cmd->second.clear();
355  }
356  registered_commands.clear();
357 
358  next_registration = 1;
359 }
360 
371 static void show_commands(object *op, uint8_t type, const char *legend) {
372  char line[HUGE_BUF];
373 
375 
376  line[0] = '\0';
377  std::for_each(registered_commands.begin(), registered_commands.end(), [&type, &line] (auto cmd) {
378  if (cmd.second.back()->type == type) {
379  strcat(line, cmd.first.c_str());
380  strcat(line, " ");
381  }
382  });
384 }
385 
392 void command_list(object *pl, bool is_dm) {
393  show_commands(pl, COMMAND_TYPE_NORMAL, " Commands:");
395  show_commands(pl, COMMAND_TYPE_COMMUNICATION, " Communication commands:");
396  if (is_dm) {
398  show_commands(pl, COMMAND_TYPE_WIZARD, " Wiz commands:");
399  }
400 }
401 
409 static registered_command *command_find(const char *name, object *pl) {
410  auto existing = registered_commands.find(name);
411  if (existing != registered_commands.end()) {
412  if (!QUERY_FLAG(pl, FLAG_WIZ) && existing->second.back()->type == COMMAND_TYPE_WIZARD) {
414  "'%s' is not a valid command.", name);
415  return nullptr;
416  }
417  return existing->second.back();
418  }
419 
420  if (pl->contr->partial_commands) {
421  size_t len = strlen(name);
422  registered_command *candidate = nullptr;
423  std::string matches;
424  bool multiple = false;
425  for (auto command : registered_commands) {
426  if ((command.second.back()->type != COMMAND_TYPE_WIZARD || QUERY_FLAG(pl, FLAG_WIZ)) && command.first.length() >= len && command.first.compare(0, len, name) == 0) {
427  if (candidate) {
428  matches += ", " + command.first;
429  multiple = true;
430  } else {
431  candidate = command.second.back();
432  matches = command.first;
433  }
434  }
435  }
436  if (multiple) {
438  "'%s' is ambiguous and may be %s.", name, matches.c_str());
439  return nullptr;
440  }
441  if (candidate) {
442  return candidate;
443  }
444  }
446  "'%s' is not a valid command.", name);
447  return nullptr;
448 }
449 
458 void command_execute(object *pl, char *command) {
459  registered_command *csp;
460  char *cp, *low;
461 
462  pl->contr->has_hit = 0;
463 
464  /*
465  * remove trailing spaces from commant
466  */
467  cp = command+strlen(command)-1;
468  while ((cp >= command) && (*cp == ' ')) {
469  *cp = '\0';
470  cp--;
471  }
472  cp = strchr(command, ' ');
473  if (cp) {
474  *(cp++) = '\0';
475  while (*cp == ' ')
476  cp++;
477  } else {
478  cp = strchr(command, '\0');
479  }
480 
481  if (strlen(command) == 0) {
482  return;
483  }
484 
485  for (low = command; *low; low++)
486  *low = tolower(*low);
487 
488  csp = command_find(command, pl);
489 
490  if (csp == nullptr) {
491  return;
492  }
493 
494  pl->speed_left -= csp->time;
495 
496  /* A character time can never exceed his speed (which in many cases,
497  * if wearing armor, is less than one.) Thus, in most cases, if
498  * the command takes 1.0, the player's speed will be less than zero.
499  * it is only really an issue if time goes below -1
500  * Due to various reasons that are too long to go into here, we will
501  * actually still execute player even if his time is less than 0,
502  * but greater than -1. This is to improve the performance of the
503  * new client/server. In theory, it shouldn't make much difference.
504  */
505 
506  if (csp->time && pl->speed_left < -2.0) {
507  LOG(llevDebug, "execute_newclient_command: Player issued command that takes more time than he has left.\n");
508  }
509  if (csp->extra) {
510  csp->func_extra(pl, cp, csp->extra);
511  } else {
512  csp->func_std(pl, cp);
513  }
514 }
515 
528 command_registration command_register_extra(const char *name, const char *extra, uint8_t type, command_function_extra func, float time) {
529  assert(extra);
530  return do_register(name, type, nullptr, func, extra, time);
531 }
532 
538  for (auto cmd = registered_commands.begin(); cmd != registered_commands.end(); cmd++) {
539  for (auto h = cmd->second.begin(); h != cmd->second.end(); h++) {
540  if ((*h)->registration == command) {
541  free((*h)->extra);
542  delete (*h);
543  cmd->second.erase(h);
544  if (cmd->second.empty()) {
545  registered_commands.erase(cmd);
546  }
547  return;
548  }
549  }
550  }
551 }
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:2508
command_style_map_info
void command_style_map_info(object *op, const char *params)
Definition: c_wiz.c:2737
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:2521
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:2053
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:1560
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:105
command_recollect
void command_recollect(object *op, const char *params)
Definition: c_wiz.c:1533
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:371
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_partial_commands
static void command_partial_commands(object *op, const char *params)
Definition: commands.cpp:86
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:2596
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
pl::partial_commands
uint32_t partial_commands
Definition: player.h:150
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:458
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:2570
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:537
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:1633
command_forget_spell
void command_forget_spell(object *op, const char *params)
Definition: c_wiz.c:2389
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_save
void command_save(object *op, const char *params)
Definition: c_misc.c:2092
commands_clear
void commands_clear()
Definition: commands.cpp:348
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:2432
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:2783
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:2464
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
registered_command::time
float time
Definition: commands.cpp:41
command_free
void command_free(object *op, const char *params)
Definition: c_wiz.c:1607
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:144
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:1814
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:2888
command_purge_quest_definitions
void command_purge_quest_definitions(object *op, const char *param)
Definition: c_wiz.c:2833
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:2861
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:392
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:2376
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:1210
command_reset
void command_reset(object *op, const char *params)
Definition: c_wiz.c:1880
command_learn_spell
void command_learn_spell(object *op, const char *params)
Definition: c_wiz.c:2364
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:351
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:1757
command_lick
void command_lick(object *op, const char *params)
Definition: c_chat.c:1063
roll-o-matic.params
params
Definition: roll-o-matic.py:193
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
matches
static int matches(const char *exp, const char *text)
Definition: dialog.c:79
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:2539
command_fire
void command_fire(object *op, const char *params)
Definition: c_new.c:77
command_find
static registered_command * command_find(const char *name, object *pl)
Definition: commands.cpp:409
command_invisible
void command_invisible(object *op, const char *params)
Definition: c_wiz.c:2199
command_purge_quest
void command_purge_quest(object *op, const char *param)
Definition: c_wiz.c:2827
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:528
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:2876
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:1727
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:2187
command_addexp
void command_addexp(object *op, const char *params)
Definition: c_wiz.c:1671
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:112
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:2660
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:2417
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:2493
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:105
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