/****************************************************************************
 *                                                                          *
 * The following code was forward engineered from dystopia 1.2 for use on   *
 * Devil's Rift MUD, based on dystopia 1.4.  If you find this useful and are* 
 * interested in more programs being ported between versions, please contact*
 * me at cecilia@darkkeep.net                                               *
 *                                                                          *
 *I do ask that if you use this that you'd send me an email to the address  *
 * above so that I have an idea how many are using the code.                *
 *                                                                          *
 * Thanks and happy mudding!!                                               *
 *                                                                          *
 * - Cecilia                                                                *
 *                                                                          *
 ****************************************************************************/
/****************************************************************************
 *  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.                                                *
 *                                                                          *
 *  Dystopia Mud improvements copyright (C) 2000, 2001 by Brian Graversen   *
 *                                                                          *
 *  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.                                                   *
 ****************************************************************************/
 

//add this line in your list of special functions at the top of the special.c file

DECLARE_SPEC_FUN( spec_decap        );

//this is the actual program. it may look messy at the bottom, but it works 

bool spec_decap( CHAR_DATA *ch, char *argument)
{
  if (!str_cmp(argument, "update"))
  {

    CHAR_DATA *vch;
	    CHAR_DATA *gch;
	    char buf[MAX_STRING_LENGTH];
	    OBJ_DATA *object;
		    OBJ_DATA *obj2;
    OBJ_DATA *object_next;
	    bool found = FALSE;

	    for (vch = ch->in_room->people; vch && !found; vch = vch->next_in_room)
	    {
	      if (vch == ch) continue;
	      if (number_range(1,2) == 1) continue;
	      found = TRUE;
	      gch = vch;
	    }

	    if (!found) return FALSE;

	    if (gch->hit < -5)
        {
	    switch(number_range(1,4))
	    {
	      case 1:
	        behead(gch);
	        gch->level = 2;
	        sprintf(buf, "Die, %s, DIE!!!", gch->name);
	        do_chat(ch, buf);
	        sprintf(buf,"%s has been decapitated by %s.",gch->name,ch->short_descr);
	        do_info(ch,buf);
	        break;

	      case 2:
	        behead(gch);
	        gch->level = 2;
	        sprintf( buf, "You would have to go and lose your head, now wouldn't you?");
	        do_chat(ch, buf);
			sprintf(buf,"%s has been decapitated by %s.",gch->name,ch->short_descr);
			do_info(ch,buf);
	        break;

	     case 3:
	        behead(gch);
	        gch->level = 2;
	        sprintf( buf, "Time to die....%s!",gch->name);
	        do_chat(ch, buf);
			sprintf(buf,"%s has been decapitated by %s.",gch->name,ch->short_descr);
			do_info(ch,buf);
	        break;

	     case 4:
		    behead(gch);
		    gch->level = 2;
			sprintf( buf, "DIE, FREAK!");
			do_chat(ch, buf);
			sprintf(buf,"%s has been decapitated by %s.",gch->name,ch->short_descr);
			do_info(ch,buf);
	        break;

	    }
	}

	/*wear stuff??*/
	for ( object = ch->in_room->contents; object; object = object_next )
	    {
	        object_next = object->next_content;
	        if ( object == NULL )
	            continue;

	        if ( !IS_SET( object->wear_flags, ITEM_TAKE ) )
	            continue;

	        if ( object->item_type == ITEM_CORPSE_NPC )
	            continue;

	        if ( ( object->item_type != ITEM_DRINK_CON
	            && object->item_type != ITEM_TRASH )
	            &&

	           !(( IS_OBJ_STAT( object, ITEM_ANTI_EVIL   ) && IS_EVIL   ( ch ) ) ||
	                 ( IS_OBJ_STAT( object, ITEM_ANTI_GOOD   ) && IS_GOOD   ( ch ) ) ||
	                 ( IS_OBJ_STAT( object, ITEM_ANTI_NEUTRAL) && IS_NEUTRAL( ch ) ) ) )

	        {
	            act( "$n picks up $p and examines it carefully.", ch, object, NULL, TO_ROOM );
	            obj_from_room( object );
	            obj_to_char( object, ch );
	                /*Now compare it to what we already have*/
	                for ( obj2 = ch->carrying; obj2; obj2 = obj2->next_content )
	                {
	                    if ( obj2->wear_loc != WEAR_NONE
	                        && can_see_obj( ch, obj2 )
	                        && object->item_type == obj2->item_type
	                        && ( object->wear_flags & obj2->wear_flags & ~ITEM_TAKE) != 0 )
	                        break;
	                }
	if (!obj2)
	                {
	                    switch (object->item_type)
	                    {
	                        default:
	                            sprintf(buf,"Hey, what a find!");
	                            do_say(ch,buf);
	                            break;
	                        case ITEM_FOOD:
	                            sprintf(buf, "This looks like a tasty morsel!");
	                            do_say(ch,buf);
	                            do_eat(ch,object->name);
	                            break;
	                        case ITEM_WAND:
	                            sprintf(buf,"Wow, a magic wand!");
	                            do_say(ch,buf);
	                            wear_obj(ch,object,FALSE);
	                            break;
	                        case ITEM_STAFF:
	                            sprintf(buf,"Kewl, a magic staff!");
	                            do_say(ch,buf);
	                            wear_obj(ch,object,FALSE);
	                            break;
	                        case ITEM_WEAPON:
	                            sprintf(buf,"Hey, this looks like a nifty weapon!");
	                            do_say(ch,buf);
	                            wear_obj(ch,object,FALSE);
	                            break;
	                        case ITEM_ARMOR:
	                            sprintf(buf,"Oooh...a nice piece of armor!");
	                            do_say(ch,buf);
	                            wear_obj(ch,object,FALSE);
	                            break;/*
	                        case ITEM_POTION:
	                            sprintf(buf, "Great!  I was feeling a little thirsty!");
	                            do_say(ch,buf);
	                            act( "You quaff $p.", ch, object, NULL ,TO_CHAR );
	                            act( "$n quaffs $p.", ch, object, NULL, TO_ROOM );
	                            obj_cast_spell( object->value[1], object->level, ch, ch, NULL );
	                            obj_cast_spell( object->value[2], object->level, ch, ch, NULL );
	                            obj_cast_spell( object->value[3], object->level, ch, ch, NULL );
	                            extract_obj( object );
	                            break;
	                        case ITEM_SCROLL:
	                            sprintf(buf,"Hmmm I wonder what this says?");
	                            do_say(ch,buf);
	                            act( "You recite $p.", ch, object, NULL, TO_CHAR );
	                            act( "$n recites $p.", ch, object, NULL, TO_ROOM );
	                            obj_cast_spell( object->value[1], object->level, ch, NULL, object );
	                            obj_cast_spell( object->value[2], object->level, ch, NULL, object );
	                            obj_cast_spell( object->value[3], object->level, ch, NULL, object );
	                            extract_obj( object );
	                            break;*/
	                    }
	                    return TRUE;
	                }

	            if ((object->level > obj2->level))
	            {
	                sprintf(buf,"Now THIS looks like an improvement!");
	                do_say(ch,buf);
	                remove_obj(ch,obj2->wear_loc,TRUE);
	                wear_obj(ch,object,FALSE);
	            }
	            else
	            {
	                sprintf(buf,"I don't want this piece of junk!");
	                do_say(ch,buf);
	                act("You don't like the look of $p.",ch,object,NULL,TO_CHAR);
	                        do_drop(ch,object->name);
	                        do_sacrifice(ch,object->name);
                }
                return TRUE;
			}
		}
	    return TRUE;
     //if (ch->fighting) return FALSE;
}
else if (!str_cmp(argument, "midround"))
 {
     CHAR_DATA *victim;
     char buf[MAX_STRING_LENGTH];

     if ((victim = ch->fighting) == NULL)
       return FALSE;

     if (victim->hit <= -5)
     {
		  sprintf(buf, "What can I do for you today, %s?", victim->name);
        do_say(ch, buf);
		 //raw_kill(victim);
     }
   }

   return FALSE;
  }
  
  //put the following line in your special table at the bottom of the file
  { "spec_decap",                 spec_decap          },