/*--------------------------------------------------------------------------*
* ** WolfPaw 1.0 ** *
*--------------------------------------------------------------------------*
* WolfPaw 1.0 (c) 1997,1998 by Dale Corse *
*--------------------------------------------------------------------------*
* The WolfPaw Coding Team is headed by: Greywolf *
* With the Assitance from: Callinon, Dhamon, Sentra, Wyverns, Altrag *
* Scryn, Thoric, Justice, Tricops and Mask. *
*--------------------------------------------------------------------------*
* Maiming Module *
*--------------------------------------------------------------------------*/
#include <sys/types.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "mud.h"
#define MAIM_BRAINS 67
#define MAIM_HEAD 68
#define MAIM_NECK 69
#define MAIM_CHEST 70
#define MAIM_ARMS 71
#define MAIM_WAIST 72
#define MAIM_WRIST 73
#define MAIM_FINGERS 74
#define MAIM_LEG 75
#define MAIM_FEET 76
#define MAIM_TOES 77
void maim_player( CHAR_DATA *victim, CHAR_DATA *mob );
void maim_update( CHAR_DATA *ch, CHAR_DATA *victim )
{
/* Big mobs only.. */
if ( ch->level < 100 )
return;
if ( IS_NPC(victim) )
return;
maim_player(victim,ch);
return;
}
void maim_player( CHAR_DATA *victim, CHAR_DATA *mob )
{
int num=0;
int num2=0;
int body_part=0;
ZONE_DATA *zone;
OBJ_DATA *obj=NULL;
char log_buf[MSL];
char echo_buf[MSL];
char buf[MSL];
extern bool MAIM_DEATH;
zone=find_zone(1);
/* Random Number to finalize the decision */
num=number_range(1,50);
if ( num < 30 || num > 35 )
return;
body_part=number_range(67,77);
if ( !mob->in_room )
{
bug("MAIM_PLAYER: %s in NULL Room!\n\r",mob->short_descr);
return;
}
if ( !victim->in_room )
{
bug("MAIM_PLAYER: %s in NULL Room!\n\r",victim->name);
return;
}
switch( body_part )
{
case MAIM_BRAINS:
obj=create_object( get_obj_index(MAIM_BRAINS,1),0,zone);
act(AT_RED,"$n screams in pain as $s brains fall on the ground.",victim,NULL,NULL,TO_ROOM);
act(AT_RED,"You scream in pain as you are struck in the head!",victim,NULL,NULL,TO_CHAR);
sprintf( buf, obj->short_descr, capitalize(victim->name) );
STRFREE( obj->short_descr );
obj->short_descr = STRALLOC( buf );
sprintf( buf, obj->description, capitalize(victim->name) );
STRFREE( obj->description );
obj->description = STRALLOC( buf );
obj->timer = 20;
obj_to_room(obj,victim->in_room);
damage( mob, victim, 2000, TYPE_UNDEFINED);
sprintf(log_buf,"(MAIM) %s was labotomized by %s at %d",capitalize(victim->name),
(IS_NPC(mob) ? mob->short_descr : capitalize(mob->name)),victim->in_room->vnum);
log_string(log_buf);
break;
case MAIM_HEAD:
num2=number_range(1,3);
if ( num2 != 2 );
return;
obj=create_object( get_obj_index(MAIM_HEAD,1),0,zone);
act(AT_RED,"$n screams in pain as $e is decapitated!",victim,NULL,NULL,TO_ROOM);
act(AT_RED,"You scream in pain as you are decapitated!",victim,NULL,NULL,TO_CHAR);
act(AT_RED,"$n is DEAD! R.I.P!",victim,NULL,NULL,TO_ROOM);
sprintf( buf, obj->short_descr, capitalize(victim->name) );
STRFREE( obj->short_descr );
obj->short_descr = STRALLOC( buf );
sprintf( buf, obj->description, capitalize(victim->name) );
STRFREE( obj->description );
obj->description = STRALLOC( buf );
obj->timer = 20;
obj_to_room(obj,victim->in_room);
sprintf(log_buf,"(MAIM) %s was decapitated by %s at %d",capitalize(victim->name),
(IS_NPC(mob) ? mob->short_descr : capitalize(mob->name)),victim->in_room->vnum);
log_string(log_buf);
sprintf(echo_buf,"&R[DEATH] &W %s has been decapitated by %s!",capitalize(victim->name),
(IS_NPC(mob) ? mob->short_descr : capitalize(mob->name)));
echo_to_all(AT_PLAIN,echo_buf,ECHOTAR_ALL);
MAIM_DEATH=TRUE;
raw_kill(mob,victim);
MAIM_DEATH=FALSE;
break;
case MAIM_NECK:
obj=create_object( get_obj_index(MAIM_NECK,1),0,zone);
act(AT_RED,"$n screams in pain as blood spurts from $s neck!",victim,NULL,NULL,TO_ROOM);
act(AT_RED,"You scream in pain as your jugular is slashed!",victim,NULL,NULL,TO_CHAR);
sprintf( buf, obj->short_descr, capitalize(victim->name) );
STRFREE( obj->short_descr );
obj->short_descr = STRALLOC( buf );
sprintf( buf, obj->description, capitalize(victim->name) );
STRFREE( obj->description );
obj->description = STRALLOC( buf );
obj->timer = 20;
obj_to_room(obj,victim->in_room);
damage( mob, victim, 2000, TYPE_UNDEFINED);
sprintf(log_buf,"(MAIM) %s was throat cut by %s at %d",capitalize(victim->name),
(IS_NPC(mob) ? mob->short_descr : capitalize(mob->name)),victim->in_room->vnum);
log_string(log_buf);
break;
case MAIM_CHEST:
obj=create_object( get_obj_index(MAIM_CHEST,1),0,zone);
act(AT_RED,"$n screams in pain as $e is slashed across the chest!",victim,NULL,NULL,TO_ROOM);
act(AT_RED,"You scream in pain as you are slashed across the chest!",victim,NULL,NULL,TO_CHAR);
sprintf( buf, obj->short_descr, capitalize(victim->name) );
STRFREE( obj->short_descr );
obj->short_descr = STRALLOC( buf );
sprintf( buf, obj->description, capitalize(victim->name) );
STRFREE( obj->description );
obj->description = STRALLOC( buf );
obj->timer = 20;
obj_to_room(obj,victim->in_room);
damage( mob, victim, 2000, TYPE_UNDEFINED);
sprintf(log_buf,"(MAIM) %s was slashed in the chest by %s at %d",capitalize(victim->name),
(IS_NPC(mob) ? mob->short_descr : capitalize(mob->name)),victim->in_room->vnum);
log_string(log_buf);
break;
case MAIM_ARMS:
obj=create_object( get_obj_index(MAIM_ARMS,1),0,zone);
act(AT_RED,"$n screams in pain as $e is disarmed -- the painfull way!",victim,NULL,NULL,TO_ROOM);
act(AT_RED,"You scream in pain as you are disarmed -- the painful way!!",victim,NULL,NULL,TO_CHAR);
sprintf( buf, obj->short_descr, capitalize(victim->name) );
STRFREE( obj->short_descr );
obj->short_descr = STRALLOC( buf );
sprintf( buf, obj->description, capitalize(victim->name) );
STRFREE( obj->description );
obj->description = STRALLOC( buf );
obj->timer = 20;
obj_to_room(obj,victim->in_room);
damage( mob, victim, 2000, TYPE_UNDEFINED);
sprintf(log_buf,"(MAIM) %s was painfully disarmed by %s at %d",capitalize(victim->name),
(IS_NPC(mob) ? mob->short_descr : capitalize(mob->name)),victim->in_room->vnum);
log_string(log_buf);
break;
case MAIM_WAIST:
num2=number_range(1,3);
if ( num2 != 2 );
return;
obj=create_object( get_obj_index(MAIM_WAIST,1),0,zone);
act(AT_RED,"$n screams in pain as $s legs are removed from $s body",victim,NULL,NULL,TO_ROOM);
act(AT_RED,"You scream in pain as your legs are removed from your body!",victim,NULL,NULL,TO_CHAR);
act(AT_RED,"$n is DEAD! R.I.P!",victim,NULL,NULL,TO_ROOM);
sprintf( buf, obj->short_descr, capitalize(victim->name) );
STRFREE( obj->short_descr );
obj->short_descr = STRALLOC( buf );
sprintf( buf, obj->description, capitalize(victim->name) );
STRFREE( obj->description );
obj->description = STRALLOC( buf );
obj->timer = 20;
obj_to_room(obj,victim->in_room);
sprintf(log_buf,"(MAIM) %s was made legless by %s at %d",capitalize(victim->name),
(IS_NPC(mob) ? mob->short_descr : capitalize(mob->name)),victim->in_room->vnum);
log_string(log_buf);
sprintf(echo_buf,"&R[DEATH] &W %s has been sliced in half by %s!",capitalize(victim->name),
(IS_NPC(mob) ? mob->short_descr : capitalize(mob->name)));
echo_to_all(AT_PLAIN,echo_buf,ECHOTAR_ALL);
MAIM_DEATH=TRUE;
raw_kill(mob,victim);
MAIM_DEATH=FALSE;
break;
case MAIM_WRIST:
obj=create_object( get_obj_index(MAIM_WRIST,1),0,zone);
act(AT_RED,"$n screams in pain as $s hand falls to the ground!.",victim,NULL,NULL,TO_ROOM);
act(AT_RED,"You scream in pain as your hand falls to the ground!",victim,NULL,NULL,TO_CHAR);
sprintf( buf, obj->short_descr, capitalize(victim->name) );
STRFREE( obj->short_descr );
obj->short_descr = STRALLOC( buf );
sprintf( buf, obj->description, capitalize(victim->name) );
STRFREE( obj->description );
obj->description = STRALLOC( buf );
obj->timer = 20;
obj_to_room(obj,victim->in_room);
damage( mob, victim, 2000, TYPE_UNDEFINED);
sprintf(log_buf,"(MAIM) %s was 'red handed' by %s at %d",capitalize(victim->name),
(IS_NPC(mob) ? mob->short_descr : capitalize(mob->name)),victim->in_room->vnum);
log_string(log_buf);
break;
case MAIM_FINGERS:
obj=create_object( get_obj_index(MAIM_FINGERS,1),0,zone);
act(AT_RED,"$n screams in pain as $s fingers scatter about the room!",victim,NULL,NULL,TO_ROOM);
act(AT_RED,"You scream in pain as your fingers scatter about the room!",victim,NULL,NULL,TO_CHAR);
sprintf( buf, obj->short_descr, capitalize(victim->name) );
STRFREE( obj->short_descr );
obj->short_descr = STRALLOC( buf );
sprintf( buf, obj->description, capitalize(victim->name) );
STRFREE( obj->description );
obj->description = STRALLOC( buf );
obj->timer = 20;
obj_to_room(obj,victim->in_room);
damage( mob, victim, 2000, TYPE_UNDEFINED);
sprintf(log_buf,"(MAIM) %s got fingers scattered by %s at %d",capitalize(victim->name),
(IS_NPC(mob) ? mob->short_descr : capitalize(mob->name)),victim->in_room->vnum);
log_string(log_buf);
break;
case MAIM_LEG:
obj=create_object( get_obj_index(MAIM_LEG,1),0,zone);
act(AT_RED,"$n screams in pain as $s leg is severed at the knee!.",victim,NULL,NULL,TO_ROOM);
act(AT_RED,"You scream in pain as your leg is severed at the knee!",victim,NULL,NULL,TO_CHAR);
sprintf( buf, obj->short_descr, capitalize(victim->name) );
STRFREE( obj->short_descr );
obj->short_descr = STRALLOC( buf );
sprintf( buf, obj->description, capitalize(victim->name) );
STRFREE( obj->description );
obj->description = STRALLOC( buf );
obj->timer = 20;
obj_to_room(obj,victim->in_room);
damage( mob, victim, 2000, TYPE_UNDEFINED);
sprintf(log_buf,"(MAIM) %s was made a foot shorter by %s at %d",capitalize(victim->name),
(IS_NPC(mob) ? mob->short_descr : capitalize(mob->name)),victim->in_room->vnum);
log_string(log_buf);
break;
case MAIM_FEET:
obj=create_object( get_obj_index(MAIM_FEET,1),0,zone);
act(AT_RED,"$n screams in pain as $s foot is sliced into peices!",victim,NULL,NULL,TO_ROOM);
act(AT_RED,"You scream in pain as your foot is turned into dogfood!",victim,NULL,NULL,TO_CHAR);
sprintf( buf, obj->short_descr, capitalize(victim->name) );
STRFREE( obj->short_descr );
obj->short_descr = STRALLOC( buf );
sprintf( buf, obj->description, capitalize(victim->name) );
STRFREE( obj->description );
obj->description = STRALLOC( buf );
obj->timer = 20;
obj_to_room(obj,victim->in_room);
damage( mob, victim, 2000, TYPE_UNDEFINED);
sprintf(log_buf,"(MAIM) %s lost footing to %s at %d",capitalize(victim->name),
(IS_NPC(mob) ? mob->short_descr : capitalize(mob->name)),victim->in_room->vnum);
log_string(log_buf);
break;
case MAIM_TOES:
obj=create_object( get_obj_index(MAIM_TOES,1),0,zone);
act(AT_RED,"$n screams in pain as $s toes are scattered about the room!",victim,NULL,NULL,TO_ROOM);
act(AT_RED,"You scream in pain as your toes are scattered about the room!",victim,NULL,NULL,TO_CHAR);
sprintf( buf, obj->short_descr, capitalize(victim->name) );
STRFREE( obj->short_descr );
obj->short_descr = STRALLOC( buf );
sprintf( buf, obj->description, capitalize(victim->name) );
STRFREE( obj->description );
obj->description = STRALLOC( buf );
obj->timer = 20;
obj_to_room(obj,victim->in_room);
damage( mob, victim, 2000, TYPE_UNDEFINED);
sprintf(log_buf,"(MAIM) %s got toes scattered by %s at %d",capitalize(victim->name),
(IS_NPC(mob) ? mob->short_descr : capitalize(mob->name)),victim->in_room->vnum);
log_string(log_buf);
break;
}
return;
}
void dr_quack ( CHAR_DATA *victim )
{
return;
}