#include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "emlen.h" int FORCE_LEVEL; extern bool noibm; extern bool kk; extern bool mb; extern bool dbs; ROOM_DATA *find_location (CHAR_DATA * ch, char *arg); void gotoxy (CHAR_DATA *, int, int); void strip_all_affects (CHAR_DATA *); void flags (CHAR_DATA * ch, char *argy) { CHAR_DATA *vict; int col = 0; int i; DEFINE_COMMAND ("flags", flags, POSITION_DEAD, MAX_LEVEL, LOG_NORMAL, "Shows questflags on a given player.") hugebuf_o[0] = '\0'; if ((vict = get_player_world (ch, argy, FALSE)) == NULL) { send_to_char ("That player was not found or is not online.\n\r", ch); return; } for (i = 0; i < MAX_SCRIPT_FLAGS; i++) { if (!vict->pcdata->script_flags[i] || vict->pcdata->script_flags[i][0] == '\0') continue; col++; if (col == 8) { strcat (hugebuf_o, "\n\r"); col = 1; } sprintf (hugebuf_o + strlen (hugebuf_o), "%-8s ", vict->pcdata->script_flags[i]); } strcat (hugebuf_o, "\n\r"); page_to_char (hugebuf_o, ch); return; } void do_unlearn (CHAR_DATA * ch, char *argy) { int i; SPELL_DATA *spell; char general_use[2500]; DEFINE_COMMAND ("unlearn", do_unlearn, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "Allows you to unlearn a specific spell or skill.") if (!argy || argy == "" || argy[0] == '\0') { send_to_char ("Syntax is: Unlearn skill/spellname.\n\r", ch); send_to_char ("Please note you do not get your practices or learns back.\n\r", ch); send_to_char ("For a full reset (getting pracs and learns back), type preset.\n\r", ch); return; } spell = skill_lookup (argy, -1); if (spell == NULL) { send_to_char ("That isn't a valid skill or spell, sorry.\n\r", ch); return; } if (ch->pcdata->learned[spell->gsn] == -100) { send_to_char ("You haven't learned that skill/spell anyway!\n\r", ch); send_to_char ("If it registers as a skill, you probably are wearing some +bonus equip.\n\r", ch); return; } for (i = 0; i < SKILL_COUNT; i++) { SPELL_DATA *spl; if ((spl = skill_lookup (NULL, i)) == NULL) continue; if (ch->pcdata->learned[i] < 0) continue; if (spl->prereq_1 == NULL) continue; if (skill_lookup (spl->prereq_1, -1) == spell) { send_to_char ("You can not unlearn a prerequisite to a spell/skill you already know!\n\r", ch); return; } if (spl->prereq_2 == NULL) continue; if (skill_lookup (spl->prereq_2, -1) == spell) { send_to_char ("You can not unlearn a prerequisite to a spell/skill you already know!\n\r", ch); return; } } ch->pcdata->learned[spell->gsn] = -100; sprintf (general_use, "You have successfully unlearned %s.\n\r", capitalize (spell->spell_funky_name)); send_to_char (general_use, ch); return; } void player_preset (CHAR_DATA * ch, char *argy) { int i; if (str_cmp (argy, "Zlughlkheyn")) { send_to_char ("This command wipes all of your skills, and gives you learns and\n\r", ch); send_to_char ("practices as if you leveled each level from level 1 again.\n\r", ch); send_to_char ("To go ahead with the reset, type preset Zlughlkheyn.\n\r", ch); return; } if (IS_MOB (ch)) { send_to_char ("Not on NPC's.\n\r", ch); return; } /*clear all skills/spells */ for (i = 0; i < SKILL_COUNT; i++) { ch->pcdata->learned[i] = -100; } ch->pcdata->practice = (1 + (((LEVEL (ch) - 1) * (wis_app[get_curr_wis (ch)-1].practice)))); if (LEVEL (ch) < 4) ch->pcdata->learn = (LEVEL (ch) * 2); else ch->pcdata->learn = 6 + (LEVEL (ch) - 3); send_to_char ("Your practices and learns have been reset.\n\r", ch); return; } void do_preset (CHAR_DATA * ch, char *argy) /*BY Owen Emlen */ { CHAR_DATA *victim; char arg1[500]; int i; DEFINE_COMMAND ("preset", do_preset, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This command resets all skills and practices of a target character.") if (LEVEL(ch) < IMM_LEVEL && str_cmp(argy, "Zlughlkheyn")) { send_to_char("You must type preset Zlughlkheyn in order to preset.\n\r", ch); return; } if (!IS_REAL_GOD (ch)) { player_preset (ch, argy); return; } if (argy == "" || argy[0] == '\0') { send_to_char ("Format is PRESET <player>\n\r", ch); return; } argy = one_argy (argy, arg1); if ((victim = get_char_world (ch, arg1)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (IS_MOB(victim)) return; /*clear all skills/spells */ for (i = 0; i < SKILL_COUNT; i++) { victim->pcdata->learned[i] = -100; } victim->pcdata->practice = (1 + (LEVEL (victim) - 1) * (wis_app[get_curr_wis (victim)-1].practice)); if (LEVEL (victim) < 4) victim->pcdata->learn = (LEVEL (victim) * 2); else victim->pcdata->learn = 6 + (LEVEL (victim) - 3); send_to_char ("Practices and learns reset.\n\r", ch); send_to_char ("Your practices have been reset! :)\n\r", victim); return; } /* notify stuff partially lifted, so it probalby doens't work 100% - piece o crap */ void do_notify (CHAR_DATA * ch, char *argy) { char arg1[SML_LENGTH]; char buf[SML_LENGTH]; DEFINE_COMMAND ("notify", do_notify, POSITION_DEAD, MAX_LEVEL, LOG_NORMAL, "Notify HELP for help. This toggles god/immort notification.") if (IS_MOB (ch)) return; smash_tilde (argy); argy = one_argy (argy, arg1); if (arg1[0] == '\0') { if (IS_SET (ch->act, WIZ_NOTIFY)) { send_to_char ("Godinfo/Notification is now OFF.\n\r", ch); REMOVE_BIT (ch->act, WIZ_NOTIFY); return; } else { send_to_char ("Godinfo/Notification is now ON.\n\r", ch); SET_BIT (ch->act, WIZ_NOTIFY); return; } } else if (!str_cmp (arg1, "death") || !str_cmp (arg1, "deaths")) { if (IS_SET (ch->act, WIZ_NOTIFY_DEATH)) { send_to_char ("Death notification is now OFF.\n\r", ch); REMOVE_BIT (ch->act, WIZ_NOTIFY_DEATH); return; } else { send_to_char ("Death notification is now ON.\n\r", ch); SET_BIT (ch->act, WIZ_NOTIFY_DEATH); return; } } else if (!str_cmp (arg1, "bug") || !str_cmp (arg1, "bugs")) { if (IS_SET (ch->act, WIZ_NOTIFY_BUG)) { send_to_char ("Bug notification is now OFF.\n\r", ch); REMOVE_BIT (ch->act, WIZ_NOTIFY_BUG); return; } else { send_to_char ("Bug notification is now ON.\n\r", ch); SET_BIT (ch->act, WIZ_NOTIFY_BUG); return; } } else if (!str_cmp (arg1, "log") || !str_cmp (arg1, "logs")) { if (IS_SET (ch->act, WIZ_NOTIFY_LOG)) { send_to_char ("Log notification is now OFF.\n\r", ch); REMOVE_BIT (ch->act, WIZ_NOTIFY_LOG); return; } else { send_to_char ("Log notification is now ON.\n\r", ch); SET_BIT (ch->act, WIZ_NOTIFY_LOG); if (IS_SET (ch->act, WIZ_NOTIFY_BUG)) do_notify (ch, "bug"); return; } } else if (!str_cmp (arg1, "login") || !str_cmp (arg1, "logins")) { if (IS_SET (ch->act, WIZ_NOTIFY_LOGIN)) { send_to_char ("Login notify is now OFF.\n\r", ch); REMOVE_BIT (ch->act, WIZ_NOTIFY_LOGIN); return; } else { send_to_char ("Login notify is now ON.\n\r", ch); SET_BIT (ch->act, WIZ_NOTIFY_LOGIN); return; } } else if (!str_cmp (arg1, "?") || !str_cmp (arg1, "help") || !str_cmp (arg1, "list")) { send_to_char ("Typing NOTIFY <option> toggles the notification on and off.\n\r", ch); send_to_char ("NOTIFY alone toggles notification off/on.\n\r", ch); send_to_char ("NOTIFY LIST and NOTIFY HELP all list this display.\n\r", ch); sprintf (buf, "Login notify : %s\n\r", IS_SET (ch->act, WIZ_NOTIFY_LOGIN) ? "ON" : "OFF"); send_to_char (buf, ch); sprintf (buf, "Bugs notify : %s\n\r", IS_SET (ch->act, WIZ_NOTIFY_BUG) ? "ON" : "OFF"); send_to_char (buf, ch); sprintf (buf, "Logs notify : %s\n\r", IS_SET (ch->act, WIZ_NOTIFY_LOG) ? "ON" : "OFF"); send_to_char (buf, ch); sprintf (buf, "Death notify : %s\n\r", IS_SET (ch->act, WIZ_NOTIFY_DEATH) ? "ON" : "OFF"); send_to_char (buf, ch); sprintf (buf, "The notify command is currently %s.\n\r", IS_SET (ch->act, WIZ_NOTIFY) ? "active" : "inactive"); send_to_char (buf, ch); return; } else { send_to_char ("Huh?\n\r", ch); return; } return; } void do_beamin (CHAR_DATA * ch, char *argy) { DEFINE_COMMAND ("beamin", do_beamin, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "This command changes what people see when you trans into the room.") if (IS_PLAYER (ch)) { smash_tilde (argy); free_string (ch->pcdata->beamin); ch->pcdata->beamin = str_dup (argy); send_to_char ("Set.\n\r", ch); } return; } void do_beamout (CHAR_DATA * ch, char *argy) { DEFINE_COMMAND ("beamout", do_beamout, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "This command changes what people see when you trans out of the room.") if (IS_PLAYER (ch)) { smash_tilde (argy); free_string (ch->pcdata->beamout); ch->pcdata->beamout = str_dup (argy); send_to_char ("Set.\n\r", ch); } return; } void do_disconnect (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; DESCRIPTOR_DATA *d; CHAR_DATA *victim; DEFINE_COMMAND ("disconnect", do_disconnect, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This will cause the person to 'drop link'.") if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0') { send_to_char ("Disconnect who?\n\r", ch); return; } if ((victim = get_char_world (ch, arg)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } for (d = descriptor_list; d != NULL; d = d->next) { if (d == victim->desc) { close_socket (d); send_to_char ("Ok.\n\r", ch); return; } } return; } void do_echo (CHAR_DATA * ch, char *argy) { DESCRIPTOR_DATA *d; DEFINE_COMMAND ("echo", do_echo, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This command prints a message to the entire mud.") if (argy[0] == '\0') { send_to_char ("Echo what?\n\r", ch); return; } for (d = descriptor_list; d; d = d->next) { if ((d->connected == CON_PLAYING || d->connected == CON_MEDITOR || d->connected == CON_OEDITOR || d->connected == CON_REDITOR) && d->character) { send_to_char (anseval (argy, d->character), d->character); send_to_char ("\e[0m\n\r", d->character); } } return; } void do_arenaecho (CHAR_DATA * ch, char *argy, bool batspam) { DESCRIPTOR_DATA *d; if (argy[0] == '\0') { send_to_char ("Echo what?\n\r", ch); return; } for (d = descriptor_list; d; d = d->next) { if (!d->character) continue; if (IS_MOB (d->character)) continue; if (CHALLENGE (d->character) == 10) continue; if (d->character && d->character->pcdata->arena_msg == 0) continue; if (d->character && d->character->pcdata->arena_msg == 2 && batspam == TRUE) continue; if (d->character->position == POSITION_FIGHTING && number_range (1, 2) == 1) continue; if (d->connected == CON_PLAYING) { send_to_char (anseval (argy, d->character), d->character); send_to_char ("\e[0m\n\r", d->character); } } return; } void do_recho (CHAR_DATA * ch, char *argy) { DESCRIPTOR_DATA *d; DEFINE_COMMAND ("recho", do_recho, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "This shows a message to everyone in the room.") if (argy[0] == '\0') { send_to_char ("Recho what?\n\r", ch); return; } for (d = descriptor_list; d; d = d->next) { if (d->connected == CON_PLAYING && d->character->in_room == ch->in_room) { send_to_char (anseval (argy, d->character), d->character); send_to_char ("\e[0m\n\r", d->character); } } return; } ROOM_DATA * find_location (CHAR_DATA * ch, char *arg) { CHAR_DATA *victim; SINGLE_OBJECT *obj; if (is_number (arg)) return get_room_index (atoi (arg)); if ((victim = get_char_world (ch, arg)) != NULL) return victim->in_room; if ((obj = get_obj_world (ch, arg)) != NULL) return obj->in_room; return NULL; } void do_transfer (CHAR_DATA * ch, char *argy) { char arg1[SML_LENGTH]; char arg2[SML_LENGTH]; CHAR_DATA *t; ROOM_DATA *location; DESCRIPTOR_DATA *d; CHAR_DATA *victim; DEFINE_COMMAND ("transfer", do_transfer, POSITION_DEAD, MAX_LEVEL, LOG_NORMAL, "This transfers someone to a room specified, and more...") argy = one_argy (argy, arg1); one_argy (argy, arg2); if (arg1[0] == '\0') { send_to_char ("Transfer whom (and where)?\n\r", ch); return; } if (!str_cmp (arg1, "all")) { bool bground; bground = FALSE; if (UPPER (arg2[0]) == 'B') bground = TRUE; for (d = descriptor_list; d != NULL; d = d->next) { if (d->connected == CON_PLAYING && d->character->pcdata && IS_PLAYER (d->character) && d->character != ch && d->character->in_room != NULL) { char buf[STD_LENGTH]; if (bground && d->character->pcdata->level > IMM_LEVEL) continue; if (!bground) { sprintf (buf, "%s %s", NAME (d->character), arg2); } else { char buf2[500]; if (!d->character->pcdata->bgf) continue; if (d->character->in_room->vnum < 1000 && (d->character->in_room->vnum < 100 || d->character->in_room->vnum > (100+NUM_ALIGN-1))) { send_to_char ("You cannot be in the battleground since you are in an invalid part of the world.\n\r", d->character); continue; } if (LEVEL (d->character) < min_level || LEVEL (d->character) > max_level) continue; d->character->pcdata->bgf = FALSE; if (bg_multiplier && bg_multiplier == 0) sprintf (buf, "%s %d", NAME (d->character), number_range (BATTLEGROUND_START_VNUM, BATTLEGROUND_END_VNUM - 1)); else sprintf (buf, "%s %d", NAME (d->character), number_range (BATTLEGROUND_START_VNUM + bg_multiplier, BATTLEGROUND_END_VNUM + bg_multiplier)); sprintf (buf2, "%s", NAME (d->character)); do_restore (ch, buf2); } do_transfer (ch, buf); } } return; } if (!str_cmp (arg1, "all_in_room")) { for (d = descriptor_list; d != NULL; d = d->next) { if (d->connected == CON_PLAYING && d->character->pcdata && IS_PLAYER (d->character) && d->character != ch && d->character->in_room != NULL && d->character->in_room == ch->in_room) { char buf[STD_LENGTH]; sprintf (buf, "%s %s", NAME (d->character), arg2); do_transfer (ch, buf); } } return; } if (arg2[0] == '\0') { location = ch->in_room; } else { if ((location = find_location (ch, arg2)) == NULL) { if ((location = find_room_tag (argy)) == NULL) { send_to_char ("No such location.\n\r", ch); return; } } } victim = NULL; if (allow_anything) { for (t = char_list; t != NULL; t = t->next) { if (!str_cmp (RNAME (t), arg1)) { victim = t; break; } } if (!victim) return; } else if ((victim = get_char_world_2 (ch, arg1)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (FIGHTING (victim) != NULL) stop_fighting (FIGHTING (victim), TRUE); stop_fighting (victim, TRUE); /* act ("$n disappears in a cloud of smoke.", victim, NULL, NULL,TO_ROOM); */ char_from_room (victim); char_to_room (victim, location); /* act ("$n arrives in a dazzling white flash.", victim, NULL, NULL,TO_ROOM); */ if (IS_PLAYER (ch) && ch != victim) act ("You have been magically transferred.", ch, NULL, victim, TO_VICT); do_look (victim, "auto"); if (IS_PLAYER (ch) && LEVEL (ch) > IMM_LEVEL) send_to_char ("Ok.\n\r", ch); return; } void do_mat (CHAR_DATA * ch, char *argy) { int i, j, hash; char arg[SML_LENGTH]; char arg2[SML_LENGTH]; ROOM_DATA* location; ROOM_DATA *original, *roomto; DEFINE_COMMAND ("mat", do_mat, POSITION_DEAD, IMM_LEVEL+1, LOG_NORMAL, "This command performs multiple commands at the locations specified.") if (IS_MOB (ch)) return; argy = one_argy (argy, arg); argy = one_argy (argy, arg2); if (arg[0] == '\0' || argy[0] == '\0') { send_to_char ("At where what?\n\r", ch); return; } if ((location = find_location (ch, arg)) == NULL) { if ((location = find_room_tag (arg)) == NULL) { send_to_char ("No such location.\n\r", ch); return; } } i = atoi (arg); j = atoi (arg2); if ((j - i > IMM_LEVEL) || (j - i < 1)) { send_to_char ("Invalid argument range!\n\r", ch); return; } original = ch->in_room; for (hash = 0; hash < HASH_MAX; hash++) { for (roomto = room_hash[hash]; roomto != NULL; roomto = roomto->next) { if (roomto->vnum <= j && roomto->vnum >= i) { char_from_room (ch); /*u_ */ char_to_room (ch, roomto); super_interpret (ch, argy); } } } char_from_room (ch); /*u_ */ char_to_room (ch, original); return; } void do_at (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; ROOM_DATA *location; ROOM_DATA *original; DEFINE_COMMAND ("at", do_at, POSITION_DEAD, MAX_LEVEL, LOG_NORMAL, "This command performs a command at the location specified.") if (IS_MOB (ch)) return; argy = one_argy (argy, arg); if (arg[0] == '\0' || argy[0] == '\0') { send_to_char ("At where what?\n\r", ch); return; } if ((location = find_location (ch, arg)) == NULL) { if ((location = find_room_tag (arg)) == NULL) { send_to_char ("No such location.\n\r", ch); return; } } original = ch->in_room; char_from_room (ch); /*u_ */ char_to_room (ch, location); gotoxy (ch, 1, ch->pcdata->pagelen); super_interpret (ch, argy); char_from_room (ch); /*u_ */ char_to_room (ch, original); return; } void do_goto (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; DEFINE_COMMAND ("goto", do_goto, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "This command beams you to the location specified.") if (argy[0] == '\0') { send_to_char ("Goto where?\n\r", ch); return; } strcpy (arg, "self "); strcat (arg, argy); do_transfer (ch, arg); return; } void do_rstat (CHAR_DATA * ch, char *argy) { extern char *const dir_name[]; int sectr = 0; char buf[STD_LENGTH]; char arg[SML_LENGTH]; TRACK_DATA *tr; bool full = FALSE; ROOM_DATA *location; int door; DEFINE_COMMAND ("rstat", do_rstat, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "This command shows the 'redit' room stats.") if (IS_MOB (ch)) return; if (ch != NULL && ch->in_room != NULL) sectr = ch->in_room->sector_type; one_argy (argy, arg); location = (arg[0] == '\0') ? ch->in_room : find_location (ch, arg); if (!str_prefix ("full", arg)) { location = ch->in_room; full = TRUE; } if (location == NULL) { send_to_char ("No such location.\n\r", ch); return; } sprintf (buf, "Name: '%s'\n\rArea: [%3d] '%s'\n\r", location->name, location->area->vnum, location->area->name); send_to_char (buf, ch); sprintf (buf, "Vnum: %d Sector: (%d) %s - %s\n\rLight:%d. Pcs: %d CmdObj: %d\n\r", location->vnum, location->sector_type, sectors[location->sector_type].name_seen, sectors[location->sector_type].desc, location->light, (location->more ? location->more->pcs : 0), location->command_objs); send_to_char (buf, ch); if (location->sector_type == SECT_CAPTURE) { sprintf (buf, "Capture vnum range: %d - %d\n\r" "Current controlling align: %d\n\r" "Bonus string for align: %s\n\r", location->cvnuml, location->cvnumh, location->calign, location->cbonusstr); send_to_char (buf, ch); } if (location->more && IS_SET (location->room_flags2, ROOM2_MOVING)) { sprintf (buf, "Autotransport direction: %s\n\r", dir_name[location->more->move_dir]); send_to_char (buf, ch); sprintf (buf, "Move message:\n\r%s", location->more->move_message); send_to_char (buf, ch); } sprintf (buf, "Room flags: %s\n\r", room_bit_name (location->room_flags)); send_to_char (buf, ch); sprintf (buf, "Room flags2: %s\n\r", room_bit_name2 (location->room_flags2)); send_to_char (buf, ch); if (location->more && location->more->extra_descr != NULL) { DESCRIPTION_DATA *ed; send_to_char ("Extra description keywords: ", ch); for (ed = location->more->extra_descr; ed; ed = ed->next) { send_to_char ("'", ch); send_to_char (ed->keyword, ch); send_to_char ("'", ch); } send_to_char ("\n\r", ch); } for (door = 0; door <= 5; door++) { EXIT_DATA *pexit; if ((pexit = location->exit[door]) != NULL) { if (pexit->d_info) sprintf (buf, "Door: %5s To: %d Key: %ld Exit flags: %d(%d) '%s'\n\r", dir_name[door], (ROOM_DATA *) pexit->to_room != NULL ? ((ROOM_DATA *) pexit->to_room)->vnum : 0, pexit->d_info->key, pexit->d_info->exit_info, pexit->d_info->rs_flags, (pexit->d_info->keyword != NULL) ? pexit->d_info->keyword : ""); else sprintf (buf, "Door: %5s To: %d\n\r", dir_name[door], (ROOM_DATA *) pexit->to_room != NULL ? ((ROOM_DATA *) pexit->to_room)->vnum : 0); send_to_char (buf, ch); if (pexit->d_info) { if (pexit->d_info->str != 30 && pexit->d_info->str != 0) { sprintf (buf, "\tStr: %d Max Str: %d\n\r", pexit->d_info->str, pexit->d_info->maxstr); send_to_char (buf, ch); } } if (pexit->d_info && pexit->d_info->description != NULL && pexit->d_info->description[0] != '\0') send_to_char (pexit->d_info->description, ch); } } if (full) { for (tr = location->tracks; tr != NULL; tr = tr->next_track_in_room) { char bugr[500]; sprintf (bugr, "%s: entered %s, left %s.\n\r", (IS_PLAYER (tr->ch) ? NAME (tr->ch) : tr->ch->pIndexData->short_descr), (tr->dir_came == 10 ? "None" : dir_name[tr->dir_came]), (tr->dir_left == 10 ? "None" : dir_name[tr->dir_left])); send_to_char (bugr, ch); } } return; } void do_ostat (CHAR_DATA * ch, char *argy) { char buf[STD_LENGTH]; char arg[SML_LENGTH]; AFFECT_DATA *paf; SINGLE_OBJECT *obj; DEFINE_COMMAND ("ostat", do_ostat, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "This command shows 'oedit' info on the object specified.") if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0') { send_to_char ("Ostat what?\n\r", ch); return; } if ((obj = get_obj_world (ch, arg)) == NULL) { send_to_char ("Nothing like that in hell, earth, or heaven.\n\r", ch); return; } if (LEVEL (ch) > IMM_LEVEL && LEVEL (ch) < MAX_LEVEL && obj->pIndexData->area->open != 0) { send_to_char ("Due to cheating, builders cannot ostat objects in opened areas.\n\r", ch); return; } sprintf (buf, "Name: '%s'.\n\rArea: [%3d] '%s'.\n\rFile: '%s'.\n\r", obj->pIndexData->name, obj->pIndexData->area->vnum, obj->pIndexData->area->name, obj->pIndexData->area->filename); send_to_char (buf, ch); sprintf (buf, "Vnum: %d. Type: %s.\n\r", obj->pIndexData->vnum, item_type_name (obj->pIndexData->item_type)); send_to_char (buf, ch); sprintf (buf, "Short description: %s\e[0m\n\rLong description: %s\e[0m", OOSTR (obj, short_descr), OOSTR (obj, description)); send_to_char (buf, ch); sprintf (buf, "Wear bits: %s.\n\r Extra bits: %s.\n\r", wear_bit_name (obj->pIndexData->wear_flags), extra_bit_name (obj->pIndexData->extra_flags)); send_to_char (buf, ch); sprintf (buf, "Number: %d/%d. Weight: %d/%d.\n\r", 1, get_obj_number (obj), obj->pIndexData->weight, get_obj_weight (obj)); send_to_char (buf, ch); sprintf (buf, "Cost: %d. Timer: %d.\n\r", obj->cost, obj->timer); send_to_char (buf, ch); sprintf (buf, "In room: %d. In object: %s. Carried by: %s. Wear_loc: %s.\n\r", obj->in_room == NULL ? 0 : obj->in_room->vnum, obj->in_obj == NULL ? "(none)" : OOSTR (obj->in_obj, short_descr), obj->carried_by == NULL ? "(none)" : NAME (obj->carried_by), wear_loc_name (obj->wear_loc)); send_to_char (buf, ch); if (obj->pIndexData->extra_descr != NULL) { DESCRIPTION_DATA *ed; send_to_char ("Extra description keywords: '", ch); for (ed = obj->pIndexData->extra_descr; ed != NULL; ed = ed->next) { send_to_char (ed->keyword, ch); if (ed->next != NULL) send_to_char (" ", ch); } for (ed = obj->pIndexData->extra_descr; ed != NULL; ed = ed->next) { send_to_char (ed->keyword, ch); if (ed->next != NULL) send_to_char (" ", ch); } send_to_char ("'.\n\r", ch); } for (paf = obj->pIndexData->affected; paf != NULL; paf = paf->next) { sprintf (buf, "Affects %s by %d.\n\r", affect_loc_name (paf->location), paf->modifier); send_to_char (buf, ch); } return; } void do_mstat (CHAR_DATA * ch, char *argy) { char buf[STD_LENGTH]; char arg[SML_LENGTH]; AFFECT_DATA *paf; CHAR_DATA *victim; SPELL_DATA *spell; DEFINE_COMMAND ("mstat", do_mstat, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "Shows a non-floating mob data summary of the vnum specified.") if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0') { send_to_char ("Mstat whom?\n\r", ch); return; } if ((victim = get_char_world (ch, arg)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (LEVEL (ch) > IMM_LEVEL && LEVEL (ch) < MAX_LEVEL && victim->in_room && victim->in_room->area->open != 0) { send_to_char ("Due to cheating, builders cannot mstat mobs in opened areas.\n\r", ch); return; } if (IS_PLAYER (victim)) { send_to_char ("Not on PC's.\n\r", ch); return; } sprintf (buf, "Name: '%s'.\n\rArea: [%3d] '%s'.\n\r", RNAME (victim), victim->pIndexData->area->vnum, victim->pIndexData->area->name); send_to_char (buf, ch); sprintf (buf, "Height: \x1B[1;37m%d\x1B[37;0m (%d' %d\")\n\r", victim->height, victim->height / 12, victim->height % 12); send_to_char (buf, ch); sprintf (buf, "Vnum: %d Sex: %s In Room: %d ", victim->pIndexData->vnum, SEX (victim) == SEX_MALE ? "male" : SEX (victim) == SEX_FEMALE ? "female" : "neutral", victim->in_room == NULL ? 0 : victim->in_room->vnum); send_to_char (buf, ch); sprintf (buf, "Hp: %ld/%ld Moves: %d/%d\n\r", victim->hit, victim->max_hit, victim->move, victim->max_move); send_to_char (buf, ch); /*sprintf( buf, "Str: %d Int: %d Wis: %d Dex: %d Con: %d\n\r", get_curr_str( victim ), get_curr_int( victim ), get_curr_wis( victim ), get_curr_dex( victim ), get_curr_con( victim ) ); send_to_char( buf, ch ); */ sprintf (buf, "Level: %d Alignment: %d AC: %d Coins: %d Exp: %ld\n\r", LEVEL (victim), ALIGN (victim), GET_AC (victim), tally_coins (victim), victim->exp); send_to_char (buf, ch); sprintf (buf, "Hitroll: %d Damroll: %d Position: %d\n\r", GET_HITROLL (victim) + victim->pIndexData->hitroll, GET_DAMROLL (victim), victim->position); send_to_char (buf, ch); if (victim->position == POSITION_FIGHTING) { sprintf (buf, "Fighting: %s.\n\r", FIGHTING (victim) ? NAME (victim->fgt->fighting) : "(none)"); send_to_char (buf, ch); } sprintf (buf, "Act: \x1B[1;37m%s\x1B[37;0m Act3: \x1B[1;37m%s\x1B[37;0m\n\r", act_bit_name (victim->act), act3_bit_name (victim->pIndexData->act3)); send_to_char (buf, ch); sprintf (buf, "Mobtype: %s ", mob_type_name (victim->pIndexData->mobtype)); send_to_char (buf, ch); if (HUNTING (victim) != NULL) { sprintf (buf, "Hunting: %s ", victim->fgt->hunting); send_to_char (buf, ch); } sprintf (buf, "Master: %s Leader: %s\n\rAffected by: %s%s.\n\r", MASTER (victim) ? NAME (victim->fgt->master) : "(none)", LEADER (victim) ? NAME (victim->fgt->leader) : "(none)", affect_bit_name (victim->affected_by), affect_bit_name_two (victim->more_affected_by)); send_to_char (buf, ch); sprintf (buf, "Short description: %s\n\rLong description: %s\n\r", SD (victim), LD (victim)); send_to_char (buf, ch); if (victim->pIndexData->spec_fun != NULL) { sprintf (buf, "Spec fun: %s.\n\r", victim->pIndexData->spec_name); send_to_char (buf, ch); } if (victim->pIndexData->alt_vnum != 0) { sprintf (buf, "Alter mob vnum: %d.\n\r", victim->pIndexData->alt_vnum); send_to_char (buf, ch); } for (paf = victim->affected; paf != NULL; paf = paf->next) { spell = skill_lookup (NULL, (int) paf->type); if (spell == NULL) continue; sprintf (buf, "Spell: '%s' modifies %s by %d for %d hours with bits %s and %s.\n\r", spell->spell_funky_name, affect_loc_name (paf->location), paf->modifier, paf->duration, affect_bit_name (paf->bitvector), affect_bit_name_two (paf->bitvector2)); send_to_char (buf, ch); } return; } void do_mfind (CHAR_DATA * ch, char *argy) { char arg1[SML_LENGTH]; char arg2[SML_LENGTH]; char arg3[SML_LENGTH]; int slen = 0; MOB_PROTOTYPE *pMobIndex; char oneline[500]; bool fRange = FALSE; bool fArea = FALSE; bool fName = FALSE; int range1 = 0; int range2 = 0; AREA_DATA *pArea; char name[SML_LENGTH]; int vnum; bool found = FALSE; char typename[40]; DEFINE_COMMAND ("mfind", do_mfind, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "Used to find mob prototypes (vnums).") pArea = ch->in_room->area; hugebuf_o[0] = '\0'; typename[0] = '\0'; if (IS_MOB (ch)) return; name[0]='\0'; argy = one_argy (argy, arg1); argy = one_argy (argy, arg2); argy = one_argy (argy, arg3); if (arg1[0] == '\0') { send_to_char ("Syntax: mfind all\n\r", ch); send_to_char (" mfind [name, area] [num1 num2]\n\r", ch); return; } if (is_number (arg1) && is_number (arg2)) { fRange = TRUE; range1 = atoi (arg1); range2 = atoi (arg2); if (!str_cmp (arg3, "area")) fArea = TRUE; else { if (!str_cmp (arg3, "all")) { fRange = FALSE; fName = FALSE; fArea = FALSE; } else { fName = TRUE; strcpy (name, arg3); } } } else { if (is_number (arg2) && is_number (arg3)) { fRange = TRUE; range1 = atoi (arg2); range2 = atoi (arg3); } if (!str_cmp (arg1, "area")) fArea = TRUE; else { if (!str_cmp (arg1, "all")) { fRange = FALSE; fName = FALSE; fArea = FALSE; } else { fName = TRUE; strcpy (name, arg1); } } } if (range1 > range2 && fRange) { vnum = range1; range1 = range2; range2 = vnum; } if (range2 > top_vnum_mob || !fRange) range2 = top_vnum_mob; for (vnum = range1; vnum <= range2; vnum++) { if ((pMobIndex = get_mob_index (vnum)) != NULL && (is_name (name, pMobIndex->name) || !fName) && (pMobIndex->area == pArea || !fArea)) { if (pMobIndex->mobtype == -1) strcpy (typename, "\e[1mundefined\e[0m"); else if (pMobIndex->mobtype != MOB_OTHER && mob_type[pMobIndex->mobtype] != NULL) strcpy (typename, mob_type[pMobIndex->mobtype]); else strcpy (typename, "other"); found = TRUE; sprintf (oneline, "[%5d %3d] %-25s%s %-25s %-10s\n\r", vnum, pMobIndex->level, pMobIndex->short_descr, get_ansi_spaces (pMobIndex->short_descr), !fArea ? pMobIndex->name : "", typename); sprintf (hugebuf_o + slen, "%s", oneline); slen += strlen (oneline); if (slen > 69500) { hugebuf_o[69500] = '\0'; break; } } } if (!found) send_to_char ("Nothing like that in hell, earth, or heaven.\n\r", ch); if (hugebuf_o[0] != '\0') page_to_char (hugebuf_o, ch); return; } void do_ofind (CHAR_DATA * ch, char *argy) { char arg1[SML_LENGTH]; char arg2[SML_LENGTH]; char arg3[SML_LENGTH]; OBJ_PROTOTYPE *pObjIndex; bool fRange = FALSE; bool fArea = FALSE; bool fName = FALSE; int slen = 0; char oneline[500]; int range1 = 0; int range2 = 0; AREA_DATA *pArea; char name[SML_LENGTH]; int vnum; bool found = FALSE; DEFINE_COMMAND ("ofind", do_ofind, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "This command is used to find object prototypes (vnums).") pArea = ch->in_room->area; name[0]='\0'; if (IS_MOB (ch)) return; hugebuf_o[0] = '\0'; argy = one_argy (argy, arg1); argy = one_argy (argy, arg2); argy = one_argy (argy, arg3); if (arg1[0] == '\0') { send_to_char ("Syntax: ofind all\n\r", ch); send_to_char (" ofind [name, area] [num1 num2]\n\r", ch); return; } if (!str_cmp(arg1, "sky") || !str_cmp(arg1, "spiked")) { send_to_char(" For some reason ofind sky and spiked crash it.\n\r", ch); return; } if (!str_cmp(arg1,"weapons")) { OBJ_PROTOTYPE *op; int i; int ln; sprintf(hugebuf_o,"%5s %-25s %-6s %-10s %5s %s\n\r", "Vnum","Weapon Name","Damage","Type","Cost","MoreAff"); for (i=0; i<HASH_MAX; i++) { for (op=obj_index_hash[i];op!=NULL;op=op->next) { if (op->item_type!=ITEM_WEAPON) continue; ln=strlen(hugebuf_o); if (ln>69500) { goto duinnn; } sprintf(hugebuf_o+ln,"%-5d %-25s %2dd%-2d %-10s %5d %2s\n\r", op->vnum,strip_ansi_codes(op->short_descr), op->value[7], op->value[8], (IS_SET(op->extra_flags,ITEM_CONCUSSION)?"Concussion": (IS_SET(op->extra_flags,ITEM_WHIP)?"Whipping": (IS_SET(op->extra_flags,ITEM_HEAVY_SLASH)?"Hvy_slash": (IS_SET(op->extra_flags,ITEM_LIGHT_SLASH)?"Lgt_slash": (IS_SET(op->extra_flags,ITEM_PIERCE)?"Piercing": (IS_SET(op->extra_flags,ITEM_SLASHING)?"Slashing": "unknown")))))),op->cost, (op->affected?"Y":"N")); } } duinnn: page_to_char(hugebuf_o,ch); return; } if (!str_cmp(arg1,"armors")) { int ln; OBJ_PROTOTYPE *op; int i; sprintf(hugebuf_o,"%5s %-25s %-17s %5s %s\n\r", "Vnum","Armor Name","L B H A Pd Sr Pr","Cost","MoreAff"); for (i=0; i<HASH_MAX; i++) { for (op=obj_index_hash[i];op!=NULL;op=op->next) { if (op->item_type!=ITEM_ARMOR) continue; ln=strlen(hugebuf_o); if (ln>69500) { goto dunnn; } sprintf(hugebuf_o+ln,"%-5d %-25s %-2d%-2d%-2d%-2d%-3d%-3d%-3d %5d %2s\n\r", op->vnum,strip_ansi_codes(op->short_descr), op->value[0], op->value[1], op->value[2], op->value[3], op->value[4], op->value[5], op->value[8], op->cost, (op->affected?"Y":"N")); } } dunnn: page_to_char(hugebuf_o,ch); return; } if (is_number (arg1) && is_number (arg2)) { fRange = TRUE; range1 = atoi (arg1); range2 = atoi (arg2); if (!str_cmp (arg3, "area")) fArea = TRUE; else { if (!str_cmp (arg3, "all")) { fRange = FALSE; fName = FALSE; fArea = FALSE; } else { fName = TRUE; strcpy (name, arg3); } } } else { if (is_number (arg2) && is_number (arg3)) { fRange = TRUE; range1 = atoi (arg2); range2 = atoi (arg3); } if (!str_cmp (arg1, "area")) fArea = TRUE; else { if (!str_cmp (arg1, "all")) { fRange = FALSE; fName = FALSE; fArea = FALSE; } else { fName = TRUE; strcpy (name, arg1); } } } if (range1 > range2 && fRange) { vnum = range1; range1 = range2; range2 = vnum; } if (range2 > top_vnum_obj || !fRange) range2 = top_vnum_obj; for (vnum = range1; vnum <= range2; vnum++) { if ((pObjIndex = get_obj_index (vnum)) != NULL && (is_name (name, pObjIndex->name) || !fName) && (pObjIndex->area == pArea || !fArea)) { found = TRUE; sprintf (oneline, "[%5d %3d] %-32s\e[0m%s %-28s\n\r", vnum, pObjIndex->item_type, pObjIndex->short_descr, get_ansi_spaces (pObjIndex->short_descr), !fArea ? pObjIndex->name : ""); sprintf (hugebuf_o + slen, "%s", oneline); slen += strlen (oneline); if (slen > 69500) { hugebuf_o[69500] = '\0'; break; } } } if (hugebuf_o[0] != '\0') page_to_char (hugebuf_o, ch); if (!found) send_to_char ("Nothing like that in hell, earth, or heaven.\n\r", ch); return; } void do_rfind (CHAR_DATA * ch, char *argy) { char arg1[SML_LENGTH]; char arg2[SML_LENGTH]; char arg3[SML_LENGTH]; ROOM_DATA *oneroom; bool fRange = FALSE; bool fArea = FALSE; bool fName = FALSE; int slen = 0; char oneline[500]; int range1 = 0; int range2 = 0; AREA_DATA *pArea; char name[SML_LENGTH]; int vnum; bool found = FALSE; DEFINE_COMMAND ("rfind", do_rfind, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "This command is used to find rooms (vnums).") pArea = ch->in_room->area; if (IS_MOB (ch)) return; hugebuf_o[0] = '\0'; argy = one_argy (argy, arg1); argy = one_argy (argy, arg2); argy = one_argy (argy, arg3); if (arg1[0] == '\0') { send_to_char (" rfind [name, area] [num1 num2]\n\r", ch); return; } if (!str_cmp (arg1, "tags")) { int hash; ROOM_DATA *rid; for (hash = 0; hash < HASH_MAX; hash++) { for (rid = room_hash[hash]; rid != NULL; rid = rid->next) { char *t; for (t = rid->name; *t != '\0'; t++) { if (*t == ';') { sprintf (oneline, "\x1B[0m[%5d] %s SectorType> %s\n\r", rid->vnum, show_room_name (ch, rid->name),(sectors[rid->sector_type].name_seen)); sprintf (hugebuf_o + slen, "%s", oneline); slen += strlen (oneline); } } } } if (hugebuf_o[0] != '\0') page_to_char (hugebuf_o, ch); return; } else if (is_number (arg1) && is_number (arg2)) { fRange = TRUE; range1 = atoi (arg1); range2 = atoi (arg2); if (!str_cmp (arg3, "area") || arg3[0] == '\0') fArea = TRUE; else { if (!str_cmp (arg3, "all")) { fRange = FALSE; fName = FALSE; fArea = FALSE; } else { fName = TRUE; strcpy (name, arg3); } } } else { if (is_number (arg2) && is_number (arg3)) { fRange = TRUE; range1 = atoi (arg2); range2 = atoi (arg3); } if (!str_cmp (arg1, "area")) fArea = TRUE; else { if (!str_cmp (arg1, "all")) { fRange = FALSE; fName = FALSE; fArea = FALSE; } else { fName = TRUE; strcpy (name, arg1); } } } if (range1 > range2 && fRange) { vnum = range1; range1 = range2; range2 = vnum; } if (range2 > top_vnum_room || !fRange) range2 = top_vnum_room; for (vnum = range1; vnum <= range2; vnum++) { if ((oneroom = get_room_index (vnum)) != NULL && (!fName || is_name (name, oneroom->name)) && (oneroom->area == pArea || !fArea)) { found = TRUE; sprintf (oneline, "[%5d %s] %-20s---%s\n\r", vnum, DESCRIPTED (oneroom) ? "D" : "-", oneroom->name, sectors[oneroom->sector_type].name_seen ); sprintf (hugebuf_o + slen, "%s", oneline); slen += strlen (oneline); if (slen > 69500) { hugebuf_o[69500] = '\0'; break; } } } if (!found) send_to_char ("Nothing like that in hell, earth, or heaven.\n\r", ch); if (hugebuf_o[0] != '\0') page_to_char (hugebuf_o, ch); return; } void do_mwhere (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; int slen = 0; char oneline[500]; CHAR_DATA *victim; bool found; DEFINE_COMMAND ("mwhere", do_mwhere, POSITION_DEAD, MAX_LEVEL, LOG_NORMAL, "This command is used to find actual mobs in the world.") hugebuf_o[0] = '\0'; if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0') { send_to_char ("Mwhere whom?\n\r", ch); return; } found = FALSE; for (victim = char_list; victim != NULL; victim = victim->next) { if (IS_MOB (victim) && victim->in_room != NULL && is_name (arg, NAME (victim))) { found = TRUE; sprintf (oneline, "[%5d] %-28s%s [%5d] %s\n\r", victim->pIndexData->vnum, SD (victim), get_ansi_spaces (SD (victim)), victim->in_room->vnum, victim->in_room->name); sprintf (hugebuf_o + slen, "%s", oneline); slen += strlen (oneline); if (slen > 69500) { hugebuf_o[69500] = '\0'; break; } } } if (!found) act ("You didn't find any $T.", ch, NULL, arg, TO_CHAR); if (hugebuf_o[0] != '\0') page_to_char (hugebuf_o, ch); return; } void show_guilds (CHAR_DATA * ch, int bit) { if (bit != 0) { char buf[500]; int i=0; bool prev= FALSE; if (IS_MOB(ch)) return; sprintf(buf, "Guild(s): "); for (i = 0; str_cmp(guild_data[i].what_you_type, "end_of_list"); i++) { if (IS_SET(bit,guild_data[i].mob_guildmaster_bit)) { if (prev) strcat(buf, ","); strcat(buf, guild_data[i].what_you_see); prev = TRUE; } } strcat(buf, ".\n\r"); send_to_char(buf, ch); } return; } void do_pstat (CHAR_DATA * ch, char *argy) { char buf[STD_LENGTH]; char arg[SML_LENGTH]; AFFECT_DATA *paf; CHAR_DATA *victim; SPELL_DATA *spell; DEFINE_COMMAND ("pstat", do_pstat, POSITION_DEAD, MAX_LEVEL, LOG_NORMAL, "This command can be used to get stats on a player specified.") if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0') { send_to_char ("Pstat whom?\n\r", ch); return; } if ((victim = get_char_world (ch, arg)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (IS_MOB (victim)) { send_to_char ("Not on mobs.\n\r", ch); return; } if (LEVEL (ch) < MAX_LEVEL && LEVEL (victim) < IMM_LEVEL) { send_to_char ("You are not allowed to look at other players' stats!\n\r", ch); return; } sprintf (buf, "Name: \x1B[1;37m%s \x1B[37;0mRace: \x1B[1;37m%s (%d)\x1B[37;0m Email: \x1B[1;37m%s\x1B[37;0m.\n\r", NAME (victim), race_info[victim->pcdata->race].name, victim->pcdata->race, victim->pcdata->email); send_to_char (buf, ch); sprintf (buf, "Remorts: %d Natural Armor: %d Sex: %s Deaths: %d\n\r", victim->pcdata->remort_times, victim->pcdata->nat_armor, SEX (victim) == SEX_MALE ? "male" : SEX (victim) == SEX_FEMALE ? "female" : "neutral", victim->pcdata->deaths); send_to_char (buf, ch); if (clan_number (victim) > 0) { sprintf (buf, "Clan: %s.\n\r", get_clan_index (clan_number (victim))->name); send_to_char (buf, ch); } sprintf (buf, "In Room: #%d Warpoints: %ld Total Warpoints: %ld \n\r", victim->in_room == NULL ? 0 : victim->in_room->vnum, victim->pcdata->warpoints, victim->pcdata->total_wps); send_to_char (buf, ch); send_to_char ("Natural Abilities: ", ch); send_to_char (natural_abilities (victim->pcdata->nat_abilities), ch); send_to_char (".\n\r", ch); send_to_char ("Natural Abilities2: ", ch); send_to_char (natural_abilities2 (victim->pcdata->nat_abilities2), ch); send_to_char (".\n\r", ch); send_to_char ("Augments: ", ch); send_to_char (augmentss (victim->pcdata->augments), ch); send_to_char (".\n\r", ch); show_guilds (ch, victim->pcdata->guilds); sprintf (buf, "Str: %d Int: %d Wis: %d Dex: %d Con: %d Bank Account: %ld.\n\r", get_curr_str (victim), get_curr_int (victim), get_curr_wis (victim), get_curr_dex (victim), get_curr_con (victim), victim->pcdata->bank); send_to_char (buf, ch); sprintf (buf, "Hp: %ld/%ld Move: %d/%d Pracs: %d Kills: %d Killpoints: %d\n\r", victim->hit, victim->max_hit, victim->move, victim->max_move, victim->pcdata->practice, victim->pcdata->totalkills, victim->pcdata->killpoints); send_to_char (buf, ch); sprintf (buf, "Level: %d Alignment: %d AC: %d Exp: %ld Security: %d\n\r", LEVEL (victim), victim->pcdata->alignment, GET_AC (victim), victim->exp, victim->pcdata->security); send_to_char (buf, ch); sprintf (buf, "Hitroll: %d Damroll: %d Position: %d Learns: %d\n\r", GET_HITROLL (victim), GET_DAMROLL (victim), victim->position, victim->pcdata->learn); send_to_char (buf, ch); if (victim->position == POSITION_FIGHTING) { sprintf (buf, "Fighting: %s.\n\r", FIGHTING (victim) ? NAME (victim->fgt->fighting) : "(none)"); send_to_char (buf, ch); } sprintf (buf, "Thirst: %d/50 Full: %d/50 Drunk: %d/0 Saving throw: %d\n\r", victim->pcdata->condition[COND_THIRST], victim->pcdata->condition[COND_FULL], victim->pcdata->condition[COND_DRUNK], victim->pcdata->saving_throw); send_to_char (buf, ch); sprintf (buf, "Items Carried: %d Weight Carried: %d Stones, %d Pebbles\n\r", victim->pcdata->carry_number, victim->pcdata->carry_weight/WGT_MULT, victim->pcdata->carry_weight % WGT_MULT); send_to_char (buf, ch); sprintf (buf, "Age: %d Seconds Played: %d Act: %s.\n\r", get_age (victim), (int) victim->pcdata->played, plr_bit_name (victim->act)); send_to_char (buf, ch); sprintf (buf, "Group Info... Master: %s Leader: %s\n\rAffected by: %s (and) %s.\n\r", MASTER (victim) ? NAME (victim->fgt->master) : "(none)", LEADER (victim) ? NAME (victim->fgt->leader) : "(none)", affect_bit_name (victim->affected_by), affect_bit_name_two (victim->more_affected_by)); send_to_char (buf, ch); sprintf (buf, "Short description: %s.\n\rLong description: %s\n\r", SD (victim), LD (victim)); send_to_char (buf, ch); for (paf = victim->affected; paf != NULL; paf = paf->next) { spell = skill_lookup (NULL, (int) paf->type); if (spell == NULL) continue; sprintf (buf, "Spell: '%s' modifies %s by %d for %d hours with bits %s and %s.\n\r", spell->spell_funky_name, affect_loc_name (paf->location), paf->modifier, paf->duration, affect_bit_name (paf->bitvector), affect_bit_name_two (paf->bitvector2)); send_to_char (buf, ch); } return; } void do_reboo (CHAR_DATA * ch, char *argy) { DEFINE_COMMAND ("reboo", do_reboo, POSITION_DEAD, MAX_LEVEL, LOG_NORMAL, "Protection against accidentally matching 'reboot'.") send_to_char ("If you want to REBOOT, spell it out.\n\r", ch); return; } void do_reboot (CHAR_DATA * ch, char *argy) { extern bool aturion_down; CHAR_DATA *bah; FILE *fpqr; AUCTION *auct; DEFINE_COMMAND ("reboot", do_reboot, POSITION_DEAD, MAX_LEVEL, LOG_NORMAL, "Always use REBOOT <ticks until reboot>. Reboot 0 aborts a reboot countdown.") if (IS_MOB (ch)) return; if (!IS_REAL_GOD (ch)) return; if (is_number (argy)) { send_to_char ("Ticks to reboot set... set to 0 to abort reboot.\n\r", ch); ticks_to_reboot = atoi (argy); return; } for (auct = auction_list; auct != NULL; auct = auct->next) { if (auct->item) { obj_to(auct->item, auct->bychar); auct->item = NULL; } } for (bah = char_list; bah != NULL; bah = bah->next) { if (IS_PLAYER (bah)) do_save (bah, "xx2xx11"); }; fpqr = fopen ("reason.fi", "w+"); fprintf (fpqr, "Mud-Reboot \n\rEnd~\n\r"); fclose (fpqr); aturion_down = TRUE; return; } void do_snoop (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; DESCRIPTOR_DATA *d; CHAR_DATA *victim; DEFINE_COMMAND ("snoop", do_snoop, POSITION_DEAD, MAX_LEVEL, LOG_NORMAL, "This command allows you to 'snoop' a player.") one_argy (argy, arg); if (IS_MOB (ch)) return; if (arg[0] == '\0') { send_to_char ("Snoop whom?\n\r", ch); return; } if ((victim = get_char_world (ch, arg)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (IS_MOB (victim) || victim->desc == NULL) { send_to_char ("No descriptor to snoop.\n\r", ch); return; } if (victim == ch) { send_to_char ("Cancelling all snoops.\n\r", ch); for (d = descriptor_list; d != NULL; d = d->next) { if (d->snoop_by == ch->desc) d->snoop_by = NULL; } return; } if (victim->desc->snoop_by != NULL) { send_to_char ("Busy already.\n\r", ch); return; } if (LEVEL (victim) > LEVEL (ch)) { send_to_char ("You failed.\n\r", ch); return; } if (ch->desc != NULL) { for (d = ch->desc->snoop_by; d != NULL; d = d->snoop_by) { if (d->character == victim || d->original == victim) { send_to_char ("No snoop loops.\n\r", ch); return; } } } victim->desc->snoop_by = ch->desc; send_to_char ("Ok.\n\r", ch); return; } void do_switch (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; CHAR_DATA *victim; DEFINE_COMMAND ("switch", do_switch, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This command allows you to switch into a mob.") if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0') { send_to_char ("Switch into whom?\n\r", ch); return; } if (IS_MOB (ch) || ch->desc == NULL) return; if (ch->desc->original != NULL) return; if ((victim = get_char_world (ch, arg)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (victim == ch) { send_to_char ("Ok.\n\r", ch); return; } ch->desc->character = victim; ch->desc->original = ch; victim->desc = ch->desc; ch->desc = NULL; send_to_char ("Ok.\n\r", victim); return; } /* Make sure switch is okay.. sorta iffy :) */ void do_return (CHAR_DATA * ch, char *argy) { DEFINE_COMMAND ("return", do_return, POSITION_DEAD, 0, LOG_NORMAL, "This command allows you to return from a switch command.") if (IS_PLAYER (ch)) return; if (ch->desc == NULL) return; if (ch->desc->original == NULL) { send_to_char ("You aren't switched.\n\r", ch); return; } send_to_char ("You return to your original body.\n\r", ch); ch->desc->character = ch->desc->original; ch->desc->original = NULL; ch->desc->character->desc = ch->desc; ch->desc = NULL; return; } void do_mload (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; MOB_PROTOTYPE *pMobIndex; CHAR_DATA *victim; char *t; DEFINE_COMMAND ("mload", do_mload, POSITION_DEAD, IMM_LEVEL, LOG_ALWAYS, "Syntax: Mload <vnum>, where <vnum> is the mob template vnum of the mob you wish to create.") if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0' || !is_number (arg)) { send_to_char ("Syntax: mload <vnum>.\n\r", ch); return; } if ((pMobIndex = get_mob_index (atoi (arg))) == NULL) { send_to_char ("No mob has that vnum.\n\r", ch); return; } for (t = pMobIndex->name; *t != '\0'; t++) if (*t == '%') { send_to_char ("You may not mload this mob... it is meant for internal game use only.\n\r", ch); return; } for (t = pMobIndex->short_descr; *t != '\0'; t++) if (*t == '%') { send_to_char ("You may not mload this mob... it is meant for internal game use only.\n\r", ch); return; } victim = create_mobile (pMobIndex); char_to_room (victim, ch->in_room); act ("$n has created $N!", ch, NULL, victim, TO_ROOM); act ("You create $N!", ch, NULL, victim, TO_CHAR); return; } void do_oload (CHAR_DATA * ch, char *argy) { char arg1[SML_LENGTH]; OBJ_PROTOTYPE *pObjIndex; SINGLE_OBJECT *obj; char *t; DEFINE_COMMAND ("oload", do_oload, POSITION_DEAD, IMM_LEVEL, LOG_ALWAYS, "Creates an object from the specified object template (vnum).") if (IS_MOB (ch)) return; argy = one_argy (argy, arg1); if (arg1[0] == '\0' || !is_number (arg1)) { send_to_char ("Syntax: oload <vnum>.\n\r", ch); return; } if ((pObjIndex = get_obj_index (atoi (arg1))) == NULL) { send_to_char ("No object has that vnum.\n\r", ch); return; } for (t = pObjIndex->name; *t != '\0'; t++) if (*t == '%') { send_to_char ("You may not oload this item... it is meant for internal game use only.\n\r", ch); return; } for (t = pObjIndex->short_descr; *t != '\0'; t++) if (*t == '%') { send_to_char ("You may not oload this item... it is meant for internal game use only.\n\r", ch); return; } obj = create_object (pObjIndex, 1); if (CAN_WEAR (obj, ITEM_TAKE)) { obj_to (obj, ch); } else { obj_to (obj, ch->in_room); } act ("$n has created $p!", ch, obj, NULL, TO_ROOM); act ("You create $p!", ch, obj, NULL, TO_CHAR); return; } void raw_purge (ROOM_DATA * rid) { CHAR_DATA *victim; CHAR_DATA *vnext; SINGLE_OBJECT *obj; SINGLE_OBJECT *obj_next; if (!rid->more) return; for (victim = rid->more->people; victim != NULL; victim = vnext) { vnext = victim->next_in_room; if (IS_MOB (victim) && victim->desc == NULL) extract_char (victim, TRUE); if (!rid->more) return; } if (!rid->more) return; rid->more->copper = 0; rid->more->gold = 0; for (obj = rid->more->contents; obj != NULL; obj = obj_next) { obj_next = obj->next_content; free_it (obj); if (!rid->more) return; } return; } void do_purge (CHAR_DATA * ch, char *argy) { CHAR_DATA *v; DEFINE_COMMAND ("purge", do_purge, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "This command purges the room of all mobs and objects.") if (!ch->in_room->more) return; if (IS_MOB (ch)) return; raw_purge (ch->in_room); for (v = ch->in_room->more->people; v != NULL; v = v->next_in_room) { if (LEVEL (v) > IMM_LEVEL) act ("$n cleanses the room with righteous fire!", ch, NULL, v, TO_VICT); } send_to_char ("You cleanse the room with righteous fire!\n\r", ch); return; } void do_advance (CHAR_DATA * ch, char *argy) { char arg1[SML_LENGTH]; char arg2[SML_LENGTH]; CHAR_DATA *victim; int level; int iLevel; DEFINE_COMMAND ("advance", do_advance, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This command advances a char's level. Their experience is set to 0. Never use this on players.") if (IS_MOB (ch)) return; if (!IS_REAL_GOD (ch)) return; argy = one_argy (argy, arg1); argy = one_argy (argy, arg2); if (arg1[0] == '\0' || arg2[0] == '\0' || !is_number (arg2)) { send_to_char ("Syntax: advance <char> <level>.\n\r", ch); return; } if ((victim = get_char_room (ch, arg1)) == NULL) { send_to_char ("That player is not here.\n\r", ch); return; } if ((level = atoi (arg2)) < 1 || level > TOP_LEVEL) { char buf[STD_LENGTH]; sprintf (buf, "Level must be 1 to %d.\n\r", TOP_LEVEL); send_to_char (buf, ch); return; } if (level > LEVEL (ch) || IS_MOB (victim)) return; if (level < LEVEL (victim)) { int sn; send_to_char ("Lowering a player's level!\n\r", ch); victim->pcdata->level = 1; victim->exp = FIND_EXP (level - 1, 0); victim->max_hit = 25; victim->max_move = 70; for (sn = 0; sn < SKILL_COUNT; sn++) victim->pcdata->learned[sn] = -100; victim->pcdata->practice = 0; victim->hit = victim->max_hit; victim->move = victim->max_move; advance_level (victim); } else { send_to_char ("Raising a player's level!\n\r", ch); } for (iLevel = LEVEL (victim); iLevel < level; iLevel++) { send_to_char ("You raise a level! ", victim); victim->pcdata->level += 1; advance_level (victim); } victim->exp = FIND_EXP (LEVEL (victim) - 1, 0); return; } void do_restore (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; CHAR_DATA *victim; DEFINE_COMMAND ("restore", do_restore, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This restores hps and mps to a specified character or mob.") /*if (IS_MOB(ch) && ch!=char_list) return; */ one_argy (argy, arg); if (arg[0] == '\0') { send_to_char ("Restore whom?\n\r", ch); return; } if ((victim = get_char_world_2 (ch, arg)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } MAXHIT(victim); MAXMOVE(victim); update_pos (victim); send_to_char ("Ok.\n\r", ch); return; } void do_freeze (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; CHAR_DATA *victim; DEFINE_COMMAND ("freeze", do_freeze, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This command freezes the specified player; they can't do *anything*.") if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0') { send_to_char ("Freeze whom?\n\r", ch); return; } if ((victim = get_char_world (ch, arg)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (IS_MOB (victim)) return; if (LEVEL (victim) >= LEVEL (ch)) return; if (IS_SET (victim->act, PLR_FREEZE)) { REMOVE_BIT (victim->act, PLR_FREEZE); send_to_char ("You have been defrosted.\n\r", victim); send_to_char ("FREEZE removed.\n\r", ch); } else { SET_BIT (victim->act, PLR_FREEZE); send_to_char ("You have been frozen!\n\r", victim); send_to_char ("FREEZE set.\n\r", ch); } save_char_obj (victim); return; } void do_noclan (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; CHAR_DATA *victim; DEFINE_COMMAND ("noclan", do_noclan, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This command noclans the specified player; they can't do *anything*.") if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0') { send_to_char ("Noclan whom?\n\r", ch); return; } if ((victim = get_char_world (ch, arg)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (IS_MOB (victim)) return; if (LEVEL (victim) >= LEVEL (ch)) return; if (IS_SET (victim->act, PLR_NOCLAN)) { REMOVE_BIT (victim->act, PLR_NOCLAN); send_to_char ("You have been defrosted.\n\r", victim); send_to_char ("NOCLAN removed.\n\r", ch); } else { SET_BIT (victim->act, PLR_NOCLAN); send_to_char ("You have been frozen!\n\r", victim); send_to_char ("NOCLAN set.\n\r", ch); } save_char_obj (victim); return; } void do_lamer (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; CHAR_DATA *victim; DEFINE_COMMAND ("lamer", do_lamer, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This command lamers the specified player; they can't do *anything*.") if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0') { send_to_char ("Lamer whom?\n\r", ch); return; } if ((victim = get_char_world (ch, arg)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (IS_MOB (victim)) return; if (LEVEL (victim) >= LEVEL (ch)) return; if (IS_SET (victim->act, PLR_LAMER)) { REMOVE_BIT (victim->act, PLR_LAMER); send_to_char ("You have been defrosted.\n\r", victim); send_to_char ("LAMER removed.\n\r", ch); } else { SET_BIT (victim->act, PLR_LAMER); send_to_char ("You have been frozen!\n\r", victim); send_to_char ("LAMER set.\n\r", ch); } save_char_obj (victim); return; } void do_shitlist (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; CHAR_DATA *victim; DEFINE_COMMAND ("shitlist", do_shitlist, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This command shitlists the specified player; they can't do *anything*.") if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0') { send_to_char ("Shitlist whom?\n\r", ch); return; } if ((victim = get_char_world (ch, arg)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (IS_MOB (victim)) return; if (LEVEL (victim) >= LEVEL (ch)) return; if (IS_SET (victim->act, PLR_FREEZE)) { REMOVE_BIT (victim->act, PLR_FREEZE); send_to_char ("You have been defrosted.\n\r", victim); send_to_char ("SHITLIST removed.\n\r", ch); } else { SET_BIT (victim->act, PLR_FREEZE); send_to_char ("You have been frozen!\n\r", victim); send_to_char ("SHITLIST set.\n\r", ch); } save_char_obj (victim); return; } void do_log (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; CHAR_DATA *victim; DEFINE_COMMAND ("log", do_log, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This command can be used to log a player or multiple players.") if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0') { send_to_char ("Log whom?\n\r", ch); return; } if (!str_cmp (arg, "all")) { if (fLogAll) { fLogAll = FALSE; send_to_char ("Log ALL off.\n\r", ch); } else { fLogAll = TRUE; send_to_char ("Log ALL on.\n\r", ch); } return; } if ((victim = get_char_world (ch, arg)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (IS_MOB (victim)) return; if (IS_SET (victim->act, PLR_LOG)) { REMOVE_BIT (victim->act, PLR_LOG); send_to_char ("LOG removed.\n\r", ch); } else { SET_BIT (victim->act, PLR_LOG); send_to_char ("LOG set.\n\r", ch); } return; } void do_silence (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; CHAR_DATA *victim; DEFINE_COMMAND ("silence", do_silence, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This command removes all channel privaledges but 'say' from a specified player.") if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0') { send_to_char ("Silence whom?", ch); return; } if ((victim = get_char_world (ch, arg)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (IS_MOB (victim)) return; if (LEVEL (victim) >= LEVEL (ch)) { send_to_char ("You failed.\n\r", ch); return; } if (IS_SET (victim->pcdata->act2, PLR_SILENCE)) { REMOVE_BIT (victim->pcdata->act2, PLR_SILENCE); send_to_char ("SILENCE removed.\n\r", ch); } else { SET_BIT (victim->pcdata->act2, PLR_SILENCE); send_to_char ("SILENCE set.\n\r", ch); } return; } void do_peace (CHAR_DATA * ch, char *argy) { CHAR_DATA *rch; DEFINE_COMMAND ("peace", do_peace, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "This command stops all the fighting that is going on in the current room.") check_room_more (ch->in_room); for (rch = ch->in_room->more->people; rch != NULL; rch = rch->next_in_room) { if (FIGHTING (rch) != NULL) { rch->fgt->fighting = NULL; NEW_POSITION(rch, POSITION_STANDING); if (rch->fgt->hunting != NULL) { free_string (rch->fgt->hunting); rch->fgt->hunting = NULL; } if (rch->fgt->phunting !=NULL) /* JRAJRA - track stuff */ { free_string (rch->fgt->phunting); rch->fgt->phunting = NULL; } update_pos (rch); } } return; } BAN_DATA *ban_free; BAN_DATA *ban_list; void do_ban (CHAR_DATA * ch, char *argy) { char buf[STD_LENGTH]; char arg[SML_LENGTH]; BAN_DATA *pban; DEFINE_COMMAND ("siteban", do_ban, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This command shows and/or adds ban info. See nban for marking newbie problem sites.") if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0') { strcpy (buf, "Banned sites:\n\r"); for (pban = ban_list; pban != NULL; pban = pban->next) { if (pban->newbie) strcat (buf, "(\x1B[1;37mN\x1B[37;0m) "); else strcat (buf, " "); strcat (buf, pban->name); strcat (buf, "\n\r"); } send_to_char (buf, ch); return; } for (pban = ban_list; pban != NULL; pban = pban->next) { if (!str_cmp (arg, pban->name)) { send_to_char ("That site is already banned!\n\r", ch); return; } } if (ban_free == NULL) { pban = mem_alloc (sizeof (*pban)); } else { pban = ban_free; ban_free = ban_free->next; } pban->name = str_dup (arg); pban->next = ban_list; pban->newbie = FALSE; ban_list = pban; send_to_char ("Ok.\n\r", ch); save_banlist (); return; } void bansite (char *argy) { char arg[SML_LENGTH]; BAN_DATA *pban; one_argy (argy, arg); for (pban = ban_list; pban != NULL; pban = pban->next) { if (!str_cmp (arg, pban->name)) { return; } } if (ban_free == NULL) { pban = mem_alloc (sizeof (*pban)); } else { pban = ban_free; ban_free = ban_free->next; } pban->name = str_dup (arg); pban->next = ban_list; pban->newbie = FALSE; ban_list = pban; return; } void do_nban (CHAR_DATA * ch, char *argy) { char buf[STD_LENGTH]; char arg[SML_LENGTH]; BAN_DATA *pban; DEFINE_COMMAND ("nban", do_nban, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This command marks a site as a newbie problem site. All new chars from this site must do registration.") if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0') { strcpy (buf, "Banned sites:\n\r"); for (pban = ban_list; pban != NULL; pban = pban->next) { if (pban->newbie) strcat (buf, "(\x1B[1;37mN\x1B[37;0m) "); else strcat (buf, " "); strcat (buf, pban->name); strcat (buf, "\n\r"); } send_to_char (buf, ch); return; } for (pban = ban_list; pban != NULL; pban = pban->next) { if (!str_cmp (arg, pban->name)) { send_to_char ("That site is already banned!\n\r", ch); return; } } if (ban_free == NULL) { pban = mem_alloc (sizeof (*pban)); } else { pban = ban_free; ban_free = ban_free->next; } pban->name = str_dup (arg); pban->next = ban_list; pban->newbie = TRUE; ban_list = pban; send_to_char ("Ok.\n\r", ch); save_banlist (); return; } void nbansite (char *argy) { char arg[SML_LENGTH]; BAN_DATA *pban; one_argy (argy, arg); for (pban = ban_list; pban != NULL; pban = pban->next) { if (!str_cmp (arg, pban->name)) { return; } } if (ban_free == NULL) { pban = mem_alloc (sizeof (*pban)); } else { pban = ban_free; ban_free = ban_free->next; } pban->name = str_dup (arg); pban->next = ban_list; pban->newbie = TRUE; ban_list = pban; return; } void do_allow (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; BAN_DATA *prev; BAN_DATA *curr; DEFINE_COMMAND ("allow", do_allow, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This command removes a ban site from the list.") if (IS_MOB (ch)) return; one_argy (argy, arg); if (arg[0] == '\0') { send_to_char ("Remove which site from the ban list?\n\r", ch); return; } prev = NULL; for (curr = ban_list; curr != NULL; prev = curr, curr = curr->next) { if (!str_cmp (arg, curr->name)) { if (prev == NULL) ban_list = ban_list->next; else prev->next = curr->next; free_string (curr->name); curr->next = ban_free; ban_free = curr; send_to_char ("Ok.\n\r", ch); return; } } save_banlist(); send_to_char ("Site is not banned.\n\r", ch); return; } void do_wizlock (CHAR_DATA * ch, char *argy) { extern bool wizlock; DEFINE_COMMAND ("wizlock", do_wizlock, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This makes it so only gods can log in.") wizlock = !wizlock; if (wizlock) send_to_char ("Game wizlocked.\n\r", ch); else send_to_char ("Game un-wizlocked.\n\r", ch); return; } void do_slookup (CHAR_DATA * ch, char *argy) { char buf[STD_LENGTH]; char arg[SML_LENGTH]; int sn; SPELL_DATA *spell; DEFINE_COMMAND ("slookup", do_slookup, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "Looks up a skill or spell number, or slookup 'all', or slookup find <snum>.") if (IS_MOB (ch)) return; argy = one_argy (argy, arg); if (arg[0] == '\0') { send_to_char ("Slookup what?\n\r", ch); return; } if (is_number (arg)) { sn = atoi (arg); if ((spell = skill_lookup (NULL, sn)) == NULL) { send_to_char ("Invalid Spell/Skill Number.\n\r", ch); return; } sprintf (buf, "Spell/skill number: %4d Skill/spell: '%s' Aka: '%s'\n\r", sn, /*spell->slot,*/ spell->spell_name, spell->spell_funky_name); send_to_char (buf, ch); return; } if (!str_cmp (arg, "all")) { for (sn = 0; sn < SKILL_COUNT; sn++) { if ((spell = skill_lookup (NULL, sn)) == NULL) continue; sprintf (buf, "Spell/skill number: %4d Skill/spell: '%s' Aka: '%s'\n\r", sn, /*spell->slot,*/ spell->spell_name, spell->spell_funky_name); send_to_char (buf, ch); } } else { if ((spell = skill_lookup (arg, -1)) == NULL) { int cntr, subctr; char buffy[500]; SPELL_DATA *spl; MOB_PROTOTYPE *mid; if (!str_cmp (arg, "find") && is_number (argy)) { if (!IS_REAL_GOD (ch)) return; sn = atoi (argy); if ((spl = skill_lookup (NULL, sn)) == NULL) { send_to_char ("Invalid!\n\r", ch); return; } sprintf (buffy, "Mobs that teach sn %d (\x1B[1m%s\x1B[0m)...\n\r", sn, spl->spell_name); send_to_char (buffy, ch); for (cntr = 1; cntr < top_vnum_mob; cntr++) { if ((mid = get_mob_index (cntr)) == NULL || !mid->opt) continue; for (subctr = 0; subctr < 30; subctr++) { if (mid->opt->skltaught[subctr] == sn) { sprintf (buffy, "\x1B[1;37m%-20s\x1B[37;0m vnum \x1B[1;32m%d\x1B[37;0m, teaches this skill/spell.\n\r", mid->short_descr, mid->vnum); send_to_char (buffy, ch); } } } } else send_to_char ("No such skill or spell.\n\r", ch); return; } sprintf (buf, "Spell/skill number: %4d Skill/spell: '%s' Aka: '%s'\n\r", spell->gsn, spell->spell_name, spell->spell_funky_name); send_to_char (buf, ch); } return; } void do_award_skill (CHAR_DATA * ch, char *argy) { char arg1[500]; char arg2[500]; char arg3[500]; SPELL_DATA *spl; DESCRIPTOR_DATA *dd; int amount; DEFINE_COMMAND ("awardskill", do_award_skill, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "Awards a skill to a player. Mostly used for quests.") argy = one_argy (argy, arg1); argy = one_argy (argy, arg2); argy = one_argy (argy, arg3); if ((amount = atoi (arg3)) < 1) return; if ((spl = skill_lookup (arg2, -1)) == NULL) return; for (dd = descriptor_list; dd != NULL; dd = dd->next) { if (!dd->character) continue; if (!str_cmp (NAME (dd->character), arg1)) goto found; } return; found: if (dd->character->pcdata->learned[spl->gsn] < 0) dd->character->pcdata->learned[spl->gsn] = 1; if (dd->character->pcdata->learned[spl->gsn] > 80) amount /= 5; else if (dd->character->pcdata->learned[spl->gsn] > 65) amount /= 4; else if (dd->character->pcdata->learned[spl->gsn] > 50) amount /= 3; else if (dd->character->pcdata->learned[spl->gsn] > 35) amount /= 2; dd->character->pcdata->learned[spl->gsn] = UMIN (100, (dd->character->pcdata->learned[spl->gsn] + amount)); return; } void do_sset (CHAR_DATA * ch, char *argy) { char arg1[SML_LENGTH]; char arg2[SML_LENGTH]; char arg3[SML_LENGTH]; CHAR_DATA *victim; int value; int sn; bool fAll; SPELL_DATA *spell; DEFINE_COMMAND ("sset", do_sset, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "This sets a person's skills/spells (all or specific skill, and amount).") if (IS_PLAYER (ch) && LEVEL (ch) < MAX_LEVEL) return; argy = one_argy (argy, arg1); argy = one_argy (argy, arg2); argy = one_argy (argy, arg3); if (arg1[0] == '\0' || arg2[0] == '\0' || arg3[0] == '\0') { send_to_char ("Syntax: sset <victim> <skill> <value>\n\r", ch); send_to_char ("or: sset <victim> all <value>\n\r", ch); return; } if ((victim = get_char_world (ch, arg1)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (IS_MOB (victim)) { send_to_char ("Not on mobs.\n\r", ch); return; } if (LEVEL (victim) < IMM_LEVEL && LEVEL (ch) < MAX_LEVEL) { send_to_char ("You may not set players' skills!\n\r", ch); send_to_char ("Cheat attempt logged!\n\r", ch); return; } fAll = !str_cmp (arg2, "all"); spell = skill_lookup (arg2, -1); sn = 0; if (!fAll && spell == NULL) { send_to_char ("No such skill or spell.\n\r", ch); return; } if (!is_number (arg3)) { send_to_char ("Value must be numeric.\n\r", ch); return; } value = atoi (arg3); if (value < 0 || value > 100) { send_to_char ("Value range is 0 (unlearned) to 100.\n\r", ch); return; } if (fAll) { for (sn = 0; sn < SKILL_COUNT; sn++) { if (skill_lookup (NULL, sn) != NULL) victim->pcdata->learned[sn] = (value == 0 ? -100 : value); } return; } else { victim->pcdata->learned[spell->gsn] = (value == 0 ? -100 : value); } return; } void do_mset (CHAR_DATA * ch, char *argy) { char arg1[SML_LENGTH]; char arg2[SML_LENGTH]; char arg3[SML_LENGTH]; CHAR_DATA *victim; int value; DEFINE_COMMAND ("mset", do_mset, POSITION_DEAD, MAX_LEVEL, LOG_NORMAL, "Sets a specific mob's stats and stuff...") if (IS_MOB (ch)) return; if (!IS_REAL_GOD (ch)) { send_to_char ("Command has been removed.\n\r", ch); return; } smash_tilde (argy); argy = one_argy (argy, arg1); argy = one_argy (argy, arg2); strcpy (arg3, argy); if (arg1[0] == '\0' || arg2[0] == '\0') { send_to_char ("Syntax: mset <victim> <field> <value>\n\r", ch); send_to_char ("or: mset <victim> <string> <value>\n\r", ch); send_to_char ("\n\r", ch); send_to_char ("Field being one of:\n\r", ch); send_to_char (" sex level\n\r", ch); send_to_char (" hp move timer\n\r", ch); send_to_char (" align master leader practice\n\r", ch); send_to_char (" act affect hunting\n\r", ch); send_to_char ("\n\r", ch); send_to_char ("String being one of:\n\r", ch); send_to_char (" name short long description spec\n\r", ch); return; } if ((victim = get_char_world (ch, arg1)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (IS_PLAYER (victim)) { send_to_char ("Not on players.. only mobs.\n\r", ch); return; } if (LEVEL (ch) < MAX_LEVEL && victim->in_room && victim->in_room->area->open != 0) { send_to_char ("You cannot set mobs that are in open areas!\n\r", ch); send_to_char ("Possible cheat attempt logged.\n\r", ch); return; } value = is_number (arg3) ? atoi (arg3) : -1; if (!str_cmp (arg2, "hp") && arg3[0] != '\0') { if (value < -10 || value > 2000000000) { send_to_char ("Hp range is -10 to 2,000,000,000 hit points.\n\r", ch); return; } victim->max_hit = value; return; } if (!str_cmp (arg2, "move") && arg3[0] != '\0') { if (value < 0 || value > 30000) { send_to_char ("Move range is 0 to 30,000 move points.\n\r", ch); return; } victim->max_move = value; return; } if (!str_cmp (arg2, "timer") && arg3[0] != '\0') { if (value < 0 || value > 30000) { send_to_char ("Timer range is 0 to 30,000.\n\r", ch); return; } victim->timer = value; return; } if (!str_cmp (arg2, "practice") && arg3[0] != '\0') { if (value < 0 || value > 100) { send_to_char ("Practice range is 0 to 100 sessions.\n\r", ch); return; } victim->pcdata->practice = value; return; } if (!str_cmp (arg2, "hunting") && arg3[0] != '\0' && strlen (arg3) < 16) { check_fgt (victim); if (victim->fgt->hunting != NULL) { free_string (victim->fgt->hunting); victim->fgt->hunting = NULL; } victim->fgt->hunting = str_dup (arg3); send_to_char ("Done.\n\r", ch); return; } if (!str_cmp (arg2, "master") && arg3[0] != '\0') { check_fgt (victim); if (!str_cmp (arg3, "none")) { victim->fgt->master = NULL; return; } if ((get_char_world (ch, arg3)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } victim->fgt->master = get_char_world (ch, arg3); return; } if (!str_cmp (arg2, "leader") && arg3[0] != '\0') { check_fgt (victim); if (!str_cmp (arg3, "none")) { victim->fgt->leader = NULL; return; } if ((get_char_world (ch, arg3)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } victim->fgt->leader = get_char_world (ch, arg3); return; } if (!str_cmp (arg2, "affect") && arg3[0] != '\0') { victim->affected_by = value; return; } if (!str_cmp (arg2, "spec") && arg3[0] != '\0') { if (spec_lookup (arg3) == NULL) { send_to_char ("No such spec fun.\n\r", ch); return; } victim->pIndexData->spec_fun = spec_lookup (arg3); victim->pIndexData->spec_name = str_dup (arg3); return; } do_mset (ch, ""); return; } void do_oset (CHAR_DATA * ch, char *argy) { char arg1[SML_LENGTH]; char arg2[SML_LENGTH]; char arg3[SML_LENGTH]; SINGLE_OBJECT *obj; int value; DEFINE_COMMAND ("oset", do_oset, POSITION_DEAD, MAX_LEVEL, LOG_NORMAL, "Sets a specific object's stats and stuff...") if (IS_MOB (ch)) return; if (LEVEL (ch) < MAX_LEVEL) { send_to_char ("Command has been removed due to abuse!\n\r", ch); return; } smash_tilde (argy); argy = one_argy (argy, arg1); argy = one_argy (argy, arg2); strcpy (arg3, argy); if (arg1[0] == '\0' || arg2[0] == '\0') { send_to_char ("Syntax: oset <object> <field> <value>\n\r", ch); send_to_char ("or: oset <object> <string> <value>\n\r", ch); send_to_char ("\n\r", ch); send_to_char ("Field being one of:\n\r", ch); send_to_char (" extra wear level weight\n\r", ch); send_to_char (" cost type timer\n\r", ch); send_to_char ("\n\r", ch); send_to_char ("String being one of:\n\r", ch); send_to_char (" name short long ed\n\r", ch); return; } if ((obj = get_obj_world (ch, arg1)) == NULL) { send_to_char ("Nothing like that in hell, earth, or heaven.\n\r", ch); return; } value = atoi (arg3); if (!str_cmp (arg2, "short") && arg3[0] != '\0') { if (obj->short_descr != NULL) free_string (obj->short_descr); obj->short_descr = str_dup (arg3); return; } if (!str_cmp (arg2, "long")) { send_to_char ("Entering line editing mode.\n\r", ch); send_to_char ("Terminate with a ~ on a blank line.\n\r", ch); ch->desc->pString = &obj->description; return; } if (!str_cmp (arg2, "cost") && arg3[0] != '\0') { obj->cost = value; return; } if (!str_cmp (arg2, "timer") && arg3[0] != '\0') { obj->timer = value; return; } do_oset (ch, ""); return; } void do_pset (CHAR_DATA * ch, char *argy) { bool ad=FALSE; bool sb=FALSE; char arg1[SML_LENGTH]; char arg2[SML_LENGTH]; char arg3[SML_LENGTH]; CHAR_DATA *victim; int value; DEFINE_COMMAND ("pset", do_pset, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "Changes a player's info...") smash_tilde (argy); argy = one_argy (argy, arg1); argy = one_argy (argy, arg2); strcpy (arg3, argy); if (arg1[0] == '\0' || arg2[0] == '\0') { send_to_char ("Syntax: pset <victim> <field> <value>\n\r", ch); send_to_char ("\n\r", ch); send_to_char ("Options:\n\r", ch); send_to_char (" (Use pedit to set attribs) sex security killpts AC compflag\n\r", ch); send_to_char (" hp move practice align race height removexp removetp\n\r", ch); send_to_char (" thirst guild drunk full master leader learn addxp addtp\n\r", ch); send_to_char (" ipflag tflag warpoints deaths (fly/breath/d_hid/d_invis/infra) tp\n\r", ch); send_to_char (" short long description title remort str con dex int wis\n\r", ch); send_to_char (" align_fire align_water align_air hardcore\n\r", ch); return; } if ((victim = get_char_world_2 (ch, arg1)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (IS_MOB (victim)) { send_to_char ("Not on mobs.\n\r", ch); return; } if (!str_cmp ("scriptflag", arg2)) { int ik; argy = one_argy (argy, arg3); if (!str_cmp (argy, "off")) { for (ik = 0; ik < MAX_SCRIPT_FLAGS; ik++) { if (victim->pcdata->script_flags[ik] && victim->pcdata->script_flags[ik][0] != '\0' && !str_cmp (victim->pcdata->script_flags[ik], arg3)) { free_string (victim->pcdata->script_flags[ik]); victim->pcdata->script_flags[ik] = NULL; return; } } } if (!str_cmp (argy, "on")) { for (ik = 0; ik < MAX_SCRIPT_FLAGS; ik++) { if (!victim->pcdata->script_flags[ik]) continue; if (!str_cmp (victim->pcdata->script_flags[ik], arg3)) return; } for (ik = 0; ik < MAX_SCRIPT_FLAGS; ik++) { if (victim->pcdata->script_flags[ik] && victim->pcdata->script_flags[ik][0] != '\0') continue; victim->pcdata->script_flags[ik] = str_dup (arg3); return; } } return; } if (arg3[0] == '-') { char *rr=arg3; value=(0-(atoi((rr+1)))); sb=TRUE; value = atoi (arg3); } else if (arg3[0] == '+') { char *rr=arg3; ad=TRUE; value=atoi((rr+1)); } else value = is_number (arg3) ? atoi (arg3) : -1; if (!str_cmp (arg2, "hardcore")) { if (IS_MOB (ch)) return; if (IS_SET (victim->pcdata->act2, PLR_HARDCORE)) { REMOVE_BIT (victim->pcdata->act2, PLR_HARDCORE); send_to_char ("Hardcore mode off.\n\r", ch); } else { SET_BIT (victim->pcdata->act2, PLR_HARDCORE); send_to_char ("Hardcore mode on.\n\r", ch); } return; } // Set elemental alignment if (!str_cmp (arg2, "align_fire")) { victim->pcdata->elemental_alignment ^= ELEMENTAL_ALIGN_FIRE; send_to_char ("Fire Alignment Toggled\n\r",ch); return; } if (!str_cmp (arg2, "align_water")) { victim->pcdata->elemental_alignment ^= ELEMENTAL_ALIGN_WATER; send_to_char ("Water Alignment Toggled\n\r",ch); return; } if (!str_cmp (arg2, "align_air")) { victim->pcdata->elemental_alignment ^= ELEMENTAL_ALIGN_AIR; send_to_char ("Air Alignment Toggled\n\r",ch); return; } if (!str_cmp (arg2, "align_earth")) { victim->pcdata->elemental_alignment ^= ELEMENTAL_ALIGN_EARTH; send_to_char ("Earth Alignment Toggled\n\r",ch); return; } if (!str_cmp (arg2, "align_good")) { victim->pcdata->elemental_alignment ^= ELEMENTAL_ALIGN_GOOD; send_to_char ("Good Alignment Toggled\n\r",ch); return; } if (!str_cmp (arg2, "align_evil")) { victim->pcdata->elemental_alignment ^= ELEMENTAL_ALIGN_EVIL; send_to_char ("Evil Alignment Toggled\n\r",ch); return; } if (!str_cmp (arg2, "level")) { if (value < 1 || value > IMM_LEVEL-1) return; victim->exp = (FIND_EXP ((value - 1), 1)); send_to_char ("Level set.\n\r", ch); send_to_char ("The next mob you hit, you will raise in level.\n\r", victim); return; } if (!str_cmp (arg2, "remort")) { if (is_number(arg3)) { victim->pcdata->remort_times = UMIN(200, UMAX(0, atoi(arg3))); send_to_char("Ok remort times changed.\n\r", ch); return; } else { send_to_char("pset <name> remort <number>.\n\r", ch); return; } } if (!str_cmp (arg2, "str")) { if (is_number(arg3)) { victim->pcdata->stat[STR] = UMIN(32, UMAX(3, atoi(arg3))); send_to_char("Ok str changed.\n\r", ch); return; } else { send_to_char("pset <name> str <number>.\n\r", ch); return; } } if (!str_cmp (arg2, "int")) { if (is_number(arg3)) { victim->pcdata->stat[INT] = UMIN(32, UMAX(3, atoi(arg3))); send_to_char("Ok int changed.\n\r", ch); return; } else { send_to_char("pset <name> int <number>.\n\r", ch); return; } } if (!str_cmp (arg2, "wis")) { if (is_number(arg3)) { victim->pcdata->stat[WIS]= UMIN(32, UMAX(3, atoi(arg3))); send_to_char("Ok wis changed.\n\r", ch); return; } else { send_to_char("pset <name> wis <number>.\n\r", ch); return; } } if (!str_cmp (arg2, "dex")) { if (is_number(arg3)) { victim->pcdata->stat[DEX] = UMIN(32, UMAX(3, atoi(arg3))); send_to_char("Ok dex changed.\n\r", ch); return; } else { send_to_char("pset <name> dex <number>.\n\r", ch); return; } } if (!str_cmp (arg2, "con")) { if (is_number(arg3)) { victim->pcdata->stat[CON] = UMIN(32, UMAX(3, atoi(arg3))); send_to_char("Ok con changed.\n\r", ch); return; } else { send_to_char("pset <name> con <number>.\n\r", ch); return; } } if (!str_cmp (arg2, "hitroll") && arg3[0] != '\0') { if (value < 0 || value > 140) { send_to_char ("Valid range for hitroll is 0 - 140.\n\r", ch); return; } victim->hitroll = value; send_to_char ("Victim base hitroll set.\n\r", ch); return; } if (!str_cmp (arg2, "height") && arg3[0] != '\0') { if (value < 1 || value > 32000) { send_to_char ("Valid range for height is 1 - 32000.\n\r", ch); return; } victim->height = value; send_to_char ("Victim height set.\n\r", ch); return; } if (!str_cmp (arg2, "remove_hp") && arg3[0] != '\0') { if (value <= 0) { return; } victim->hit -= value; if (victim->hit < 1) victim->hit = 1; return; } if (!str_cmp (arg2, "same_side_pkill")) { if (IS_SET (victim->act, PLR_SAME_SIDE_PK)) { act ("$N should not same side pk.", ch, NULL, victim, TO_CHAR); victim->act -= PLR_SAME_SIDE_PK; } else { act ("$N can now same side pk if they want.", ch, NULL, victim, TO_CHAR); victim->act += PLR_SAME_SIDE_PK; } return; } if (!str_cmp (arg2, "pkilled_this_mort")) { if (IS_SET (victim->act, PLR_PKED_THIS_MORT)) { act ("$N can not advance without pking.", ch, NULL, victim, TO_CHAR); victim->act -= PLR_PKED_THIS_MORT; } else { act ("$N can advance this mort without pking now.", ch, NULL, victim, TO_CHAR); victim->act += PLR_PKED_THIS_MORT; } return; } if (!str_cmp (arg2, "removexp") && arg3[0] != '\0') { char buf[300]; if (value < 0) { return; } victim->exp -= value; send_to_char ("Victim xps removed.\n\r", ch); sprintf (buf, "%d exp points were removed!\n\r", value); send_to_char ("You have been demoted. ", victim); send_to_char (buf, victim); return; } if (!str_cmp (arg2, "addxp") && arg3[0] != '\0') { if (value < 0) { return; } send_to_char ("You feel a bit more experienced!\n\r", victim); gain_exp (victim, value); send_to_char ("Victim xps awarded.\n\r", ch); return; } if (!str_cmp (arg2, "bank") && arg3[0] != '\0') { if (value < 0 || value > 1000000) { send_to_char ("Valid range for bank coinage is 0 - 1,000,000.\n\r", ch); return; } victim->pcdata->bank = value; send_to_char ("Victim bank coinage set.\n\r", ch); return; } if (!str_cmp (arg2, "damroll") && arg3[0] != '\0') { if (value < 0 || value > 140) { send_to_char ("Valid range for damroll is 0 - 140.\n\r", ch); return; } victim->damroll = value; send_to_char ("Victim base damroll set.\n\r", ch); return; } if (!str_cmp (arg2, "ac") && arg3[0] != '\0') { if (value < 0 || value > 140) { send_to_char ("Valid range for natural armor class is 0 to 140.\n\r", ch); return; } victim->pcdata->nat_armor = value; send_to_char ("Natural Armor Class set.\n\r", ch); return; } if (!str_cmp (arg2, "warpoints") && (ad || sb || value!=-1)) { int wp; if (ad) wp=victim->pcdata->warpoints+value; else if (sb) wp=victim->pcdata->warpoints+value; else wp = value; victim->pcdata->warpoints = wp; send_to_char ("Warpoints set.\n\r", ch); return; } if (!str_cmp (arg2, "total_wps") && (ad || sb || value!=-1)) { int twp; if (ad) twp=victim->pcdata->total_wps+value; else if (sb) twp=victim->pcdata->total_wps+value; else twp = value; victim->pcdata->total_wps = twp; send_to_char ("Total Warpoints set.\n\r", ch); return; } if (!str_cmp (arg2, "deaths") && is_number (arg3)) { int wp; wp = atoi (arg3); if (wp < 0) return; victim->pcdata->deaths = wp; send_to_char ("Deaths set.\n\r", ch); return; } if (!str_cmp (arg2, "guild") && arg3[0] != '\0') { int i; for (i = 0; str_cmp(guild_data[i].what_you_type, "end_of_list"); i++) { if (!str_cmp(guild_data[i].what_you_type, arg3)) { char buf[100]; sprintf(buf, guild_data[i].what_you_see); if (IS_SET(victim->pcdata->guilds,guild_data[i].mob_guildmaster_bit)) strcat(buf, " Removed.\n\r"); else strcat(buf, " Added.\n\r"); send_to_char(buf, ch); victim->pcdata->guilds ^= guild_data[i].mob_guildmaster_bit; fix_char(victim); return; } } send_to_char ("Unknown guild.\n\r", ch); return; } if (!str_cmp (arg2, "int") && arg3[0] != '\0') { if (value < 3 || value > 25) { send_to_char ("Intelligence range is 3 to 25.\n\r", ch); return; } victim->pcdata->stat[INT] = value; return; } if (!str_cmp (arg2, "killpts") && arg3[0] != '\0') { if (value < 0 || value > 30000) { send_to_char ("Killpoint range is 0 to 30,000 killpoints.\n\r", ch); return; } victim->pcdata->killpoints = value; return; } if (!str_cmp (arg2, "sex") && arg3[0] != '\0') { if (value < 0 || value > 2) { send_to_char ("Sex range is 0 to 2.\n\r", ch); return; } victim->pcdata->sex = value; return; } if (!str_cmp (arg2, "race") && arg3[0] != '\0') { if (value < 0 || value >= RACE_COUNT) { char buf[STD_LENGTH]; sprintf (buf, "Race range is 0 to %d.\n", RACE_COUNT - 1); send_to_char (buf, ch); return; } raceswitch(victim, value); return; } if (!str_cmp (arg2, "hp") && arg3[0] != '\0') { if (value < 1 || value > 2000000000) { send_to_char ("Hp range is 1 to 2000000000 hit points.\n\r", ch); return; } victim->max_hit = value; return; } if (!str_cmp (arg2, "move") && arg3[0] != '\0') { if (value < 1 || value > 30000) { send_to_char ("Move range is 1 to 30,000 move points.\n\r", ch); return; } victim->max_move = value; return; } if (!str_cmp (arg2, "practice") && arg3[0] != '\0') { if (value < 0 || value > 100) { send_to_char ("Practice range is 0 to 100 sessions.\n\r", ch); return; } victim->pcdata->practice = value; return; } if (!str_cmp (arg2, "learn") && arg3[0] != '\0') { if (value < 0 || value > SKILL_COUNT) { send_to_char ("Practice range is 0 to 100 sessions.\n\r", ch); return; } victim->pcdata->learn = value; return; } if ((!str_cmp (arg2, "align") || !str_cmp (arg2, "alignment")) && arg3[0] != '\0') { if (value < 0 || value > NUM_ALIGN) { send_to_char ("Alignment range is 0 to 9. (0 = newbie, 1 = evil, 2 = good atm\n\r", ch); return; } alignswitch(victim, value); return; } if (!str_cmp (arg2, "thirst") && arg3[0] != '\0') { if (value < 0 || value > 100) { send_to_char ("Thirst range is 0 to 100.\n\r", ch); return; } victim->pcdata->condition[COND_THIRST] = value; return; } if (!str_cmp (arg2, "drunk") && arg3[0] != '\0') { if (value < 0 || value > 100) { send_to_char ("Drunk range is 0 to 100.\n\r", ch); return; } victim->pcdata->condition[COND_DRUNK] = value; return; } if (!str_cmp (arg2, "full") && arg3[0] != '\0') { if (value < 0 || value > 100) { send_to_char ("Full range is 0 to 100.\n\r", ch); return; } victim->pcdata->condition[COND_FULL] = value; return; } if (!str_cmp (arg2, "master") && arg3[0] != '\0') { check_fgt (victim); if (!str_cmp (arg3, "none")) { victim->fgt->master = NULL; return; } if ((get_char_world (ch, arg3)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } victim->fgt->master = get_char_world (ch, arg3); return; } if (!str_cmp (arg2, "leader") && arg3[0] != '\0') { check_fgt (victim); if (!str_cmp (arg3, "none")) { victim->fgt->leader = NULL; return; } if ((get_char_world (ch, arg3)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } victim->fgt->leader = get_char_world (ch, arg3); return; } if (!str_cmp (arg2, "short") && arg3[0] != '\0') { if (victim->pcdata->short_descr && victim->pcdata->short_descr != NULL) free_string (victim->pcdata->short_descr); victim->pcdata->short_descr = str_dup (arg3); return; } if (!str_cmp (arg2, "long")) { send_to_char ("Entering line editing mode.\n\r", ch); send_to_char ("Terminate with a ~ on a blank line.\n\r", ch); ch->desc->pString = &victim->pcdata->long_descr; return; } if (!str_cmp (arg2, "title") && arg3[0] != '\0') { set_title (victim, arg3); return; } if (!str_cmp (arg2, "augment")) { char bufff[200]; bool isoff = FALSE; int num = 0; bool found = FALSE; int augment = victim->pcdata->augments; for (num = 0; str_cmp (augment_flagss[num].what_you_type, "end_of_list") && (!found); num++) { if (!str_cmp(arg3, augment_flagss[num].what_you_type )) { found = TRUE; isoff =((IS_SET(augment,augment_flagss[num].flagname))? FALSE : TRUE); sprintf(bufff, " %s bit toggled %s\n\r",augment_flagss[num].what_you_type ,(isoff ? "On" : "Off") ); send_to_char(bufff,ch); TOGGLE_BIT(victim->pcdata->augments, augment_flagss[num].flagname); } } if (!found) { sprintf(bufff, "Which augment????\n\r."); send_to_char(bufff, ch); } else return; } if (!str_cmp (arg2, "affect")) { char bufff[200]; bool isoff = FALSE; int num = 0; bool found = FALSE; int affect = victim->pcdata->nat_abilities; for (num = 0; str_cmp(affect_flagss[num].what_you_type, "end_of_list") && (!found) ; num++) { if (!str_cmp(arg3, affect_flagss[num].what_you_type )) { found = TRUE; isoff =((IS_SET(affect,affect_flagss[num].flagname))? FALSE : TRUE); sprintf(bufff, " %s bit toggled %s\n\r",affect_flagss[num].what_you_type ,(isoff ? "On" : "Off") ); TOGGLE_BIT(victim->pcdata->nat_abilities, affect_flagss[num].flagname); } } if (!found) { sprintf(bufff, "Which affect????\n\r."); send_to_char(bufff, ch); } else { send_to_char(bufff, ch); return; } } if (!str_cmp (arg2, "affect2")) { char bufff[200]; bool isoff = FALSE; int num = 0; bool found = FALSE; int affect = victim->pcdata->nat_abilities2; for (num = 0; str_cmp(affect_flags_2[num].what_you_type, "end_of_list") && (!found); num++) { if (!str_cmp(arg3, affect_flags_2[num].what_you_type )) { found = TRUE; isoff =((IS_SET(affect,affect_flags_2[num].flagname))? FALSE : TRUE); sprintf(bufff, " %s bit toggled %s\n\r",affect_flags_2[num].what_you_type ,(isoff ? "On" : "Off") ); TOGGLE_BIT(victim->pcdata->nat_abilities2, affect_flags_2[num].flagname); } } if (!found) { sprintf(bufff, "Which affect????\n\r."); send_to_char(bufff, ch); } else { send_to_char(bufff, ch); return; } } do_pset (ch, ""); return; } char * con_state (DESCRIPTOR_DATA * d) { static char st[30]; st[0] = '\0'; if (d->connected == CON_PLAYING) strcpy (st, "Playing"); else if (d->connected == CON_AEDITOR && (AREA_DATA *) d->pEdit != NULL) { sprintf (st, "Aedit #%d", ((AREA_DATA *) d->pEdit)->vnum); } else if (d->connected == CON_REDITOR) { sprintf (st, "Redit #%d", d->character->in_room->vnum); } else if (d->connected == CON_MEDITOR && (MOB_PROTOTYPE *) d->pEdit != NULL) { sprintf (st, "Medit #%d", ((MOB_PROTOTYPE *) d->pEdit)->vnum); } else if (d->connected == CON_OEDITOR && (OBJ_PROTOTYPE *) d->pEdit != NULL) { sprintf (st, "Oedit #%d", ((OBJ_PROTOTYPE *) d->pEdit)->vnum); } else if (d->connected == CON_CEDITOR && (CLAN_DATA *) d->pEdit != NULL) { sprintf (st, "Cedit #%d", ((CLAN_DATA *) d->pEdit)->vnum); } else if (d->connected == CON_FSEDITOR) strcpy (st, "FullScreen"); else if (d->connected == CON_PEDITOR && (CHAR_DATA *) d->pEdit != NULL) { sprintf (st, "Pedit %s", ((CHAR_DATA *) d->pEdit)->pcdata->name); } else if (d->connected == CON_SEDITOR && (SPELL_DATA *) d->pEdit != NULL) { sprintf (st, "Sedit #%d", ((SPELL_DATA *) d->pEdit)->gsn); } else if (d->connected == CON_SOCEDIT) strcpy (st, "SocEdit"); else if (d->connected == CON_GET_OLD_PASSWORD) strcpy (st, "Asking Passwd"); else if (d->connected == CON_READ_MOTD) strcpy (st, "Welcome Messages"); else if (d->connected == CON_SHELL) strcpy (st, "<SHELL>"); else strcpy (st, "Newbie/Login"); return st; } void do_users (CHAR_DATA * ch, char *argy) { DESCRIPTOR_DATA *d; CHAR_DATA *tch; int cc; int count; int tcount; DEFINE_COMMAND ("users", do_users, POSITION_DEAD, MAX_LEVEL, LOG_NORMAL, "Shows a list of all connections and sites.") if (IS_MOB (ch)) return; if (ch->pcdata->level > MAX_LEVEL) ch->pcdata->level = MAX_LEVEL; hugebuf_o[0] = '\0'; tcount = 0; count = 0; cc = 0; for (tch = char_list; tch != NULL; tch = tch->next) { if (IS_PLAYER (tch) && tch->desc == NULL) cc++; } for (d = descriptor_list; d != NULL; d = d->next) { tcount++; if (d->character != NULL && can_see (ch, d->character)) { if (d->connected <= 0) count++; sprintf (hugebuf_o + strlen (hugebuf_o), "%s%-3d \x1B[1;37m%-12s\x1B[37;0m %-17s %-18s \x1B[1;37m%s\x1B[37;0m\n\r", (d->host[29] == 1 ? "*" : "#"), d->descriptor, d->character ? NAME (d->character) : "(none)", d->host, con_state (d), d->username); } } sprintf (hugebuf_o + strlen (hugebuf_o), "-----------------------------------------------------------------------\n\r"); sprintf (hugebuf_o + strlen (hugebuf_o), "%d Active Player%s, %d Connection%s, and %d Linkless Player%s.\n\r",count, count == 1 ? "" : "s", tcount, tcount == 1 ? "" : "s", cc, cc == 1 ? "" : "s"); page_to_char (hugebuf_o, ch); sprintf (hugebuf_o, "Max # of connections since reboot [\x1B[34;1m%5d\x1B[37;0m]\n\r", max_connected); send_to_char (hugebuf_o, ch); return; } void do_force (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; DEFINE_COMMAND ("force", do_force, POSITION_DEAD, MAX_LEVEL, LOG_ALWAYS, "Forces a player/mob to do something.") argy = one_argy (argy, arg); if (IS_PLAYER (ch) && LEVEL (ch) > MAX_LEVEL) ch->pcdata->level = MAX_LEVEL; if (arg[0] == '\0' || argy[0] == '\0') { send_to_char ("Force whom to do what?\n\r", ch); return; } if (!str_cmp (arg, "all") && IS_PLAYER (ch)) { CHAR_DATA *vch; CHAR_DATA *vch_next; if (LEVEL (ch) < MAX_LEVEL) return; for (vch = char_list; vch != NULL; vch = vch_next) { vch_next = vch->next; if (IS_PLAYER (vch) && LEVEL (vch) < LEVEL (ch)) { act ("$n forces everyone to '$t'.", ch, argy, vch, TO_VICT); if (IS_PLAYER (ch)) FORCE_LEVEL = LEVEL (ch); else FORCE_LEVEL = TOP_LEVEL; interpret (vch, argy); } } } else { CHAR_DATA *victim; if ((victim = get_char_world_2 (ch, arg)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (victim == ch) { send_to_char ("Aye aye, right away!\n\r", ch); return; } if (IS_PLAYER (ch) && victim->in_room->area->open == 1 && !IS_REAL_GOD (ch)) return; if (IS_PLAYER (ch) && LEVEL (victim) >= LEVEL (ch)) { send_to_char ("Do it yourself!\n\r", ch); return; } if (LEVEL (ch) < MAX_LEVEL && IS_PLAYER (victim)) { send_to_char ("You are not allowed to force Players at all!\n\r", ch); return; } act ("$n forces you to '$t'.", ch, argy, victim, TO_VICT); if (IS_PLAYER (ch)) FORCE_LEVEL = LEVEL (ch); else FORCE_LEVEL = TOP_LEVEL; interpret (victim, argy); } send_to_char ("Ok.\n\r", ch); return; } void do_invis (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; int oldinvis; DEFINE_COMMAND ("invis", do_invis, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "This command toggles whether an immort is vis to morts or not.") one_argy (argy, arg); if (IS_MOB (ch)) return; oldinvis = ch->pcdata->wizinvis; if (arg[0] == '\0') { ch->pcdata->wizinvis = ch->pcdata->wizinvis == 0 ? LEVEL (ch) : 0; } else ch->pcdata->wizinvis = atoi (arg); ch->pcdata->wizinvis = ch->pcdata->wizinvis <= LEVEL (ch) ? ch->pcdata->wizinvis : LEVEL (ch); if (ch->pcdata->wizinvis <= LEVEL_IMMORTAL && ch->pcdata->wizinvis != 0) ch->pcdata->wizinvis = 0; if (ch->pcdata->wizinvis == oldinvis || (ch->pcdata->wizinvis >= LEVEL_IMMORTAL && oldinvis >= LEVEL_IMMORTAL)) return; if (ch->pcdata->wizinvis < oldinvis && ch->pcdata->wizinvis == 0) { act ("$n slowly fades into existence.", ch, NULL, NULL, TO_ROOM); send_to_char ("You slowly fade back into existence.\n\r", ch); } else if (ch->pcdata->wizinvis >= LEVEL_IMMORTAL && ch->pcdata->wizinvis > oldinvis) { act ("$n slowly fades into normal air.", ch, NULL, NULL, TO_ROOM); send_to_char ("You slowly vanish into normal air.\n\r", ch); } return; } void do_holywalk (CHAR_DATA * ch, char *argy) { DEFINE_COMMAND ("holywalk", do_holywalk, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "Toggles holywalk on/off.") if (IS_MOB (ch)) return; if (IS_SET (ch->act, PLR_HOLYWALK)) { REMOVE_BIT (ch->act, PLR_HOLYWALK); send_to_char ("Holy walk mode off.\n\r", ch); } else { SET_BIT (ch->act, PLR_HOLYWALK); send_to_char ("Holy walk mode on.\n\r", ch); } return; } void do_mapping (CHAR_DATA *ch, char *argy) { DEFINE_COMMAND ("mapping", do_mapping, POSITION_DEAD, 1, LOG_NORMAL, "Toggles mapping on/off.") if (IS_MOB (ch)) return; /* if (!is_member(ch, GUILD_RANGER)) { send_to_char ("Only rangers of unsurpassed ability may use mapping.\n\r", ch); return; } */ if (IS_SET (ch->pcdata->act2, PLR_MAPPING) || IS_AFFECTED(ch,AFF_BLIND)) { REMOVE_BIT (ch->pcdata->act2, PLR_MAPPING); do_rawclear(ch); send_to_char ("Mapping mode off.\n\r", ch); } else { SET_BIT (ch->pcdata->act2, PLR_MAPPING); do_rawclear(ch); small_map(ch); send_to_char ("Mapping mode on.\n\r", ch); } return; } void do_noibm (CHAR_DATA *ch, char *argy) { DEFINE_COMMAND ("noibm", do_noibm, POSITION_DEAD, 1, LOG_NORMAL, "Toggles noibm on/off.") if (IS_MOB (ch)) return; if (IS_SET (ch->pcdata->act2, PLR_NOIBM)) { REMOVE_BIT (ch->pcdata->act2, PLR_NOIBM); send_to_char ("Noibm mode off.\n\r", ch); } else { SET_BIT (ch->pcdata->act2, PLR_NOIBM); send_to_char ("Noibm mode on.\n\r", ch); } return; } void do_mapspam (CHAR_DATA *ch, char *argy) { DEFINE_COMMAND ("mapspam", do_mapspam, POSITION_DEAD, 1, LOG_NORMAL, "Toggles mapspam on/off.") if (IS_MOB (ch)) return; if (IS_SET (ch->pcdata->act2, PLR_MAPSPAM)) { REMOVE_BIT (ch->pcdata->act2, PLR_MAPSPAM); send_to_char ("Mapspam mode off.\n\r", ch); } else { SET_BIT (ch->pcdata->act2, PLR_MAPSPAM); send_to_char ("Mapspam mode on.\n\r", ch); } return; } void do_viewmobs (CHAR_DATA *ch, char *argy) { DEFINE_COMMAND ("viewmobs", do_viewmobs, POSITION_DEAD, 1, LOG_NORMAL, "Toggles viewmobs on/off.") if (IS_MOB (ch)) return; if (IS_SET (ch->pcdata->act2, PLR_VIEWMOBS)) { REMOVE_BIT (ch->pcdata->act2, PLR_VIEWMOBS); send_to_char ("Viewmobs mode off.\n\r", ch); } else { SET_BIT (ch->pcdata->act2, PLR_VIEWMOBS); send_to_char ("Viewmobs mode on.\n\r", ch); } return; } void do_viewplayers (CHAR_DATA *ch, char *argy) { DEFINE_COMMAND ("viewplayers", do_viewplayers, POSITION_DEAD, 1, LOG_NORMAL, "Toggles viewplayers on/off.") if (IS_MOB (ch)) return; if (IS_SET (ch->pcdata->act2, PLR_VIEWPLAYERS)) { REMOVE_BIT (ch->pcdata->act2, PLR_VIEWPLAYERS); send_to_char ("Viewplayers mode off.\n\r", ch); } else { SET_BIT (ch->pcdata->act2, PLR_VIEWPLAYERS); send_to_char ("Viewplayers mode on.\n\r", ch); } return; } void do_holylag (CHAR_DATA * ch, char *argy) { DEFINE_COMMAND ("holylag", do_holylag, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "Toggles holylag on/off.") if (IS_MOB (ch)) return; if (IS_SET (ch->pcdata->act2, PLR_HOLYLAG)) { REMOVE_BIT (ch->pcdata->act2, PLR_HOLYLAG); send_to_char ("Holy lag mode off.\n\r", ch); } else { SET_BIT (ch->pcdata->act2, PLR_HOLYLAG); send_to_char ("Holy lag mode on.\n\r", ch); } return; } void do_holypeace (CHAR_DATA * ch, char *argy) { DEFINE_COMMAND ("holypeace", do_holypeace, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "Toggles holypeace on/off.") if (IS_MOB (ch)) return; if (IS_SET (ch->act, PLR_HOLYPEACE)) { REMOVE_BIT (ch->act, PLR_HOLYPEACE); send_to_char ("Holy peace mode off.\n\r", ch); } else { SET_BIT (ch->act, PLR_HOLYPEACE); send_to_char ("Holy peace mode on.\n\r", ch); } return; } void do_holylight (CHAR_DATA * ch, char *argy) { DEFINE_COMMAND ("holylight", do_holylight, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "Toggles holylight on/off.") if (IS_MOB (ch)) return; if (IS_SET (ch->act, PLR_HOLYLIGHT)) { REMOVE_BIT (ch->act, PLR_HOLYLIGHT); send_to_char ("Holy light mode off.\n\r", ch); } else { SET_BIT (ch->act, PLR_HOLYLIGHT); send_to_char ("Holy light mode on.\n\r", ch); } return; } void do_owhere (CHAR_DATA * ch, char *argy) { char arg[SML_LENGTH]; char oneline[500]; int slen = 0; bool found = FALSE; SINGLE_OBJECT *obj; SINGLE_OBJECT *in_obj; int obj_counter = 1; DEFINE_COMMAND ("owhere", do_owhere, POSITION_DEAD, MAX_LEVEL, LOG_NORMAL, "Allows you to find actual objects in the world.") if (IS_MOB (ch)) return; hugebuf_o[0] = '\0'; one_argy (argy, arg); if (!IS_REAL_GOD (ch)) { send_to_char ("Huh?\n\r", ch); return; } if (arg[0] == '\0') { send_to_char ("Syntax: owhere <object>.\n\r", ch); return; } else { for (obj = object_list; obj != NULL; obj = obj->next) { if (!can_see_obj (ch, obj) || !is_name (arg, obj->pIndexData->name)) continue; found = TRUE; for (in_obj = obj; in_obj->in_obj != NULL; in_obj = in_obj->in_obj) ; if (in_obj->carried_by != NULL) { sprintf (oneline, "[%2d] %s carried by %s.\n\r", obj_counter, OOSTR (obj, short_descr), PERS (in_obj->carried_by, ch)); } else { sprintf (oneline, "[%2d] %s in %s [%d].\n\r", obj_counter, OOSTR (obj, short_descr), (in_obj->in_room == NULL) ? "somewhere" : in_obj->in_room->name, (in_obj->in_room == NULL) ? 0 : in_obj->in_room->vnum); } obj_counter++; oneline[0] = UPPER (oneline[0]); sprintf (hugebuf_o + slen, "%s", oneline); slen += strlen (oneline); if (slen > 69500) { hugebuf_o[69500] = '\0'; break; } } } if (!found) send_to_char ( "Nothing like that in hell, earth, or heaven.\n\r", ch); if (hugebuf_o[0] != '\0') page_to_char (hugebuf_o, ch); return; } void do_areas (CHAR_DATA * ch, char *argy) { char buf[2048]; int slen = 0; AREA_DATA *pAreat; DEFINE_COMMAND ("areas", do_areas, POSITION_DEAD, 0, LOG_NORMAL, "This command shows the current areas that make up the world.") if (IS_MOB (ch)) return; hugebuf_o[0] = '\0'; buf[0] = '\0'; if (LEVEL (ch) >= IMM_LEVEL) { //Put the name of your mud here when players use the area command. sprintf (hugebuf_o, "[%3s] %1s %-24s (%-5s-%5s) %10s %3s [%s]\n\r", "\x1b[1;37m-\x1b[1;30m= \x1b[1;37mThe Lands of Loreia \x1b[1;30m=\x1b[1;37m- \x1b[1;32mNum\x1b[0;37m", "W", "\x1b[1;36mArea Name\x1b[0;37m", "\x1b[1;34mlvnum\x1b[0;37m", "\x1b[1;34muvnum\x1b[0;37m", "\x1b[1;31mFilename\x1b[0;37m", "\x1b[0;30mSec", "\x1b[1;34mBuilders\x1b[0;37m"); buf[0] = '\0'; slen = strlen (hugebuf_o); for (pAreat = area_first; pAreat != NULL; pAreat = pAreat->next) { sprintf (buf, "[\x1b[1;32m%3d\x1b[0;37m ] %1s \x1b[1;36m%-24s\x1b[0;37m (\x1b[1;34m%-5d-%5d\x1b[0;37m) \x1b[1;33m%13s %2d \x1b[1;34m[%s]\x1b[0;37m\n\r", pAreat->vnum, (ch->in_room->area == pAreat ? "*" : " "), pAreat->name, pAreat->lvnum, pAreat->uvnum, pAreat->filename, pAreat->security, pAreat->builders); sprintf (hugebuf_o + slen, "%s", buf); slen += strlen (buf); if (slen > 69500) { hugebuf_o[69500] = '\0'; break; } } } else { sprintf (hugebuf_o, "[%3s] %1s %-30s [%s]\n\r", "\x1b[1;32mNum", "\x1b[1;37mWhere", "\x1b[1;36mArea Name", "\x1b[1;34mBuilders"); slen = strlen (hugebuf_o); buf[0] = '\0'; for (pAreat = area_first; pAreat != NULL; pAreat = pAreat->next) { if (!pAreat->open) continue; sprintf (buf, "\x1b[0;37m[\x1b[1;32m%3d\x1b[0;37m] \x1b[1;37m%1s \x1b[1;36m%-30s \x1b[0;37m[\x1b[1;34m%s\x1b[0;37m]\n\r", pAreat->vnum, (ch->in_room->area == pAreat ? "*" : " "), pAreat->name, pAreat->builders); sprintf (hugebuf_o + slen, "%s", buf); slen += strlen (buf); if (slen > 69500) { hugebuf_o[69500] = '\0'; break; } } } page_to_char (hugebuf_o, ch); return; } void do_count (CHAR_DATA * ch, char *argy) { char arg[STD_LENGTH]; char arg2[STD_LENGTH]; char buf[2048]; AREA_DATA *pArea; int tot_room = 0, tot_mob = 0, tot_obj = 0; int open_area = 0, open_room = 0, open_mob = 0, open_obj = 0; DEFINE_COMMAND ("count", do_count, POSITION_DEAD, IMM_LEVEL, LOG_NORMAL, "Shows area statistics.") if (IS_MOB (ch)) return; hugebuf_o[0] = '\0'; argy = one_argy (argy, arg); if (argy[0] != '\0') argy = one_argy (argy, arg2); if (!str_cmp (arg, "open")) { sprintf (buf, "[%3s] %-10s (%-5s-%5s) %4s %4s %4s [%12s] %-3s %-4s\n\r", "Num", "FileN", "lvnum", "uvnum", "Room", "Mob", "Obj", "Builders", "Opn", "Plrs"); strcpy (hugebuf_o, buf); for (pArea = area_first; pArea != NULL; pArea = pArea->next) { if (pArea->open) { sprintf (buf, "[%3d] %-10s (%-5d-%5d) %3d/%3d %4d %4d [%12s] %-3s %-4d\n\r", pArea->vnum, pArea->filename, pArea->lvnum, pArea->uvnum, pArea->desc_rooms, pArea->room_count, pArea->mob_count, pArea->obj_count, pArea->builders, pArea->open ? "Yes" : "No", pArea->nplayer); strcat (hugebuf_o, buf); open_area++; open_room += pArea->room_count; open_mob += pArea->mob_count; open_obj += pArea->obj_count; } if (strlen (hugebuf_o) > 69500) { hugebuf_o[69500] = '\0'; break; } } sprintf (buf, "Open areas: %4d Rooms: %4d Mobs: %4d Objs: %4d\n\r", open_area, open_room, open_mob, open_obj); strcat (hugebuf_o, buf); page_to_char (hugebuf_o, ch); return; } if (arg[0] != '\0') { sprintf (buf, "[%3s] %-10s (%-5s-%5s) %4s %4s %4s [%12s] %-3s %-4s\n\r", "Num", "FileN", "lvnum", "uvnum", "Room", "Mob", "Obj", "Builders", "Opn", "Plrs"); strcpy (hugebuf_o, buf); if (is_number (arg)) { int vnum, vnum2 = 0; pArea = area_first; vnum = atoi (arg); if (arg2[0] != '\0' && is_number (arg2)) vnum2 = atoi (arg2); if (vnum2 != 0 && vnum2 < vnum) { int tmp; tmp = vnum; vnum = vnum2; vnum2 = tmp; } while (pArea && pArea->vnum != vnum) pArea = pArea->next; if (!pArea) { send_to_char ("That area doesn't exist.\n\r", ch); return; } if (vnum2) { while (pArea && pArea->vnum <= vnum2) { if (strlen (hugebuf_o) > 69500) { hugebuf_o[69500] = '\0'; break; } sprintf (buf, "[%3d] %-10s (%-5d-%5d) %3d/%3d %4d %4d [%12s] %-3s %-4d\n\r", pArea->vnum, pArea->filename, pArea->lvnum, pArea->uvnum, pArea->desc_rooms, pArea->room_count, pArea->mob_count, pArea->obj_count, pArea->builders, pArea->open ? "Yes" : "No", pArea->nplayer); strcat (hugebuf_o, buf); tot_room += pArea->room_count; tot_mob += pArea->mob_count; tot_obj += pArea->obj_count; if (pArea->open) { open_area++; open_room += pArea->room_count; open_mob += pArea->mob_count; open_obj += pArea->obj_count; } pArea = pArea->next; } } else { sprintf (buf, "[%3d] %-10s (%-5d-%5d) %3d/%3d %4d %4d [%12s] %-3s %-4d\n\r", pArea->vnum, pArea->filename, pArea->lvnum, pArea->uvnum, pArea->desc_rooms, pArea->room_count, pArea->mob_count, pArea->obj_count, pArea->builders, pArea->open ? "Yes" : "No", pArea->nplayer); strcat (hugebuf_o, buf); tot_room += pArea->room_count; tot_mob += pArea->mob_count; tot_obj += pArea->obj_count; if (pArea->open) { open_area++; open_room += pArea->room_count; open_mob += pArea->mob_count; open_obj += pArea->obj_count; } } } else { pArea = area_first; while (pArea) { if (strlen (hugebuf_o) > 69500) { hugebuf_o[69500] = '\0'; break; } if (is_name (arg, pArea->builders)) { sprintf (buf, "[%3d] %-10s (%-5d-%5d) %3d/%3d %4d %4d [%12s] %-3s %-4d\n\r", pArea->vnum, pArea->filename, pArea->lvnum, pArea->uvnum, pArea->desc_rooms, pArea->room_count, pArea->mob_count, pArea->obj_count, pArea->builders, pArea->open ? "Yes" : "No", pArea->nplayer); strcat (hugebuf_o, buf); tot_room += pArea->room_count; tot_mob += pArea->mob_count; tot_obj += pArea->obj_count; if (pArea->open) { open_area++; open_room += pArea->room_count; open_mob += pArea->mob_count; open_obj += pArea->obj_count; } } pArea = pArea->next; } } sprintf (buf, "Total rooms: %4d Total mobs: %4d Total objs: %4d\n\r", tot_room, tot_mob, tot_obj); strcat (hugebuf_o, buf); sprintf (buf, "Open areas: %4d Rooms: %4d Mobs: %4d Objs: %4d\n\r", open_area, open_room, open_mob, open_obj); strcat (hugebuf_o, buf); page_to_char (hugebuf_o, ch); return; } sprintf (buf, "[%3s] %10s (%-5s-%5s) %4s %4s %4s [%12s] %-3s %-4s\n\r", "Num", "Filename", "lvnum", "uvnum", "Room", "Mob", "Obj", "Builders", "Opn", "Plrs"); strcat (hugebuf_o, buf); for (pArea = area_first; pArea != NULL; pArea = pArea->next) { sprintf (buf, "[%3d] %10s (%-5d-%5d) %3d/%3d %4d %4d [%12s] %-3s %-4d\n\r", pArea->vnum, pArea->filename, pArea->lvnum, pArea->uvnum, pArea->desc_rooms, pArea->room_count, pArea->mob_count, pArea->obj_count, pArea->builders, pArea->open ? "Yes" : "No", pArea->nplayer); strcat (hugebuf_o, buf); tot_room += pArea->room_count; tot_mob += pArea->mob_count; tot_obj += pArea->obj_count; if (pArea->open) { open_area++; open_room += pArea->room_count; open_mob += pArea->mob_count; open_obj += pArea->obj_count; } if (strlen (hugebuf_o) > 69500) { hugebuf_o[69500] = '\0'; break; } } sprintf (buf, "Total rooms: %4d Total mobs: %4d Total objs: %4d\n\r", tot_room, tot_mob, tot_obj); strcat (hugebuf_o, buf); sprintf (buf, "Open areas: %4d Rooms: %4d Mobs: %4d Objs: %4d\n\r", open_area, open_room, open_mob, open_obj); strcat (hugebuf_o, buf); page_to_char (hugebuf_o, ch); return; } char * get_ansi_spaces (char *txt) { static char mem[40000]; char *spaces = mem; int ansi = 0, i; while (*txt != '\0') { if (*txt == '\e') { do { ansi++; } while (*txt++ != 'm' && *txt!='\0'); } else txt++; } for (i = 0; i < ansi; i++) { *spaces = ' '; spaces++; } *spaces = '\0'; return mem; } void do_noaffect (CHAR_DATA * ch, char *argy) { CHAR_DATA *victim; DEFINE_COMMAND ("noaffect", do_noaffect, POSITION_DEAD, MAX_LEVEL, LOG_NORMAL, "This command will remove all affects of the character specified.") if (IS_MOB (ch)) return; if (argy == "") { send_to_char ("Syntax is: noaffect <target_char>.\n\r", ch); return; } if ((victim = get_char_world (ch, argy)) == NULL) { send_to_char ("Could not find that person in the world...\n\r", ch); return; } strip_all_affects (victim); send_to_char ("Affects removed.\n\r", ch); return; }