/*************************************************************************** * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * * * Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * * * In order to use any part of this Merc Diku Mud, you must comply with * * both the original Diku license in 'license.doc' as well the Merc * * license in 'license.txt'. In particular, you may not remove either of * * these copyright notices. * * * * Much time and thought has gone into this software and you are * * benefitting. We hope that you share your changes too. What goes * * around, comes around. * ***************************************************************************/ /********************************* * New immortal commands by Jobo * *********************************/ #if defined(macintosh) #include <types.h> #else #include <sys/types.h> #endif #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "merc.h" void do_multicheck(CHAR_DATA *ch, char *argument) { DESCRIPTOR_DATA *d; DESCRIPTOR_DATA *d2; char buf[MAX_STRING_LENGTH]; bool found = FALSE; for ( d = descriptor_list; d != NULL; d = d->next ) { if (d->lookup_status != STATUS_DONE) continue; if (d->connected != CON_PLAYING) continue; for ( d2 = d->next; d2 != NULL; d2 = d2->next ) { if (d2->lookup_status != STATUS_DONE) continue; if (!str_cmp(d->host, d2->host)) { if (d2->connected != CON_PLAYING) continue; if (d2->character == NULL || d->character == NULL) continue; found = TRUE; sprintf(buf, "%s and %s are multiplaying bitches\n\r",d2->character->name, d->character->name); send_to_char(buf,ch); } } } if (!found) send_to_char("Noone is multiplaying atm.\n\r",ch); return; } void do_slay2(CHAR_DATA *ch, char *argument) { CHAR_DATA *victim; char arg[MAX_INPUT_LENGTH]; one_argument(argument, arg); if (IS_NPC(ch)) return; if (ch->level < 12) return; if ((victim = get_char_room(ch, arg)) == NULL) { send_to_char("Garotte whom?\n\r", ch ); return; } if (victim == ch) { send_to_char("That would be a bad idea.\n\r", ch ); return; } if (is_safe(ch, victim)) return; one_hit(ch,victim, gsn_supreme,1); one_hit(ch,victim, gsn_supreme,1); one_hit(ch,victim, gsn_supreme,1); one_hit(ch,victim, gsn_supreme,1); one_hit(ch,victim, gsn_supreme,1); one_hit(ch,victim, gsn_supreme,1); one_hit(ch,victim, gsn_supreme,1); one_hit(ch,victim, gsn_supreme,1); one_hit(ch,victim, gsn_supreme,1); one_hit(ch,victim, gsn_supreme,1); return; } void do_openthearena( CHAR_DATA *ch, char *argument ) { if (IS_NPC(ch)) return; if (arena_open) return; arena_open = TRUE; return; } void do_showsilence( CHAR_DATA *ch, char *argument ) { DESCRIPTOR_DATA *d; CHAR_DATA *gch; char buf[MAX_STRING_LENGTH]; bool found = FALSE; if (IS_NPC(ch)) return; for ( d = descriptor_list; d != NULL; d = d->next ) { if ( d->connected != CON_PLAYING) continue; if ( d->character != NULL ) gch = d->character; else continue; if (gch->level > 6) continue; if (IS_SET(gch->act, PLR_SILENCE)) { found = TRUE; sprintf(buf,"%-15s is silenced\n\r",gch->name); send_to_char(buf,ch); } } if (!found) send_to_char("Noone is silenced.\n\r",ch); return; } void do_asperson(CHAR_DATA *ch, char *argument) { CHAR_DATA *victim; DESCRIPTOR_DATA *tmp; char arg[MAX_INPUT_LENGTH]; bool afk = FALSE; argument = one_argument(argument, arg); if (IS_NPC(ch)) return; if (ch->level < 12) return; if ((victim = get_char_world(ch, arg)) == NULL) { send_to_char("They are not here.\n\r", ch ); return; } if (victim == ch) { send_to_char("That would be a bad idea.\n\r", ch ); return; } if (IS_NPC(victim)) { send_to_char("Not on mobiles.\n\r",ch); return; } tmp = victim->desc; victim->desc = ch->desc; if (IS_SET(victim->extra, EXTRA_AFK)) { afk = TRUE; REMOVE_BIT(victim->extra, EXTRA_AFK); } interpret(victim, argument); victim->desc = tmp; if (afk) SET_BIT(victim->extra, EXTRA_AFK); return; } void do_bully(CHAR_DATA *ch, char *argument) { CHAR_DATA *victim; char arg[MAX_INPUT_LENGTH]; argument = one_argument(argument, arg); if (IS_NPC(ch)) return; if (ch->level < MAX_LEVEL) return; if ((victim = get_char_world(ch, arg)) == NULL) { send_to_char("They are not here.\n\r", ch ); return; } if (victim == ch) { send_to_char("That would be a bad idea.\n\r", ch ); return; } if (IS_NPC(victim)) { send_to_char("Not on mobiles.\n\r",ch); return; } if (IS_SET(victim->pcdata->jflags, JFLAG_BULLY)) { REMOVE_BIT(victim->pcdata->jflags, JFLAG_BULLY); send_to_char("You are to nice.\n\r",ch); } else { SET_BIT(victim->pcdata->jflags, JFLAG_BULLY); send_to_char("Take that bully.\n\r",ch); } return; } void do_offline(CHAR_DATA *ch, char *argument) { DESCRIPTOR_DATA *dummy; DESCRIPTOR_DATA *temp; CHAR_DATA *victim; char arg[MAX_INPUT_LENGTH]; argument = one_argument(argument, arg); if (IS_NPC(ch)) return; if (ch->level < MAX_LEVEL) { send_to_char("This action is restricted.\n\r", ch); return; } if (strlen(arg) < 3) { send_to_char("What player do you wish to load?\n\r", ch); return; } if (argument[0] == '\0') { send_to_char("What do you want the player to do?\n\r", ch); return; } arg[0] = UPPER(arg[0]); if (descriptor_free == NULL ) { dummy = alloc_perm(sizeof(*dummy)); } else { dummy = descriptor_free; descriptor_free = descriptor_free->next; } if (load_char_obj(dummy, arg)) { victim = dummy->character; temp = victim->desc; victim->desc = ch->desc; interpret(victim, argument); victim->desc = temp; } else { send_to_char("Player doesn't exist.\n\r", ch); dummy->next = descriptor_free; descriptor_free = dummy; return; } /* * Clean up. */ save_char_obj(victim); free_char(victim); dummy->next = descriptor_free; descriptor_free = dummy; return; }