/***************************************************************************
* 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;
}