/*******************************************************************************
* _ | File Name: autoconsume and autoall.txt
* / \ _-' | Description: This allows you the MUD master to
* _/| \-''- _ / | set consume commands for undead races.
* __-' | \ | It also allows the player to set
* / \ | themselves to autoconsume the dead.
* / "o. |o | | Autoall turns on all default options
* | \ ; |
* ', |
* \_ __\ | (c) 2000-2001 TAKA
* ''-_ \.// | (c) 2000-2001 The GhostMud Project Team
* / '-____' |
* / | You may use this code under GNU license restriction
* _' The Wolf | 1) This header block remains in the code.
* _-' strikes! | 2) You email me at a_ghost_dancer@excite.com
*_________________________| letting me know you are using this code
* please incluse your name, your mud name
* All rights reserved your mud address, your email and this file
* GhostMud is copyrighted name.
* by TAKA 3) In your help files mention me where appropriate
* IE: help snippets.
*********************************************************************************/
/***************************************************************************
* (c) 2000 TAKA and the GhostMud PROJECT TEAM
*
* Last thank you to all the ROM amd MERC folks for this wounderful code
* base know as ROM.
*
* The Ghost Dancer MUD Project Team and me TAKA thank you
* for your interest.
*
* You can email me at:
* TAKA
* a_ghost_dancer@excite.com
*
***************************************************************************
/*
* auto consume code for vampire/lich/were classed
* also auto all function by Taka
* by TAKA of GhostMud Project Team
* in act_info.c do_autolist add.
*/
send_to_char("autoconsume ",ch);
if (IS_SET(ch->act,PLR_AUTOCONSUME))
send_to_char("ON\n\r",ch);
else
send_to_char("OFF\n\r",ch);
/*
* auto consume code for vampire/lich/were classed
* by TAKA of GhostMud Project Team
* in act_info.c add.
*/
void do_autoconsume(CHAR_DATA *ch, char *argument)
{
if (IS_NPC(ch))
return;
if (!IS_SET(ch->form, FORM_UNDEAD))
{
send_to_char("{RYou are not undead!\n\r",ch);
return;
}
if (IS_SET(ch->act,PLR_AUTOCONSUME))
{
send_to_char("Autoconsume removed.\n\r",ch);
REMOVE_BIT(ch->act,PLR_AUTOCONSUME);
}
else
{
send_to_char("You will now consume the blood of corpses!\n\r",ch);
SET_BIT(ch->act,PLR_AUTOCONSUME);
}
}
/* turn on all auto flags! TAKA */
void do_autoall(CHAR_DATA *ch, char *argument)
{
if (IS_NPC(ch))
return;
SET_BIT(ch->act,PLR_AUTOASSIST);
SET_BIT(ch->act,PLR_AUTOEXIT);
SET_BIT(ch->act,PLR_AUTOGOLD);
SET_BIT(ch->act,PLR_AUTOLOOT);
SET_BIT(ch->act,PLR_AUTOSAC);
SET_BIT(ch->act,PLR_AUTOSPLIT);
if (IS_SET(ch->form, FORM_UNDEAD))
{
SET_BIT(ch->act,PLR_AUTOCONSUME);
}
SET_BIT(ch->act,PLR_AUTODAMAGE);
send_to_char("{RAll autos turned on.{x\n\r",ch);
}
/*
* in interp.h add
*/
DECLARE_DO_FUN( do_consume );
DECLARE_DO_FUN( do_autoconsume );
DECLARE_DO_FUN( do_autoall );
/*
* in interp.c add
*/
{ "autoall", do_autoall, POS_DEAD, 0, LOG_NORMAL, 1 },
{ "autoconsume", do_autoconsume, POS_DEAD, 0, LOG_NORMAL, 1 },
{ "consume", do_consume, POS_DEAD, 0, LOG_NORMAL, 1 },
/*
* in fight.c add at the top
*/
DECLARE_DO_FUN(do_consume );
/*
* in fight.c in function damage find this
*/
if ((coins = get_obj_list(ch,"gcash",corpse->contains))
!= NULL)
do_get(ch, "all.gcash corpse");
/* add this */
if ( IS_SET(ch->act, PLR_AUTOCONSUME) )
{
if ( IS_SET(ch->act,PLR_AUTOLOOT) && corpse && corpse->contains)
return TRUE; /* leave if corpse has treasure */
else
do_consume( ch, "corpse" );
}
/*
* in merc.h add in the PLR_ section this
*/
#define PLR_AUTOCONSUME (B) /* UNDEAD PC RACES ONLY */
/*
* in act_obj.c add
*/
void do_consume( CHAR_DATA *ch, char *argument )
{
char arg[MAX_INPUT_LENGTH];
char buf[MAX_INPUT_LENGTH];
OBJ_DATA *obj;
one_argument( argument, arg );
if ( arg[0] == '\0' || !str_cmp( arg, ch->name ) )
{
act( "$n bites $mself hard and draws blood.", ch, NULL, NULL, TO_ROOM );
send_to_char("You are a sick puppy, consuming yourself!\n\r", ch );
return;
}
obj = get_obj_list( ch, arg, ch->in_room->contents );
if ( obj == NULL )
{
send_to_char( "You can't find it.\n\r", ch );
return;
}
if ( obj->item_type == ITEM_CORPSE_PC )
{
if (obj->contains)
{
send_to_char("Mota wouldn't like that.\n\r",ch);
return;
}
}
if ((obj->level * 2) <= 10)
{
ch->hit += 10;
ch->mana += 20;
ch->move += 10;
sprintf(buf, "You gain 10 hit points 20 mana 10 movement by consuming the corpse!");
}
else
{
ch->hit += (obj->level * 2);
ch->mana += (obj->level * 4);
ch->move += (obj->level * 2);
sprintf(buf, "You gain %d hit points %d mana %d movement by consuming the corpse!",
(obj->level * 2), (obj->level * 4), (obj->level * 2));
}
act( "$n consumes the blood of the corpse.", ch, obj, NULL, TO_ROOM );
wiznet("$N consumed the corpse $p.", ch,obj,WIZ_SACCING,0,0);
send_to_char( buf, ch );
extract_obj( obj );
return;
}