#if defined(macintosh) #include <types.h> #else #include <sys/types.h> #include <sys/time.h> #endif #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> #include <time.h> #include "merc.h" #include "interp.h" #include "magic.h" #include "recycle.h" #include "tables.h" #include "lookup.h" #include "globals.h" void do_nowaitquesting(CHAR_DATA *ch, char *argument) { char arg[MIL]; argument = one_argument ( argument, arg ); if ( ( arg[0] == '\0' ) ) { if ( !no_wait_questing ) { send_to_char ( "Syntax: nowaitquesting <on|off>.\n\r", ch ); return; } } if ( !str_cmp ( arg, "on" ) ) { if ( no_wait_questing ) { send_to_char ( "No wait questing is already in affect!\n\r", ch ); return; } no_wait_questing = TRUE; send_to_char ( "No wait questing is now in affect!\n\r", ch ); do_info ( ch, "has activated no wait questing" ); return; } if ( !str_cmp ( arg, "off" ) ) { if ( !no_wait_questing ) { send_to_char ( "No wait questing is already off!.\n\r", ch ); return; } no_wait_questing = FALSE; send_to_char ( "No wait questing has been turned off!\n\r", ch ); do_info ( ch, "has turned off no wait questing" ); return; } } void do_reimb(CHAR_DATA *ch, char *argument) { char buf[MAX_STRING_LENGTH]; CHAR_DATA *vch; char arg[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; int v; argument = one_argument(argument, arg); if (arg[0] == '\0') { send_to_char("Reimburse <target> <xp|gold|qp|trains|pracs> <amount>\n\r", ch); return; } if ((vch = get_char_world(ch, arg)) == NULL) { send_to_char("They aren't logged on.\n\r", ch); return; } if (IS_NPC(vch)) { send_to_char("That is a mob.\n\r", ch); return; } argument = one_argument(argument, arg); argument = one_argument(argument, arg2); v = atoi(arg2); if (arg[0] == '\0' || arg2[0] == '\0' || (!is_number(arg2) && v >= 0)) { do_reimb(ch, ""); return; } if (!str_cmp(arg, "xp")) { vch->exp += v; } else if (!str_cmp(arg, "gold")) { vch->gold += v; } else if (!str_cmp(arg, "platinum")) { vch->platinum += v; } else if (!str_cmp(arg, "qp")) { vch->questpoints += v; vch->pcdata->questpoints += v; } else if (!str_cmp(arg, "pracs")) { vch->practice += v; } else if (!str_cmp(arg, "trains")) { vch->train += v; } else { send_to_char("Please specify XP, gold, qp, trains or pracs.\n\r", ch); return; } if (vch->mkill < 5) { vch->mkill = 5; do_autosave(ch, ""); } sprintf(arg2, "%s reimbursed %d %s.\n\r", vch->name, v, arg); send_to_char(arg2, ch); sprintf(arg2, "%s has reimbursed you %d %s.\n\r", ch->name, v, arg); send_to_char(arg2, vch); } /* Coded by Hutoshi */ void do_cprime(CHAR_DATA *ch, char *argument) { char buf[MAX_STRING_LENGTH]; if(IS_NPC(ch)) return; do_force(ch, "all wake"); do_force(ch, "all stand"); do_force(ch, "all call all"); do_restore(ch, "all"); do_force(ch, "all save"); sprintf(buf, "%s is about to rebuild your reality, prepare for a copyover.",ch->name); do_info(ch, buf); stc("{y[{RWorld prepared for copyover.{y]{x\n\r",ch); } /* * This simple little function will return a display for num that includes * leading zeros. I used it for score, and figured someone else might want * it. It also colors the zeros and the number itself independently. * -- Midboss */ char * meter (long num, int digits, char col1, char col2) { static char buf[16]; //Initialize the buffer. sprintf (buf, "{%c", col1); //Repetitive, but it works. if (digits >= 10 && num < 100000000) strcat (buf, "0"); if (digits >= 9 && num < 100000000) strcat (buf, "0"); if (digits >= 8 && num < 10000000) strcat (buf, "0"); if (digits >= 7 && num < 1000000) strcat (buf, "0"); if (digits >= 6 && num < 100000) strcat (buf, "0"); if (digits >= 5 && num < 10000) strcat (buf, "0"); if (digits >= 4 && num < 1000) strcat (buf, "0"); if (digits >= 3 && num < 100) strcat (buf, "0"); if (digits >= 2 && num < 10) strcat (buf, "0"); //Finish it off... sprintf (strlen(buf) + buf, "{%c%ld", col2, num); //Done. return buf; } void do_gift( CHAR_DATA *ch, char *argument ) { char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; OBJ_DATA *obj; CHAR_DATA *victim; argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); if (IS_NPC(ch)) {send_to_char("Not while switched.\n\r",ch); return;} if ( ch->exp < 500 ) {send_to_char("It costs 500 exp to make a gift of an item.\n\r",ch); return;} if ( arg1[0] == '\0' || arg2[0] == '\0' ) { send_to_char( "Make a gift of which object to whom?\n\r", ch ); return; } if ( ( obj = get_obj_carry(ch, arg1, ch) ) == NULL ) {send_to_char("You are not carrying that item.\n\r",ch); return;} if ( ( victim = get_char_room( ch, arg2 ) ) == NULL ) {send_to_char("Nobody here by that name.\n\r",ch); return;} if ( IS_NPC(victim) ) { send_to_char("Not on NPC's.\n\r",ch); return; } if ( obj->questowner == NULL || strlen(obj->questowner) < 2 ) { send_to_char("That item has not yet been claimed.\n\r",ch); return; } if (str_cmp(ch->name,obj->questowner)) { send_to_char("But you don't own it!\n\r",ch); return; } ch->exp -= 500; if (obj->questowner != NULL) free_string(obj->questowner); obj->questowner = str_dup(victim->name); obj->ownerid = victim->pcdata->playerid; act("You grant ownership of $p to $N.",ch,obj,victim,TO_CHAR); act("$n grants ownership of $p to $N.",ch,obj,victim,TO_NOTVICT); act("$n grants ownership of $p to you.",ch,obj,victim,TO_VICT); return; } void do_claim(CHAR_DATA * ch, char *argument) { char arg[MAX_INPUT_LENGTH]; OBJ_DATA *obj; one_argument(argument, arg); if (IS_NPC(ch)) { send_to_char("Not while switched.\n\r", ch); return; } if (ch->exp < 500) { send_to_char("It costs 500 exp to claim ownership of an item.\n\r", ch); return; } if (arg[0] == '\0') { send_to_char("What object do you wish to claim ownership of?\n\r", ch); return; } if ((obj = get_obj_carry(ch, arg, ch)) == NULL) { send_to_char("You are not carrying that item.\n\r", ch); return; } if (obj->ownerid != 0) { if (obj->ownerid == ch->pcdata->playerid) send_to_char("But you already own it.\n\r", ch); else send_to_char("Someone else already own it.\n\r", ch); return; } if (obj->questowner != NULL && strlen(obj->questowner) > 1) { if (!str_cmp(ch->name, obj->questowner)) { if (obj->ownerid != 0) send_to_char("But you already own it!\n\r", ch); else { send_to_char("You {Creclaim{x the object.\n\r", ch); obj->ownerid = ch->pcdata->playerid; } } else send_to_char("Someone else has already claimed ownership to it.\n\r", ch); return; } ch->exp -= 500; if (obj->questowner != NULL) free_string(obj->questowner); obj->questowner = str_dup(ch->name); obj->ownerid = ch->pcdata->playerid; act("You are now the owner of $p.", ch, obj, NULL, TO_CHAR); act("$n is now the owner of $p.", ch, obj, NULL, TO_ROOM); return; } CH_CMD ( do_autoreboot ) { char buf[MAX_STRING_LENGTH]; char arg1[MAX_STRING_LENGTH]; char arg2[MAX_STRING_LENGTH]; argument = one_argument ( argument, arg1 ); argument = one_argument ( argument, arg2 ); if ( IS_IMMORTAL ( ch ) && !IS_NPC ( ch ) ) { if ( is_reboot_countdown == TRUE ) { send_to_char ( "There is already a reboot countdown in progress.\n\rType ABORT to abort.\n\r", ch ); sprintf ( buf, "Current countdown has %d minute(s) remaining.\n\r", ( reboot_countdown - 1 ) ); send_to_char ( buf, ch ); return; } if ( arg1[0] == '\0' ) { send_to_char ( "Reboot in 5 minutes.\n\r( default if no time specified )\n\r\n\rType ABORT to abort.\n\r", ch ); reboot_countdown = 6; is_reboot_countdown = TRUE; } else { sprintf ( buf, "\n\rReboot in %d minutes\n\r\n\rType abort to abort.\n\r", atoi ( arg1 ) ); send_to_char ( buf, ch ); reboot_countdown = ( atoi ( arg1 ) + 1 ); is_reboot_countdown = TRUE; } if ( !str_cmp ( arg2, "silent" ) ) { send_to_char ( "Reboot countdown started silently.\n\r", ch ); } else { if ( reboot_countdown > 6 ) { sprintf ( buf, "\n\r{R[{Wreboot{R]{C Reboot countdown started, {R%d{C minutes remaining.{x\n\r{R[{WReboot{R] {CPlease see '{chelp reboot{C' for more information.{x\n\r", ( reboot_countdown - 1 ) ); do_gmessage ( buf ); } } } } CH_CMD ( do_abort ) { if ( IS_IMMORTAL ( ch ) ) { if ( is_reboot_countdown == FALSE ) { send_to_char ( "There is no reboot countdown to abort.\n\r", ch ); return; } if ( str_cmp ( argument, "silent" ) ) { do_info ( ch, "has aborted the reboot.\n\r" ); } else { send_to_char ( "The reboot was aborted silently.\n\r", ch ); } reboot_countdown = -1; is_reboot_countdown = FALSE; } }