atd/area/
atd/build/
atd/clans/
atd/log/
atd/player/store/
atd/site/
atd/src/bin/
/***************************************************************************
 *  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.                                                  *
 ***************************************************************************/
 /**************************************************************************
 *  God Wars Mud originally written by KaVir aka Richard Woolcock.         *
 *  Changes done to the code done by Sage aka Walter Howard, this mud is   *
 *  for the public, however if you run this code it means you agree        *
 *  to the license.low, license.gw, and license.merc have fun. :)          *
 ***************************************************************************/
 /**************************************************************************
 *  Entire contents of this file coded from scratch by Malawar             *
 *  For more information contact at Malawar@HotMail.com                    *
 ***************************************************************************/

#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "merc.h"
#include "commands.h"

void mageupkeep(CHAR_DATA *ch)
{
	const char *mcolor[5] =
{
	"{mPurple{x",	"{RRed{x",
	"{BBlue{x",	"{GGreen{x",
	"{YYellow{x"
};
	char buf[MSL];
	cent_to_char("-----------------------------------------------------------------",ch);
	centre_text("{b(<{B Warlock Powers{b >){x",ch);
	cent_to_char("-----------------------------------------------------------------",ch);
	sprintf(buf,"You are a %s Mage.\n\r\n\r",mcolor[ch->pcdata->powers[MPOWER_RUNE0]]);
	stc(buf,ch);
	if(IS_SET(ch->act,PLR_HOLYLIGHT))
		stc("You have heightened Perception.\n\r",ch);
	if(IS_SET(ch->mflags,MAGE_POLYAPPEAR))
		stc("You are seen as multiple figures.\n\r",ch);
	if(IS_SET(ch->mflags,MAGE_TELEKINETICS))
		stc("You focus your mental energies into your attacks.\n\r",ch);
	if(IS_SET(ch->mflags,MFLAGS_DIMMAK))
		stc("You focus your attacks on your opponents weaknesses.\n\r",ch);
	if(IS_SET(ch->mflags,MAGE_BETTERBODY))
		stc("Your body is of supernatural size.\n\r",ch);
	if(IS_AFFECTED(ch,AFF_POLYMORPH))
		{sprintf(buf,"You are %s.\n\r",ch->morph);stc(buf,ch);}
	if(IS_AFFECTED(ch,AFF_FLYING))
		stc("You are hovering.\n\r",ch);
	if(IS_AFFECTED(ch,AFF_SHADOWPLANE))
		stc("You are in the Shadowplane.\n\r",ch);
	if(is_affected(ch,skill_lookup("spirit kiss")))
		stc("You are blessed by spirits.\n\r",ch);
	if(IS_IMMUNE(ch,IMM_SHIELDED))
		stc("Your aura is shielded.\n\r",ch);
	if(ch->mageshields[mPRIS][mON] )
		stc("You are surrounded by a prismatic shield.\n\r",ch);
	if(ch->mageshields[mBLADE][mON] )
		stc("You are sorrounded by some spining blades.\n\r",ch);
	if(ch->mageshields[mCHAOS][mON] )
		stc("You are sorrounded by a chaotic shield.\n\r",ch);
	
	
	if(ch->spheres[MPRI]>0)
	{
	  sprintf(buf,"\n\rYou have %d quintessence stored in within your body.\n\rYou have %d quintessence stored within your Avatar.\n\r",
	  ch->quint[BODY],ch->quint[AVATAR]);
	  stc(buf,ch);
	}
}


void wwupkeep(CHAR_DATA *ch)
{
  char buf[MSL];
  


cent_to_char("-----------------------------------------------------------------",ch);
	centre_text("{Y({yWerewolf Upkeep{Y){x",ch);
	cent_to_char("-----------------------------------------------------------------",ch);

        if(IS_GAR1(ch,WOLF_COCOON))
		stc("Your body is surrounded by a thick, opaque epidermis.\n\r",ch);
	if(IS_SET(ch->newbits,NEW_QUILLS))
		stc("Your fur is bristly and sharp.\n\r",ch);
	if(IS_SET(ch->act,PLR_HOLYLIGHT))
		stc("You have heightened senses.\n\r",ch);
	if(IS_SET(ch->pcdata->stats[UNI_AFF], VAM_NIGHTSIGHT))
		stc("You have the eyes of a cat.\n\r",ch);
	if(IS_VAMPAFF(ch,VAM_CLAWS))
	{
	      stc("Your talons are extended.\n\r",ch);
	      if(IS_GAR1(ch,WOLF_RAZORCLAWS))
		stc("Your claws have a razor-sharp edge.\n\r",ch);
	      if ( IS_GAR1(ch, WOLF_VISCERAL ) )
		stc("Your claws are poisoned.\n\r", ch );
	}
	if(IS_GAR1(ch,GAROU_BLISSFUL))
		stc("You are completely invisible.\n\r",ch);
	if(is_affected(ch,skill_lookup("lunas blessing")))
		stc("You have Luna's Blessing.\n\r",ch);
	if(IS_GAR1(ch,WW_GRANITE))
		stc("You are surrounded by a wall of granite.\n\r",ch);
	if(IS_GAR1(ch,GAROU_CLENCHED))
		stc("Your jaws are clenched.\n\r",ch);
	if(IS_GAR1(ch,GAROU_AVENGER))
		stc("Your body is imbued with silver.\n\r",ch);
	if(IS_AFFECTED(ch,AFF_SHADOWSIGHT))
		stc("You can see into the beyond.\n\r",ch);
	if(IS_AFFECTED(ch,AFF_STEELSHIELD))
		stc("Your icy chill of despair scares everyone.\n\r",ch);
	if(IS_POLYAFF(ch,POLY_ZULO))
		stc("You are incredibly huge.\n\r",ch);
        if(ch->gifts[RAGABASH] >= 1 )
		stc("Blur of the milky eye.\n\r",ch);
	if(IS_IMMUNE(ch,IMM_SHIELDED))
		stc("Your aura is shielded.\n\r",ch);	
	sprintf(buf,"You have %d gnosis points.\n\rYou can have a maximum of %d make gnosis points.\n\r",
		   ch->gnosis[GCURRENT],ch->gnosis[GMAXIMUM]);
		stc(buf,ch);
}

void drowupkeep(CHAR_DATA *ch)
{

	cent_to_char("-----------------------------------------------------------------",ch);
	centre_text("{GoO{gDrow Upkeep{GOo{x",ch);
	cent_to_char("-----------------------------------------------------------------",ch);

	if(IS_SET(ch->newbits,NEW_DROWHATE))
		stc("Your hatred for others has been invoked.\n\r",ch);
	if(IS_POLYAFF(ch,POLY_SPIDERFORM))
		stc("You are in spiderform.\n\r",ch);
	if(IS_SET(ch->act,PLR_HOLYLIGHT))
		stc("Your vision is enhanced.\n\r",ch);
	if(IS_IMMUNE(ch,IMM_SHIELDED))
		stc("Your aura is shielded.\n\r",ch);
}
void monkupkeep(CHAR_DATA *ch)
{
	char buf[MSL];
	cent_to_char("-----------------------------------------------------------------",ch);
	centre_text("Monk Upkeep",ch);
	cent_to_char("-----------------------------------------------------------------",ch);

  if(IS_SET(ch->newbits,NEW_MONKFLAME))
	stc("Your hands are engulfed in flames.\n\r",ch);
  if(IS_SET(ch->newbits,NEW_MONKADAM))
  	stc("Your hands are as hard as adamantium.\n\r",ch);
  if(IS_SET(ch->newbits,NEW_POWER))
	stc("Your body is pulsing with spiritual energy.\n\r",ch);
  sprintf(buf,"You have %d Ch'i.\n\r",ch->chi[CURRENT]);
	stc(buf,ch);
}


void do_rolldirt( CHAR_DATA *ch, char *argument )
{
    char arg[MAX_INPUT_LENGTH];
    ROOM_INDEX_DATA *inroom;
    one_argument( argument, arg );
    inroom=ch->in_room;
    
    if (!IS_AFFECTED(ch, AFF_FLAMING))
    {
	send_to_char( "You aren't on fire\n\r", ch );
	return;
    }

    if ( number_percent() > (ch->level*1.75) )
    {
	send_to_char("You roll in the dirt trying to put out the flames.\n\r", ch);
	act( "$n rolls in the dirt trying to stop the burning flames", ch, NULL, NULL, TO_ROOM );
	return;
    }

	send_to_char("You manage to roll off the flames around you.\n\r", ch);
	act( "$n manages to roll of the flames around them",  ch, NULL, NULL, TO_ROOM );
    REMOVE_BIT(ch->affected_by, AFF_FLAMING);
    return;
}



void test_crap(CHAR_DATA *ch,char *argument)
{
  char arg[MSL];
  char *p;
  argument=one_argument(argument,arg);

  p=strstr(argument,arg);
  stc(p,ch);

}


void do_dismember(CHAR_DATA *ch,char *argument)
{
  char arg[MSL];
  CHAR_DATA *victim;
  argument=one_argument(argument,arg);

  if(arg[0]== '\0')
  {
    stc("Dismember whom?\n\r",ch);
    return;
  }
  if((victim = get_char_room(ch,arg))==NULL)
  {
    stc("They are not here.\n\r",ch);
    return;
  }
  if(victim->trust > ch->trust)
  {
    stc("I don't THINK so!\n\r",ch);
    return;
  }

            SET_BIT(victim->loc_hp[2],LOST_ARM);
            SET_BIT(victim->loc_hp[6],BLEEDING_ARM_L);
	    SET_BIT(victim->loc_hp[0],LOST_EYE_L);
	    SET_BIT(victim->loc_hp[0],LOST_EYE_R);
	    SET_BIT(victim->loc_hp[0],LOST_EYE_L);
	    SET_BIT(victim->loc_hp[0],LOST_EAR_L);
	    SET_BIT(victim->loc_hp[0],LOST_EAR_R);
	    SET_BIT(victim->loc_hp[0],LOST_EAR_L);
	    SET_BIT(victim->loc_hp[0],LOST_NOSE);
	    SET_BIT(victim->loc_hp[0],BROKEN_NOSE);
	    SET_BIT(victim->loc_hp[0],BROKEN_JAW);
	    SET_BIT(victim->loc_hp[2],LOST_ARM);
	    SET_BIT(victim->loc_hp[6],BLEEDING_ARM_L);
	    SET_BIT(victim->loc_hp[3],LOST_ARM);
	    SET_BIT(victim->loc_hp[6],BLEEDING_ARM_R);
	    SET_BIT(victim->loc_hp[2],BROKEN_ARM);
	    SET_BIT(victim->loc_hp[3],BROKEN_ARM);
	    SET_BIT(victim->loc_hp[2],LOST_HAND);
	    SET_BIT(victim->loc_hp[6],BLEEDING_HAND_L);
	    SET_BIT(victim->loc_hp[3],LOST_HAND);
	    SET_BIT(victim->loc_hp[6],BLEEDING_HAND_R);
            SET_BIT(victim->loc_hp[2],LOST_THUMB);
            SET_BIT(victim->loc_hp[2],LOST_FINGER_I);
            SET_BIT(victim->loc_hp[2],LOST_FINGER_M);
            SET_BIT(victim->loc_hp[2],LOST_FINGER_R);
            SET_BIT(victim->loc_hp[2],LOST_FINGER_L);
            SET_BIT(victim->loc_hp[2],BROKEN_THUMB);
            SET_BIT(victim->loc_hp[2],BROKEN_FINGER_I);
            SET_BIT(victim->loc_hp[2],BROKEN_FINGER_M);
            SET_BIT(victim->loc_hp[2],BROKEN_FINGER_R);
            SET_BIT(victim->loc_hp[2],BROKEN_FINGER_L);
            SET_BIT(victim->loc_hp[3],LOST_THUMB);
            SET_BIT(victim->loc_hp[3],LOST_FINGER_I);
            SET_BIT(victim->loc_hp[3],LOST_FINGER_M);
            SET_BIT(victim->loc_hp[3],LOST_FINGER_R);
            SET_BIT(victim->loc_hp[3],LOST_FINGER_L);
            SET_BIT(victim->loc_hp[3],BROKEN_THUMB);
            SET_BIT(victim->loc_hp[3],BROKEN_FINGER_I);
            SET_BIT(victim->loc_hp[3],BROKEN_FINGER_M);
            SET_BIT(victim->loc_hp[3],BROKEN_FINGER_R);
            SET_BIT(victim->loc_hp[3],BROKEN_FINGER_L);
	    SET_BIT(victim->loc_hp[4],LOST_LEG);
	    SET_BIT(victim->loc_hp[6],BLEEDING_LEG_L);
	    SET_BIT(victim->loc_hp[5],LOST_LEG);
	    SET_BIT(victim->loc_hp[6],BLEEDING_LEG_R);
	    SET_BIT(victim->loc_hp[4],BROKEN_LEG);
	    SET_BIT(victim->loc_hp[5],BROKEN_LEG);
	    SET_BIT(victim->loc_hp[4],LOST_FOOT);
	    SET_BIT(victim->loc_hp[6],BLEEDING_FOOT_L);
	    SET_BIT(victim->loc_hp[5],LOST_FOOT);
	    SET_BIT(victim->loc_hp[6],BLEEDING_FOOT_R);
            SET_BIT(victim->loc_hp[1],BROKEN_RIBS_16);
            SET_BIT(victim->loc_hp[1],BROKEN_RIBS_8);
            SET_BIT(victim->loc_hp[1],BROKEN_RIBS_4);
            SET_BIT(victim->loc_hp[1],BROKEN_RIBS_2);
            SET_BIT(victim->loc_hp[1],BROKEN_RIBS_1);
            SET_BIT(victim->loc_hp[LOC_HEAD],LOST_TOOTH_16);
            SET_BIT(victim->loc_hp[LOC_HEAD],LOST_TOOTH_8);
            SET_BIT(victim->loc_hp[LOC_HEAD],LOST_TOOTH_4);
            SET_BIT(victim->loc_hp[LOC_HEAD],LOST_TOOTH_2);
            SET_BIT(victim->loc_hp[LOC_HEAD],LOST_TOOTH_1);
        SET_BIT(victim->loc_hp[LOC_LEG_L],BROKEN_LEG);
        SET_BIT(victim->loc_hp[LOC_LEG_R],BROKEN_LEG);
        SET_BIT(victim->loc_hp[LOC_BODY],BROKEN_SPINE);
        SET_BIT(victim->loc_hp[LOC_HEAD],BROKEN_NOSE);
        SET_BIT(victim->loc_hp[LOC_HEAD],BROKEN_JAW);
        SET_BIT(victim->loc_hp[LOC_BODY],BROKEN_NECK);
        SET_BIT(victim->loc_hp[LOC_HEAD],BROKEN_NOSE);
        SET_BIT(victim->loc_hp[LOC_HEAD],BROKEN_JAW);
        SET_BIT(victim->loc_hp[LOC_BODY],BROKEN_NECK);
        SET_BIT(victim->loc_hp[LOC_HEAD],BROKEN_NOSE);
        SET_BIT(victim->loc_hp[LOC_HEAD],BROKEN_JAW);
        SET_BIT(victim->loc_hp[LOC_BODY],BROKEN_NECK);
        SET_BIT(victim->loc_hp[LOC_HEAD],BROKEN_NOSE);
        SET_BIT(victim->loc_hp[LOC_HEAD],BROKEN_JAW);
        SET_BIT(victim->loc_hp[LOC_BODY],BROKEN_NECK);
make_part(victim,"arm");
make_part(victim,"arm");
make_part(victim,"leg");
make_part(victim,"leg");
make_part(victim,"blood");
make_part(victim,"blood");

	act("$n has dismembered $N!",ch,NULL,victim,TO_NOTVICT);
	act("You dismembered $N!",ch,NULL,victim,TO_CHAR);
	act("$n has dismembered you!",ch,NULL,victim,TO_VICT);
        do_remove(victim,"all");
	victim->in_room->blood += 200;
}


void do_chardump(CHAR_DATA *ch,char *argument)
{
char buf[MSL];
char arg[MSL];
CHAR_DATA *vch;
DESCRIPTOR_DATA *d;

argument=one_argument(argument,arg);
if(!arg[0])
{
  stc("View a dump of whom?\n\r",ch);
  return;
}

if((vch=get_char_world(ch,arg))==NULL)
{
  stc("They ain't here, dammit!\n\r",ch);
  return;
}
d=vch->desc;
sprintf(buf,"d->host             %s\n\r",d->host);
stc(buf,ch);
sprintf(buf,"d->descriptor       %d\n\r",d->descriptor);
stc(buf,ch);
sprintf(buf,"d->connected        %d\n\r",d->connected);
stc(buf,ch);
sprintf(buf,"ch->hunting         %s\n\r",vch->hunting);
stc(buf,ch);
sprintf(buf,"ch->name            %s\n\r",vch->name);
stc(buf,ch);
sprintf(buf,"ch->pload           %s\n\r",vch->pload);
stc(buf,ch);
sprintf(buf,"ch->short_descr     %s\n\r",vch->short_descr);
stc(buf,ch);
sprintf(buf,"ch->long_descr      %s\n\r",vch->long_descr);
stc(buf,ch);
sprintf(buf,"ch->description     %s\n\r",vch->description);
stc(buf,ch);
sprintf(buf,"ch->lord            %s\n\r",vch->lord);
stc(buf,ch);
sprintf(buf,"ch->clan            %s\n\r",vch->clan);
stc(buf,ch);
sprintf(buf,"ch->kingdom         %s\n\r",vch->kingdom);
stc(buf,ch);
sprintf(buf,"ch->objdesc         %s\n\r",vch->objdesc);
stc(buf,ch);
sprintf(buf,"ch->morph           %s\n\r",vch->morph);
stc(buf,ch);
sprintf(buf,"ch->createtune      %s\n\r",vch->createtime);
stc(buf,ch);
sprintf(buf,"ch->lasttime        %s\n\r",vch->lasttime);
stc(buf,ch);
sprintf(buf,"ch->lasthost        %s\n\r",vch->lasthost);
stc(buf,ch);
sprintf(buf,"ch->poweraction     %s\n\r",vch->poweraction);
stc(buf,ch);
sprintf(buf,"ch->powertype       %s\n\r",vch->powertype);
stc(buf,ch);
sprintf(buf,"ch->prompt          %s\n\r",vch->prompt);
stc(buf,ch);
sprintf(buf,"ch->cprompt         %s\n\r",vch->cprompt);
stc(buf,ch);
sprintf(buf,"ch->prefix          %s\n\r",vch->prefix);
stc(buf,ch);
sprintf(buf,"ch->sex             %d\n\r",vch->sex);
stc(buf,ch);
sprintf(buf,"ch->race            %d\n\r",vch->race);
stc(buf,ch);
sprintf(buf,"ch->class           %d\n\r",vch->class);
stc(buf,ch);
sprintf(buf,"ch->warpcount       %d\n\r",vch->warpcount);
stc(buf,ch);
sprintf(buf,"ch->fight_timer     %d\n\r",vch->fight_timer);
stc(buf,ch);
sprintf(buf,"ch->obeah_timer     %d\n\r",vch->obeah_timer);
stc(buf,ch);
sprintf(buf,"ch->reina_timer     %d\n\r",vch->reina_timer);
stc(buf,ch);
sprintf(buf,"ch->silence_timer   %d\n\r",vch->silence_timer);
stc(buf,ch);
sprintf(buf,"ch->darkness_timer  %d\n\r",vch->darkness_timer);
stc(buf,ch);
sprintf(buf,"ch->arena_timer     %d\n\r",vch->arena_timer);
stc(buf,ch);
sprintf(buf,"ch->majesty_timer   %d\n\r",vch->majesty_timer);
stc(buf,ch);
sprintf(buf,"ch->cobra_timer     %d\n\r",vch->cobra_timer);
stc(buf,ch);
sprintf(buf,"ch->wyld_timer      %d\n\r",vch->wyld_timer);
stc(buf,ch);
sprintf(buf,"ch->embraced        %s\n\r",
vch->embraced != NULL ? vch->embraced->name:"None");
stc(buf,ch);
sprintf(buf,"ch->embracing       %s\n\r",
vch->embracing != NULL ? vch->embracing->name:"None");
stc(buf,ch);
sprintf(buf,"ch->Not.. Finished.. yet.... heh.... too... boring......\n\r");
stc(buf,ch);
return;
}