# include <config.h> # include "/dgd/lib/privilege.h" # undef status object command_giver; /* the current player */ string notify_mesg; /* current notify_fail mesg */ string verb; /* the current verb */ mapping players; /* player mapping */ mapping monsters; /* monster mapping */ mapping objects; /* objects mapping */ mapping heart_beats; /* heart_beats mapping */ mapping call_outs; /* call_outs mapping */ static void reset(int arg) { int i; if (players == 0) { players = ([ ]); monsters = ([ ]); heart_beats = ([ ]); call_outs = ([ ]); } } /* * NAME: set_this_player() * DESCRIPTION: set the current player */ void set_this_player(object player) { command_giver = player; } /* * NAME: query_this_player() * DESCRIPTION: return the current player, or interactive user */ object query_this_player() { return command_giver; } /* * NAME: set_verb() * DESCRIPTION: set the current verb */ void set_verb(string str) { if (PRIVILEGED()) { verb = str; } } /* * NAME: query_verb() * DESCRIPTION: return the current verb */ string query_verb() { return verb; } /* * NAME: set_living_name() * DESCRIPTION: set the living name of the current object */ void set_living_name(string name) { object obj, *list; if (PRIVILEGED()) { obj = previous_object(); if (living(obj)) { if (interactive(obj) != 0) { players[name] = obj; } else { list = monsters[name]; if (list == 0) { list = ({ obj }); } else { list = ({ obj }) + (list - ({ 0 })); } monsters[name] = list; } } } } /* * NAME: query_find_player() * DESCRIPTION: find a player by name */ object query_find_player(string name) { object obj; obj = players[name]; if (obj != 0 && living(obj)) { return obj; } return 0; } /* * NAME: query_find_living() * DESCRIPTION: find a living object by name */ object query_find_living(string name) { object obj, *list; int i, sz; obj = query_find_player(name); if (obj != 0) { return obj; } list = monsters[name]; if (list != 0 && sizeof(list) != 0) { list -= ({ 0 }); monsters[name] = list; for (i = 0, sz = sizeof(list); i < sz; i++) { if (living(obj=list[i])) { return obj; } } } return 0; } /* * NAME: add_object() * DESCRIPTION: add an object */ void add_object() { if (PRIVILEGED()) { if (objects == 0) { objects = ([ ]); } objects[creator(previous_object())]++; } } /* * NAME: del_object() * DESCRIPTION: delete an object */ void del_object() { if (PRIVILEGED()) { objects[creator(previous_object())]--; } } /* * NAME: add_call_out() * DESCRIPTION: add a call_out */ void add_call_out() { if (PRIVILEGED()) { call_outs[creator(previous_object())]++; } } /* * NAME: del_call_out() * DESCRIPTION: remove a call_out */ void del_call_out() { if (PRIVILEGED()) { call_outs[creator(previous_object())]--; } } /* * NAME: add_heart_beat() * DESCRIPTION: add a heart_beat */ void add_heart_beat() { if (PRIVILEGED()) { heart_beats[creator(previous_object())]++; } } /* * NAME: del_heart_beat() * DESCRIPTION: delete a heart_beat */ void del_heart_beat() { if (PRIVILEGED()) { heart_beats[creator(previous_object())]--; } } /* * NAME: show_wiz_list() * DESCRIPTION: show the wizlist */ void show_wiz_list() { string *wizards, name; int i, sz; write("name\t objects hbeats callouts\n" + "-------------------------------------\n"); wizards = map_indices(objects); for (i = 0, sz = sizeof(wizards); i < sz; i++) { if (wizards[i] == 0) { name = "Mudlib"; } else { name = wizards[i]; } if (strlen(name) < 8) { name += "\t"; } write(name + "\t" + objects[wizards[i]] + "\t" + heart_beats[wizards[i]] + "\t" + call_outs[wizards[i]] + "\n"); } }