cotn25/area/
cotn25/src/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"

void do_lifebuy( CHAR_DATA *ch, char *argument )
{
  OBJ_INDEX_DATA *pObjIndex;
  OBJ_DATA *obj;
  char arg[MAX_INPUT_LENGTH];
  int vnum = 0;

  argument = one_argument( argument, arg );

  if (IS_NPC(ch)) return;


  if ( ch->pcdata->quest < 1000000 )
  {
    send_to_char("You don't have the 1 Million qps needed.\n\r",ch);
    return;
  }

  vnum = 80929;

  if ( vnum == 0 || (pObjIndex = get_obj_index( vnum )) == NULL)
  {
    send_to_char("Missing object, please inform Xrakisis .\n\r",ch);
    return;
  }
  if(!IS_IMMORTAL(ch)) ch->pcdata->quest -= 1000000;
  obj = create_object(pObjIndex, 50);
  obj->questowner = str_dup(ch->pcdata->switchname);
  obj_to_char(obj, ch);
  act("You transform the 1 Million qp into $p.",ch,obj,NULL,TO_CHAR);
  act("$n forms $p out of 1 Million qp.",ch,obj,NULL,TO_ROOM);
  return;
}


void do_symbioteadvance(CHAR_DATA * ch, char *argument)
{
        char buf[MAX_STRING_LENGTH];
	char arg1[MAX_INPUT_LENGTH];
	int mkills = 1000;

	if (IS_NPC(ch))
	return;

  one_argument( argument, arg1);

  if (ch->level < 3)
  {
    send_to_char("You must be avatar to advance your Symbiote.\n\r",ch);
    return;
  }
  if (ch->symbiotetype < 1)
  {
    send_to_char("You do not have a symbiote.\n\r",ch);
    return;
  }

  if (arg1[0] == '\0')
  {  
  
send_to_char("#R[#0--------------------#R[#7Symbiote Screen#R]#0--------------------#R]#n\n\r", ch);


	if (ch->symbiotetype == 2) stc("Death Symbiote\n\r",ch);
	if (ch->symbiotetype == 1) stc("Life Symbiote\n\r",ch);


    sprintf(buf, "Damroll Modifier: %d  \n\r",ch->symbiotedr);
    send_to_char(buf,ch);

    sprintf(buf, "Hitroll Modifier: %d\n\r",ch->symbiotehr);
    send_to_char(buf,ch);

    sprintf(buf, "AC Modifier: %d\n\r",ch->symbioteac);
    send_to_char(buf,ch);

    sprintf(buf, "Damcap Modifier: %d\n\r",ch->symbiotedc);
    send_to_char(buf,ch);

//    sprintf(buf, "Current Level: %d\n\r",ch->symbiotelvl);
//    send_to_char(buf,ch);

    sprintf(buf, "Symbiote Points %d\n\r",ch->symbiotepoints);
    send_to_char(buf, ch);

    sprintf(buf, "Mob kills until next point: %d\n\r",(mkills -= ch->symbiotemkills));
    send_to_char(buf,ch);

//    sprintf(buf,"Cost of advancing symbiote's level :%d EXP, %d Bones\n\r", sgainexp, sgainbones);
//    send_to_char(buf,ch);


    sprintf(buf, "Symibote Toughness: %d.%d%%\n\r",
ch->pcdata->damreductdec == 0 ? ch->pcdata->damreduct - 1 : ch->pcdata->damreduct,
ch->pcdata->damreductdec == 0 ? 9 : ch->pcdata->damreductdec - 1);
    send_to_char(buf,ch);

send_to_char("#R[#0------------------#R[#7Symbiote Arguments#R]#0------------------#R]#n\n\r", ch);
send_to_char("damroll(+5 DR), hitroll(+5 HR), ac(-10 AC), damcap(+10 DC)\n\r", ch);
	
	send_to_char("#R[#0--------------------#R[#7Symbiote Screen#R]#0--------------------#R]#n\n\r", 
ch);
	return;
}


if (!str_cmp(arg1,"damroll"))
{

	if (ch->symbiotedr >= 1000)
	{
	send_to_char( "Symbiote Damroll Maxed\n\r", ch);
	return;
	}
	if (ch->symbiotepoints < 1)
	{
	send_to_char( "Not enough symbiote points.\n\r", ch);
	return;
	}
	send_to_char( "Damroll increased by 5.\n\r", ch);
	ch->symbiotedr += 5;
        ch->symbiotepoints -= 1;
	return;
}

if (!str_cmp(arg1,"hitroll"))
{

	if (ch->symbiotehr >= 1000)
	{
	send_to_char( "Symbiote Hitroll Maxed\n\r", ch);
	return;
	}
        if (ch->symbiotepoints < 1)
        {
        send_to_char( "Not enough symbiote points.\n\r", ch);
        return;
        }
	send_to_char( "Hitroll increased by 5.\n\r", ch);
	ch->symbiotehr += 5;
        ch->symbiotepoints -= 1;
	return;
}
if (!str_cmp(arg1,"damcap"))
{

	if (ch->symbiotedc >= 1000)
	{
	send_to_char( "Symbiote Damcap Maxed\n\r", ch);
	return;
	}
        if (ch->symbiotepoints < 1)
        {
        send_to_char( "Not enough symbiote points.\n\r", ch);
        return;
        }
	send_to_char( "Damcap increased by 10.\n\r", ch);
	ch->symbiotedc += 10;
        ch->symbiotepoints -= 1;
	return;
}
if (!str_cmp(arg1,"ac"))
{

	if (ch->symbioteac >= 1000)
	{
	send_to_char( "Symbiote AC Maxed\n\r", ch);
	return;
	}
        if (ch->symbiotepoints < 1)
        {
        send_to_char( "Not enough symbiote points.\n\r", ch);
        return;
        }
	send_to_char( "Armor increased by 10.\n\r", ch);
	ch->symbioteac += 10;
        ch->symbiotepoints -= 1;
	return;
}
return;
}

void do_gainsymbiote(CHAR_DATA * ch, char *argument)
{
        char      buf[MAX_STRING_LENGTH];
	char arg[MAX_INPUT_LENGTH];

	if (IS_NPC(ch))
	return;
 
  one_argument( argument, arg);  
        
  if (ch->level < 3)
  {
    send_to_char("You must be an avatar to gain a Symbiote.\n\r",ch);
    return;
  }

  if (!IS_NPC(ch) && ch->symbiotetype != 0)
  {   
    send_to_char("You already have a symbiote.\n\r",ch);
    return;
  }

  if (arg[0] == '\0')
  {
  
        send_to_char("type gainsymbiote (name) to choose a Symbiote.\n\r",ch);
	send_to_char("#Y--#CDeath Symbiote\n\r",ch);
        send_to_char("#Y--#CLife Symbiote\n\r",ch);
	send_to_char("Cost: 200,000 QP\n\r",ch);
        return;
  }



if (!str_cmp(arg,"death"))
{
   if (ch->pcdata->quest  < 200000)
   {
        send_to_char( "You do not have enough quest points.\n\r", ch);
        return;
   }
   else
   {
	ch->symbiotetype = SYMBIOTE_DEATH;
	send_to_char( "A Death Symbiote absorbs into your body.\n\r", ch);
	ch->pcdata->quest  -= 200000;
	return;
   }
}        
else if (!str_cmp(arg,"life"))
{
   if (ch->pcdata->quest < 200000)
   {
        send_to_char( "You do not have enough points.\n\r", ch);
        return;
   }
   else
   {
	ch->symbiotetype = SYMBIOTE_LIFE;
	send_to_char( "A Life Symbiote absorbs into your body.\n\r", ch);
	ch->pcdata->quest  -= 200000;
	return;
   }
}        
  else do_gainsymbiote(ch,"");   
  return;
}


void do_classbalance(CHAR_DATA *ch, char *argument)
{
int i;

char class[MAX_STRING_LENGTH];
char arg1[MAX_INPUT_LENGTH];
char arg2[MAX_INPUT_LENGTH];
char arg3[MAX_INPUT_LENGTH];
char buf[MAX_STRING_LENGTH];
unsigned long int value = 0;

argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
argument = one_argument( argument, arg3 );

save_classbalance();

  if (arg1[0] == '\0')
  {
send_to_char("#CClass#0                    : #GClass Wins    #0-#RClass Losses   #GMightdifWin   #GMightdifLose  \n\r",ch);
send_to_char("\n\r",ch);
for (i=0;i<63;i++)
{
if (i==0) sprintf(class,"NULL                    ");
if (i==1) sprintf(class,"#R[#0Demon#R]#n                 ");
if (i==2) sprintf(class,"#y((#LWerewolf#y))#n            ");
if (i==3) sprintf(class,"#0<<#RVampire#0>>#n             ");
if (i==4) sprintf(class,"#P.o0#0Drow#P0o.#n              ");
if (i==5) sprintf(class,"#y{#RTanar'ri#y}#n              ");
if (i==6) sprintf(class,"#y.x#0(#7Angel#0)#yx.#n             ");
if (i==7) sprintf(class,"#0|[#LUndead Knight#0]|#n       ");
if (i==8) sprintf(class,"#g[#rX#g]#oAssassin#g[#rX#g]#n          ");
if (i==9) sprintf(class,"#7(#0*#R=#r-#oWraith#r-#R=#0*#7)#n          ");
if (i==10) sprintf(class,"#Rx#rX#C[#gElemental#C]#rX#Rx#n         ");
if (i==11) sprintf(class,"#y<#7/#y+#7>#nPaladin#7<#y+#7\\#y>#n         ");
if (i==12) sprintf(class,"Sorcerer                ");      
if (i==13) sprintf(class,"Draconian               ");
if (i==14) sprintf(class,"#C***#yHydra#C***#n             ");
if (i==15) sprintf(class,"Faerie                  ");
if (i==16) sprintf(class,"#RV#7-#RW#0[#GUndead Lycan#0]#RW#7-#RV    ");
if (i==17) sprintf(class,"War Wizard              ");
if (i==18) sprintf(class,"Blade Master            ");
if (i==19) sprintf(class,"Shadow Dragon           ");
if (i==20) sprintf(class,"#G[#RH#GELL#RS S#GOLDIE#RR#G]         ");
if (i==21) sprintf(class,"Shadow Fiend            ");
if (i==22) sprintf(class,"Stalker                 ");
if (i==23) sprintf(class,"#C-=#y(#rx#gG#Gaia Wol#gf#rx#y)#C=-#n       ");
if (i==24) sprintf(class,"#g[#rS#chado#rw#cb#ro#cr#rn#g]#n            ");
if (i==25) sprintf(class,"Black Assassi           ");
if (i==26) sprintf(class,"Hell Spawn              ");
if (i==27) sprintf(class,"Vampyric Mist           ");
if (i==28) sprintf(class,"Deva                    ");
if (i==29) sprintf(class,"Baatezu                 ");
if (i==30) sprintf(class,"Nazgul                  ");
if (i==31) sprintf(class,"Undead Assassin         ");
if (i==32) sprintf(class,"Necromancer             ");
if (i==33) sprintf(class,"Heavens Soldier         ");
if (i==34) sprintf(class,"Silver Dragon           ");
if (i==35) sprintf(class,"Typhon                  ");
if (i==36) sprintf(class,"Gold Dragon             ");
if (i==37) sprintf(class,"Druid                   ");
if (i==38) sprintf(class,"Succubus                ");
if (i==39) sprintf(class,"Wizard                  ");
if (i==40) sprintf(class,"#r:=#CDragon#r=:#n              ");
if (i==41) sprintf(class,"Mage                    ");
if (i==42) sprintf(class,"Abomination             ");
if (i==43) sprintf(class,"Phoenix                 ");
if (i==44) sprintf(class,"Scorpion                ");
if (i==45) sprintf(class,"Xombi                   ");
if (i==46) sprintf(class,"Hobbit                  ");
if (i==47) sprintf(class,"#c<>#GG#gian#Gt#c<>#n               ");
if (i==48) sprintf(class,"DayWalker               ");
if (i==49) sprintf(class,"Fae                     ");
if (i==50) sprintf(class,"Golem                   ");
if (i==51) sprintf(class,"Hunter                  ");
if (i==52) sprintf(class,"Mummy                   ");
if (i==53) sprintf(class,"#l\#0|#l/-#7S#0hinob#7i#l-\#0|#l/#n           ");
if (i==54) sprintf(class,"#0(#r*#7Zombie#r*#0)#n              ");
if (i==55) sprintf(class,"Cyborg                  ");
if (i==56) sprintf(class,"Bard                    ");
if (i==57) sprintf(class,"#r+#y=#r+Human#r+#y=#r+#n             ");
if (i==58) sprintf(class,"#r^-^#0Anti-Paladin#r^-^#n      ");
if (i==59) sprintf(class,"#L=#R*#w>#CSky#Wblade#w<#R*#L=#n          ");
if (i==60) sprintf(class,"#w]>#L*#wPriest#L*#w<[#n            ");
if (i==61) sprintf(class,"#GX#gx#G(#gGhoul#G)#gx#GX#n             ");
if (i==62) sprintf(class,"#W-#0[#RB#ret#0r#Wa#rye#Rr#0]#7-#n            ");


sprintf(buf,"%-18s #0: #G%-12d #0->     #R%-2d        #y%-5d     #y%-5d\n\r",class,classbalance[i].classwins,classbalance[i].classloses,classbalance[i].mightdiffwin, classbalance[i].mightdifflose); 
send_to_char(buf,ch);
}}
return;
}



void increase_total_output(int clenght)
{
        total_output += clenght;
}


     void do_relarmor ( CHAR_DATA * ch, char *argument )
{
	char arg1[MAX_INPUT_LENGTH];
	char arg2[MAX_INPUT_LENGTH];
	char arg3[MAX_INPUT_LENGTH];
	char buf[MAX_STRING_LENGTH];
	OBJ_INDEX_DATA * pObjIndex;
	OBJ_DATA * obj;
	char name [MSL];
	char ooga [MSL];
	int hitroll = 0;
	int damroll = 0;
	int hp      = 0;
	int mana    = 0;
	int move    = 0;
	int wear    = 0;
	int armor   = 0;
	int rnum    = 81106;

	argument = one_argument( argument, arg1 );
	argument = one_argument( argument, arg2 );
	argument = one_argument( argument, arg3 );

        if ( IS_NPC( ch ) )
        return;

	if (ch->pStatus < 5 && !IS_IMMORTAL(ch))
	{
	stc("You need 5 Status for this.\n\r",ch);
	return;
	}


        if (ch->god < 1)
        {
        stc("You must first choose a God to worship!\n\r",ch);
        return;
        }
	if (arg1[0] == '\0')
	{	
	send_to_char("Create which piece of Religious EQ  \n\r",ch);
	send_to_char("Ring Amulet Mail Helmet Leggings Boots Gauntlets Sleeves Cloak Belt Bracer Mask Shield\n\r",ch);
	return;
	}
	if ( rnum == 0 || ( pObjIndex = get_obj_index( rnum ) ) == NULL )
	{
	stc( "Missing object, please notify a member of the staff.\n\r", ch );
	return;
	}
        if ( ch->pcdata->quest < 60000 )
        {
        send_to_char("You don't have the 60K qps needed.\n\r",ch);
        return;
        }
	if (!str_cmp(arg1,"ring"))
	{
	wear = ITEM_WEAR_FINGER;
	sprintf( name, "Ring" );
	}      
	else if (!str_cmp(arg1,"amulet"))
	{
	wear = ITEM_WEAR_NECK;
	sprintf( name, "Amulet" );
	}
	else if (!str_cmp(arg1,"mail"))
	{
	wear = ITEM_WEAR_BODY;
	sprintf( name, "Armor" );
	}
	else if (!str_cmp(arg1,"helmet"))
	{
	wear = ITEM_WEAR_HEAD;
	sprintf( name, "Helmet" );
	}
	else if (!str_cmp(arg1,"leggings"))
	{
	wear = ITEM_WEAR_LEGS;
	sprintf( name, "Leggings" );
	}
	else if (!str_cmp(arg1,"boots"))
	{
	wear = ITEM_WEAR_FEET;
	sprintf( name, "Boots" );
	}
	else if (!str_cmp(arg1,"gauntlets"))
	{
	wear = ITEM_WEAR_HANDS;
	sprintf( name, "Gauntlets" );
	}
	else if (!str_cmp(arg1,"sleeves"))
	{
	wear = ITEM_WEAR_ARMS;
	sprintf( name, "Sleeves" );
	}
	else if (!str_cmp(arg1,"cloak"))
	{
	wear = ITEM_WEAR_ABOUT;
	sprintf( name, "Cloak" );
	}
	else if (!str_cmp(arg1,"belt"))
	{
	wear = ITEM_WEAR_WAIST;
	sprintf( name, "Belt" );
	}
	else if (!str_cmp(arg1,"bracer"))
	{
	wear = ITEM_WEAR_WRIST;
	sprintf( name, "Bracer" );
	}
	else if (!str_cmp(arg1,"mask"))
	{
	wear = ITEM_WEAR_FACE;
	sprintf( name, "Face Plate" );
	}
	else if (!str_cmp(arg1,"shield"))
	{
	wear = ITEM_WEAR_SHIELD;
	sprintf( name, "Shield" );
	}
        else
	{
	do_relarmor(ch,"");
   	return;
	}

      obj     = create_object( pObjIndex, 52 );
      hitroll = 250;
      damroll = 250;
      hp      = 1000;
      mana    = 1000;
      move    = 1000;
      armor   = -400;
      add_affect( obj, APPLY_HITROLL, hitroll );
      add_affect( obj, APPLY_DAMROLL, damroll );
      add_affect( obj, APPLY_HIT, hp );
      add_affect( obj, APPLY_MANA, mana );
      add_affect( obj, APPLY_MOVE, move );
      add_affect( obj, APPLY_AC, armor );
      obj->value[0] = 30;
	SET_BIT( obj->quest, QUEST_RELIC );
	SET_BIT( obj->wear_flags, ITEM_TAKE );
	obj->questowner = str_dup( ch->name );
        
      

        SET_BIT( obj->wear_flags, wear );
        obj->item_type = ITEM_ARMOR;
        sprintf( ooga ,"#GRe#gli#7g#gio#Gus #7%s #Rof #0%s#n", name, god_table[ch->god].name );
        free_string( obj->short_descr );
        obj->short_descr = str_dup( ooga );
        sprintf( ooga ,"#GRe#gli#7g#gio#Gus #7%s #Rof #0%s#n lies on the ground.", name, god_table[ch->god].name );
        free_string( obj->description );
        obj->description = str_dup( ooga );
        sprintf( ooga, "Religious %s ", name );
        free_string( obj->name );
        obj->name = str_dup( ooga );
        obj_to_char( obj, ch );
        act( "$p #7appears in your hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_CHAR );
        act( "$p #7appears in $n's hands in a great #Ye#yxplosion#7.#n", ch, obj, NULL, TO_ROOM );
        stc( "#7You have obtained a piece of Religious armor!#n\n\r", ch );
        ch->pcdata->quest -= 60000;
	return;
        }

void load_classbalance()
{

  int i;   
  FILE *fp;

  if ((fp = fopen("../txt/classbalance.txt", "r")) == NULL)
  {
    log_string("Error: classbalance.txt not found!");
    exit(1);
  }
  classbalance[0].classwins = 0;
  classbalance[0].classloses = 0;
//  balance[0].winammount = 0;
//  balance[0].lossammount = 0;
//  balance[0].mightdiff = 0;


  for (i = 0; i < 63; i++)
  {
    classbalance[i].classwins = fread_number(fp);
    classbalance[i].classloses = fread_number(fp);
//    balance[i].winammount = fread_number(fp);
//    balance[i].lossammount = fread_number(fp);
//    balance[i].mightdiff = fread_number(fp);
  }
  fclose(fp);

}
void save_classbalance()
{

  FILE *fp;
  int i;

  if ((fp = fopen("../txt/classbalance.txt","w")) == NULL)
  {
    log_string("Error writing to classbalance.txt");
    return;
  }
  for (i=0;i<63;i++)
  {
    fprintf(fp, "%d\n", classbalance[i].classwins); 
    fprintf(fp, "%d\n", classbalance[i].classloses);
//    fprintf(fp, "%d\n", balance[i].winammount);
//    fprintf(fp, "%d\n", balance[i].lossammount);
//    fprintf(fp, "%d\n", balance[i].mightdiff);
  }
  fclose (fp);

}
void load_gods()
{

  int i;
  FILE *fp;

  if ((fp = fopen("../txt/gods.txt", "r")) == NULL)
  {
    log_string("Error: gods.txt not found!");
    exit(1);
  }
  gods[0].souls = 0;

  for (i = 0; i < 22; i++)
  {
    gods[i].souls = fread_number(fp);
  }
  fclose(fp);

}
void save_cb1()
{

  FILE *fp;
  int i;

  if ((fp = fopen("../txt/cb1.txt","w")) == NULL)
  {
    log_string("Error writing to cb1.txt");
    return;
  }
  for (i=0;i<63;i++)
  {
    fprintf(fp, "%d\n", classbalance[i].mightdifftotal);
  }
  fclose (fp);

}
void load_cb1()
{

  int i;
  FILE *fp;

  if ((fp = fopen("../txt/cb1.txt", "r")) == NULL)
  {
    log_string("Error: cb1.txt not found!");
    exit(1);
  }
  classbalance[0].mightdifftotal = 0;

  for (i = 0; i < 63; i++)
  {
    classbalance[i].mightdifftotal = fread_number(fp);
  }
  fclose(fp);

}
void save_gods()
{

  FILE *fp;
  int i;

  if ((fp = fopen("../txt/gods.txt","w")) == NULL)
  {
    log_string("Error writing to gods.txt");
    return;
  }
  for (i=0;i<22;i++)
  {
    fprintf(fp, "%d\n", gods[i].souls);
  }
  fclose (fp);

}


void do_gods(CHAR_DATA *ch, char *argument)
{
int i;

char diety[MAX_STRING_LENGTH];
char arg1[MAX_INPUT_LENGTH];
char arg2[MAX_INPUT_LENGTH];
char arg3[MAX_INPUT_LENGTH];
char buf[MAX_STRING_LENGTH];
unsigned long int value = 0;

argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
argument = one_argument( argument, arg3 );

save_gods();


  if (arg1[0] == '\0')
  {
send_to_char("Diety                    : Souls  \n\r",ch);
send_to_char("\n\r",ch);
for (i=0;i<22;i++)
{
if (i==0) sprintf(diety,"Athiest     ");
if (i==1) sprintf(diety,"Astinus     ");
if (i==2) sprintf(diety,"Chemosh     ");
if (i==3) sprintf(diety,"Hiddukel    ");
if (i==4) sprintf(diety,"Nuitari     ");
if (i==5) sprintf(diety,"Sargonnas   ");
if (i==6) sprintf(diety,"Zeboim      ");
if (i==7) sprintf(diety,"Branchala   ");
if (i==8) sprintf(diety,"Habbakuk    ");
if (i==9) sprintf(diety,"Kiri-Jolith ");
if (i==10) sprintf(diety,"Majere      ");
if (i==11) sprintf(diety,"Mishakal    ");
if (i==12) sprintf(diety,"Solinari    ");
if (i==13) sprintf(diety,"Chislev     ");
if (i==14) sprintf(diety,"Gilean      ");
if (i==15) sprintf(diety,"Lunitari    ");
if (i==16) sprintf(diety,"Reorx       ");
if (i==17) sprintf(diety,"Shinare     ");
if (i==18) sprintf(diety,"Sirrion     ");
if (i==19) sprintf(diety,"Zivilyn     ");
if (i==20) sprintf(diety,"Takhisis    ");
if (i==21) sprintf(diety,"Paladine    ");

sprintf(buf,"%-18s : %-12d -> \n\r",diety,gods[i].souls); 
send_to_char(buf,ch);
}
send_to_char("syntax: gods worship godname \n\r",ch);
}

if (!str_cmp(arg1,"worship"))
{
/*	if (ch->god > 0)
	{
	send_to_char("You already worship a god",ch);
	return;
	}*/
	if (arg2[0] == '\0')
	{
	send_to_char("Worship which God?",ch);
	return;
	}
	if (!str_cmp(arg2,"astinus"))
	{
	ch->god = 1;
	send_to_char("You now worship Astinus.",ch);
	return;
	}
	if (!str_cmp(arg2,"chemosh"))
	{
	ch->god = 2;
	send_to_char("You now worship Chemosh.",ch);
	return;
	}
	if (!str_cmp(arg2,"hiddukel"))
	{
	ch->god = 3;
	send_to_char("You now worship Chemosh.",ch);
	return;
	}
	if (!str_cmp(arg2,"nuitari"))
	{
	ch->god = 4;
	send_to_char("You now worship Nuitari.",ch);
	return;
	}
	if (!str_cmp(arg2,"sargonnas"))
	{
	ch->god = 5;
	send_to_char("You now worship Sargonnas.",ch);
	return;
	}
	if (!str_cmp(arg2,"zeboim"))
	{
	ch->god = 6;
	send_to_char("You now worship Zeboim.",ch);
	return;
	}
	if (!str_cmp(arg2,"branchala"))
	{
	ch->god = 7;
	send_to_char("You now worship Branchala.",ch);
	return;
	}
	if (!str_cmp(arg2,"habbakuk"))
	{
	ch->god = 8;
	send_to_char("You now worship Habbakuk.",ch);
	return;
	}
	if (!str_cmp(arg2,"kiri-jolith"))
	{
	ch->god = 9;
	send_to_char("You now worship Kiri-Jolith.",ch);
	return;
	}
	if (!str_cmp(arg2,"majere"))
	{
	ch->god = 10;
	send_to_char("You now worship Majere.",ch);
	return;
	}
	if (!str_cmp(arg2,"mishakal"))
	{
	ch->god = 11;
	send_to_char("You now worship Mishakal.",ch);
	return;
	}
	if (!str_cmp(arg2,"solinari"))
	{
	ch->god = 12;
	send_to_char("You now worship Solinari.",ch);
	return;
	}
	if (!str_cmp(arg2,"chislev"))
	{
	ch->god = 13;
	send_to_char("You now worship Chislev.",ch);
	return;
	}
	if (!str_cmp(arg2,"gilean"))
	{
	ch->god = 14;
	send_to_char("You now worship Gilean.",ch);
	return;
	}
	if (!str_cmp(arg2,"lunitari"))
	{
	ch->god = 15;
	send_to_char("You now worship Lunitari.",ch);
	return;
	}
	if (!str_cmp(arg2,"Reorx"))
	{
	ch->god = 16;
	send_to_char("You now worship Reorx.",ch);
	return;
	}
	if (!str_cmp(arg2,"shinare"))
	{
	ch->god = 17;
	send_to_char("You now worship Shinare.",ch);
	return;
	}
	if (!str_cmp(arg2,"sirrion"))
	{
	ch->god = 18;
	send_to_char("You now worship Sirrion.",ch);
	return;
	}
	if (!str_cmp(arg2,"zivilyn"))
	{
	ch->god = 19;
	send_to_char("You now worship Zivilyn.",ch);
	return;
	}
	if (!str_cmp(arg2,"takhisis"))
	{
	ch->god = 20;
	send_to_char("You now worship Takhisis.",ch);
	return;
	}
	if (!str_cmp(arg2,"paladine"))
	{
	ch->god = 21;
	send_to_char("You now worship Paladine.",ch);
	return;
	}
return;
}
}


size_t mudstrlcpy( char *dst, const char *src, size_t siz )
{
   register char *d = dst;
   register const char *s = src;
   register size_t n = siz;

   /*
    * Copy as many bytes as will fit 
    */
   if( n != 0 && --n != 0 )
   {
      do
      {
         if( ( *d++ = *s++ ) == 0 )
            break;
      }
      while( --n != 0 );
   }

   /*
    * Not enough room in dst, add NUL and traverse rest of src 
    */
   if( n == 0 )
   {
      if( siz != 0 )
         *d = '\0';  /* NUL-terminate dst */
      while( *s++ )
         ;
   }
   return ( s - src - 1 ); /* count does not include NUL */
}






void do_prof(CHAR_DATA * ch, char *argument)
{
  char arg1[MAX_STRING_LENGTH];
  char buf[MSL];
  argument = one_argument( argument, arg1 );

  if (IS_NPC(ch))return;


if ( arg1[0] == '\0' )
{
  send_to_char("#y--#Cunarmed    #y--#Cbroadsword   #y--#Cknife\n\r",ch);
  send_to_char("#y--#Clongsword  #y--#Cwhip         #y--#Cwarhammer\n\r",ch);
  send_to_char("#y--#Cspear      #y--#Cstaff        #y--#Cmace\n\r",ch);
  send_to_char("#y--#Caxe        #y--#Cbastardsword #y--#Cpolearm\n\r",ch);
  send_to_char("#y--#Ctwohanded  #y--#Cflail        #y--#Cclub\n\r",ch);
  send_to_char("#y--#Cshortsword #y--#Cmorningstar  #y--#Csickle\n\r",ch);
  send_to_char("#y--#Cdagger\n\r",ch);
  return;
}

if (ch->pcmaxwpnprof >= 3)
{
  send_to_char(" You may only have 3 weapon proficiencies \n\r",ch);
  return;
}

if (!str_cmp(arg1,"unarmed"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_UNARM))
	{
	send_to_char("#0 You already have Unarmed proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_UNARM);
	send_to_char("#0 You now have Unarmed proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"longsword"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_LONGSWORD))
	{
	send_to_char("#0 You already have Longsword proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_LONGSWORD);
	send_to_char("#0 You now have Longsword proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"spear"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_SPEAR))
	{
	send_to_char("#0 You already have Spear proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_SPEAR);
	send_to_char("#0 You now have Spear proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"broadsword"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_BROADSWORD))
	{
	send_to_char("#0 You already have Broadsword proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_BROADSWORD);
	send_to_char("#0 You now have Broadsword proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"whip"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_WHIP))
	{
	send_to_char("#0 You already have Whip proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_WHIP);
	send_to_char("#0 You now have Whip proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"staff"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_STAFF))
	{
	send_to_char("#0 You already have Staff proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_STAFF);
	send_to_char("#0 You now have Staff proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"knife"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_KNIFE))
	{
	send_to_char("#0 You already have Knife proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_KNIFE);
	send_to_char("#0 You now have Knife proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"warhammer"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_WARHAMMER))
	{
	send_to_char("#0 You already have Warhammer proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_WARHAMMER);
	send_to_char("#0 You now have WarHammer proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"mace"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_MACE))
	{
	send_to_char("#0 You already have Mace proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_MACE);
	send_to_char("#0 You now have Mace proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"axe"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_AXE))
	{
	send_to_char("#0 You already have Axe proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_AXE);
	send_to_char("#0 You now have Axe proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"twohanded"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_TWOHANDED))
	{
	send_to_char("#0 You already have TwoHanded proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_TWOHANDED);
	send_to_char("#0 You now have TwoHanded proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"shortsword"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_SHORTSWORD))
	{
	send_to_char("#0 You already have Shortsword proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_SHORTSWORD);
	send_to_char("#0 You now have Shortsword proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"bastard"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_BASTARDSWORD))
	{
	send_to_char("#0 You already have BastardSword proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_BASTARDSWORD);
	send_to_char("#0 You now have Bastardsword proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"flail"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_FLAIL))
	{
	send_to_char("#0 You already have Flail proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_FLAIL);
	send_to_char("#0 You now have Flail proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"morningstar"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_MORNINGSTAR))
	{
	send_to_char("#0 You already have Morningstar proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_MORNINGSTAR);
	send_to_char("#0 You now have Morningstar proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"polearm"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_POLEARM))
	{
	send_to_char("#0 You already have Polearm proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_POLEARM);
	send_to_char("#0 You now have polearm proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"club"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_CLUB))
	{
	send_to_char("#0 You already have Club proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_CLUB);
	send_to_char("#0 You now have Club proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"sickle"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_SICKLE))
	{
	send_to_char("#0 You already have Sickle proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_SICKLE);
	send_to_char("#0 You now have Sickle proficiency\n\r",ch);
	return;
	}
}
else if (!str_cmp(arg1,"dagger"))
{
	if (IS_SET(ch->pcwpnprof, WPNPROF_DAGGER))
	{
	send_to_char("#0 You already have Dagger proficiency\n\r",ch);
	return;
	}
	else
	{
	ch->pcmaxwpnprof++;
	SET_BIT(ch->pcwpnprof, WPNPROF_DAGGER);
	send_to_char("#0 You now have Dagger proficiency\n\r",ch);
	return;
	}
}
return;
}

int find_spell( CHAR_DATA *ch, const char *name )
{
    /* finds a spell the character can cast if possible */
    int sn, found = -1;

    if (IS_NPC(ch))
	return skill_lookup(name);

    for ( sn = 0; sn < MAX_SKILL; sn++ )
    {
	if (skill_table[sn].name == NULL)
	    break;
	if (LOWER(name[0]) == LOWER(skill_table[sn].name[0])
	&&  !str_prefix(name,skill_table[sn].name))
	{
	    if ( found == -1)
		found = sn;
	    if (ch->pcRaceLevel >= skill_table[sn].race_level
	    &&  ch->pcdata->learned[sn] > 0)
		    return sn;
	}
    }
    return found;
}



void do_rompractice( CHAR_DATA *ch, char *argument )
{
    char buf[MAX_STRING_LENGTH];
    int sn;
    char const *learned;
    if ( IS_NPC(ch) )
	return;

    if ( argument[0] == '\0' )
    {
	int col;

	col    = 0;
	for ( sn = 0; sn < MAX_SKILL; sn++ )
	{
	    if ( skill_table[sn].name == NULL )
		break;
	    if ( ch->pcRaceLevel < skill_table[sn].race_level)
	 //     || ch->pcdata->learned[sn] < 1 /* skill is not known */)
		continue;
	    if ( ch->level < skill_table[sn].skill_level )
		continue;

	    sprintf( buf, "%-18s %3d%%  ",
		skill_table[sn].name, ch->pcdata->learned[sn] );

/*	if (ch->pcdata->learned[sn] < 20)      learned = "#G(#rnot learned#G)#n";
	else if (ch->pcdata->learned[sn] < 40) learned = "#G(#rbad#G)        #n";
	else if (ch->pcdata->learned[sn] < 60) learned = "#G(#rfair#G)       #n";
	else if (ch->pcdata->learned[sn] < 75) learned = "#G(#rgood#G)       #n";
	else if (ch->pcdata->learned[sn] < 85) learned = "#G(#rgreat#G)      #n";
	else if (ch->pcdata->learned[sn] < 90) learned = "#G(#rsuperb#G)     #n";

	sprintf( buf, "%-18s %3s  ",skill_table[sn].name, learned );   
*/	







	    send_to_char( buf, ch );
	    if ( ++col % 3 == 0 )
		send_to_char( "\n\r", ch );
	}

	if ( col % 3 != 0 )
	    send_to_char( "\n\r", ch );

	sprintf( buf, "You have %d practice sessions left.\n\r",
	    ch->pcpractice );
	send_to_char( buf, ch );
    }
    else
    {
	CHAR_DATA *mob;
	int adept;

	if ( !IS_AWAKE(ch) )
	{
	    send_to_char( "In your dreams, or what?\n\r", ch );
	    return;
	}

/*	for ( mob = ch->in_room->people; mob != NULL; mob = mob->next_in_room )
	{
	    if ( IS_NPC(mob) && IS_SET(mob->act, ACT_PRACTICE) )
		break;
	}

	if ( mob == NULL )
	{
	    send_to_char( "You can't do that here.\n\r", ch );
	    return;
	}
*/
	if ( ch->pcpractice <= 0 )
	{
	    send_to_char( "You have no practice sessions left.\n\r", ch );
	    return;
	}


	if ( ( sn = find_spell( ch,argument ) ) < 0
	|| ( !IS_NPC(ch)
	&&   (ch->pcRaceLevel < skill_table[sn].race_level)))
// 	||    ch->pcdata->learned[sn] < 1))) /* skill is not known */
//	||    skill_table[sn].rating[ch->class] == 0)))
	{
	    send_to_char( "You can't practice that.\n\r", ch );
	    return;
	}

//	adept = IS_NPC(ch) ? 100 : class_table[ch->class].skill_adept;
	adept = 75;

	if ( ch->pcdata->learned[sn] >= adept )
	{
	    sprintf( buf, "You are already learned at %s.\n\r",
		skill_table[sn].name );
	    send_to_char( buf, ch );
	}
	else
	{
	    ch->pcpractice--;
	    ch->pcdata->learned[sn] += 5;
//		int_app[get_curr_int(ch)].learn / 
//	        skill_table[sn].rating[ch->class];
	    if ( ch->pcdata->learned[sn] < adept )
	    {
		act( "You practice $T.",
		    ch, NULL, skill_table[sn].name, TO_CHAR );
		act( "$n practices $T.",
		    ch, NULL, skill_table[sn].name, TO_ROOM );
	    }
	    else
	    {
		ch->pcdata->learned[sn] = adept;
		act( "You are now learned at $T.",
		    ch, NULL, skill_table[sn].name, TO_CHAR );
		act( "$n is now learned at $T.",
		    ch, NULL, skill_table[sn].name, TO_ROOM );
	    }
	}
    }
    return;
}




void load_balance()
{

  int i;   
  FILE *fp;

  if ((fp = fopen("../txt/balance.txt", "r")) == NULL)
  {
    log_string("Error: balance.txt not found!");
    exit(1);
  }
  balance[0].wpnlvl = 0;
  balance[0].number_attacks = 0;
  balance[0].damcap = 0;
  balance[0].parry = 0;
  balance[0].dodge = 0;
  balance[0].middy = 0;

  for (i = 0; i < 34; i++)
  {
    balance[i].wpnlvl = fread_number(fp);
    balance[i].number_attacks = fread_number(fp);
    balance[i].damcap = fread_number(fp);
    balance[i].parry = fread_number(fp);
    balance[i].dodge = fread_number(fp);
    balance[i].middy = fread_number(fp);
  }
  fclose(fp);

}
void save_balance()
{

  FILE *fp;
  int i;

  if ((fp = fopen("../txt/balance.txt","w")) == NULL)
  {
    log_string("Error writing to balance.txt");
    return;
  }
  for (i=0;i<34;i++)
  {
    fprintf(fp, "%d\n", balance[i].wpnlvl); 
    fprintf(fp, "%d\n", balance[i].number_attacks);
    fprintf(fp, "%d\n", balance[i].damcap);
    fprintf(fp, "%d\n", balance[i].parry);
    fprintf(fp, "%d\n", balance[i].dodge);
    fprintf(fp, "%d\n", balance[i].middy);
  }
  fclose (fp);

}

void do_xcenter(CHAR_DATA *ch, char *argument)
{
int i;

char class[MAX_STRING_LENGTH];
char arg1[MAX_INPUT_LENGTH];
char arg2[MAX_INPUT_LENGTH];
char arg3[MAX_INPUT_LENGTH];
char buf[MAX_STRING_LENGTH];
unsigned long int value = 0;

argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
argument = one_argument( argument, arg3 );

save_balance();

  if (arg1[0] == '\0')
  {
send_to_char("#CClass#0                    : #GWpn Levels     #0-#RNmbrAttacks    #yDamcap    Parry   Dodge   Middy#n\n\r",ch);
send_to_char("\n\r",ch);
for (i=0;i<34;i++)
{
if (i==0) sprintf(class,"#R[#0Demon#R]#n                 ");
if (i==1) sprintf(class,"#y((#LWerewolf#y))#n            ");
if (i==3) sprintf(class,"#0<<#RVampire#0>>#n             ");
if (i==2) sprintf(class,"#P.o0#0Drow#P0o.#n              ");
if (i==4) sprintf(class,"#y{#RTanar'ri#y}#n              ");
if (i==5) sprintf(class,"#y.x#0(#7Angel#0)#yx.#n             ");
if (i==6) sprintf(class,"#0|[#LUndead Knight#0]|#n       ");
if (i==7) sprintf(class,"#g[#rX#g]#oAssassin#g[#rX#g]#n          ");
if (i==8) sprintf(class,"#7(#0*#R=#r-#oWraith#r-#R=#0*#7)#n          ");
if (i==9) sprintf(class,"#Rx#rX#C[#gElemental#C]#rX#Rx#n         ");
if (i==10) sprintf(class,"#y<#7/#y+#7>#nPaladin#7<#y+#7\\#y>#n         ");
if (i==11) sprintf(class,"#C***#yHydra#C***#n             ");
if (i==12) sprintf(class,"#r:=#CDragon#r=:#n              ");
if (i==13) sprintf(class,"#0(#r*#7Zombie#r*#0)#n              ");
if (i==14) sprintf(class,"#l\#0|#l/-#7S#0hinob#7i#l-\#0|#l/#n           ");
if (i==15) sprintf(class,"#r+#y=#r+Human#r+#y=#r+#n             ");
if (i==16) sprintf(class,"#c<>#GG#gian#Gt#c<>#n               ");
if (i==17) sprintf(class,"#r^-^#0Anti-Paladin#r^-^#n      ");
if (i==18) sprintf(class,"#L=#R*#w>#CSky#Wblade#w<#R*#L=#n          ");
if (i==19) sprintf(class,"#w]>#L*#wPriest#L*#w<[#n            ");
if (i==20) sprintf(class,"#GX#gx#G(#gGhoul#G)#gx#GX#n             ");
if (i==21) sprintf(class,"#RV#7-#RW#0[#GUndead Lycan#0]#RW#7-#RV    ");
if (i==22) sprintf(class,"#G[#RH#GELL#RS S#GOLDIE#RR#G]         ");
if (i==23) sprintf(class,"#C-=#y(#rx#gG#Gaia Wol#gf#rx#y)#C=-#n       ");
if (i==24) sprintf(class,"#g[#rS#chado#rw#cb#ro#cr#rn#g]#n            ");
if (i==25) sprintf(class,"#C-=#y(#rx#gDruid#rx#y)#C=-#n           ");
if (i==26) sprintf(class,"#g[#cS#lhado#cw #cD#lrago#cn#g]#n         ");
if (i==27) sprintf(class,"#g[#rS#chado#rw #rF#cien#rd#g]#n          ");
if (i==28) sprintf(class,"#r[#gS#rtalke#gr]#n               ");
if (i==29) sprintf(class,"#g[#rH#gELL#rS S#gPAW#rN#g]#n	        ");
if (i==30) sprintf(class,"#G{#g/*\#G}#CBlack Assassin#G{#g/*\#G}#n  ");
if (i==31) sprintf(class,"#g<<#rVampyric #oMist#g>>#n       ");
if (i==32) sprintf(class,"#y.x#g(#7Silver Dragon#g)#yx.#n     ");
if (i==33) sprintf(class,"#o.x#y(#cGold #CDragon#y)#ox.#n       ");


sprintf(buf,"%-18s #0: #G%-12d #0->     #R%-2d        #y%-5d     #y%-5d #y%-5d #y%-5d\n\r",class,balance[i].wpnlvl,balance[i].number_attacks,        balance[i].damcap, balance[i].parry, balance[i].dodge, balance[i].middy); 
send_to_char(buf,ch);
}}

    value = is_number( arg3 ) ? atoi( arg3 ) : -1;
    if (ch->level < 11) return;

if (!str_cmp(arg1,"demon"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Demon Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[0].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Demon number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[0].number_attacks = value;
		return;
	}
	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Demon Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[0].damcap = value;
		return;
	}
	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Demon Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[0].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Demon Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[0].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "Leech range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Demon Leech set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[0].middy = value;
		return;
		}
}


if (!str_cmp(arg1,"werewolf"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Werewolf Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[1].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Werewolf number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[1].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Werewolf Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[1].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Werewolf Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[1].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Werewolf Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[1].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "Talons range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Werewolf Talons set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[1].middy = value;
		return;
		}
}


if (!str_cmp(arg1,"drow"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Drow Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[2].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Drow number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[2].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Drow Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[2].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Drow Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[2].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Drow Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[2].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Drow ? set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[2].middy = value;
		return;
		}
}



if (!str_cmp(arg1,"vampire"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Vampire Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[3].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Vampire number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[3].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Vampire Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[3].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Vampire Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[3].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Vampire Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[3].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Vampire Spit set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[3].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"tanarri"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Tanar'ri Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[4].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Tanar'ri number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[4].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Tanar'ri Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[4].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Tanar'ri Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[4].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Tanar'ri Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[4].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "Tanar'ri ? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Tanar'ri ? set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[4].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"angel"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Angel Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[5].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Angel number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[5].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Angel Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[5].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Angel Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[5].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Angel Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[5].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Angel ? set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[5].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"undeadknight"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"UK Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[6].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"UK number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[6].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"UK Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[6].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"UK Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[6].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"UK Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[6].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"UK Soulsuck set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[6].middy = value;
		return;
		}
}


if (!str_cmp(arg1,"assassin"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Assassin Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[7].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Assassin number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[7].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Assassin Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[7].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Assassin Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[7].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Assassin Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[7].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Assassin ? set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[7].middy = value;
		return;
		}
}


if (!str_cmp(arg1,"wraith"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Wraith Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[8].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Wraith number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[8].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Wraith Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[8].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Wraith Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[8].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Wraith Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[8].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Wraith (dblast?) set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[8].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"elemental"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Elemental Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[9].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Elemental number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[9].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Elemental Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[9].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Elemental Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[9].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Elemental Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[9].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Elemental Natures Fury set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[9].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"paladin"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Paladin Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[10].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Paladin number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[10].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Paladin Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[10].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Paladin Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[10].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Paladin Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[10].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Paladin Retribution set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[10].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"hydra"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Hydra Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[11].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Hydra number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[11].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Hydra Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[11].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Hydra Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[11].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Hydra Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[11].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Hydra Soulsuck set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[11].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"dragon"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Dragon Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[12].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Dragon number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[12].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Dragon Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[12].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Dragon Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[12].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Dragon Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[12].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Dragon Fire Breath set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[12].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"zombie"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Zombie Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[13].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Zombie number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[13].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Zombie Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[13].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Zombie Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[13].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Zombie Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[13].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Zombie Shatter set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[13].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"shinobi"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Shinobi Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[14].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Shinobi number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[14].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Shinobi Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[14].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Shinobi Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[14].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Shinobi Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[14].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Shinobi ? set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[14].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"technomage"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Technomage Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[15].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Technomage number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[15].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Technomage Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[15].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Technomage Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[15].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Technomage Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[15].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Technomage Soulsuck set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[15].middy = value;
		return;
		}
}
if (!str_cmp(arg1,"giant"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Giant Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[16].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Giant number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[16].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Giant Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[16].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Giant Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[16].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Giant Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[16].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Giant Soulsuck set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[16].middy = value;
		return;
		}
}


if (!str_cmp(arg1,"antipaladin"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Antipaladin Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[17].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Anti-Paladin number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[17].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Anti-Paladin Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[17].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Anti-Paladin Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[17].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Anti-Paladin Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[17].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Anti-Paladin Flamestrike set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[17].middy = value;
		return;
		}
}


if (!str_cmp(arg1,"skyblade"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Skyblade Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[18].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"SkyBlade number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[18].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"SkyBlade Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[18].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"SkyBlade Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[18].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"SkyBlade Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[18].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"SkyBlade Pummel set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[18].middy = value;
		return;
		}
}


if (!str_cmp(arg1,"priest"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Priest Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[19].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Priest number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[19].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Priest Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[19].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Priest Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[19].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Priest Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[19].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "? range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Priest ? set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[19].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"ghoul"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Ghoul Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[20].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Ghoul number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[20].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Ghoul Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[20].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Ghoul Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[20].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Ghoul Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[20].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "Talons range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Ghoul ? set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[20].middy = value;
		return;
		}
}


if (!str_cmp(arg1,"undeadlycan"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"UL Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[21].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"UL number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[21].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"UL Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[21].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"UL Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[21].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"UL Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[21].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "Talons range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"UL Talons set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[21].middy = value;
		return;
		}
}
if (!str_cmp(arg1,"hellssoldier"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"HS Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[22].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"HS number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[22].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"HS Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[22].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"HS Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[22].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"HS Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[22].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "leech range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"HS leech set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[22].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"gaiawolf"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Gaia Wolf Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[23].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Gaia Wolf number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[23].number_attacks = value;
		return;
	}
	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Gaia Wolf Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[23].damcap = value;
		return;
	}
	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Gaia Wolf Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[23].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Gaia Wolf Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[23].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "talons range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Gaia Wolf talons set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[23].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"shadowborn"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"#g[#rS#chado#rw#cb#ro#cr#rn#g]#n Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[24].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"#g[#rS#chado#rw#cb#ro#cr#rn#g]#n number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[24].number_attacks = value;
		return;
	}
	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"#g[#rS#chado#rw#cb#ro#cr#rn#g]#n Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[24].damcap = value;
		return;
	}
	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"#g[#rS#chado#rw#cb#ro#cr#rn#g]#n Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[24].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"#g[#rS#chado#rw#cb#ro#cr#rn#g]#n Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[24].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "Leech range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"#g[#rS#chado#rw#cb#ro#cr#rn#g]#n garotte set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[24].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"druid"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Druid Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[25].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Druid number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[25].number_attacks = value;
		return;
	}
	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Druid Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[25].damcap = value;
		return;
	}
	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Druid Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[25].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Druid Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[25].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "talons range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Druid talons set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[25].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"shadowdragon"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Shadow Dragon Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[26].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Shadow Dragon number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[26].number_attacks = value;
		return;
	}
	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Shadow Dragon Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[26].damcap = value;
		return;
	}
	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Shadow Dragon Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[26].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Shadow Dragon Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[26].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "Leech range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Shadow Dragon garotte set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[26].middy = value;
		return;
		}
}
if (!str_cmp(arg1,"shadowfiend"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[27].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[27].number_attacks = value;
		return;
	}
	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[27].damcap = value;
		return;
	}
	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[27].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[27].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "talons range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"talons set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[27].middy = value;
		return;
		}
}



if (!str_cmp(arg1,"stalker"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[28].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[28].number_attacks = value;
		return;
	}
	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[28].damcap = value;
		return;
	}
	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[28].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[28].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"talons set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[28].middy = value;
		return;
		}
}
if (!str_cmp(arg1,"hellspawn"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[29].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[29].number_attacks = value;
		return;
	}
	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[29].damcap = value;
		return;
	}
	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[29].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[29].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"talons set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[29].middy = value;
		return;
		}
}
if (!str_cmp(arg1,"blackassassin"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[30].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[30].number_attacks = value;
		return;
	}
	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[30].damcap = value;
		return;
	}
	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[30].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[30].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"talons set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[30].middy = value;
		return;
		}
}
if (!str_cmp(arg1,"vampiricmist"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[31].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[31].number_attacks = value;
		return;
	}
	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[31].damcap = value;
		return;
	}
	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[31].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[31].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"talons set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[31].middy = value;
		return;
		}
}

if (!str_cmp(arg1,"silverdragon"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[32].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[32].number_attacks = value;
		return;
	}
	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[32].damcap = value;
		return;
	}
	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[32].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[32].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"talons set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[32].middy = value;
		return;
		}
}
if (!str_cmp(arg1,"golddragon"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"weaponlevel"))
	{
		if ( value < 200 || value > 1200 )
	 	{
		stc( "Weapon Level range is 200 to 1200.\n\r", ch );
		return;
		}
	      sprintf(buf,"Weapon Levels set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[33].wpnlvl = value;
		return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[33].number_attacks = value;
		return;
	}
	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[33].damcap = value;
		return;
	}
	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[33].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[33].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"talons set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[33].middy = value;
		return;
		}
}
}




void do_lifestone( CHAR_DATA *ch, char *argument )
{
  OBJ_INDEX_DATA *pObjIndex;
  OBJ_DATA *obj;
  char arg[MAX_INPUT_LENGTH];
  int vnum = 0;

  argument = one_argument( argument, arg );

  if (IS_NPC(ch)) return;

  if ( ch->pcdata->quest < 1000000 )
  {
    send_to_char("You don't have the one million qps needed.\n\r",ch);
    return;
  }
  if(!IS_IMMORTAL(ch)) ch->pcdata->quest -= 1000000;
  obj = create_object(get_obj_index(80929), 0);
  obj->questowner = str_dup(ch->pcdata->switchname);
  obj_to_char(obj, ch);
  act("You transform the 1 Million qp into $p.",ch,obj,NULL,TO_CHAR);
  act("$n forms $p out of 1 Million qp.",ch,obj,NULL,TO_ROOM);
  return;
}

void do_isauto(CHAR_DATA * ch, char *argument)
{
        if (IS_NPC(ch))
                return;
        send_to_char("That power is automatic.\n\r", ch);
        return;
}



void do_legendwho( CHAR_DATA *ch, char *argument)
{
DESCRIPTOR_DATA *d;
CHAR_DATA *gch;
char const *legend;
char buf[MAX_STRING_LENGTH];

send_to_char("Name                    Mightrate      Legend\n\r",ch); 

for (d = descriptor_list; d!= NULL; d= d->next)
{
    if (d->connected != CON_PLAYING) continue;
    if ((gch = d->character) == NULL) continue;
    if (IS_IMMORTAL(gch)) continue;

	if (gch->pcdata->legend == 20) legend = "#0Godlike#n";
        else if (gch->pcdata->legend == 19)legend = "#7Almighty#n";
        else if (gch->pcdata->legend == 18)legend = "#cSupreme#n";
        else if (gch->pcdata->legend == 17)legend = "#RMaster#n";
        else if (gch->pcdata->legend == 16)legend = "#rChampion#n";
        else if (gch->pcdata->legend == 15)legend = "#LCavalier#n";
        else if (gch->pcdata->legend == 14)legend = "#CGrand Duke#n";
        else if (gch->pcdata->legend == 13)legend = "#GLord#n";
        else if (gch->pcdata->legend == 12)legend = "#gSovereign#n";
        else if (gch->pcdata->legend == 11)legend = "#LEmperor#n";
        else if (gch->pcdata->legend == 10)legend = "#lKing#n";
        else if (gch->pcdata->legend == 9)legend = "#CDuke#n";
        else if (gch->pcdata->legend == 8)legend = "#oLegend#n";
        else if (gch->pcdata->legend == 7)legend = "#PMystical#n";
        else if (gch->pcdata->legend == 6)legend = "#pMyth#n";
        else if (gch->pcdata->legend == 5)legend = "#CHero#n";
        else if (gch->pcdata->legend == 4)legend = "#LKnight#n";
        else if (gch->pcdata->legend == 3)legend = "#RSavior#n";
        else if (gch->pcdata->legend == 2)legend = "#rCitizen#n";
        else if (gch->pcdata->legend == 1)legend = "#GSerf#n";
        else legend = "#RNone#n";

sprintf(buf,"#R%-24s #y%-6d        #L%s#n\n\r",gch->pcdata->switchname,getMight(gch),legend);
send_to_char(buf,ch);

}
}

void do_qpbuy( CHAR_DATA *ch, char *argument )
{
  char arg[MIL];
  char buf[MSL];
  char arg2[MIL];             
  int value;

  argument = one_argument( argument, arg );
  argument = one_argument(argument, arg2);


  if (arg[0] == '\0')
  {
    send_to_char("Syntax: qpbuy:happy or cp or dt.\n\r",ch);
    return;
  }      
    if ( !str_cmp( arg, "happy" ) )
    {
		if (global_exp)
            {
            send_to_char("Double exp is already in affect!\n\r",ch);
            return;
            }
		if (ch->pcdata->quest < 5000)
            {
            send_to_char("You dont have the 5K needed!\n\r",ch);
            return;
            }
	    ch->pcdata->quest -= 5000;
            pulse_exp = 30;
            do_toggle(ch, "exp on");
            sprintf( buf, "#g%s #CSpends #c5#CK and Turns on #rH#capp#ry H#cou#rr#n.\n\r", ch->name );
	    do_info( ch, buf );
	    return;
            }
    if (!str_cmp(arg, "dt"))
    {
	if (global_dt==TRUE)
        {
       send_to_char("Super Training is already in affect!\n\r",ch);
       return;   
        }  
		if (ch->pcdata->quest < 5000)
            {
            send_to_char("You dont have the 5K needed!\n\r",ch);
            return;
            }
	    ch->pcdata->quest -= 5000;
            pulse_dt = 30;
            do_toggle(ch, "dt on");
            sprintf( buf, "#g%s #CSpends #c5#CK and Turns on #rS#cupe#rr T#crainin#rg#n.\n\r", ch->name );
	    do_info( ch, buf );
    return;
  }
    if (!str_cmp(arg, "cp"))
    {
	if (global_cp==TRUE)
        {
       send_to_char("Double Class Points is already in affect!\n\r",ch);
       return;   
        }  
		if (ch->pcdata->quest < 5000)
            {
            send_to_char("You dont have the 5K needed!\n\r",ch);
            return;
            }
	    ch->pcdata->quest -= 5000;
            pulse_cp = 30;
            do_toggle(ch, "cp on");
            sprintf( buf, "#g%s #CSpends #c5#CK and Turns on #rD#coubl#re C#clas#rs P#coint#rs#n.\n\r", ch->name );
	    do_info( ch, buf );
    return;
  }


    if (!str_cmp(arg, "qp"))
    {
        if (global_qp==TRUE)
        {
       send_to_char("Double Quest Points is already in affect!\n\r",ch);
       return;
        }
                if (ch->pcdata->quest < 200000)
            {
            send_to_char("You dont have the 200K needed!\n\r",ch);
            return;
            }
            ch->pcdata->quest -= 200000;
            pulse_qp = 30;
            do_toggle(ch, "qp on");
            sprintf( buf, "#g%s #CSpends #c200#CK and Turns on #rD#coubl#re Q#cues#rt P#coint#rs#n.\n\r", ch->name );
            do_info( ch, buf );
    return;
  }



}

void do_crecall(CHAR_DATA * ch, char *argument)
{
        char      buf[MAX_STRING_LENGTH];
        CHAR_DATA *victim;
        CHAR_DATA *mount;
        ROOM_INDEX_DATA *location;

        if (IS_NPC(ch))
                return;

	if (ch->fight_timer > 0 )
	{
	send_to_char("Not with a fight timer.\n\r", ch);
	return;
	}     

    	if (ch->pcdata->kingdom == 0)
        {
                stc("Your not in a clan.\n\r", ch);
                return;
        }

        act("$n's body flickers with red energy.", ch, NULL, NULL, TO_ROOM);
        act("Your body flickers with red energy.", ch, NULL, NULL, TO_CHAR);
        if (ch->pcdata->kingdom == 1)
                location = get_room_index(ROOM_VNUM_RULER_HOME);
        else if (ch->pcdata->kingdom == 2)
                location = get_room_index(ROOM_VNUM_FORSAKEN_HOME);
        else if (ch->pcdata->kingdom == 3)
                location = get_room_index(ROOM_VNUM_SYNDICATE_HOME);
        else if (ch->pcdata->kingdom == 4)
                location = get_room_index(ROOM_VNUM_SKYLORDS_HOME);
        else if (ch->pcdata->kingdom == 5)
                location = get_room_index(ROOM_VNUM_PLAGUES_HOME);
        else if (ch->pcdata->kingdom == 6)
                location = get_room_index(ROOM_VNUM_NOSFERATU_HOME);

        else
        {
                send_to_char("Your crecall is broken, tell Xrakisis\n\r", ch);
                return;
        }


        if (ch->in_room == location)
                return;

        if (IS_SET(ch->in_room->room_flags, ROOM_NO_RECALL)
            || IS_AFFECTED(ch, AFF_CURSE))
        {
                send_to_char("You are unable to crecall.\n\r", ch);
                return;
        }

        if ((victim = ch->fighting) != NULL)
        {
                if (number_bits(1) == 0)
                {
                        WAIT_STATE(ch, 4);
                        sprintf(buf, "You failed!\n\r");
                        send_to_char(buf, ch);
                        return;
                }
                sprintf(buf, "You crecall from combat!\n\r");
                send_to_char(buf, ch);
                stop_fighting(ch, TRUE);
        }

        act("$n disappears.", ch, NULL, NULL, TO_ROOM);
        char_from_room(ch);
        char_to_room(ch, location);
        act("$n appears in the room.", ch, NULL, NULL, TO_ROOM);
        do_look(ch, "auto");
        if ((mount = ch->mount) == NULL)
                return;
        char_from_room(mount);
        char_to_room(mount, ch->in_room);
        return;
}

void save_aks()
{
FILE *fp;

if ((fp = fopen("../txt/aks.txt","w")) == NULL)
{
log_string("Cannot open aks.txt");
return;
}

fprintf(fp, "%d\n", aks[0].aks);
fclose(fp);
}

void load_aks()
{
FILE *fp;
aks[0].aks = 0;
if ((fp = fopen("../txt/aks.txt", "r")) == NULL)
{
log_string("AKS.txt not found");
exit(1);
}
aks[0].aks = fread_number(fp);
fclose(fp);
}