#include <unistd.h> #include <stdlib.h> #include "kernel.h" #include <time.h> #include <string.h> #include "levels.h" #include <stdarg.h> #include "timing.h" #include "log.h" #include "uaf.h" #include "bprintf.h" #include "verbs.h" #include "wizard.h" #include "parse.h" #include "sendsys.h" #include "mobile.h" #include "objsys.h" #include "rooms.h" #include "locations.h" #include "fight.h" #include "wizlist.h" #include "commands.h" #include "clone.h" #include "mud.h" #include "log.h" #include "files.h" char *host_name(int); extern HASH_TABLE oalts_n[]; extern HASH_TABLE objects_n[]; extern HASH_TABLE ublock_n[]; extern HASH_TABLE ualts_n[]; /* SNOOP allows players to spy on others */ void snoopcom (void) { int plr; if (!ptstflg (mynum, PFL_SNOOP)) { erreval (); return; } if (snooptarget(mynum) >= 0) { bprintf ("Stopped snooping on %s.\n", pname (snooptarget(mynum))); if (plev(mynum) < LVL_CREATOR) mudlog("%s has stopped snooping %s.", pname(mynum), pname(snooptarget(mynum))); snoop_off (mynum); return; } if ((plr = pl1) < 0) return; else if (plr >= max_players) { bprintf ("You can't snoop %s!\n", pname (plr)); return; } else if (plr == mynum) { bprintf ("You can't snoop yourself!\n"); return; } if (!do_okay (mynum, plr, PFL_NOSNOOP)) { bprintf ("Your magical vision is obscured.\n"); return; } if (ltstflg (ploc (plr), LFL_PRIVATE) && plev (mynum) < LVL_ARCHWIZARD) { bprintf ("I'm sorry, %s, but the room is private.\n", psex (mynum) ? "Madam" : "Sir"); return; } if (ltstflg (ploc (plr), LFL_NO_SNOOP) && plev(mynum) < LVL_CREATOR) { bprintf ("I'm sorry, %s, but the room is &+W[NO_SNOOP]!!\n", psex (mynum) ? "Madam" : "Sir"); return; } snooptarget(mynum) = plr; ++(snooped(plr)); bprintf ("Started to snoop on %s.\n", pname (plr)); if (plev(mynum) < LVL_CREATOR) mudlog("%s has started snooping %s.", pname(mynum), pname(plr)); } /* Make player no longer snoop his target */ void snoop_off (int plr) { int target; if ((target = snooptarget(plr)) >= 0) { snooptarget(plr) = -1; if (--snooped(target) < 0) snooped(target) = 0; } } /* The SYSTEM command */ void systemcom () { char x[MAX_COM_LEN], y[MAX_COM_LEN]; if (!ptstflg (mynum, PFL_RAW) && plev (mynum) < LVL_ARCHWIZARD) { erreval (); return; } getreinput (x); sprintf (y, "&+W[SYSTEM] &+C: &*%s&#&#\n", x); broad (y); send_msg (DEST_ALL, MODE_SFLAG | MS (SFL_SEEEXT), LVL_SHALAFI, LVL_MAX, mynum, NOBODY, "&+B[&+CSystem &*by &+W\001p%s\003&+B]\n", pname (mynum)); } /* Call For Reset */ void cfrcom () { char x[MAX_COM_LEN], y[MAX_COM_LEN]; if (plev (mynum) < LVL_WIZARD) { erreval (); return; } getreinput (x); sprintf (y, "&+W[Call For Reset by \001p%s\003] &+C: &*%s&#&#\n", pname(mynum), x); broad (y); } /* The RAW command */ void rawcom () { char x[MAX_COM_LEN], y[MAX_COM_LEN]; if (!ptstflg (mynum, PFL_RAW)) { erreval (); return; } getreinput (x); sprintf (y, "&+W[\001p%s\003] &+C: &*%s&#&#\n", pname (mynum), x); broad (y); } void textrawcom () { char send[MAX_COM_LEN]; if (!ptstflg (mynum, PFL_TEXTRAW)) { erreval (); return; } if (brkword () == -1) { bprintf ("Textraw what?\n"); return; } send_msg (DEST_ALL, MODE_SFLAG | MS (SFL_SEEEXT), LVL_GOD, LVL_MAX, mynum, NOBODY, "&+B[&+CTextRaw &*by &+W\001p%s\003&+B]\n", pname(mynum)); sprintf (send, "&+W[%s&+W] &+C: &+w%s&#&#\n", item1, txt2); broad (send); } void tournamentcom () { if (plev (mynum) < LVL_ARCHWIZARD) { erreval (); return; } else { the_world->w_tournament = !the_world->w_tournament; bprintf ("Tournament-mode is now &+W%s&*.\n", the_world->w_tournament ? "ON" : "OFF"); mudlog ("&+WSYSTEM:&N Tournament mode turned %s by %s", the_world->w_tournament ? "On" : "Off", pname (mynum)); send_msg (DEST_ALL, MODE_QUIET, LVL_WIZARD, LVL_MAX, mynum, NOBODY, "&+B[&*Tournament mode turned &+C%s &*by &+W\001p%s\003&+B]\n", the_world->w_tournament ? "On" : "Off", pname (mynum)); } } void syslogcom (void) { FILE *sysfp, *pagefp; char buffer[300], search[MAX_COM_LEN], tmpbuf[300]; char tmpname[100]; struct tm *now; int lines = 0; int sysloglen = fnumlines (CLOG_FILE); Boolean found = False; if (!ptstflg (mynum, PFL_SYSLOG)) { erreval (); return; } sprintf (tmpname, "TMP/SYSLOG.%s", pname (mynum)); if ((pagefp = FOPEN (tmpname, "wt")) == NULL) { bprintf ("Error: Cannot create temporary file.\n"); mudlog ("ERROR: Cannot create temporary file for syslog pager"); return; } if ((sysfp = FOPEN (CLOG_FILE, "rt")) == NULL) { bprintf ("Error: Cannot read syslog file.\n"); mudlog ("ERROR: Cannot read syslog file."); return; } if (EMPTY (txt1)) { now = localtime(&global_clock); strftime(search, 20, "%b%d", now); } else { getreinput (search); if ((lines = atoi (search)) > 0) { fileseek (sysfp, (sysloglen - lines)); strcpy (search, " "); } if (search[0] == '*') { fileseek (sysfp, 1); strcpy (search, " "); } } while (1) { fgets (buffer, sizeof (buffer), sysfp); if (feof (sysfp)) break; strcpy (tmpbuf, buffer); if (strstr (uppercase (tmpbuf), uppercase (search))) { fputs(buffer, pagefp); found = True; } } FCLOSE (sysfp); FCLOSE (pagefp); if (found) bprintf("\001f%s\003", tmpname); else bprintf("No pattern matches search.\n"); } /* (C) Rassilon (Brian Preble) */ void echocom () { char x[MAX_COM_LEN]; if (!ptstflg (mynum, PFL_ECHO)) { bprintf ("You hear echos.\n"); return; } getreinput (x); if (EMPTY (x)) { bprintf ("ECHO what?\n"); return; } send_msg(sendloc(mynum), MODE_NPFLAG | MP (PFL_NOECHO), LVL_MIN, LVL_MAX, mynum, NOBODY, "%s\n", x); if (ststflg (mynum, SFL_HEARBACK)) bprintf ("You echo: %s\n", x); else bprintf ("Ok\n"); send_msg(sendloc(mynum), MODE_SFLAG | MS (SFL_SEEEXT), LVL_ARCHWIZARD, LVL_MAX, mynum, NOBODY, "&+B[&+CEcho &*by &+W\001p%s\003&+B]\n", pname (mynum)); } void levechocom (void) { int lev; char x[MAX_COM_LEN]; if (!ptstflg (mynum, PFL_ECHO)) { bprintf ("You hear echos.\n"); return; } if (brkword () == -1) { bprintf ("Echo to what level?\n"); return; } lev = atoi (wordbuf); if (lev < 0 || lev > plev (mynum)) { bprintf ("You cannot echo to level %d.\n", lev); return; } getreinput (x); if (EMPTY (x)) { bprintf ("Echo what to level %d?\n", lev); return; } send_msg (DEST_ALL, MODE_NPFLAG | MP (PFL_NOECHO), lev, LVL_MAX, mynum, NOBODY, "%s\n", x); if (ststflg (mynum, SFL_HEARBACK)) bprintf ("You lev-echoed (Lvl %d): %s\n", lev, x); else bprintf ("Ok\n"); send_msg (DEST_ALL, MODE_SFLAG | MS (SFL_SEEEXT), LVL_ARCHWIZARD, LVL_MAX, mynum, NOBODY, "&+B[&+CLevecho (%d) &*by &+W\001p%s\003&+B]\n", lev, pname (mynum)); } /* (C) Rassilon (Brian Preble) */ void echoallcom () { char x[MAX_COM_LEN]; if (!ptstflg (mynum, PFL_ECHO)) { bprintf ("You hear echos.\n"); return; } getreinput (x); if (EMPTY (x)) { bprintf ("Echo what?\n"); return; } send_msg (DEST_ALL, MODE_SFLAG | MS (SFL_SEEEXT), LVL_ARCHWIZARD, LVL_MAX, mynum, NOBODY, "&+B[&+CEchoall &*by &+W\001p%s\003&+B]\n", pname(mynum)); send_msg (DEST_ALL, MODE_NPFLAG | MP (PFL_NOECHO), LVL_MIN, LVL_MAX, mynum, NOBODY, "%s\n", x); if (ststflg (mynum, SFL_HEARBACK)) bprintf ("You echoall: %s\n", x); else bprintf ("Ok\n"); } void emoteallcom () { char x[MAX_COM_LEN]; if (!ptstflg (mynum, PFL_EMOTE)) { bprintf ("Your emotions are strictly limited.\n"); return; } getreinput (x); if (EMPTY (x)) { bprintf ("Emoteall what?\n"); return; } send_msg (DEST_ALL, MODE_SFLAG | MS (SFL_SEEEXT), LVL_ARCHWIZARD, LVL_MAX, mynum, NOBODY, "&+B[&+CEmoteall &*by &+W\001p%s\003&+B]\n", pname(mynum)); send_msg (DEST_ALL, MODE_NPFLAG | MP (PFL_NOECHO), LVL_MIN, LVL_MAX, mynum, NOBODY, "%s %s\n", pname(mynum), x); if (ststflg (mynum, SFL_HEARBACK)) bprintf ("You emoteall: %s %s\n", pname(mynum), x); else bprintf ("Ok\n"); } /* (C) Rassilon (Brian Preble) */ void echotocom () { int b; if (!ptstflg (mynum, PFL_ECHO)) { bprintf ("You hear echos.\n"); return; } if (EMPTY (item1)) { bprintf ("Echo to who?\n"); return; } if ((b = pl1) == -1) { bprintf ("No one with that name is playing.\n"); return; } if (b == mynum) { bprintf ("What's the point?\n"); return; } if (EMPTY (txt2)) { bprintf ("What do you want to echo to them?\n"); return; } if (EQ (pname (mynum), "Oracle")) if (strstr (txt2, "tells you") && ststflg (b, SFL_NOORACLE)) return; if (check_busy (b)) return; send_msg (int2idx(b, MOB), MODE_NPFLAG | MP (PFL_NOECHO), LVL_MIN, LVL_MAX, NOBODY, NOBODY, "%s\n", txt2); if (ststflg (mynum, SFL_HEARBACK)) bprintf ("You echoto: %s\n", txt2); else bprintf ("Ok\n"); if (!EQ(pname (mynum), "Inego") ) { send_msg (DEST_ALL, MODE_SFLAG | MS (SFL_SEEEXT), LVL_GOD, LVL_MAX, mynum, NOBODY, "&+B[&+CEchoto to &+W\001p%s\003 &*by " "&+W\001p%s\003&+B]\n", pname (b), pname (mynum)); } } /* (C) Jim Finnis (Yes he really did write one or two routines/A) */ void emotecom () { char buff[MAX_COM_LEN + 10]; if (!ptstflg (mynum, PFL_EMOTE) && !ltstflg (ploc (mynum), LFL_PARTY)) { bprintf ("Your emotions are strictly limited!\n"); return; } if (EMPTY (item1)) { bprintf ("What do you want to emote?\n"); return; } getreinput (buff); send_msg(sendloc(mynum), 0, LVL_MIN, LVL_MAX, mynum, NOBODY, "\001p%s\003 %s\n", pname (mynum), buff); if (ststflg (mynum, SFL_HEARBACK)) bprintf ("You emote: '%s %s'\n", pname (mynum), buff); else bprintf ("Ok\n"); } /* (C) Rassilon (Brian Preble) */ void emotetocom () { int a; if (!ptstflg (mynum, PFL_EMOTE) && plev(mynum) < LVL_WIZARD && !ltstflg (ploc (mynum), LFL_PARTY)) { bprintf ("Your emotions are strictly limited!\n"); return; } if (EMPTY (item1)) { bprintf ("Emote to who?\n"); return; } if ((a = pl1) == -1) { bprintf ("No one with that name is playing.\n"); return; } if (a == mynum) { bprintf ("Good trick, that.\n"); return; } if( !ptstflg (mynum, PFL_EMOTE) && ltstflg (ploc (mynum), LFL_PARTY) && ploc(a) != ploc(mynum) ) { bprintf ("Your emotions are strictly limited!\n"); return; } if (EMPTY (txt2)) { bprintf ("Emote what?\n"); return; } if (check_busy (a)) return; sendf(a, "%\001p%s\003%s\n", txt2); if (ststflg (mynum, SFL_HEARBACK)) bprintf ("Your emoteto looked like: %s %s\n", pname (mynum), txt2); else bprintf ("Ok\n"); } /* The SET command */ /* These properties require numbers: */ #define SET_BVALUE 0 #define SET_SIZE 1 #define SET_VIS 2 #define SET_DAMAGE 3 #define SET_ARMOR 4 #define SET_STATE 5 /* These require texts: */ #define SET_TEXT_MIN 5 #define SET_DESC0 6 #define SET_DESC1 7 #define SET_DESC2 8 #define SET_DESC3 9 #define SET_NAME 10 #define SET_ANAME 11 #define SET_TEXT_MAX 11 /* Properties */ static char *Props[] = { "BaseValue", "Size", "Visibility", "Damage", "AC", "State", "Desc0", "Desc1", "Desc2", "Desc3", "Name", "AltName", TABLE_END }; void setcom () { int o, p, v; /* Object, Property, Value */ Boolean is_oflag; if (!ptstflg (mynum, PFL_OBJECT)) { erreval (); return; } if (brkword () == -1 || (o = fobn (wordbuf)) == -1) { bprintf ("Set what??\n"); return; } if (brkword () == -1 || ((is_oflag = (p = tlookup (wordbuf, Props)) == -1) && (p = tlookup (wordbuf, Oflags)) == -1)) { bprintf ("Set what property on the %s?\n", oname (o)); return; } if ((is_oflag || p <= SET_TEXT_MIN || p > SET_TEXT_MAX) && brkword () == -1) { bprintf ("Set the %s property to what ??\n", is_oflag ? Oflags[p] : Props[p]); return; } if (is_oflag) { if ((v = tlookup (wordbuf, OO)) == -1 && (v = tlookup (wordbuf, TF)) == -1) { bprintf ("Value must be On or Off (or True/False).\n"); return; } if (v) osetbit (o, p); else oclrbit (o, p); } else if (p <= SET_TEXT_MIN || p > SET_TEXT_MAX) { int limit = -1; if (!isdigit (*wordbuf)) { bprintf ("Value must be a number >= 0.\n"); return; } else v = atoi (wordbuf); switch (p) { case SET_BVALUE: if (v > O_BVALUE_MAX || (v > obaseval (o) && v > 400 && !ptstflg (mynum, PFL_FROB))) limit = O_BVALUE_MAX; else osetbaseval (o, v); break; case SET_SIZE: if (v > O_SIZE_MAX) limit = O_SIZE_MAX; else osetsize (o, v); break; case SET_VIS: if (v > O_VIS_MAX) limit = O_VIS_MAX; else osetvis (o, v); break; case SET_DAMAGE: if (v > O_DAM_MAX) limit = O_DAM_MAX; else osetdamage (o, v); break; case SET_ARMOR: if (v > O_ARMOR_MAX) limit = O_ARMOR_MAX; else osetarmor (o, v); break; case SET_STATE: if (v > omaxstate (o)) limit = omaxstate (o); else setobjstate (o, v); break; default: bprintf ("Internal error\n"); mudlog ("ERROR: Internal errror in setcom(): p = %d", p); return; } if (limit > -1) { bprintf ("Sorry, value must be <= %d.\n", limit); return; } } else { char **q; if (opermanent (o)) { bprintf ("You can only change %s on non-permanent" " (wiz-created) objects.\n", Props[p]); return; } q = p == SET_DESC0 ? &olongt (o, 0) : p == SET_DESC1 ? &olongt (o, 1) : p == SET_DESC2 ? &olongt (o, 2) : p == SET_DESC3 ? &olongt (o, 3) : p == SET_NAME ? &oname (o) : p == SET_ANAME ? &oaltname (o) : NULL; if (q == NULL) { bprintf ("Internal Error\n"); mudlog ("ERROR: Internal error in setcom(), p = %d", p); return; } if (strchr (getreinput (wordbuf), '^') != NULL) { bprintf ("Illegal character(s) (^) in text.\n"); return; } if (p == SET_NAME || p == SET_ANAME) { char *s = wordbuf; if (strlen (wordbuf) > ONAME_LEN) { bprintf ("Name too long. Max = %d chars.\n", ONAME_LEN); return; } while (*s != '\0' && isalpha (*s)) s++; if (*s != '\0') { bprintf ("Name must only contain latters.\n"); return; } if (EMPTY (wordbuf)) { if (p == SET_ANAME) ht_remove(oalts_n, oaltname(o), o); if (p != SET_ANAME) { bprintf ("Name is missing.\n"); return; } } } if (*q != NULL) free (*q); if (p == SET_ANAME && !EMPTY(wordbuf)) { ht_remove(oalts_n, oaltname(o), o); ht_add(oalts_n, wordbuf, o); } *q = COPY (wordbuf); } bprintf ("Ok.\n"); } void exorcom () { int x, y = real_mynum; if (!ptstflg (mynum, PFL_EXOR)) { bprintf ("You couldn't exorcise your way out of a paper bag.\n"); return; } if (EMPTY (item1)) { bprintf ("Exorcise who?\n"); return; } if ((x = pl1) == -1) { bprintf ("They aren't playing.\n"); return; } if (!do_okay (mynum, x, PFL_NOEXOR)) { bprintf ("They don't want to be exorcised.\n"); return; } if (x < max_players) mudlog ("&+WSYSTEM:&N %s exorcised %s", pname (mynum), pname (x)); send_msg (DEST_ALL, MODE_QUIET, pvis (x), LVL_MAX, x, NOBODY, "%s has been kicked off.\n", pname (x)); send_msg (DEST_ALL, MODE_SFLAG | MS (SFL_SEEEXT), LVL_WIZARD, LVL_MAX, mynum, x, "&+B[&+W\001p%s\003 &*has exorcised &+W\001p%s\003&+B]\n", pname (mynum), pname (x)); if (ststflg(x, SFL_OCCUPIED)) { sendf(x, "You have been kicked off!\n"); unalias (x); } if (x >= max_players) { dumpstuff (x, ploc (x)); setpfighting (x, -1); if (!ppermanent (x)) destruct_mobile (x); else setpname (x, ""); } else { setup_globals (x); quit_msg("You have been kicked off!", NULL); quit_player(False); setup_globals (y); } } void setstart (void) { PERSONA d; int loc, p; char buff[80]; char *who; char *where; if (plev (mynum) < LVL_WIZARD) { erreval (); return; } else if (brkword () == -1) { who = pname (mynum); where = NULL; } else if (getuaf (strcpy (buff, wordbuf), &d)) { who = d.ublock.pname; where = (brkword () == -1) ? NULL : wordbuf; if (!EQ (who, pname (mynum))) { if (!ptstflg (mynum, PFL_UAF)) { bprintf ("You can only set your own start-location.\n"); return; } if (!do_okay_l (plev (mynum), d.ublock.plev, False)) { bprintf ("That is beyond your powers.\n"); return; } } } else if (brkword () == -1) { who = pname (mynum); where = buff; } else { bprintf ("No such player: %s\n", buff); return; } if (where == NULL) loc = 0; else if ((loc = findroomnum (where)) == 0 || !exists (loc)) { bprintf ("No such location.\n"); return; } if (loc) sprintf(buff, "%s@%s", lname(loc), zname(lzone(loc))); if ((p = fmbn(who)) > -1) { if (loc) phome(p) = COPY(buff); else { bprintf("Start location reset to default.\n"); if (phome(p)) { FREE(phome(p)); phome(p) = 0; } return; } } else { if (loc) d.ublock.phome = COPY(buff); else d.ublock.phome = 0; putuaf (&d); } bprintf ("Ok.\n"); } void noshoutcom (){ int x; if (plev (mynum) < LVL_WIZARD) { erreval (); return; } if ((x = pl1) == -1 || x == mynum) { if (ststflg (mynum, SFL_NOSHOUT)) { bprintf ("You can hear shouts again.\n"); sclrflg (mynum, SFL_NOSHOUT); send_msg (DEST_ALL, MODE_QUIET, max (pvis (mynum), LVL_WIZARD), LVL_MAX, mynum, NOBODY, "&+B[&+W%s &*is listening to &+CShouts&+B]\n", pname (mynum)); } else { bprintf ("From now on you won't hear shouts.\n"); ssetflg (mynum, SFL_NOSHOUT); send_msg (DEST_ALL, MODE_QUIET, max (pvis (mynum), LVL_WIZARD), LVL_MAX, mynum, NOBODY, "&+B[&+W%s &*is no longer listening to &+CShouts&+B]\n", pname (mynum)); } } else if (plev (x) >= LVL_WIZARD) { if (ststflg (x, SFL_NOSHOUT)) { bprintf ("%s can hear shouts again.\n", pname (x)); sclrflg (x, SFL_NOSHOUT); } else { bprintf ("From now on %s won't hear shouts.\n", pname (x)); ssetflg (x, SFL_NOSHOUT); } } else if (ststflg (x, SFL_NOSHOUT)) { bprintf ("%s is allowed to shout again.\n", pname (x)); sclrflg (x, SFL_NOSHOUT); send_msg (DEST_ALL, MODE_QUIET, LVL_WIZARD, LVL_MAX, mynum, NOBODY, "&+B[&+W\001p%s\003 &*has made &+W%s &*able to &+CShout&+B]\n", pname (mynum), pname (x)); } else { bprintf ("From now on %s cannot shout.\n", pname (x)); ssetflg (x, SFL_NOSHOUT); send_msg (DEST_ALL, MODE_QUIET, LVL_WIZARD, LVL_MAX, mynum, NOBODY, "&+B[&+W\001p%s\003 &*has made &+W%s &*unable to &+CShout&+B]\n", pname (mynum), pname (x)); } } void showlocation (int o) { int uc, gotroom; uc = 1; gotroom = 0; while (!gotroom) { switch (ocarrf (o)) { case IN_ROOM: o = oloc (o); gotroom = 1; break; case IN_CONTAINER: bprintf (" %cnside the %s", (uc ? 'I' : 'i'), oname (oloc (o))); uc = 0; o = oloc (o); break; case CARRIED_BY: bprintf (" %carried by %s", (uc ? 'C' : 'c'), pname (oloc (o))); uc = 0; o = ploc (oloc (o)); gotroom = 1; break; case WORN_BY: bprintf (" %corn by %s", (uc ? 'W' : 'w'), pname (oloc (o))); uc = 0; o = ploc (oloc (o)); gotroom = 1; break; case WIELDED_BY: bprintf (" %cielded by %s", (uc ? 'W' : 'w'), pname (oloc (o))); uc = 0; o = ploc (oloc (o)); gotroom = 1; break; case BOTH_BY: bprintf (" %corn and wielded by %s", (uc ? 'W' : 'w'), pname (oloc (o))); uc = 0; o = ploc (oloc (o)); gotroom = 1; break; default: bprintf ("\n"); return; } } bprintf (" %cn ", (uc ? 'I' : 'i')); bprintf ("%s\n", showname (o)); } void showitem (void) { int x, i; if (!ptstflg (mynum, PFL_STATS)) { erreval (); return; } if (EMPTY (item1)) { bprintf ("Show what?\n"); return; } if ((x = fobn (item1)) == -1) { bprintf ("What's that?\n"); return; } bprintf ("\nItem [%d]: %s", int2idx(x, OBJ), oname (x)); if (oaltname (x)) bprintf (" (%s)", oaltname (x)); bprintf ("\nLocation: "); showlocation (x); if (olinked (x) != -1) { bprintf ("Linked to: "); bprintf ("%s", oname (olinked (x))); showlocation (olinked (x)); } bprintf ("Zone/Owner: %s\n", zname (ozone (x))); bprintf ("\nState: %-6d State Reset: %-5d Max State: %-6d" "Vis Level: %d\n", state (x), state_reset(x), omaxstate (x), ovis (x)); bprintf ("Damage: %-6d Armor Class: %-6dSize: %d\n", odamage (x), oarmor (x), osize (x)); bprintf ("Base Value: %-6d Current Value: %-6d\n\n", obaseval (x), ovalue (x)); bprintf("Oflags: "); show_bits(obits(x), oindex, Oflags, OFLAGS, False); bprintf("OflagsReset: "); show_bits(obits(x), oindex, Oflags, OFLAGS_RESET, False); if (otstbit(x, OFL_WEARABLE)) { bprintf("Aflags: "); show_bits(obits(x), oindex, Aflags, AFLAGS, False); bprintf("AflagsReset: "); show_bits(obits(x), oindex, Aflags, AFLAGS_RESET, False); } bprintf ("\nState Description:\n"); for (i = 0; i < 4; i++) { if (olongt(x, i)) bprintf ("[%d] %s\n", i, olongt (x, i)); } } void wizlock () { char s[100]; int v; if (brkword () == -1) { if (!the_world->w_lock) bprintf ("The game is currently unlocked.\n"); else bprintf ("The game is locked to level %d.\n", the_world->w_lock); return; } if (!ptstflg (mynum, PFL_LOCK) || (v = plev (mynum)) <= 0) { erreval (); return; } the_world->w_lock = atoi(txt1); sprintf (s, "&+W[SYSTEM] &+C: &*&$ now locked to level " "%d.&#&#\n", the_world->w_lock); broad (s); send_msg (DEST_ALL, MODE_SFLAG | MS (SFL_SEEEXT), LVL_WIZARD, LVL_MAX, mynum, NOBODY, "&+B[&+CWizlock &*by &+W\001p%s\003&+B]\n", pname (mynum)); } void warcom() { if (plev (mynum) < LVL_WIZARD) erreval (); else if (!the_world->w_peace) bprintf("The game is already at war.\n"); else { the_world->w_peace = 0; broad ("The air of peace and friendship lifts.\n"); mudlog("&+RWAR:&N set by player %s", pname(mynum)); } } void peacecom () { int m; if (plev (mynum) < LVL_WIZARD) erreval (); else if (the_world->w_peace == 1) bprintf("The world is already at peace.\n"); else { mudlog("&+RPEACE:&N set by player %s", pname(mynum)); the_world->w_peace = 1; for (m = 0; m < max_players; m++) setpfighting (m, -1); broad ("Peace and tranquility descend upon the world.\n"); } } void zapcom (void) { int vic, x; if (!ptstflg (mynum, PFL_ZAP)) { bprintf ("The spell fails.\n"); return; } if (brkword () == -1) { bprintf ("Zap who?\n"); return; } if ((vic = pl1) == -1) { bprintf ("There is no one on with that name.\n"); return; } send_msg(sendloc(vic), 0, pvis(vic), LVL_MAX, vic, NOBODY, "\001cA massive lightning bolt strikes %s!\n\003", pname(vic)); if (!do_okay(mynum, vic, PFL_NOZAP)) sendf (vic, "%s casts a lightning bolt at you!\n", see_player (vic, mynum) ? pname (mynum) : "Someone"); else { if (vic < max_players) { mudlog ("&+WSYSTEM:&N %s zapped %s", pname (mynum), pname (vic)); if (plev (vic) >= LVL_WIZARD) update_wizlist (pname (vic), LEV_MORTAL); send_msg(sendloc(vic), 0, pvis (vic), LVL_MAX, vic, NOBODY, "\001s%s\003%s has just died.\n\003", pname (vic), pname (vic)); send_msg (DEST_ALL, 0, LVL_WIZARD, LVL_MAX, vic, NOBODY, "&+B[&+W\001p%s\003 &*has &+Czapped &+W\001p%s\003&+B]\n", pname (mynum), pname (vic)); x = real_mynum; setup_globals (vic); bprintf("&+WA massive lightning bolt strikes you between the eyes!\n" "%sYou have been utterly destroyed by \001p%s\003.\n", cur_player->cprompt, pname(x)); quit_msg("Bye Bye.... Slain by a Thunderbolt", NULL); quit_player(False); deluaf(pname(vic)); setup_globals (x); } else player_died (mynum, vic, VERB_ZAP); } send_msg (DEST_ALL, 0, LVL_MIN, LVL_MAX, vic, NOBODY, "\001dYou hear an ominous clap of thunder in the distance.\n\003"); } void pzapcom (void) { int vic, x; if (!ptstflg (mynum, PFL_PZAP)) { bprintf ("Pardon?\n"); return; } if (brkword () == -1) { bprintf ("P-Zap who?\n"); return; } if ((vic = pl1) == -1) { bprintf ("There is no one on with that name.\n"); return; } send_msg(sendloc(vic), 0, pvis (vic), LVL_MAX, vic, NOBODY, "\001A\033[1m\003\001cA massive lightning " "bolt strikes \003\001D%s\003\001c!\n\003\001A\033[0m\003", pname (vic)); if (!do_okay (mynum, vic, PFL_NOZAP)) sendf (vic, "\001p%s\003 casts a lightning bolt at you!\n", pname(mynum)); else { if (vic < max_players) { mudlog ("&+WSYSTEM:&N %s P-zapped %s", pname (mynum), pname (vic)); send_msg(sendloc(vic), 0, pvis (vic), LVL_MAX, vic, NOBODY, "\001s%s\003%s has just died.\n\003", pname (vic), pname (vic)); send_msg (DEST_ALL, MODE_NPFLAG | MP (PFL_PZAP), LVL_WIZARD, LVL_MAX, vic, NOBODY, "&+B[&+W\001p%s\003 &*has &+Czapped &+W\001p%s\003&+B]\n", pname (mynum), pname (vic)); send_msg (DEST_ALL, MODE_PFLAG | MP (PFL_PZAP), LVL_WIZARD, LVL_MAX, vic, NOBODY, "&+B[&+W\001p%s\003 &*has &+CP-zapped &+W\001p%s\003&+B]\n", pname (mynum), pname (vic)); x = real_mynum; setup_globals (vic); bprintf("&+WA massive lightning bolt strikes you between the eyes!\n" "%sYou have been utterly destroyed by \001p%s\003.\n", cur_player->cprompt, pname(x)); quit_msg("Bye Bye.... Slain by a Thunderbolt", NULL); quit_player(False); setup_globals (x); } else player_died (mynum, vic, VERB_ZAP); } send_msg (DEST_ALL, 0, LVL_MIN, LVL_MAX, vic, NOBODY, "\001dYou hear an ominous clap of thunder in the distance.\n\003"); } void debugcom (void) { return; } void toutcom (void) { int a; if (!ptstflg (mynum, PFL_TIMEOUT)) { bprintf ("Pardon?\n"); return; } if (brkword () == -1) { bprintf ("Who?\n"); return; } if ((a = fpbn(wordbuf)) == -1) { bprintf ("Who?\n"); return; } if (ptstflg (a, PFL_NOTIMEOUT) && a != mynum && (plev(mynum) < plev(a))) { bprintf ("Something prevents you from doing this to that person.\n"); return; } mudlog ("&+WSYSTEM:&N %s has tout'd %s", pname (mynum), pname (a)); send_msg (DEST_ALL, MODE_PFLAG | MP (PFL_TIMEOUT), LVL_WIZARD, LVL_MAX, a, mynum, "&+B[&+W\001p%s\003 &+whas tout'd &+W\001p%s\003&+B]\n", pname (mynum), pname (a)); send_msg (DEST_ALL, MODE_NPFLAG | MP (PFL_TIMEOUT), LVL_MIN, LVL_MAX, a, mynum, "&+B[&+W\001p%s\003 &+whas been timed-out&+B]\n", pname (a)); setup_globals(a); quit_player(-5); } void auto_tout(void) { if (!is_in_game(mynum)) return; send_msg (DEST_ALL, 0, LVL_MIN, LVL_MAX, NOBODY, mynum, "&+B[&+W\001p%s\003 &+whas been auto-touted%s&+B]\n", pname(mynum), linkdead(mynum) ? " (linkdead)" : ""); mudlog("&+WSYSTEM:&N %s auto-touted%s", pname(mynum), linkdead(mynum) ? " (linkdead)" : ""); quit_player(-5); } void nowishcom (void) { int a; if (plev (mynum) < LVL_WIZARD) { erreval (); return; } if (brkword () != -1) { if ((a = fpbn(wordbuf)) == -1) { bprintf ("Cannot find that player.\n"); return; } if (plev (a) < LVL_WIZARD) { if (ststflg (a, SFL_NOWISH)) { bprintf ("%s can now wish for things.\n", pname (a)); sendf (a, "You are hit by a bolt of light and feel you've regained your link to the Gods.\n"); sclrflg (a, SFL_NOWISH); send_msg (DEST_ALL, MODE_QUIET, LVL_WIZARD, LVL_MAX, mynum, NOBODY, "&+B[&+W\001p%s\003 &*has made %s able to &+CWish&+B]\n", pname (mynum), pname (a)); } else { bprintf ("%s can no longer wish for things.\n", pname (a)); sendf (a, "You are hit by a bolt of light and feel you've lost your link to the Gods.\n"); ssetflg (a, SFL_NOWISH); send_msg (DEST_ALL, MODE_QUIET, LVL_WIZARD, LVL_MAX, mynum, NOBODY, "&+B[&+W\001p%s\003 &*has made %s unable to &+CWish&+B]\n", pname (mynum), pname (a)); } return; } else { bprintf ("You can't seem to be able to make a Wizard not listen to wishes.\n"); return; } } if (ststflg (mynum, SFL_NOWISH)) { bprintf ("You are once again listening to wishes.\n"); sclrflg (mynum, SFL_NOWISH); send_msg (DEST_ALL, MODE_QUIET, LVL_WIZARD, LVL_MAX, mynum, NOBODY, "&+B[&+W\001p%s\003 &*is now listening to &+CWishes&+B]\n", pname (mynum)); return; } else { bprintf ("You will no longer hear wishes.\n"); ssetflg (mynum, SFL_NOWISH); send_msg (DEST_ALL, MODE_QUIET, LVL_WIZARD, LVL_MAX, mynum, NOBODY, "&+B[&+W\001p%s\003 &*is no longer listening to &+CWishes&+B]\n", pname (mynum)); return; } } void noslaincom (void) { if (plev (mynum) < LVL_WIZARD) { erreval (); return; } if (ststflg (mynum, SFL_NOSLAIN)) { bprintf ("You will see slain messages again.\n"); sclrflg (mynum, SFL_NOSLAIN); return; } else { bprintf ("You will no longer see slain messages.\n"); ssetflg (mynum, SFL_NOSLAIN); return; } } void puntcom (void) { int b, i; int puntroom = -1; int ok = 1; int me = real_mynum; if (!ptstflg (mynum, PFL_PUNT)) { bprintf ("Yeah, you WISH you could punt!\n"); return; } if (pl1 == -1) { bprintf ("Who do you want to punt?\n"); return; } if (!EMPTY (item2)) { if ((puntroom = findroomnum (item2)) == 0) { bprintf ("Location does not exist!\n"); return; } else ok = 0; } if ((b = pl1) == -1) { bprintf("I can't find that person.\n"); return; } if (b >= num_const_chars) { bprintf("You can't punt around cloned mobiles.\n"); return; } if (b == mynum) { bprintf ("You really want to punt yourself around? Well, have a nice " "flight!\n"); } if (b != mynum) { if (ptstflg (b, PFL_NOPUNT) && plev (mynum) < LVL_GOD) { bprintf ("A magical force prevents you from punting that person.\n"); return; } } if (ok == 0) { if (chkroom (puntroom, b)) { bprintf ("Something will not let you punt %s there.\n", b == mynum ? "yourself" : pname (b)); return; } if (ltstflg (puntroom, LFL_PRIVATE)) { i = count_players (puntroom, COUNT_PLAYERS | COUNT_MOBILES); if (i > 1) { bprintf ("I'm sorry. There's a private conference in that room\n"); return; } } } while (ok != 0) { puntroom = my_random () % num_const_locs; /* Get a random room */ if (ltstflg (puntroom, LFL_DEATH) || /* Cannot be deathroom */ ltstflg (puntroom, LFL_ON_WATER) || /* Cannot be on water */ ltstflg (puntroom, LFL_ONE_PERSON) || /* Cannot be one-person */ ltstflg (puntroom, LFL_PRIVATE) || /* Cannot be private */ r_isdark (puntroom, b) || /* Cannot be dark */ chkroom (puntroom, b)) ok = 1; else { ok = 0; } } for (i = 0; i < max_players; ++i) { if (is_in_game (i) && i != mynum && i != b && ploc (b) == ploc (i)) { if (b != mynum) { if (ploc (mynum) == ploc (b)) sendf (i, "%s grins evilly then picks up %s and boots %s across " "the world..\n", see_name (i, mynum), see_name (i, b), him_or_her (b)); else sendf (i, "%s appears, picks up %s and boots %s across the " "world..\n", see_name (i, mynum), see_name (i, b), him_or_her (b)); } else { sendf (i, "\001p%s\003 boots %s across the world..\n", pname (mynum), psex (mynum) ? "herself" : "himself"); } } if (is_in_game (i) && i != mynum && i != b && ploc (b) != ploc (i)) sendf (i, "%s flies overhead screaming for mercy..\n", see_name (i, b)); } if (b != mynum) { bprintf ("You pick up %s and boot %s across the world..\n", pname (b), him_or_her (b)); sendf (b, "%s grins at you then picks you up and boots you across the " "world..\n", see_name (b, mynum)); } else { bprintf ("You pick yourself up and boot yourself around the world..\n"); } if (b < max_players) { setup_globals (b); setploc (mynum, puntroom); setup_globals (me); } else setploc (b, puntroom); for (i = 0; i < max_players; ++i) { if (is_in_game (i) && i != b && ploc (b) == ploc (i)) sendf (i, "%s lands on the ground with a loud thud.\n", see_name (i, b)); } if (EMPTY(item2)) send_msg (DEST_ALL, MODE_SFLAG | MS (SFL_SEEEXT), LVL_WIZARD, LVL_MAX, b, mynum, "&+B[&+W\001p%s\003 &+whas punted &+W\001p%s\003&+B]\n", pname (mynum), pname (b)); else send_msg (DEST_ALL, MODE_SFLAG | MS (SFL_SEEEXT), LVL_WIZARD, LVL_MAX, b, mynum, "&+B[&+W\001p%s\003 &+whas punted &+W\001p%s\003&+w to %s (%s)&+B]\n", pname (mynum), pname (b), sdesc (puntroom), showname(puntroom)); } void puntallcom (void) { int i; int b = -1; int puntroom = -1; int ok = 1; int me = real_mynum; if (!ptstflg (mynum, PFL_PUNTALL)) { bprintf ("Yeah, you WISH you could puntall!\n"); return; } if (!EMPTY (item1)) { if ((puntroom = findroomnum (item1)) == 0) { bprintf ("Location does not exist!\n"); return; } else ok = 0; } if (ok == 0) { for (i = 0; i < max_players; ++i) { if (is_in_game (i) && i != mynum && wlevel (plev (mynum)) < wlevel (plev (b))) { if (chkroom (puntroom, i)) { bprintf ("Something will not let you puntall there.\n"); return; } } } } send_msg (DEST_ALL, 0, LVL_MIN, LVL_MAX, mynum, NOBODY, "\001p%s\003 gets ready to punt all of you around!\n", pname (mynum)); bprintf ("You punt everyone around the world!\n"); if (ok == 0) { for (i = 0; i < max_players; ++i) { if (is_in_game (i) && i != mynum && plev (i) < LVL_CREATOR) { sendf (i, "\001p%s\003 grins evilly and boots you across the world.\n", pname (mynum)); setup_globals (i); setploc (mynum, puntroom); setup_globals (me); } } } for (i = 0; i < max_players; ++i) { if (is_in_game (i) && i != mynum && plev (i) < LVL_CREATOR) { ok = 1; while (ok != 0) { puntroom = my_random () % num_const_locs; /* Get a random room */ if (ltstflg (puntroom, LFL_DEATH) || ltstflg (puntroom, LFL_ON_WATER) || ltstflg (puntroom, LFL_ONE_PERSON) || ltstflg (puntroom, LFL_PRIVATE) || r_isdark (puntroom, i) || chkroom (puntroom, i)) ok = 1; else { ok = 0; sendf (i, "\001p%s\003 grins evilly and boots you across the " "world.\n", pname (mynum)); setup_globals (i); setploc (mynum, puntroom); setup_globals (me); } } } } send_msg (DEST_ALL, MODE_SFLAG | MS (SFL_SEEEXT), LVL_WIZARD, LVL_MAX, b, mynum, "&+B[&+CPuntAll &*by &+W\001p%s\003&+B]\n", pname (mynum)); } void litcom () { if (plev (mynum) < LVL_WIZARD) { erreval (); return; } if (!ststflg (mynum, SFL_LIT)) { ssetflg (mynum, SFL_LIT); bprintf ("You are now lit.\n"); } else { sclrflg (mynum, SFL_LIT); bprintf ("You are no longer lit.\n"); } } void socketcom () { static char *SockTable[] = { "view", "kill", "write", TABLE_END }; int i, b, x, d; int old_mynum = mynum; Boolean noton = False; char idlebuff[64], loginbuff[64]; char txt[MAX_COM_LEN]; if (!ptstflg (mynum, PFL_SOCKET)) { bprintf ("Pardon?\n"); return; } if (brkword () == -1) { bprintf ("&+CName Flushed FD Idle On For Host\n"); bprintf ("&+B-------------------------------------------------------------------------------\n"); for (i = 0; i < max_players; ++i) { if (see_player (mynum, i) && is_conn (i)) { strcpy (idlebuff, sec_to_hhmmss (global_clock - prlast_cmd (i))); strcpy (loginbuff, sec_to_hhmmss (global_clock - plogged_on (i))); bprintf ("&+w%-12s %7s %2d %8.8s %8.8s %-32.32s\n", pname (i), iplrs[i].output ? "N" : "Y", fildes(i), idlebuff, loginbuff, host_name(i)); } } bprintf ("&+B-------------------------------------------------------------------------------\n"); return; } if ((d = atoi (wordbuf)) == 0) { if ((b = fpbn(wordbuf)) == -1) { bprintf ("Person not on-line.\n"); return; } d = fildes(b); } else { if ((b = find_pl_index (d)) == -1) { bprintf ("That descriptor is not in use.\n"); return; } if (!is_in_game (b)) { if (!is_conn (b)) { bprintf ("That descriptor is not in use.\n"); return; } noton = True; } } if (is_in_game (b) && (pvis (b) > plev (mynum))) { bprintf ("That descriptor is not in use.\n"); return; } if (brkword () == -1) { if (noton) bprintf ("What do you want to do with descriptor %d?\n", d); else bprintf ("What do you want to do with %s's descriptor?\n", pname (b)); return; } if ((x = tlookup (wordbuf, SockTable)) < 0) { bprintf ("What are you trying to do?\n"); return; } switch (x) { case 0: strcpy (idlebuff, sec_to_hhmmss (global_clock - prlast_cmd (b))); strcpy (loginbuff, sec_to_hhmmss (global_clock - plogged_on (b))); bprintf ("&+CDescriptor &+B: &+W%-2d\n", d); bprintf ("&+B----------------------------------\n"); bprintf ("&+wUser Name &+B: &+w%s\n", pname (b)); bprintf ("&+wHostname &+B: &+w%s\n", !ptstflg (mynum, PFL_SEEUSER) ? hostname(b) : username(b)); bprintf ("&+wIdle Time &+B: &+w%s\n", idlebuff); bprintf ("&+wLogged On &+B: &+w%s\n", loginbuff); bprintf ("&+B----------------------------------\n"); break; case 1: bprintf ("Killing Descriptor %d (User: %s)\n", d, pname (b)); mudlog ("SOCKET: %s killed descriptor %d (User: %s)", pname (mynum), d, pname (b)); if (noton) send_msg (DEST_ALL, MODE_PFLAG | MP (PFL_SOCKET), LVL_WIZARD, LVL_MAX, b, mynum, "&+W[&+CSocket: &+w\001p%s\003 has killed descriptor " "%d (Logging In)&+W]\n", pname (mynum), d); else send_msg (DEST_ALL, MODE_PFLAG | MP (PFL_SOCKET), LVL_WIZARD, LVL_MAX, b, mynum, "&+W[&+CSocket: &+w\001p%s\003 has killed descriptor " "%d (User: \001p%s\003)&+W]\n", pname (mynum), d, pname (b)); setup_globals (b); quit_player(False); setup_globals (old_mynum); break; case 2: if (noton) bprintf ("Writing text to descriptor %d.\n", d); else bprintf ("Writing text to %s's descriptor.\n", pname (b)); getreinput (txt); setup_globals (b); bprintf ("%s\n", txt); setup_globals (old_mynum); break; } } void burncom (void) { int vic, x = real_mynum; if (!ptstflg (mynum, PFL_BURN)) { bprintf ("The spell fails.\n"); return; } if (brkword () == -1) { bprintf ("Burn who?\n"); return; } if ((vic = pl1) == -1) { bprintf ("There is no one on with that name.\n"); return; } if (!do_okay (mynum, vic, PFL_NOBURN)) { bprintf ("You can't send that person to hell!\n"); return; } send_msg (DEST_ALL, 0, pvis (vic), LVL_MAX, vic, NOBODY, "Screams are heard in the distance as %s is sent to hell..\n", pname (vic)); sendf (vic, "You are ripped up and thrown into hell by \001p%s\003..\n", pname (mynum)); if (vic < max_players) mudlog ("BURN: %s has burned %s", pname (mynum), pname (vic)); send_msg (DEST_ALL, 0, LVL_MIN, LVL_MAX, vic, NOBODY, "&+W\001p%s\003 &*has &+Rpissed off &*the &+WGods&*, and has been sent to burn in &+rhell&*!\n", pname (vic)); send_msg (DEST_ALL, 0, LVL_WIZARD, LVL_MAX, vic, NOBODY, "&+B[&+W\001p%s\003 &+whas burned &+W\001p%s\003&+B]\n", pname (mynum), pname (vic)); if (vic < max_players) { setplev (vic, 1); setpscore (vic, 0); set_xpflags(mbits(vic), 1); setploc (vic, LOC_LIMBO_HELL); setup_globals (vic); trapch (ploc (mynum)); setup_globals (x); } } void follist (void) { int i, j; int a[256], a_len = 0; int me = real_mynum; if (plev (mynum) < LVL_WIZARD) { erreval (); return; } for (i = 0; i < max_players; ++i) if (is_in_game (i) && (pvis (i) <= plev (me) || i == me) && pfollow (i) != -1) a[a_len++] = i; if (a_len == 0) { bprintf ("&+WThere are currently no players using follow.\n"); return; } qsort (a, a_len, sizeof (int), cmp_player); bprintf ("&+WName Str/Max DP AC Following Str/Max DP AC\n"); bprintf ("&+B-----------------------------------------------------------------------\n"); for (i = 0; i < a_len; ++i) { j = pfollow (a[i]); bprintf ("&+w%-15s %3d/%-3d %2d %2d %-15s %3d/%-3d %2d %2d\n", pname (a[i]), pstr (a[i]), maxstrength (a[i]), player_damage (a[i]), pac (a[i]), pname (j), pstr (j), maxstrength (j), player_damage (j), pac (j)); } bprintf ("&+B-----------------------------------------------------------------------\n"); } void toggleseeext (void) { if (plev (mynum) < LVL_WIZARD) { erreval (); return; } if (!ststflg (mynum, SFL_SEEEXT)) { ssetflg (mynum, SFL_SEEEXT); bprintf ("Extended Messages Enabled\n"); } else { sclrflg (mynum, SFL_SEEEXT); bprintf ("Extended Messages Disabled\n"); } } void findcom (void) { int i; int plr = 0, mob = 0, obj = 0, loc = 0; char sst[MAX_COM_LEN]; char tmp[256]; getreinput (sst); if (plev (mynum) < LVL_WIZARD) { bprintf ("Pardon?\n"); return; } if (EMPTY (txt1)) { bprintf ("What text are you looking for?\n"); return; } bprintf ("&+WType %-40.40s %-18.18s Number\n", "Name", "Location"); bprintf ("&+B-------------------------------------------------------------------------------\n"); for (i = 0; i < max_players; i++) { strcpy (tmp, pname (i)); if (strstr (uppercase (tmp), uppercase (sst)) && see_player (mynum, i)) { ++plr; if (plev(mynum) > LVL_GOD) bprintf ("&+W(Plr) &+w%-40.40s %-18.18s %d\n", pname (i), showname (ploc (i)), i); else bprintf ("&+W(Plr) &+w%-40.40s %-18.18s N/A\n", pname (i), showname (ploc (i))); } } for (i = max_players; i < numchars; i++) { strcpy (tmp, pname (i)); if (strstr (uppercase (tmp), uppercase (sst)) && see_player (mynum, i)) { ++mob; bprintf ("&+W(Mob) &+w%-40.40s %-18.18s %d\n", pname (i), showname (ploc (i)), int2idx(i, MOB)); } } for (i = 0; i < numobs; ++i) { strcpy (tmp, oname (i)); if (strstr (uppercase (tmp), uppercase (sst)) && (ovis (i) <= plev (mynum))) { ++obj; bprintf ("&+W(Obj) &+w%-40.40s %-18.18s %d\n", oname (i), odescrm (i), int2idx(i, OBJ)); } } for (i = 0; i < numloc; i++) { strcpy(tmp, sdesc(i)); if (strstr(uppercase(tmp), uppercase(sst))) bprintf("&+W(Loc) &+w%-40.40s %-18.18s %d\n", sdesc(i), showname(i), int2idx(i, LOC)); } bprintf ("&+B-------------------------------------------------------------------------------\n"); if (plr) bprintf ("&+wPlayers: &+W%d ", plr); if (mob) bprintf ("&+wMobiles: &+W%d ", mob); if (obj) bprintf ("&+wObjects: &+W%d ", obj); if (loc) bprintf ("&+wLocations: &+W%d ", loc); if (!plr && !mob && !obj && !loc) bprintf ("&+wNothing was found with that text."); bprintf ("\n"); } void nopuntcom (void) { if (!ptstmsk (mynum, PFL_NOPUNT)) { erreval (); return; } if (ptstflg (mynum, PFL_NOPUNT)) { bprintf ("NoPunt Disabled\n"); pclrflg (mynum, PFL_NOPUNT); } else { bprintf ("NoPunt Enabled\n"); psetflg (mynum, PFL_NOPUNT); } } void fakequitcom (void) { static char *QuitTableG[] = { "list", "quit", "cut", "net1", "net2", "net3", "net4", "net5", "net6", "net7", TABLE_END }; static char *QuitTable[] = { "list", "quit", TABLE_END }; static int vislev[] = { 0, LVL_ISTARI, LVL_ISTARI, LVL_ISTARI, LVL_ISTARI, LVL_ARCHWIZARD, LVL_DEMI, LVL_SHALAFI, LVL_GOD, LVL_CREATOR, LVL_MAX }; int x, maxlev = vislev[wlevel (plev (mynum))]; char xx[SETIN_MAX + 100]; if (plev (mynum) < LVL_WIZARD) { bprintf ("Pardon?\n"); return; } if (brkword () == -1) { x = 1; } else { if (plev (mynum) < LVL_GOD) { if ((x = tlookup (wordbuf, QuitTable)) < 0) { bprintf ("Use which message? (LIST for listing)\n"); return; } } else { if ((x = tlookup (wordbuf, QuitTableG)) < 0) { bprintf ("Use which message? (LIST for listing)\n"); return; } } } switch (x) { case 0: bprintf ("FakeQuit Listing\n"); bprintf ("--------------------------------------\n"); bprintf ("QUIT : Regular quit message\n"); if (plev (mynum) >= LVL_GOD) { bprintf ("CUT : Connection lost (cut) message\n"); bprintf ("NET1 : Connection Reset by Peer (ECONNRESET)\n"); bprintf ("NET2 : No Route to Host (EHOSTUNREACH)\n"); bprintf ("NET3 : Connection Timed Out (ETIMEDOUT)\n"); bprintf ("NET4 : Network Unreachable (ENETUNREACH)\n"); bprintf ("NET5 : Network Dropped Connection on Reset (ENETRESET)\n"); bprintf ("NET6 : Network is Down (ENETDOWN)\n"); bprintf ("NET7 : Empty Packets\n"); } return; case 1: send_msg(sendloc(mynum), 0, pvis (mynum), LVL_MAX, mynum, NOBODY, "%s\n", build_setin (SETIN_SETQOUT, xx, cur_player->setqout, pname (mynum), NULL, NULL)); send_msg (DEST_ALL, MODE_QUIET, max (pvis (mynum), LVL_WIZARD), LVL_MAX, mynum, NOBODY, "&+B[&+CQuitting Game: &+W%s&+B]\n", pname (mynum)); break; case 2: send_msg (DEST_ALL, MODE_QUIET, max (pvis (mynum), LVL_WIZARD), LVL_MAX, mynum, NOBODY, "&+W[&+CSocket: &+C%s &+whas lost (cut) connection&+W]\n", pname (mynum)); break; case 3: send_msg (DEST_ALL, MODE_QUIET, max (pvis (mynum), LVL_WIZARD), LVL_MAX, mynum, NOBODY, "&+W[&+CSocket: &+C%s &+whas lost link " "&+B(&+WConnection Reset by Peer (ECONNRESET)&+B)&+W]\n", pname (mynum)); break; case 4: send_msg (DEST_ALL, MODE_QUIET, max (pvis (mynum), LVL_WIZARD), LVL_MAX, mynum, NOBODY, "&+W[&+CSocket: &+C%s &+whas lost link " "&+B(&+WNo Route to Host (EHOSTUNREACH)&+B)&+W]\n", pname (mynum)); break; case 5: send_msg (DEST_ALL, MODE_QUIET, max (pvis (mynum), LVL_WIZARD), LVL_MAX, mynum, NOBODY, "&+W[&+CSocket: &+C%s &+whas lost link " "&+B(&+WConnection Timed Out (ETIMEDOUT)&+B)&+W]\n", pname (mynum)); break; case 6: send_msg (DEST_ALL, MODE_QUIET, max (pvis (mynum), LVL_WIZARD), LVL_MAX, mynum, NOBODY, "&+W[&+CSocket: &+C%s &+whas lost link " "&+B(&+WNetwork Unreachable (ENETUNREACH)&+B)&+W]\n", pname (mynum)); break; case 7: send_msg (DEST_ALL, MODE_QUIET, max (pvis (mynum), LVL_WIZARD), LVL_MAX, mynum, NOBODY, "&+W[&+CSocket: &+C%s &+whas lost link " "&+B(&+WNetwork Dropped Connection on Reset (ENETRESET)&+B)&+W]\n", pname (mynum)); break; case 8: send_msg (DEST_ALL, MODE_QUIET, max (pvis (mynum), LVL_WIZARD), LVL_MAX, mynum, NOBODY, "&+W[&+CSocket: &+C%s &+whas lost link " "&+B(&+WNetwork is Down (ENETDOWN)&+B)&+W]\n", pname (mynum)); break; case 9: send_msg (DEST_ALL, MODE_QUIET, max (pvis (mynum), LVL_WIZARD), LVL_MAX, mynum, NOBODY, "&+W[&+CSocket: &+C%s &+whas lost link " "&+B(&+WEmpty Packets&+B)&+W]\n", pname (mynum)); break; default: bprintf ("What exactly are you trying to do?\n"); return; } send_msg (DEST_ALL, MODE_QUIET, max (pvis (mynum), LVL_WIZARD), LVL_MAX, mynum, NOBODY, "&+B[&+W%s &*has departed from the MUD in &+C%s &*(&+C%s&*)&+B]\n", pname (mynum), sdesc (ploc (mynum)), showname (ploc (mynum))); setpvis (mynum, maxlev); bprintf ("You have faked quitting the game.\n"); send_msg (DEST_ALL, MODE_QUIET, max (pvis (mynum), LVL_WIZARD), LVL_MAX, mynum, NOBODY, "&+B[&+CFakequit &*by &+W%s&+B]\n", pname (mynum)); } void siccom (void) { int mob, plr; if (!ptstflg (mynum, PFL_SIC)) { erreval (); return; } if (EMPTY (item1)) { bprintf ("Sic what mobile on what player?\n"); return; } if ((mob = pl1) == -1) { bprintf ("That mobile can't be found.\n"); return; } if (mob < max_players) { bprintf ("You can't sic a player on a player!\n"); return; } if (EMPTY (item2)) { bprintf ("Sic %s on what player?\n", pname (mob)); return; } if ((plr = pl2) == -1) { bprintf ("That player can't be found.\n"); return; } if (plr >= max_players) { bprintf ("You can't sic a mobile on a mobile!\n"); return; } if (!do_okay (mynum, plr, PFL_NOSIC)) { bprintf ("You can't sic a mobile on that person.\n"); return; } if (ltstflg (ploc (plr), LFL_PEACEFUL)) { bprintf ("It's too peaceful where %s is to use sic.\n", pname (plr)); return; } bprintf ("You sic %s on %s.\n", pname (mob), pname (plr)); send_msg (DEST_ALL, MODE_QUIET, LVL_WIZARD, LVL_MAX, mynum, NOBODY, "&+B[&+CSic &*by &+W\001p%s\003&*: &+W\001p%s\003 &*on &+W\001p%s\003&+B]\n", pname (mynum), pname (mob), pname (plr)); setploc (mob, ploc (plr)); sendf (plr, "\001p%s\003 appears and begins to attack you!\n", pname (mob)); setpangry (mob, plr); setpangry (plr, mob); hit_player (mob, plr, -1); } void atviscom (void) { static int vislev[] = { 0, LVL_ISTARI, LVL_ISTARI, LVL_ISTARI, LVL_ISTARI, LVL_ARCHWIZARD, LVL_DEMI, LVL_SHALAFI, LVL_GOD, LVL_CREATOR, LVL_MAX }; int vis, oldvis, maxvis; char com[MAX_COM_LEN]; oldvis = pvis(mynum); maxvis = vislev[wlevel (plev (mynum))]; if (plev (mynum) < LVL_WIZARD) { erreval (); return; } if (brkword () == -1) { bprintf ("What visibility level do you want to use?\n"); return; } if ((vis = atoi (wordbuf)) == 0) { bprintf ("Invalid Visibility Value!\n"); return; } getreinput (com); if (vis > maxvis) { bprintf ("You can't go invisible to that level! Setting you to %d.\n", maxvis); vis = maxvis; } setpvis (mynum, vis); gamecom (com, False); setpvis (mynum, oldvis); } void writelog (void) { char data[MAX_COM_LEN]; if (!ptstflg (mynum, PFL_CANLOG)) { erreval (); return; } getreinput (data); if (EMPTY (data)) { bprintf ("What do you want to log?\n"); return; } mudlog ("%s", data); } void freaqcom (void) { int b; if (plev (mynum) < LVL_WIZARD) { erreval (); return; } if (EMPTY (item1)) { bprintf ("Who is a Frea&+GQ&*?\n"); return; } if ((b = pl1) == -1) { bprintf ("Who is that?\n"); return; } if (b >= max_players) { bprintf ("You can't make a mobile a Frea&+GQ&*!\n"); return; } if (wlevel (plev (mynum)) < wlevel (plev (b))) { bprintf ("You can't make that player a Frea&+GQ&*!\n"); return; } if (b == mynum) { if (ststflg (mynum, SFL_FREAQ)) { bprintf ("You don't feel like a Frea&+GQ&* anymore.\n"); sclrflg (mynum, SFL_FREAQ); psetflg (mynum, PFL_TITLES); } else { bprintf ("You start to Frea&+GQ&*out!\n"); ssetflg (mynum, SFL_FREAQ); pclrflg (mynum, PFL_TITLES); } return; } if (ststflg (b, SFL_FREAQ)) { bprintf ("You return %s to normal.\n", pname (b)); sendf (b, "You don't feel like a Frea&+GQ&* anymore.\n"); send_msg (DEST_ALL, MODE_QUIET, max (LVL_WIZARD, pvis (b)), LVL_MAX, mynum, b, "&+B[&+CFreaQ: &+W\001p%s\003 &*has made &+W%s " "&*normal&+B]\n", pname (mynum), pname (b)); mudlog ("FREAQ: %s made %s normal", pname (mynum), pname (b)); psetflg (b, PFL_TITLES); sclrflg (b, SFL_FREAQ); } else { bprintf ("You turn %s into a FreaQ.\n", pname (b)); sendf (b, "You begin to feel like a Frea&+GQ&*.\n"); send_msg (DEST_ALL, MODE_QUIET, max (LVL_WIZARD, pvis (b)), LVL_MAX, mynum, b, "&+B[&+CFreaQ: &+W\001p%s\003 &*has made &+W%s " "&*a FreaQ&+B]\n", pname (mynum), pname (b)); mudlog ("FREAQ: %s made %s a FreaQ", pname (mynum), pname (b)); pclrflg (b, PFL_TITLES); ssetflg (b, SFL_FREAQ); } }