dbt/cnf/
dbt/lib/
dbt/lib/house/
dbt/lib/text/help/
dbt/lib/world/
dbt/lib/world/qst/
dbt/src/
dbt/src/copyover/
/* 
************************************************************************
*   File: act.other.c                                   Part of CircleMUD *
*  Usage: Miscellaneous player-level commands                             *
*                                                                         *
*  All rights reserved.  See license.doc for complete information.        *
*                                                                         *
*  Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University *
*  CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991.               *
************************************************************************ */

#define __ACT_OTHER_C__

#include "conf.h"
#include "sysdep.h"

#include "structs.h"
#include "utils.h"
#include "comm.h"
#include "interpreter.h"
#include "handler.h"
#include "db.h"
#include "spells.h"
#include "screen.h"
#include "house.h"
#include "dg_scripts.h"

/* extern variables */
extern char arg1 [MAX_INPUT_LENGTH];
extern char arg2 [MAX_INPUT_LENGTH];
extern int spell_sort_info[MAX_SKILLS+1];
extern struct str_app_type str_app[];
extern struct room_data *world;
extern struct descriptor_data *descriptor_list;
extern struct dex_skill_type dex_app_skill[];
extern struct spell_info_type spell_info[];
extern struct index_data *mob_index;
extern char *class_abbrevs[];
extern struct spell_entry spells[];
extern int free_rent;
extern int pt_allowed;
extern int max_filesize;
extern int nameserver_is_slow;
extern int top_of_world;
extern int auto_save;
extern sh_int r_death_start_room;
extern sh_int r_mortal_start_room;
extern sh_int r_immort_start_room;
extern sh_int r_icer_start_room;
extern sh_int r_truffle_start_room;
extern sh_int r_namek_start_room;
extern int dotmode;
extern int value1;
extern int value2;

/* extern procedures */
void list_skills(struct char_data * ch);
void appear(struct char_data * ch);
void perform_immort_vis(struct char_data *ch);
SPECIAL(shop_keeper);
ACMD(do_gen_comm);
void die(struct char_data * ch, struct char_data * killer);
void Crash_rentsave(struct char_data * ch, int cost);
void make_corpse(struct char_data * ch);

/* local functions */
ACMD(do_quit);
ACMD(do_save);
ACMD(do_fly);
ACMD(do_land);
ACMD(do_not_here);
ACMD(do_SWIFTNESS);
ACMD(do_hide);
ACMD(do_mug);
ACMD(do_practice);
ACMD(do_visible);
ACMD(do_title);
int perform_group(struct char_data *ch, struct char_data *vict);
void print_group(struct char_data *ch);
ACMD(do_group);
ACMD(do_ungroup);
ACMD(do_inplant);
ACMD(do_report);
ACMD(do_sbreed);
ACMD(do_split);
ACMD(do_ssj);
ACMD(do_kaioken);
ACMD(do_kyodaika);
ACMD(do_spar);
ACMD(do_sparkick);
ACMD(do_sparpunch);
ACMD(do_sparelbow);
ACMD(do_sparknee);
ACMD(do_sparkiblast);
ACMD(do_transform);
ACMD(do_learn);
ACMD(do_use);
ACMD(do_repair);
ACMD(do_wimpy);
ACMD(do_display);
ACMD(do_stealth);
ACMD(do_gen_write);
ACMD(do_powerup);
ACMD(do_meditate);
ACMD(do_powerdown);
ACMD(do_gen_tog);
ACMD(do_ingest);
ACMD(do_deflect);
ACMD(do_upgrade);
ACMD(do_mystic);
ACMD(do_perfection);
ACMD(do_heal);
ACMD(do_pk);
ACMD(do_majinmorph);
ACMD(do_innerfire);
ACMD(do_clanlist);
ACMD(do_clanjoin);
ACMD(do_clanresign);
ACMD(do_rlist);
ACMD(do_mlist);
ACMD(do_olist);
ACMD(do_whois);
ACMD(do_mutate);
ACMD(do_shadow);
ACMD(do_augment);
ACMD(do_reincarnate);
ACMD(do_lp);
ACMD(do_potential);
ACMD(do_majinize);
ACMD(do_majinyes);
ACMD(do_mindread);

ACMD(do_mindread)
{
   struct char_data * vict;

   if (!GET_SKILL(ch, SKILL_MINDREAD)) {
    send_to_char("You don't know how to do that!\r\n", ch);
    return;
   }
   if (GET_MANA(ch) < GET_MAX_MANA(ch) / 30) {
    send_to_char("&15Not enough mana to mind read right now....&00", ch);
    return;
   }
   one_argument(argument, arg);
   
   if (!*argument) {
   send_to_char("&15You need to target a player to mindread.", ch);
   return;
   }

   if (!(vict = get_char_room_vis(ch, arg))) {
      send_to_char("Read whom's mind?\r\n", ch);
      return;
    }
   else
   if (vict == ch) {
    send_to_char("Just type score for yourself....\r\n", ch);
    return;
   }
   if (IS_KAI(vict)) {
    send_to_char("You can't read a kai.\r\n", ch);
    return;
    }
   if (GET_INT(vict) >= GET_INT(ch) * 2) {
    sprintf(buf2, "&14%s &15just read your mind, and you managed a glimpse into their's.&00\r\n", GET_NAME(ch));
    sprintf(buf1, "&11Gold&15: &15%d &16| &10Lp&15: %d &16| &12Intelligence&15: %d &16| &09Constitution&15: %d &16| &14Wisdom&15: %d&00\r\n", GET_GOLD(ch), GET_PRACTICES(ch), GET_INT(ch), GET_CON(ch), GET_WIS(ch));
    send_to_char(buf2, vict);
    send_to_char(buf1, vict);
   }
   else if (GET_INT(vict) >= GET_INT(ch) && GET_INT(vict) < GET_INT(ch) * 2) {
   sprintf(buf1, "&14%s &15just read your mind....&00\r\n", GET_NAME(ch));
    send_to_char(buf1, vict);
   }
   else if (GET_INT(vict) < GET_INT(ch) && GET_INT(vict) >= GET_INT(ch) / 2) {
   send_to_char("&15Someone just read your mind.&00\r\n", vict);
   }

   sprintf(buf,"                    &16[&14Information for&16:&00 &15%s&16]&00\r\n", GET_NAME(vict));
   sprintf(buf, "%s&15o&00&06=------------------------------------------------------------=&15o&00\r\n", buf); sprintf(buf, "%s&00&06|&10Race:&00 %s     \r\n&00&06|&10Sex: &00 ", buf,
               CLASS_ABBR(vict));
  switch (GET_SEX(vict)) {
    case SEX_MALE: strcat(buf, "&12Male&00\r\n"); break;
    case SEX_FEMALE: strcat(buf, "&13Female&00\r\n"); break;
    case SEX_NEUTRAL: strcat(buf, "&10Neutral&00\r\n"); break;
   }
  if (GET_INT(ch) >= number(1, 40)) {
  sprintf(buf, "%s&00&06|&10Powerlevel&15: &15%d&12/&15%d&00\r\n", buf, GET_HIT(vict), GET_MAX_HIT(vict));
  sprintf(buf, "%s&00&06|&10Ki&15:         &15%d&12/&15%d&00\r\n", buf, GET_MANA(vict), GET_MAX_MANA(vict));
  if (IS_Namek(vict) || IS_KAI(vict) || IS_MAJIN(vict)) {
   sprintf(buf, "%s&00&06|&14Spirit&15:     &15%d&12/&1520000&00\r\n", buf, GET_HOME(vict));
   }
   }
   sprintf(buf, "%s&00&06|&00&06=------------------------------------------------------------=&15o&00\r\n", buf);
  if (GET_INT(ch) >= number(1, 50)) {
  sprintf(buf, "%s&00&06|&12Strength&15:           &00 &16[&15%d&16]&00 &12Dexterity&15:       &00 &16[&15%d&16]&00\r\n", buf, GET_STR(vict), GET_DEX(vict));
  sprintf(buf, "%s&00&06|&12Upper Body Strength&15:&00 &16[&15%d&16]&00 &12Constitution&15:    &00 &16[&15%d&16]&00\r\n", buf, GET_UBS(vict), GET_CON(vict));
  sprintf(buf, "%s&00&06|&12Lower Body Strength&15:&00 &16[&15%d&16]&00 &12Hitroll&15:         &00 &16[&15%d&16]&00\r\n", buf, GET_LBS(vict), (vict)->points.hitroll);
  if (GET_WIS(vict) >= 100)
   sprintf(buf, "%s&00&06|&12Wisdom&15:&00              &16[&15%d&16]&00 &12Damroll&15:         &00 &16[&15%d&16]&00\r\n", buf,  GET_WIS(vict), (vict)->points.damroll);
  else
   sprintf(buf, "%s&00&06|&12Wisdom&15:&00              &16[&15%d&16]&00 &12Damroll&15:         &00 &16[&15%d&16]&00\r\n", buf,  GET_WIS(vict), (vict)->points.damroll); 
  if (GET_INT(vict) >= 100)
   sprintf(buf, "%s&00&06|&12Inteligence&15:&00         &16[&15%d&16]&00 &12Speed&15:           &00 &16[&15%d&16]&00\r\n", buf, GET_INT(vict), GET_RAGE(vict));
  else
    sprintf(buf, "%s&00&06|&12Inteligence&15:&00         &16[&15%d&16]&00 &12Speed&15:            &00 &16[&15%d&16]&00\r\n", buf, GET_INT(vict), GET_RAGE(vict));
  sprintf(buf, "%s&00&06|&12Age&15:&00                 &16[&15%d&16]&00 &09PKs&15:             &00 &16[&15%d&16]&00\r\n", buf, GET_AGE(vict), GET_HEIGHT(vict));
  if (GET_CHA(vict) >= 100)
   sprintf(buf, "%s&00&06|&12Intuition&15:&00           &16[&15%d&16]&00 &00&01P.Deaths&15:        &00 &16[&15%d&16]&00\r\n", buf, GET_CHA(vict), GET_WEIGHT(vict));
  else
   sprintf(buf, "%s&00&06|&12Intuition&15:&00           &16[&15%d&16]&00 &00&01P.Deaths&15:        &00 &16[&15%d&16]&00\r\n", buf, GET_CHA(vict), GET_WEIGHT(vict));
  }
  sprintf(buf, "%s&00&06|&00&06=------------------------------------------------------------=&15o&00\r\n", buf);
  if (GET_INT(ch) >= number(1, 45)) {
  sprintf(buf, "%s&00&06|&14Zenni Carried&15: &00  &16[&11%d&16]&00\r\n", buf, GET_GOLD(vict));
  sprintf(buf, "%s&00&06|&14Zenni In bank&15: &00  &16[&11%d&16]&00\r\n", buf, GET_BANK_GOLD(vict));
  sprintf(buf, "%s&00&06|&14Zenni Total&15: &00    &16[&11%d&16]&00\r\n", buf, GET_BANK_GOLD(vict) + GET_GOLD(vict));
  sprintf(buf, "%s&00&06|&00&06Experience&15:&00      &16[&15%Ld&16]&00\r\n", buf, GET_EXP(vict));
  sprintf(buf, "%s&00&06|&00&06Experience TNB&15:&00  &16[&15%Ld&16]&00\r\n", buf, GET_LEVEL(vict)*1000);
  sprintf(buf, "%s&00&06|&10Reincarnations&15: &00  &16[&11%d&16]&00\r\n", buf, GET_REINC(vict));
  sprintf(buf, "%s&00&06|&12T&00&07r&00&06u&00&07t&12h &00&05Points&15:&00 &16[&15%d&16]&00      &12Learning &00&06Points&15: &00  &16[&11%d&16]&00\r\n", buf, GET_ALIGNMENT(vict), GET_PRACTICES(vict));
  sprintf(buf, "%s&00&06|&14Years&15: &16[&15%d&16] &14Weeks&15:&16 [&15%d&16] &14Days&15:&16 [&15%d&16] &14Hours&15:&16 [&15%d&16] &14Minutes&15:&16 [&15%d&16]&00\r\n", buf, vict->player.time.played / 31536000, ((vict->player.time.played % 31536000) / 604800), ((vict->player.time.played % 604800) / 86400), ((vict->player.time.played % 86400) / 3600), ((vict->player.time.played % 3600) / 60));
  }
  sprintf(buf, "%s&15o&00&06=------------------------------------------------------------=&15o&00\r\n", buf);
  GET_MANA(ch) -= GET_MAX_MANA(ch) / 30;
  send_to_char(buf, ch);
}



ACMD(do_majinyes)
{
 one_argument(argument, arg);
  
  if (!*argument) {
   send_to_char("&15Type allow yes to allow a majin to majinize you. Be careful though, once majinized there is no going back.&00", ch);
   return;
   }
  if (!str_cmp(arg,"yes") && !PLR_FLAGGED(ch, PLR_MAJINIZE)) {
   send_to_char("&15You now accept majinization!&00", ch);
   REMOVE_BIT(PLR_FLAGS(ch), PLR_NOMAJIN);
   return;
   }
}
ACMD(do_majinize)
{
  struct char_data * vict;

  if (!GET_SKILL(ch, SKILL_MAJIN)) {
   send_to_char("You can't do that!\r\n", ch);
   return;
  }
  one_argument(argument, arg);

  if (!*argument) {
   send_to_char("&15You need to target a player to majinize.", ch);
   return;
   }
   if (!(vict = get_char_room_vis(ch, arg))) {
      send_to_char("Majinize who?\r\n", ch);
      return;
    }
  else
   if (vict == ch) {
    send_to_char("No using it on yourself!\r\n", ch);
    return;
   }
   if (PLR_FLAGGED(vict, PLR_NOMAJIN)) {
    send_to_char("They are not set to accept majinizing right now.", ch);
    return;
    }
   if (PLR_FLAGGED(vict, PLR_MAJINIZE)) {
    send_to_char("They already are being boosted by a majin!", ch);
    return;
    }
   if (IS_MAJIN(vict)) {
    send_to_char("You can't majinize fellow majins!", ch);
    return;
   }
   if (GET_HOME(ch) <= 999) {
    send_to_char("You do not have enough spirit to majinize!", ch);
    return;
   }
   if (GET_HOME(ch) >= 1000) {
    act("&15You grin as you hold your hands out towards &14$N&15, &00&05dark &10energy &15flows from your hands and courses through &14$N's &15body. After a momment an &13M&15 appears on their forhead as their power is boosted by your own.&00", FALSE, ch, 0, vict, TO_CHAR);
    act("&14$n &15grins as $e holds $s hands out towards &14$N&15, &00&05dark &10energy &15flows from $n's hands and courses through &10$N's &15body. After a momment an &13M&15 appears on $N's forhead as their power is boosted by &14$n's&15 own.&00", FALSE, ch, 0, vict, TO_NOTVICT);
    act("&14$n &15grins as $e holds $s hands out towards you&15, &00&05dark &10energy &15flows from $n's hands and courses through your &15body. After a momment an &13M&15 appears on your forhead as your power is boosted by &14$n's&15 own.&00", FALSE, ch, 0, vict, TO_VICT);
    SET_BIT(PLR_FLAGS(vict), PLR_MAJINIZE);
    GET_MAX_HIT(vict) += (GET_MAX_HIT(ch) / 100) * 5;
    GET_HOME(ch) -= 1000;
    sprintf(buf, "&16[&13Majinize &14boost&11: &15%d&16]&00", (GET_MAX_HIT(ch) / 100) * 5);
    send_to_char(buf, vict);
    return;
    }
}
ACMD(do_potential)
{

 struct char_data * vict;

  if (!GET_SKILL(ch, SKILL_POTENTIAL)) {
   send_to_char("You can't do that!\r\n", ch);
   return;
  }

 one_argument(argument, arg);
  
  if (!*argument) {
   send_to_char("&15You need to target a player to increase.", ch);
   return;
   }

  if (!(vict = get_char_room_vis(ch, arg))) {
      send_to_char("Raise who's power?\r\n", ch);
      return;
    }
 else
  if (vict == ch) {
    send_to_char("No using it on yourself!\r\n", ch);
    return;
  }
  if (PLR_FLAGGED(vict, PLR_MAJINIZE)) {
    send_to_char("You can't release the potential of a majinized person!", ch);
    return;
    }
  if (IS_ANDROID(vict)) {
    send_to_char("You can't release the potential of a artificial being!", ch);
    return;
   }

  if (GET_HOME(ch) <= 999) {
   send_to_char("You do not have enough spirit to use this technique! You need at least 1000 spirit per increase", ch);
   return;
   }
  

  if (GET_HOME(ch) >= 1000) {
   act("&15You place your hand on &14$N's &15head, suddenly as you concentrate a beam of light invelopes them. Moments later their newly released power rushes outward.", FALSE, ch, 0, vict, TO_CHAR);
   act("&14$n &15places $s hand on &14$N's &15head, suddenly as $e concentrates a beam of light invelopes $n. Moments later their newly released power rushes outward.", FALSE, ch, 0, vict, TO_NOTVICT); 
   act("&14$n &15places $s hand on your head, suddenly as $e concentrates a beam of light invelopes you. Moments later your newly released power rushes outward.", FALSE, ch, 0, vict, TO_VICT);
   sprintf(buf, "&16[&14Potential &10Release&11: &09Pl&11: &15%d &12Ki&11: &15%d&16]", GET_MAX_HIT(vict) / 100, GET_MAX_MANA(vict) / 100);
   send_to_char(buf, vict);
   GET_MAX_HIT(vict) += GET_MAX_HIT(vict) / 100;
   GET_MAX_MANA(vict) += GET_MAX_MANA(vict) / 100;
   GET_HOME(ch) -= 1000;
   return;
   }
}
ACMD(do_reincarnate)
{
 if (GET_LEVEL(ch) >= 1000000) {
   send_to_char("You are an immortal dumbass! No reincarnating!\n", ch);
   return;
  }
 if (IS_saiyan(ch)) {
  send_to_char("Yeah right, don't make us take away your saiyan, ass.\n", ch);
  return;
  }

 one_argument(argument, arg);
  if (PLR_FLAGGED(ch, PLR_trans1) || PRF_FLAGGED(ch, PRF_MYSTIC2)) {
   act("&15You can't reincarnate while in a transformation!!&00\n", TRUE, ch, 0, 0, TO_CHAR);
   return;
  }
  if (!*argument) {
   send_to_char("&15Choose carefully, and type reincarnate plus the race you wish to be. Once you\rdecide, that will be that, no going back.&00\n", ch);
   return;
   }
  if (GET_GOLD(ch) <= 1999999) {
  act("&15You need 2000000 zenni before the gods will hear your plea for reincarnation!&00\n", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
 if (!str_cmp(arg,"human") && GET_GOLD(ch) >= 2000000) {
  send_to_char("&15You feel strange as you are immersed in &00&07light&15!\n", ch);
  GET_PRACTICES(ch) = 0;
   if (GET_WIS(ch) >= 25) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 7;
   }
   else if (GET_WIS(ch) >= 20) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 5;
   }
   else if (GET_WIS(ch) >= 15) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 3;
   }
   else if (GET_WIS(ch) >= 10) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 2;
   }
  if (PLR_FLAGGED(ch, PLR_MAJINIZE)) {
    REMOVE_BIT(PLR_FLAGS(ch), PLR_MAJINIZE);
    }
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) / 4;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) / 4;
  GET_LEVEL(ch) = GET_LEVEL(ch) / 4;
  GET_EXP(ch) = GET_EXP(ch) / 4;
  GET_GOLD(ch) -= 2000000;
  GET_REINC(ch) += 1;
  GET_CLASS(ch) = CLASS_Human;
  act("&14$n &15is suddenly surrounded by &11bright &00&07light&15, when the light disappears they are gone!&00\n", FALSE, ch, 0, 0, TO_NOTVICT);
  sprintf(buf, "&16[&11Reincarnation&16] &15The gods listened to &14%s &15and have reincarnated them into a\r %s&00\n", GET_NAME(ch), CLASS_ABBR(ch));
  char_from_room(ch);
  char_to_room(ch, r_death_start_room);
  send_to_all(buf);
  look_at_room(ch, 0);
  return;
 }
 if (!str_cmp(arg,"namek") && GET_GOLD(ch) >= 2000000) {
  send_to_char("&15You feel strange as you are immersed in &00&07light&15!\n", ch);
  GET_PRACTICES(ch) = 0;
   if (GET_WIS(ch) >= 25) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 7;
   }
   else if (GET_WIS(ch) >= 20) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 5;
   }
   else if (GET_WIS(ch) >= 15) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 3;
   }
   else if (GET_WIS(ch) >= 10) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 2;
   }
  if (PLR_FLAGGED(ch, PLR_MAJINIZE)) {
    REMOVE_BIT(PLR_FLAGS(ch), PLR_MAJINIZE);
    }
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) / 4;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) / 4;
  GET_LEVEL(ch) = GET_LEVEL(ch) / 4;
  GET_EXP(ch) = GET_EXP(ch) / 4;
  GET_GOLD(ch) -= 2000000;
  GET_REINC(ch) += 1;
  GET_CLASS(ch) = CLASS_Namek;
  GET_SEX(ch) = SEX_NEUTRAL;
  act("&14$n &15is suddenly surrounded by &11bright &00&07light&15, when the light disappears they are gone!&00\n", FALSE, ch, 0, 0, TO_NOTVICT);
  sprintf(buf, "&16[&11Reincarnation&16] &15The gods listened to &14%s &15and have reincarnated them into a \r%s&00\n", GET_NAME(ch), CLASS_ABBR(ch));
  char_from_room(ch);
  char_to_room(ch, r_death_start_room);
  send_to_all(buf);
  look_at_room(ch, 0);
  return;
 }
 if (!str_cmp(arg,"truffle") && GET_GOLD(ch) >= 2000000) {
  send_to_char("&15You feel strange as you are immersed in &00&07light&15!\n", ch);
  GET_PRACTICES(ch) = 0;
   if (GET_WIS(ch) >= 25) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 7;
   }
   else if (GET_WIS(ch) >= 20) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 5;
   }
   else if (GET_WIS(ch) >= 15) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 3;
   }
   else if (GET_WIS(ch) >= 10) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 2;
   }
  if (PLR_FLAGGED(ch, PLR_MAJINIZE)) {
    REMOVE_BIT(PLR_FLAGS(ch), PLR_MAJINIZE);
    }
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) / 4;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) / 4;
  GET_LEVEL(ch) = GET_LEVEL(ch) / 4;
  GET_EXP(ch) = GET_EXP(ch) / 4;
  GET_GOLD(ch) -= 2000000;
  GET_REINC(ch) += 1;
  GET_CLASS(ch) = CLASS_TRUFFLE;
  act("&14$n &15is suddenly surrounded by &11bright &00&07light&15, when the light disappears they are gone!&00\n", FALSE, ch, 0, 0, TO_NOTVICT);
  sprintf(buf, "&16[&11Reincarnation&16] &15The gods listened to &14%s &15and have reincarnated them into a \r%s&00\n", GET_NAME(ch), CLASS_ABBR(ch));
  char_from_room(ch);
  char_to_room(ch, r_death_start_room);
  send_to_all(buf);
  look_at_room(ch, 0);
  return;
 }
 if (!str_cmp(arg,"kai") && GET_GOLD(ch) >= 2000000) {
  send_to_char("&15You feel strange as you are immersed in &00&07light&15!\n", ch);
  GET_PRACTICES(ch) = 0;
   if (GET_WIS(ch) >= 25) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 7;
   }
   else if (GET_WIS(ch) >= 20) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 5;
   }
   else if (GET_WIS(ch) >= 15) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 3;
   }
   else if (GET_WIS(ch) >= 10) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 2;
   }
  if (PLR_FLAGGED(ch, PLR_MAJINIZE)) {
    REMOVE_BIT(PLR_FLAGS(ch), PLR_MAJINIZE);
    }
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) / 4;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) / 4;
  GET_LEVEL(ch) = GET_LEVEL(ch) / 4;
  GET_EXP(ch) = GET_EXP(ch) / 4;
  GET_GOLD(ch) -= 2000000;
  GET_REINC(ch) += 1;
  GET_CLASS(ch) = CLASS_KAI;
  act("&14$n &15is suddenly surrounded by &11bright &00&07light&15, when the light disappears they are gone!&00\n", FALSE, ch, 0, 0, TO_NOTVICT);
  sprintf(buf, "&16[&11Reincarnation&16] &15The gods listened to &14%s &15and have reincarnated them into a \r%s&00\n", GET_NAME(ch), CLASS_ABBR(ch));
  char_from_room(ch);
  char_to_room(ch, r_death_start_room);
  send_to_all(buf);
  look_at_room(ch, 0);
  return;
 }
 if (!str_cmp(arg,"konatsu") && GET_GOLD(ch) >= 2000000) {
  send_to_char("&15You feel strange as you are immersed in &00&07light&15!\n", ch);
  GET_PRACTICES(ch) = 0;
   if (GET_WIS(ch) >= 25) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 7;
   }
   else if (GET_WIS(ch) >= 20) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 5;
   }
   else if (GET_WIS(ch) >= 15) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 3;
   }
   else if (GET_WIS(ch) >= 10) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 2;
   }
  if (PLR_FLAGGED(ch, PLR_MAJINIZE)) {
    REMOVE_BIT(PLR_FLAGS(ch), PLR_MAJINIZE);
    }
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) / 4;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) / 4;
  GET_LEVEL(ch) = GET_LEVEL(ch) / 4;
  GET_EXP(ch) = GET_EXP(ch) / 4;
  GET_GOLD(ch) -= 2000000;
  GET_REINC(ch) += 1;
  GET_CLASS(ch) = CLASS_KONATSU;
  act("&14$n &15is suddenly surrounded by &11bright &00&07light&15, when the light disappears they are gone!&00\n", FALSE, ch, 0, 0, TO_NOTVICT);
  sprintf(buf, "&16[&11Reincarnation&16] &15The gods listened to &14%s &15and have reincarnated them into a \r%s&00\n", GET_NAME(ch), CLASS_ABBR(ch));
  char_from_room(ch);
  char_to_room(ch, r_death_start_room);
  send_to_all(buf);
  look_at_room(ch, 0);
  return;
 }
 if (!str_cmp(arg,"mutant") && GET_GOLD(ch) >= 2000000) {
  send_to_char("&15You feel strange as you are immersed in &00&07light&15!\n", ch);
  GET_PRACTICES(ch) = 0;
   if (GET_WIS(ch) >= 25) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 7;
   }
   else if (GET_WIS(ch) >= 20) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 5;
   }
   else if (GET_WIS(ch) >= 15) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 3;
   }
   else if (GET_WIS(ch) >= 10) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 2;
   }
  if (PLR_FLAGGED(ch, PLR_MAJINIZE)) {
    REMOVE_BIT(PLR_FLAGS(ch), PLR_MAJINIZE);
    }
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) / 4;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) / 4;
  GET_LEVEL(ch) = GET_LEVEL(ch) / 4;
  GET_EXP(ch) = GET_EXP(ch) / 4;
  GET_GOLD(ch) -= 2000000;
  GET_REINC(ch) += 1;
  GET_CLASS(ch) = CLASS_MUTANT;
  act("&14$n &15is suddenly surrounded by &11bright &00&07light&15, when the light disappears they are gone!&00\n", FALSE, ch, 0, 0, TO_NOTVICT);
  sprintf(buf, "&16[&11Reincarnation&16] &15The gods listened to &14%s &15and have reincarnated them into a \r%s&00\n", GET_NAME(ch), CLASS_ABBR(ch));
  char_from_room(ch);
  char_to_room(ch, r_death_start_room);
  send_to_all(buf);
  look_at_room(ch, 0);
  return;
 }
 if (!str_cmp(arg,"demon") && GET_GOLD(ch) >= 2000000) {
  send_to_char("&15You feel strange as you are immersed in &00&07light&15!\n", ch);
  GET_PRACTICES(ch) = 0;
   if (GET_WIS(ch) >= 25) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 7;
   }
   else if (GET_WIS(ch) >= 20) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 5;
   }
   else if (GET_WIS(ch) >= 15) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 3;
   }
   else if (GET_WIS(ch) >= 10) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 2;
   }
  if (PLR_FLAGGED(ch, PLR_MAJINIZE)) {
    REMOVE_BIT(PLR_FLAGS(ch), PLR_MAJINIZE);
    }
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) / 4;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) / 4;
  GET_LEVEL(ch) = GET_LEVEL(ch) / 4;
  GET_EXP(ch) = GET_EXP(ch) / 4;
  GET_GOLD(ch) -= 2000000;
  GET_REINC(ch) += 1;
  GET_CLASS(ch) = CLASS_demon;
  act("&14$n &15is suddenly surrounded by &11bright &00&07light&15, when the light disappears they are gone!&00\n", FALSE, ch, 0, 0, TO_NOTVICT);
  sprintf(buf, "&16[&11Reincarnation&16] &15The gods listened to &14%s &15and have reincarnated them into a \r%s&00\n", GET_NAME(ch), CLASS_ABBR(ch));
  char_from_room(ch);
  char_to_room(ch, r_death_start_room);
  send_to_all(buf);
  look_at_room(ch, 0);
  return;
 }
 if (!str_cmp(arg,"bioandroid") && GET_GOLD(ch) >= 2000000) {
  send_to_char("&15You feel strange as you are immersed in &00&07light&15!\n", ch);
  GET_PRACTICES(ch) = 0;
   if (GET_WIS(ch) >= 25) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 7;
   }
   else if (GET_WIS(ch) >= 20) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 5;
   }
   else if (GET_WIS(ch) >= 15) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 3;
   }
   else if (GET_WIS(ch) >= 10) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 2;
   }
  if (PLR_FLAGGED(ch, PLR_MAJINIZE)) {
    REMOVE_BIT(PLR_FLAGS(ch), PLR_MAJINIZE);
    }
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) / 4;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) / 4;
  GET_LEVEL(ch) = GET_LEVEL(ch) / 4;
  GET_EXP(ch) = GET_EXP(ch) / 4;
  GET_GOLD(ch) -= 2000000;
  GET_CLASS(ch) = CLASS_BIODROID;
  act("&14$n &15is suddenly surrounded by &11bright &00&07light&15, when the light disappears they are gone!&00\n", FALSE, ch, 0, 0, TO_NOTVICT);
  sprintf(buf, "&16[&11Reincarnation&16] &15The gods listened to &14%s &15and have reincarnated them into a \r%s&00\n", GET_NAME(ch), CLASS_ABBR(ch));
  char_from_room(ch);
  char_to_room(ch, r_death_start_room);
  send_to_all(buf);
  look_at_room(ch, 0);
  return;
 }
 if (!str_cmp(arg,"halfbreed") && GET_GOLD(ch) >= 2000000) {
  send_to_char("&15You feel strange as you are immersed in &00&07light&15!\n", ch);
  GET_PRACTICES(ch) = 0;
   if (GET_WIS(ch) >= 25) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 7;
   }
   else if (GET_WIS(ch) >= 20) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 5;
   }
   else if (GET_WIS(ch) >= 15) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 3;
   }
   else if (GET_WIS(ch) >= 10) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 2;
   }
  if (PLR_FLAGGED(ch, PLR_MAJINIZE)) {
    REMOVE_BIT(PLR_FLAGS(ch), PLR_MAJINIZE);
    }
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) / 4;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) / 4;
  GET_LEVEL(ch) = GET_LEVEL(ch) / 4;
  GET_EXP(ch) = GET_EXP(ch) / 4;
  GET_GOLD(ch) -= 2000000;
  GET_REINC(ch) += 1;
  GET_CLASS(ch) = CLASS_HALF_BREED;
  act("&14$n &15is suddenly surrounded by &11bright &00&07light&15, when the light disappears they are gone!&00\n", FALSE, ch, 0, 0, TO_NOTVICT);
  sprintf(buf, "&16[&11Reincarnation&16] &15The gods listened to &14%s &15and have reincarnated them into a \r%s&00\n", GET_NAME(ch), CLASS_ABBR(ch));
  char_from_room(ch);
  char_to_room(ch, r_death_start_room);
  send_to_all(buf);
  look_at_room(ch, 0);
  return;
 }
 if (!str_cmp(arg,"android") && GET_GOLD(ch) >= 2000000) {
  send_to_char("&15You feel strange as you are immersed in &00&07light&15!\n", ch);
  GET_PRACTICES(ch) = 0;
   if (GET_WIS(ch) >= 25) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 7;
   }
   else if (GET_WIS(ch) >= 20) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 5;
   }
   else if (GET_WIS(ch) >= 15) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 3;
   }
   else if (GET_WIS(ch) >= 10) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 2;
   }
  if (PLR_FLAGGED(ch, PLR_MAJINIZE)) {
    REMOVE_BIT(PLR_FLAGS(ch), PLR_MAJINIZE);
    }
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) / 4;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) / 4;
  GET_LEVEL(ch) = GET_LEVEL(ch) / 4;
  GET_EXP(ch) = GET_EXP(ch) / 4;
  GET_GOLD(ch) -= 2000000;
  GET_REINC(ch) += 1;
  GET_CLASS(ch) = CLASS_ANDROID;
  act("&14$n &15is suddenly surrounded by &11bright &00&07light&15, when the light disappears they are gone!&00\n", FALSE, ch, 0, 0, TO_NOTVICT);
  sprintf(buf, "&16[&11Reincarnation&16] &15The gods listened to &14%s &15and have reincarnated them into a \r%s&00\n", GET_NAME(ch), CLASS_ABBR(ch));
  char_from_room(ch);
  char_to_room(ch, r_death_start_room);
  send_to_all(buf);
  look_at_room(ch, 0);
  return;
 }
 if (!str_cmp(arg,"majin") && GET_GOLD(ch) >= 2000000) {
  send_to_char("&15You feel strange as you are immersed in &00&07light&15!\n", ch);
  GET_PRACTICES(ch) = 0;
   if (GET_WIS(ch) >= 25) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 7;
   }
   else if (GET_WIS(ch) >= 20) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 5;
   }
   else if (GET_WIS(ch) >= 15) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 3;
   }
   else if (GET_WIS(ch) >= 10) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 2;
   }
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) / 4;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) / 4;
  GET_LEVEL(ch) = GET_LEVEL(ch) / 4;
  GET_EXP(ch) = GET_EXP(ch) / 4;
  GET_GOLD(ch) -= 2000000;
  GET_REINC(ch) += 1;
  GET_CLASS(ch) = CLASS_MAJIN;
  act("&14$n &15is suddenly surrounded by &11bright &00&07light&15, when the light disappears they are gone!&00\n", FALSE, ch, 0, 0, TO_NOTVICT);
  sprintf(buf, "&16[&11Reincarnation&16] &15The gods listened to &14%s &15and have reincarnated them into a \r%s&00\n", GET_NAME(ch), CLASS_ABBR(ch));
  char_from_room(ch);
  char_to_room(ch, r_death_start_room);
  send_to_all(buf);
  look_at_room(ch, 0);
  return;
 }
 if (!str_cmp(arg,"icer") && GET_GOLD(ch) >= 2000000) {
  send_to_char("&15You feel strange as you are immersed in &00&07light&15!\n", ch);
  GET_PRACTICES(ch) = 0;
   if (GET_WIS(ch) >= 25) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 7;
   }
   else if (GET_WIS(ch) >= 20) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 5;
   }
   else if (GET_WIS(ch) >= 15) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 3;
   }
   else if (GET_WIS(ch) >= 10) {
   GET_PRACTICES(ch) = GET_LEVEL(ch) * 2;
   }
  if (PLR_FLAGGED(ch, PLR_MAJINIZE)) {
    REMOVE_BIT(PLR_FLAGS(ch), PLR_MAJINIZE);
    }
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) / 4;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) / 4;
  GET_LEVEL(ch) = GET_LEVEL(ch) / 4;
  GET_EXP(ch) = GET_EXP(ch) / 4;
  GET_GOLD(ch) -= 2000000;
  GET_REINC(ch) += 1;
  GET_CLASS(ch) = CLASS_icer;
  act("&14$n &15is suddenly surrounded by &11bright &00&07light&15, when the light disappears they are gone!&00\n", FALSE, ch, 0, 0, TO_NOTVICT);
  sprintf(buf, "&16[&11Reincarnation&16] &15The gods listened to &14%s &15and have reincarnated them into a \r%s&00\n", GET_NAME(ch), CLASS_ABBR(ch));
  char_from_room(ch);
  char_to_room(ch, r_death_start_room);
  send_to_all(buf);
  look_at_room(ch, 0);
  return;
 }
}

ACMD(do_lp)
{
  one_argument(argument, arg);
  
  if (!*arg) {
   send_to_char("&11Syntax&10: &15lp &16<&09power&16/&14spirit&16>&15. Upgrades Max pl or ki. &11100 &16= &115000 &09pl&16/&14ki&00\r\n", ch);
   return;
   }

  if (!str_cmp(arg, "power") && GET_PRACTICES(ch) <= 99) {
   act("&15You do not have enough &00&07knowledge&15 to train that&11.&00", TRUE, ch, 0, 0, TO_CHAR);
   return;
  }
  if (!str_cmp(arg, "spirit") && GET_PRACTICES(ch) <= 99) {
   act("&15You do not have enough &00&07knowledge&15 to train that&11.&00", TRUE, ch, 0, 0, TO_CHAR);
   return;
  }
  if (!str_cmp(arg, "power") && GET_PRACTICES(ch) >= 100) {
   act("&15You exchange &11100 &15of your &10gained &00&07knowledge&15 for &09strength&11!", TRUE, ch, 0, 0, TO_CHAR);
   GET_PRACTICES(ch) = GET_PRACTICES(ch) - 100;
   GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + 5000;
   return;
  }
  if (!str_cmp(arg, "spirit") && GET_PRACTICES(ch) >= 100) {
   act("&15You exchange &11100 &15of your &10gained &00&07knowledge&15 for &14spirit&11!", TRUE, ch, 0, 0, TO_CHAR);
   GET_PRACTICES(ch) = GET_PRACTICES(ch) - 100;
   GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + 5000;
   return;
  }
}

ACMD(do_shadow)
{

int MAX_MANA = 0, MAX_HIT = 0;

    one_argument(argument, arg);

    if ((!IS_KONATSU(ch)))
    {
      act("&15You're not a Konatsu&11!&00", TRUE, ch, 0, 0, TO_CHAR);
      return;
    }
   else if (!*argument)
    {
act("&10o&12---------------&11[&16Shadow &09Forms&11]&12---------------&10o&00", TRUE, ch, 0, 0, TO_CHAR);
act("    &15Stage     Powerlevel Req.", TRUE, ch, 0, 0, TO_CHAR);
act("    &10Shade     &123000000&00", TRUE, ch, 0, 0, TO_CHAR);
act("    &10Shadow    &1220000000&00", TRUE, ch, 0, 0, TO_CHAR);
act("&10o&12---------------&11[&16Shadow &09forms&11]&12---------------&10o&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
}

if (!str_cmp(arg,"shadow") && !PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

/*-------------------------------------------------------------------------------------*/
/*----------------------------------  Reverting  --------------------------------------*/

 if (!str_cmp(arg, "revert") && PLR_FLAGGED(ch, PLR_trans2)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(30000000, 30000000);
  MAX_MANA = number(30000000, 30000000);
  
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  act("&15$n reverts from $s form of &16Shadow&15.&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You revert from your form of &16Shadow&15.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg, "revert") && PLR_FLAGGED(ch, PLR_trans1)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);
  
  MAX_HIT = number(10000000, 10000000);
  MAX_MANA = number(10000000, 10000000);
  
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;

  act("&15$n reverts from $s form of &16Shadow&15.&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You revert from your form of &16Shadow&15.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
 if (!str_cmp(arg,"shade") && PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15Your already in that form of &16Shadow!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"shade") && GET_MAX_HIT(ch) <= 2999999) {
  act("&15You do not have the power to attain that form of &16Shadow!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"shade") && GET_MAX_HIT(ch) >= 2999999) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(10000000, 10000000);
  MAX_MANA = number(10000000, 10000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  
  act("&11$n's &15body begins to phase out of the material plane briefly&11, &15just before streaks of &00&07white &15and &16black&15 move up and down their entire body in &09E&00&01R&09R&00&01A&00&01T&09I&00&01C&15 patterns just before a &00&04d&12a&14r&00&06k &14aura &00&07bursts&15 up around their body as they reach &16Shadow &15S&16h&00&07a&15d&16e &10form&11!&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&11Your &15body begins to phase out of the material plane briefly&11, &15just before streaks of &00&07white &15and &16black&15 move up and down your entire body in &09E&00&01R&09R&00&01A&00&01T&09I&00&01C&15 patterns just before a &00&04d&12a&14r&00&06k &14aura &00&07bursts&15 up around your body as you reach &16Shadow &15S&16h&00&07a&15d&16e &10form&11!&00", TRUE, ch, 0, 0, TO_CHAR);
  }

 if (!str_cmp(arg,"shadow") && PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15Your already in that form of &16Shadow!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
 
 if (!str_cmp(arg,"shadow") && GET_MAX_HIT(ch) - 2999999 <= 20000000) {
  act("&15You do nthe power to attain that form of &16Shadow!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
 
 if (!str_cmp(arg,"shadow") && GET_MAX_HIT(ch) - 2999999 >= 20000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans2);

  MAX_HIT = number(20000000, 20000000);
  MAX_MANA = number(20000000, 20000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&11$n&15 disappears instantly leaving a &00&04d&12a&14r&00&06k &10f&00&02or&10m&15 in their wake&11.&15 Lightning of &00&04da&12rk&14ne&00&06ss&15 &14crackles&15 around where their shadowy form now resides&11.&15 Looking at their new form is a strain on the &14e&00&07ye&14s &15of the viewers&11, &15the edges of &11$n&00&07'&15s body blurred to an &16i&09n&00&01sa&09n&16e &15point, as they have attained the &16Shadow &10form &09T&00&01R&09U&00&01E &16S&15h&00&07ad&15o&16w&11!&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&11&11You&15 disappear instantly leaving a &00&04d&12a&14r&00&06k &10f&00&02or&10m&15 in your wake&11.&15 Lightning of &00&04da&12rk&14ne&00&06ss&15 &14crackles&15 around where your shadowy form now resides&11.&15 Looking at your new form is a strain on the &14e&00&07ye&14s &15of the viewers&11, &15the edges of &11your&15 body blurred to an &16i&09n&00&01sa&09n&16e &15point, as you have attained the &16Shadow &10form &09T&00&01R&09U&00&01E &16S&15h&00&07ad&15o&16w&11!&00", TRUE, ch, 0, 0, TO_CHAR);
 return;
  }

}





ACMD(do_augment)
{

 int MAX_MANA = 0, MAX_HIT = 0;

    one_argument(argument, arg);

    if ((!IS_TRUFFLE(ch)))
    {
      act("&15You're not a truffle&11!&00", TRUE, ch, 0, 0, TO_CHAR);
      return;
    }
   else if (!*argument)
    {
act("&10o&12---------------&11[&09Augmentation&11]&12---------------&10o&00", TRUE, ch, 0, 0, TO_CHAR);
act("    &15Stage     Powerlevel Req.", TRUE, ch, 0, 0, TO_CHAR);
act("    &10Alpha     &141000000&00", TRUE, ch, 0, 0, TO_CHAR);
act("    &10Beta      &1415000000&00", TRUE, ch, 0, 0, TO_CHAR);
act("    &10Infusion  &1430000000&00", TRUE, ch, 0, 0, TO_CHAR);
act("    &12Syntax: augment (type)&00", TRUE, ch, 0, 0, TO_CHAR);
act("&10o&12---------------&11[&09Augmentation&11]&12---------------&10o&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
}

/*-------------------------------------------------------------------------------------*/
/*-------------------------------- Augmentation -----------------------------------------*/
/*-------------------------------------------------------------------------------------*/

 if (!str_cmp(arg,"alpha") && PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15Your already have that augmentation implanted!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"alpha") && GET_MAX_HIT(ch) <= 999999) {
  act("&15You do not have the power to handle that augmentation without dieing!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"alpha") && GET_MAX_HIT(ch) >= 999999) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(2000000, 2000000);
  MAX_MANA = number(2000000, 2000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&11$n &15sits down as they pull out a &12m&00&04e&12d&00&04i&12c&00&04a&12l &00&01k&09i&00&01t&11, &15and begins to make inscisions along their arms and legs&11!&15 $n then installs their &00&07Alpha &10implants&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&11You &15sit down while pulling out a &12m&00&04e&12d&00&04i&12c&00&04a&12l &00&01k&09i&00&01t&11, &15and begin to make inscisions along your arms and legs&11!&15 You then install your &00&07Alpha &10implants&00", TRUE, ch, 0, 0, TO_CHAR);
  }

 if (!str_cmp(arg,"beta") && PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15Your already have that augmentation installed!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"beta") && GET_MAX_HIT(ch) - 999999 <= 15000000) {
  act("&15You do not have the power for that augmentation without dieing!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"beta") && GET_MAX_HIT(ch) - 999999 >= 15000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans2);

  MAX_HIT = number(15000000, 15000000);
  MAX_MANA = number(15000000, 15000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&11$n &15sits down as they pull out a &12m&00&04e&12d&00&04i&12c&00&04a&12l &00&01k&09i&00&01t&11, &15and begins to make inscisions along their arms and legs&11!&15 $n then installs their &00&06Beta &10implants&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&11You &15sit down while pulling out a &12m&00&04e&12d&00&04i&12c&00&04a&12l &00&01k&09i&00&01t&11, &15and begin to make inscisions along your arms and legs&11!&15 You then install your &00&06Beta &10implants&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"infusion") && PLR_FLAGGED(ch, PLR_trans3)) {
  act("&15Your already have that augmentation installed!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"infusion") && GET_MAX_HIT(ch) - 16999999 <= 30000000) {
  act("&15You do not have the power for that augmentation without dieing!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"infusion") && GET_MAX_HIT(ch) - 16999999 >= 30000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans3);

  MAX_HIT = number(22000000, 22000000);
  MAX_MANA = number(22000000, 22000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&11$n &15sits down as they pull out a &12m&00&04e&12d&00&04i&12c&00&04a&12l &00&01k&09i&00&01t&11, &15and begins to make inscisions along their arms and legs&11!&15 $n then installs their &00&02I&10n&00&02f&10u&00&02s&10i&00&02o&10n &12implants&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&11You &15sit down while pulling out a &12m&00&04e&12d&00&04i&12c&00&04a&12l &00&01k&09i&00&01t&11, &15and begin to make inscisions along your arms and legs&11!&15 You then install your &00&02I&10n&00&02f&10u&00&02s&10i&00&02o&10n &12implants&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
}



ACMD(do_mutate)
{

int MAX_MANA = 0, MAX_HIT = 0;

    one_argument(argument, arg);

    if ((!IS_MUTANT(ch)))
    {
      act("&15You're not a mutant&11!&00", TRUE, ch, 0, 0, TO_CHAR);
      return;
    }
   else if (!*argument)
    {

act("&10o&12---------------&11[&09Mutate&11]&12---------------&10o&00", TRUE, ch, 0, 0, TO_CHAR);
act("    &15Stage     Powerlevel Req.", TRUE, ch, 0, 0, TO_CHAR);
act("    &10First     &121000000&00", TRUE, ch, 0, 0, TO_CHAR);
act("    &10Second    &1215000000&00", TRUE, ch, 0, 0, TO_CHAR);
act("&10o&12---------------&11[&09Mutate&11]&12---------------&10o&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
}

if (!str_cmp(arg,"second") && !PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

/*-------------------------------------------------------------------------------------*/
/*----------------------------------  Reverting  --------------------------------------*/

 if (!str_cmp(arg, "revert") && PLR_FLAGGED(ch, PLR_trans2)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);
     
  MAX_HIT = number(33000000, 33000000);
  MAX_MANA = number(33000000, 33000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  act("&15$n reverts from $s form of &09Mutation&15.&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You revert from your form of &09Mutation&15.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg, "revert") && PLR_FLAGGED(ch, PLR_trans1)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(3000000, 3000000);
  MAX_MANA = number(3000000, 3000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  
  act("&15$n reverts from $s form of &09Mutation&15.&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You revert from your form of &09Mutation&15.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

/*-------------------------------------------------------------------------------------*/
/*------------------------------------ Mutate -----------------------------------------*/
/*-------------------------------------------------------------------------------------*/

 if (!str_cmp(arg,"first") && PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15Your already in that form of mutation!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"first") && GET_MAX_HIT(ch) <= 999999) {
  act("&15You do not have the power to attain that form of mutation!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"first") && GET_MAX_HIT(ch) >= 999999) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(3000000, 3000000);
  MAX_MANA = number(3000000, 3000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&11$n's &15skin begins to harden as their muscles expand, their face begins to take on a &00&01ugly&15 appearance as &10claws&15 grow out of their fingers. Finally their eyes glow &09r&00&01e&09d&15 as their mutation finishes it's work&11!&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&11Your &15skin begins to harden as your muscles expand, your face begins to take on a &00&01ugly&15 appearance as &10claws&15 grow out of your fingers. Finally your eyes glow &09r&00&01e&09d&15 as their mutation finishes it's work&11!&00", TRUE, ch, 0, 0, TO_CHAR);
  }

 if (!str_cmp(arg,"second") && PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15Your already in that form of Mutation!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"second") && GET_MAX_HIT(ch) - 299999 <= 15000000) {
  act("&15You do not have the power to attain that form of Mutation!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"second") && GET_MAX_HIT(ch) - 299999 >= 15000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans2);

  MAX_HIT = number(30000000, 30000000);
  MAX_MANA = number(30000000, 30000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&11$n &16bends over as &13dark&16 energy flows about them&11!&16 Their muscles bulge uncontrollable, showing sickening detail of their muscle structure as their &10claws&16 grow longer and sharper&11!&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&11You &16bend over as &13dark&16 energy flows about you&11!&16 Your muscles bulge uncontrollably, showing sickening detail of your muscle structure as your &10claws&16 grow longer and sharper&11!&00", TRUE, ch, 0, 0, TO_CHAR);
 return;
  }

}

ACMD(do_innerfire)
{
   int MAX_MANA = 0, MAX_HIT = 0;

    one_argument(argument, arg);

    if ((!IS_demon(ch)))
    {
      act("Your not a Demon!", TRUE, ch, 0, 0, TO_CHAR);
      return;
    }
   else if (!*argument)
    {
act("        &10o&12_&09-------------------------&12_&10o&00\r\n         &09|   &11   InnerFire Forms&00    &09|&00\r\n        &10o&12_&09-------------------------&12_&10o&00\r\n         &09|&10You can do the following:&09|&00\r\n         &09|&09-------------------------&09|&00\r\n         &09|&15Stage:  Power Level Req.:&09|&00 ", TRUE, ch, 0, 0, TO_CHAR);
act("         &09| &10First       &14800000&00      &09|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &09| &10Second      &145000000&00     &09|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &09| &10Third       &1410000000&00    &09|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &09| &10Fourth      &1425000000&00    &09|&00", TRUE, ch, 0, 0, TO_CHAR);
act("        &10o&12_&09-------------------------&12_&10o&00", TRUE, ch, 0, 0, TO_CHAR);
return;
}
/*------------------  Checks to see if already in that stage if evil   -----------------*/


if (!str_cmp(arg,"second") && !PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"third") && !PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"fourth") && !PLR_FLAGGED(ch, PLR_trans3)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
/*-------------------------------------------------------------------------------------*/
/*----------------------------------  Reverting  --------------------------------------*/

 if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans4)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans3);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans4);

  MAX_HIT = number(35250000, 35250000);
  MAX_MANA = number(35250000, 35250000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  act("&15$n reverts from $s form of &09Innerfire&15.&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You revert from your form of &09Innerfire&15.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans3)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans3);

  MAX_HIT = number(15250000, 15250000);
  MAX_MANA = number(15250000, 15250000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  act("&15$n reverts from $s form of &09Innerfire&15.&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You revert from your form of &09Innerfire&15.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans2)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);

  MAX_HIT = number(5250000, 5250000);
  MAX_MANA = number(5250000, 5250000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  act("&15$n reverts from $s form of &09Innerfire&15.&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You revert from your form of &09Innerfire&15.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans1)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(1250000, 1250000);
  MAX_MANA = number(1250000, 1250000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  act("&15$n reverts from $s form of &09Innerfire&15.&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You revert from your form of &09Innerfire&15.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
/*-------------------------------------------------------------------------------------*/
/*------------------------------------ Evil 1 -----------------------------------------*/
/*-------------------------------------------------------------------------------------*/

if (!str_cmp(arg,"first") && PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15Your already in that form of Innerfire!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"first") && GET_MAX_HIT(ch) <= 800000) {
  act("&15You do not have the power to attain that form of Innerfire!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"first") && GET_MAX_HIT(ch) >= 800000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(1250000, 1250000);
  MAX_MANA = number(1250000, 1250000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&16$n starts to growl a little, a faint &09red &00&01pulse&16 eminating from them.  A flickering &09f&00&01lam&09e&16 glows from underneath their chest, growing from within.  &00&03H&11ea&00&03t&16 &16w&15ave&16s start to gradually rise from their skin, the area around them growing hotter.  The pulse eventually fades, leaving $n with new &09p&16o&09w&16e&09r&16.&00", TRUE, ch, 0, 0, TO_ROOM);

  act("&16You growl as you feel a slight burn in your chest.  The burn increases and grows, &11S&00&03ea&01rin&09g&16 you from the inside.  The incredible &00&01h&11e&00&03a&09t&16 drives your every fiber, increasing your speed and strength to a completely new level, your &09I&00&01nn&09er&00&01f&03i&01re&16 giving you all new &09p&16o&09w&16e&09r&16.", TRUE, ch, 0, 0, TO_CHAR); return;
  }
/*-------------------------------------------------------------------------------------*/
/*------------------------------------ Evil 2 -----------------------------------------*/
/*-------------------------------------------------------------------------------------*/

if (!str_cmp(arg,"second") && PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15Your already in that form of Innerfire!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"second") && GET_MAX_HIT(ch) - 1249999 <= 5000000) {
  act("&15You do not have the power to attain that form of Innerfire!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"second") && GET_MAX_HIT(ch) - 1249999 >= 5000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans2);

  MAX_HIT = number(4000000, 4000000);
  MAX_MANA = number(4000000, 4000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&16$n roars as they are suddenly encompassed in an &00&02a&16u&15r&00&02a&16 of radiating &00&03h&11ea&00&03t&16, a pulsing under their heart growing,pushing outward and expanding.  The &00&03h&11ea&00&03t&16 &16w&15ave&16s flowing from them intensify as &00&07s&16m&15o&16k&00&07e&16 starts to wisp from the corners of their eyes.  The heat waves flux and recede back inside, the &09p&16o&09w&16e&09r&16 suddenly filling them.&00", TRUE, ch, 0, 0, TO_ROOM);

  act("&16You start to feel a deep pulse beating undernearth your chest, the pressure causing you to roar out with pain.  The pulse grows larger as the &09I&00&01nn&09er&00&01f&03i&01re&16 beats within you, &09b&00&03la&01z&03in&09g&16 with an all new power waiting to be unleashed.  The &09f&00&01ire&09s&16 push against your skin, trying to &00&01e&16xp&15l&16od&00&01e&16 outward, driving you to all new heights of power.&00 ", TRUE, ch, 0, 0, TO_CHAR); return;
  }
/*-------------------------------------------------------------------------------------*/
/*------------------------------------ Evil 3 -----------------------------------------*/
/*-------------------------------------------------------------------------------------*/

if (!str_cmp(arg,"third") && PLR_FLAGGED(ch, PLR_trans3)) {
  act("&15Your already in that form of Innerfire!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"third") && GET_MAX_HIT(ch) - 5249999 <= 10000000) {
  act("&15You do not have the power to attain that form of Innerfire!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"third") && GET_MAX_HIT(ch) - 5249999 >= 10000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans3);

  MAX_HIT = number(20000000, 20000000);
  MAX_MANA = number(20000000, 20000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&16$n grabs their head as the pulse spreads from their chest to their entire body, transforming itself into a flickering &09f&00&01lam&09e&16, the fire dancing beneath their skin causing &00&07s&16m&15o&16k&00&07e&16  to pour from their skin, shrouding them in waves of heat and haze.  The &00&03h&11ea&00&03t&16 eventually recedes and two &09red&16 eyes, dancing with flames, piercethrough the shroud of smoke.&00 ", TRUE, ch, 0, 0, TO_ROOM);

  act("&16 Your mind is filled with an enormous strain as the &09I&00&01nn&09er&00&01f&03i&01re&16 suddenly bursts through every nerve, filling your entire body with an enormous &09f&00&01lam&09e&16 of power, the fire within you feeding itself into your muscles, forcing them to suddenly &00&01e&16xp&15l&16od&00&01e&16 with new strength.  The flames reach through your entire body, infusing it with energy and pain.  The pain fades away, leaving behind only an all new source of &09p&16o&09w&16e&09r&16.&00", TRUE, ch, 0, 0, TO_CHAR); 
return;
  }
/*-------------------------------------------------------------------------------------*/
/*------------------------------------ Evil 4 -----------------------------------------*/
/*-------------------------------------------------------------------------------------*/

if (!str_cmp(arg,"fourth") && PLR_FLAGGED(ch, PLR_trans4)) {
  act("&15Your already in that form of Innerfire!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"fourth") && GET_MAX_HIT(ch) - 2549999 <= 25000000) {
  act("&15You do not have the power to attain that form of Innerfire!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"fourth") && GET_MAX_HIT(ch) - 2549999 >= 25000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans4);

  MAX_HIT = number(20000000, 20000000);
  MAX_MANA = number(20000000, 20000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&00&01$n trembles as the &09I&00&01nn&09er&00&01f&03i&01re that had been contained within them for so long finally bursts from within, exploding outwards in a fury of &09I&00&01nf&16e&00&01rn&09o&00&01.  Your body is suddenly enveloped in &11s&00&03ea&01rin&09g&00&01 heat as the true might of demons is unleashed from within them, the flames bursting from a new &16A&15v&00&01at&15a&16r&00&01 of &09H&00&01e&16ll.&00", TRUE, ch, 0, 0, TO_ROOM);

  act("&00&01A torrent of power suddenly erupts from your &09I&00&01nn&09er&00&01f&03i&01re, the raging &09I&00&01nf&16e&00&01rn&09o of &16P&09o&16w&09e&16r&00&01 bursting past all restrictions, &00&01ex&16pl&15o&16di&00&01ng out from your skin enshrouding your entire being in a raging dance of flames, the ultimate power of the demons infusing themselves into your very being as you become a true &16A&15v&00&01at&15a&16r&00&01 of &09H&00&01e&16ll. &00", TRUE, ch, 0, 0, TO_CHAR); return;
  }


}


ACMD(do_quit)
{
  sh_int save_room;
  struct descriptor_data *d, *next_d;

  if (IS_NPC(ch) || !ch->desc)
    return;
  if (AFF_FLAGGED(ch, AFF_MAJIN)) {
     send_to_char("Your master won't let you.\r\n", ch);
     return; 
     }
  if (AFF_FLAGGED(ch, AFF_HALTED)) {
     send_to_char("You can't!\r\n", ch);
     return; 
     } 
  if (IS_SET(ROOM_FLAGS(ch->in_room), ROOM_ND))
      {
      send_to_char("You cannot quit in the next dimension.\r\n", ch);
    return;
     }
  if (ROOM_FLAGGED(ch->in_room, ROOM_NOQUIT))
      {
      send_to_char("You cannot quit here!\r\n", ch);
    return;
     }
/*
*  if (!IS_SET(ROOM_FLAGS(ch->in_room), ROOM_HOTEL))
*    {
*    send_to_char("You're not in a hotel!\r\n", ch);
*  return;
*    }
*/
  if (GET_POS(ch) == POS_FIGHTING)
      {
      send_to_char("You cannot quit while fighting.\r\n", ch);
    return;
      }
    if (PRF_FLAGGED(ch, PRF_OOZARU)) {
     REMOVE_BIT(PRF_FLAGS(ch), PRF_OOZARU);
     send_to_char("You revert to humanoid form before you leave..\r\n", ch);
     GET_MAX_HIT(ch) -= 100000;  
     GET_MAX_MANA(ch) -= 100000; 
     } 
  if (subcmd != SCMD_QUIT && GET_LEVEL(ch) < LVL_IMMORT)
    send_to_char("You have to type quit--no less, to quit!\r\n", ch);
  else if (GET_POS(ch) == POS_FIGHTING)
    send_to_char("No way!  You're fighting for your life!\r\n", ch);
  else if (GET_POS(ch) < POS_STUNNED) {
    char_to_room(ch, 4500);
    die(ch, NULL);
  } else {
    if (!GET_INVIS_LEV(ch))
      act("$n has left the game.", TRUE, ch, 0, 0, TO_ROOM);
    if (GET_LEVEL(ch) < LVL_IMMORT) {
    sprintf(buf, "&16[&10Player Logout&16] &15%s has left &11Drag&12(&09*&12)&11n Ball - &12T&00&07r&06u&07t&12h&00\r\n", 
GET_NAME(ch));
    send_to_all(buf);
    }
    sprintf(buf, "%s has quit the game.", GET_NAME(ch));
    mudlog(buf, NRM, MAX(LVL_IMMORT, GET_INVIS_LEV(ch)), TRUE);
    send_to_char("Goodbye, friend.. Come back soon!\r\n", ch);
    /*
     * kill off all sockets connected to the same player as the one who is
     * trying to quit.  Helps to maintain sanity as well as prevent duping.
     */
    for (d = descriptor_list; d; d = next_d) {
      next_d = d->next;
      if (d == ch->desc)
        continue;
      if (d->character && (GET_IDNUM(d->character) == GET_IDNUM(ch)))
        STATE(d) = CON_DISCONNECT;
    }

   save_room = ch->in_room;
   if (free_rent)
      Crash_rentsave(ch, 0);
    extract_char(ch);		/* Char is saved in extract char */

    /* If someone is quitting in their house, let them load back here */
    if (ROOM_FLAGGED(save_room, ROOM_HOUSE))
      save_char(ch, save_room);
  }
}



ACMD(do_save)
{
  if (IS_NPC(ch) || !ch->desc)
    return;

  /* Only tell the char we're saving if they actually typed "save" */
  
    /*
     * This prevents item duplication by two PC's using coordinated saves
     * (or one PC with a house) and system crashes. Note that houses are
     * still automatically saved without this enabled.
     */
  if (auto_save) {
   sprintf(buf, "&12Saving &14%s&12...    &00&06Saved&12.\r\n", GET_NAME(ch));
   send_to_char(buf, ch);
   if (GET_LEVEL(ch) <= 10) {
    sprintf(buf1, "&10Make sure, &14%s&10, that you read help newbie, help mudrules, and help help!&00\r\n", GET_NAME(ch));
    send_to_char(buf1, ch);
    }
   save_char(ch, NOWHERE);
   Crash_crashsave(ch);
   if (ROOM_FLAGGED(ch->in_room, ROOM_HOUSE_CRASH))
    House_crashsave(GET_ROOM_VNUM(IN_ROOM(ch)));
    return;
  }
}


/* generic function for commands which are normally overridden by
   special procedures - i.e., shop commands, mail commands, etc. */
ACMD(do_not_here)
{
  send_to_char("Sorry, but you cannot do that here!\r\n", ch);
}



ACMD(do_SWIFTNESS)
{
  struct affected_type af;
  byte percent;

  send_to_char("You starts moving so fast you cannot be seen.\r\n", ch);
  if (AFF_FLAGGED(ch, AFF_SWIFTNESS))
    affect_from_char(ch, SKILL_SWIFTNESS);

  percent = number(1, 101);	/* 101% is a complete failure */

  if (percent > GET_SKILL(ch, SKILL_SWIFTNESS) + dex_app_skill[GET_DEX(ch)].SWIFTNESS)
    return;

  af.type = SKILL_SWIFTNESS;
  af.duration = GET_LEVEL(ch);
  af.modifier = 0;
  af.location = APPLY_NONE;
  af.bitvector = AFF_SWIFTNESS;
  affect_to_char(ch, &af);
}



ACMD(do_hide)
{
  byte percent;

  send_to_char("You attempt to hide yourself.\r\n", ch);

  if (AFF_FLAGGED(ch, AFF_HIDE))
    REMOVE_BIT(AFF_FLAGS(ch), AFF_HIDE);

  percent = number(1, 101);	/* 101% is a complete failure */

  if (percent > GET_SKILL(ch, SKILL_HIDE) + dex_app_skill[GET_DEX(ch)].hide)
    return;

  SET_BIT(AFF_FLAGS(ch), AFF_HIDE);
}




ACMD(do_mug)
{
  struct char_data *vict;
  struct obj_data *obj;
  char vict_name[MAX_INPUT_LENGTH], obj_name[MAX_INPUT_LENGTH];
  int percent, gold, eq_pos, pcsteal = 0, ohoh = 0;
  if (!GET_SKILL(ch, SKILL_MUG)) {
  send_to_char("You can't do that!\r\n", ch);
  return;
  }

  if (ROOM_FLAGGED(IN_ROOM(ch), ROOM_PEACEFUL)) {
    send_to_char("This room just has such a peaceful, easy feeling...\r\n", ch);
    return;
  }
  if (GET_MANA(ch) < GET_MAX_MANA(ch) / 20) {
   send_to_char("Not enough ki to concentrate!", ch);
   return;
   }

  argument = one_argument(argument, obj_name);
  one_argument(argument, vict_name);

  if (!(vict = get_char_room_vis(ch, vict_name))) {
    send_to_char("Steal what from who?\r\n", ch);
    return;
  } else if (vict == ch) {
    send_to_char("Come on now, that's rather stupid!\r\n", ch);
    return;
  }

  /* 101% is a complete failure */
  percent = number(1, 20);

  if (GET_POS(vict) < POS_SLEEPING)
    percent = -1;		/* ALWAYS SUCCESS */

  if (!pt_allowed && !IS_NPC(vict))
    pcsteal = 1;

  /* NO NO With Imp's and Shopkeepers, and if player thieving is not allowed */
  if (GET_LEVEL(vict) >= LVL_IMMORT ||
      GET_MOB_SPEC(vict) == shop_keeper)
    percent = 101;		/* Failure */

  if (str_cmp(obj_name, "coins") && str_cmp(obj_name, "gold")) {

    if (!(obj = get_obj_in_list_vis(vict, obj_name, vict->carrying))) {

      for (eq_pos = 0; eq_pos < NUM_WEARS; eq_pos++)
	if (GET_EQ(vict, eq_pos) &&
	    (isname(obj_name, GET_EQ(vict, eq_pos)->name)) &&
	    CAN_SEE_OBJ(ch, GET_EQ(vict, eq_pos))) {
	  obj = GET_EQ(vict, eq_pos);
	  break;
	}
      if (!obj) {
	act("$E hasn't got that item.", FALSE, ch, 0, vict, TO_CHAR);
	return;
      } else {			/* It is equipment */
	if ((GET_POS(vict) > POS_STUNNED)) {
	  send_to_char("Steal the equipment now?  Impossible!\r\n", ch);
	  return;
	} else {
	  act("You unequip $p and steal it.", FALSE, ch, obj, 0, TO_CHAR);
	  act("$n steals $p from $N.", FALSE, ch, obj, vict, TO_NOTVICT);
	  obj_to_char(unequip_char(vict, eq_pos), ch);
	}
      }
    } else {			/* obj found in inventory */


      if (AWAKE(vict) && (GET_DEX(vict) > GET_DEX(ch) - percent)) {
	ohoh = TRUE;
	act("Oops..", FALSE, ch, 0, 0, TO_CHAR);
	act("$n tried to steal something from you!", FALSE, ch, 0, vict, TO_VICT);
	act("$n tries to steal something from $N.", TRUE, ch, 0, vict, TO_NOTVICT);
      } else {			/* Steal the item */
	if ((IS_CARRYING_N(ch) + 1 < CAN_CARRY_N(ch))) {
	  if ((IS_CARRYING_W(ch) + GET_OBJ_WEIGHT(obj)) < CAN_CARRY_W(ch)) {
            sprintf(buf1, "(GC) %s has stolen %s&10 from %s at %s.", GET_NAME(ch), obj->short_description, GET_NAME(vict), world[vict->in_room].name);
             mudlog(buf1, BRF, LVL_GOD, TRUE);
	    obj_from_char(obj);
	    obj_to_char(obj, ch);
	    send_to_char("Got it!\r\n", ch);
            if (number(1, 50) == 23) {
             act("You feel lighter for some odd reason.", FALSE, ch, 0, 0, TO_VICT);
             }            
	  }
	} else
	  send_to_char("You cannot carry that much.\r\n", ch);
      }
    }
  } else {			/* Steal some coins */
    if (AWAKE(vict) && (GET_DEX(vict) > GET_DEX(ch) - percent)) {
      ohoh = TRUE;
      act("Oops..", FALSE, ch, 0, 0, TO_CHAR);
      act("You discover that $n has $s hands in your wallet.", FALSE, ch, 0, vict, TO_VICT);
      act("$n tries to steal gold from $N.", TRUE, ch, 0, vict, TO_NOTVICT);
    } else {
      /* Steal some gold coins */
      gold = (int) ((GET_GOLD(vict) * number(1, 10)) / 100);
      gold = MIN(50000, gold);
      if (gold > 0) {
	GET_GOLD(ch) += gold;
	GET_GOLD(vict) -= gold;
        if (gold > 1) {
	  sprintf(buf, "Bingo!  You got %d gold coins.\r\n", gold);
          sprintf(buf1, "(GC) %s has stolen %d zenni from %s at %s.", GET_NAME(ch), gold, GET_NAME(vict), world[vict->in_room].name);
          mudlog(buf1, BRF, LVL_GOD, TRUE);
	  send_to_char(buf, ch);
	} else {
	  send_to_char("You manage to swipe a solitary gold coin.\r\n", ch);
	}
      } else {
	send_to_char("You couldn't get any gold...\r\n", ch);
      }
    }
  }
  if (GET_MANA(ch) >= GET_MAX_MANA(ch) / 20) {
   GET_MANA(ch) -= GET_MAX_MANA(ch) / 20;
  }
  if (ohoh && IS_NPC(vict) && AWAKE(vict))
    hit(vict, ch, TYPE_UNDEFINED);
}



ACMD(do_practice)
{
  one_argument(argument, arg);

  if (*arg)
    send_to_char("You can only practice skills in your guild.\r\n", ch);
  else
    list_skills(ch);
}



ACMD(do_visible)
{
  if (GET_LEVEL(ch) >= LVL_IMMORT) {
    perform_immort_vis(ch);
    return;
  }

  if AFF_FLAGGED(ch, AFF_INVISIBLE) {
    appear(ch);
    send_to_char("You break the spell of invisibility.\r\n", ch);
  } else
    send_to_char("You are already visible.\r\n", ch);
}



ACMD(do_title)
{
  skip_spaces(&argument);
  delete_doubledollar(argument);

  if (IS_NPC(ch))
    send_to_char("Your title is fine... go away.\r\n", ch);
  else if (PLR_FLAGGED(ch, PLR_NOTITLE))
    send_to_char("You can't title yourself -- you shouldn't have abused it!\r\n", ch);
  else if (strstr(argument, "(") || strstr(argument, ")"))
    send_to_char("Titles can't contain the ( or ) characters.\r\n", ch);
  else if (strlen(argument) > MAX_TITLE_LENGTH * 2) {
    sprintf(buf, "Sorry, titles can't be longer than %d characters.\r\n",
	    MAX_TITLE_LENGTH * 2);
    send_to_char(buf, ch);
  } else {
    set_title(ch, argument);
    sprintf(buf, "Okay, you're now %s %s.\r\n", GET_NAME(ch), GET_TITLE(ch));
    send_to_char(buf, ch);
  }
}


int perform_group(struct char_data *ch, struct char_data *vict)
{
  if (AFF_FLAGGED(vict, AFF_GROUP) || !CAN_SEE(ch, vict))
    return 0;
  if (GET_MAX_HIT(ch)/100 * 50 > GET_MAX_HIT(vict) && !IS_NPC(vict)) {
    act("They are too weak to be in your group!", FALSE, ch, 0, 0, TO_CHAR);
    return;
  }
  if (GET_MAX_HIT(vict)/100 * 50 > GET_MAX_HIT(ch) && !IS_NPC(vict)) {
    act("They are too strong to be in your group!", FALSE, ch, 0, 0, TO_CHAR);
    return;
  }
  SET_BIT(AFF_FLAGS(vict), AFF_GROUP);
  if (ch != vict)
    act("$N is now a member of your group.", FALSE, ch, 0, vict, TO_CHAR);
  act("You are now a member of $n's group.", FALSE, ch, 0, vict, TO_VICT);
  act("$N is now a member of $n's group.", FALSE, ch, 0, vict, TO_NOTVICT);
  return 1;
}


void print_group(struct char_data *ch)
{
  struct char_data *k;
  struct follow_type *f;

  if (!AFF_FLAGGED(ch, AFF_GROUP))
    send_to_char("But you are not the member of a group!\r\n", ch);
  else {
    send_to_char("Your group consists of:\r\n", ch);

    k = (ch->master ? ch->master : ch);

    if (AFF_FLAGGED(k, AFF_GROUP)) {
      sprintf(buf, "     [Pl:%3d Ki:%3d] [%s] $N (Head of group)",
	      GET_HIT(k), GET_MANA(k), CLASS_ABBR(k));
      act(buf, FALSE, ch, 0, k, TO_CHAR);
    }

    for (f = k->followers; f; f = f->next) {
      if (!AFF_FLAGGED(f->follower, AFF_GROUP))
	continue;

      sprintf(buf, "     [Pl:%3d Ki:%3d] [%s] $N", GET_HIT(f->follower),
	      GET_MANA(f->follower), CLASS_ABBR(f->follower));
      act(buf, FALSE, ch, 0, f->follower, TO_CHAR);
    }
  }
}



ACMD(do_group)
{
  struct char_data *vict;
  struct follow_type *f;
  int found;

  one_argument(argument, buf);

  if (!*buf) {
    print_group(ch);
    return;
  }

  if (ch->master) {
    act("You can not enroll group members without being head of a group.",
	FALSE, ch, 0, 0, TO_CHAR);
    return;
  }

  if (!str_cmp(buf, "all")) {
    perform_group(ch, ch);
    for (found = 0, f = ch->followers; f; f = f->next)
      found += perform_group(ch, f->follower);
    if (!found)
      send_to_char("Everyone following you is already in your group.\r\n", ch);
    return;
  }

  if (!(vict = get_char_room_vis(ch, buf)))
    send_to_char(NOPERSON, ch);
  else if ((vict->master != ch) && (vict != ch))
    act("$N must follow you to enter your group.", FALSE, ch, 0, vict, TO_CHAR);
  else {
    if (!AFF_FLAGGED(vict, AFF_GROUP))
      perform_group(ch, vict);
    else {
      if (ch != vict)
	act("$N is no longer a member of your group.", FALSE, ch, 0, vict, TO_CHAR);
      act("You have been kicked out of $n's group!", FALSE, ch, 0, vict, TO_VICT);
      act("$N has been kicked out of $n's group!", FALSE, ch, 0, vict, TO_NOTVICT);
      REMOVE_BIT(AFF_FLAGS(vict), AFF_GROUP);
    }
  }
}



ACMD(do_ungroup)
{
  struct follow_type *f, *next_fol;
  struct char_data *tch;

  one_argument(argument, buf);

  if (!*buf) {
    if (ch->master || !(AFF_FLAGGED(ch, AFF_GROUP))) {
      send_to_char("But you lead no group!\r\n", ch);
      return;
    }
    sprintf(buf2, "%s has disbanded the group.\r\n", GET_NAME(ch));
    for (f = ch->followers; f; f = next_fol) {
      next_fol = f->next;
      if (AFF_FLAGGED(f->follower, AFF_GROUP)) {
	REMOVE_BIT(AFF_FLAGS(f->follower), AFF_GROUP);
	send_to_char(buf2, f->follower);
        if (!AFF_FLAGGED(f->follower, AFF_MAJIN))
	  stop_follower(f->follower);
      }
    }

    REMOVE_BIT(AFF_FLAGS(ch), AFF_GROUP);
    send_to_char("You disband the group.\r\n", ch);
    return;
  }
  if (!(tch = get_char_room_vis(ch, buf))) {
    send_to_char("There is no such person!\r\n", ch);
    return;
  }
  if (tch->master != ch) {
    send_to_char("That person is not following you!\r\n", ch);
    return;
  }

  if (!AFF_FLAGGED(tch, AFF_GROUP)) {
    send_to_char("That person isn't in your group.\r\n", ch);
    return;
  }

  REMOVE_BIT(AFF_FLAGS(tch), AFF_GROUP);

  act("$N is no longer a member of your group.", FALSE, ch, 0, tch, TO_CHAR);
  act("You have been kicked out of $n's group!", FALSE, ch, 0, tch, TO_VICT);
  act("$N has been kicked out of $n's group!", FALSE, ch, 0, tch, TO_NOTVICT);
 
  if (!AFF_FLAGGED(tch, AFF_MAJIN))
    stop_follower(tch);
}




ACMD(do_report)
{
  struct char_data *k;
  struct follow_type *f;

  if (!AFF_FLAGGED(ch, AFF_GROUP)) {
    send_to_char("But you are not a member of any group!\r\n", ch);
    return;
  }
  sprintf(buf, "%s reports: %d/%dH, %d/%dK, %d/%dV\r\n",
	  GET_NAME(ch), GET_HIT(ch), GET_MAX_HIT(ch),
	  GET_MANA(ch), GET_MAX_MANA(ch),
	  GET_MOVE(ch), GET_MAX_MOVE(ch));

  CAP(buf);

  k = (ch->master ? ch->master : ch);

  for (f = k->followers; f; f = f->next)
    if (AFF_FLAGGED(f->follower, AFF_GROUP) && f->follower != ch)
      send_to_char(buf, f->follower);
  if (k != ch)
    send_to_char(buf, k);
  send_to_char("You report to the group.\r\n", ch);
}



ACMD(do_split)
{
  int amount, num, share;
  struct char_data *k;
  struct follow_type *f;

  if (IS_NPC(ch))
    return;

  one_argument(argument, buf);

  if (is_number(buf)) {
    amount = atoi(buf);
    if (amount <= 0) {
      send_to_char("Sorry, you can't do that.\r\n", ch);
      return;
    }
    if (amount > GET_GOLD(ch)) {
      send_to_char("You don't seem to have that much gold to split.\r\n", ch);
      return;
    }
    k = (ch->master ? ch->master : ch);

    if (AFF_FLAGGED(k, AFF_GROUP) && (k->in_room == ch->in_room))
      num = 1;
    else
      num = 0;

    for (f = k->followers; f; f = f->next)
      if (AFF_FLAGGED(f->follower, AFF_GROUP) &&
	  (!IS_NPC(f->follower)) &&
	  (f->follower->in_room == ch->in_room))
	num++;

    if (num && AFF_FLAGGED(ch, AFF_GROUP))
      share = amount / num;
    else {
      send_to_char("With whom do you wish to share your gold?\r\n", ch);
      return;
    }

    GET_GOLD(ch) -= share * (num - 1);

    if (AFF_FLAGGED(k, AFF_GROUP) && (k->in_room == ch->in_room)
	&& !(IS_NPC(k)) && k != ch) {
      GET_GOLD(k) += share;
      sprintf(buf, "%s splits %d coins; you receive %d.\r\n", GET_NAME(ch),
	      amount, share);
      send_to_char(buf, k);
    }
    for (f = k->followers; f; f = f->next) {
      if (AFF_FLAGGED(f->follower, AFF_GROUP) &&
	  (!IS_NPC(f->follower)) &&
	  (f->follower->in_room == ch->in_room) &&
	  f->follower != ch) {
	GET_GOLD(f->follower) += share;
	sprintf(buf, "%s splits %d coins; you receive %d.\r\n", GET_NAME(ch),
		amount, share);
	send_to_char(buf, f->follower);
      }
    }
    sprintf(buf, "You split %d coins among %d members -- %d coins each.\r\n",
	    amount, num, share);
    send_to_char(buf, ch);
  } else {
    send_to_char("How many coins do you wish to split with your group?\r\n", ch);
    return;
  }
}


ACMD(do_use)
{
  struct obj_data *mag_item;
  int equipped = 1;

  half_chop(argument, arg, buf);
  if (!*arg) {
    sprintf(buf2, "What do you want to %s?\r\n", CMD_NAME);
    send_to_char(buf2, ch);
    return;
  }
  mag_item = GET_EQ(ch, WEAR_SHIELD);

  if (!mag_item || !isname(arg, mag_item->name)) {
    switch (subcmd) {
    case SCMD_SWALLOW:
    case SCMD_PLANT:
      equipped = 0;
      if (!(mag_item = get_obj_in_list_vis(ch, arg, ch->carrying))) {
	sprintf(buf2, "You don't seem to have %s %s.\r\n", AN(arg), arg);
	send_to_char(buf2, ch);
	return;
      }
      break;
    case SCMD_USE:
      sprintf(buf2, "You don't seem to be wearing %s %s.\r\n", AN(arg), arg);
      send_to_char(buf2, ch);
      return;
    default:
      log("SYSERR: Unknown subcmd %d passed to do_use.", subcmd);
      return;
    }
  }
  switch (subcmd) {
  case SCMD_PLANT:
    if (GET_OBJ_TYPE(mag_item) != ITEM_SAIBAKIT) {
      send_to_char("You can only plant seeds.", ch);
      return;
    }
    break;
  case SCMD_SWALLOW:
    if (GET_OBJ_TYPE(mag_item) == ITEM_HOLYWATER && IS_ANDROID(ch)) {
      send_to_char("Androids can gain nothing from holywater!.", ch);
      return;
    }
    if (GET_OBJ_TYPE(mag_item) == ITEM_NANO && !IS_ANDROID(ch)) {
      send_to_char("You can't swallow nano beans!", ch);
      return;
    }
    if (GET_OBJ_TYPE(mag_item) != ITEM_NANO && IS_ANDROID(ch)) {
      send_to_char("You can only swallow nano beans.", ch);
      return;
    }
    break;
  case SCMD_USE:
    if ((GET_OBJ_TYPE(mag_item) != ITEM_SCOUTER) &&
	(GET_OBJ_TYPE(mag_item) != ITEM_STAFF)) {
      send_to_char("You can't seem to figure out how to use it.\r\n", ch);
      return;
    }
    break;
  }

  mag_objectmagic(ch, mag_item, buf);
}

ACMD(do_wimpy)
{
  int wimp_lev;

  /* 'wimp_level' is a player_special. -gg 2/25/98 */
  if (IS_NPC(ch))
    return;

  one_argument(argument, arg);

  if (!*arg) {
    if (GET_WIMP_LEV(ch)) {
      sprintf(buf, "Your current wimp level is %d hit points.\r\n",
	      GET_WIMP_LEV(ch));
      send_to_char(buf, ch);
      return;
    } else {
      send_to_char("At the moment, you're not a wimp.  (sure, sure...)\r\n", ch);
      return;
    }
  }
  if (isdigit(*arg)) {
    if ((wimp_lev = atoi(arg))) {
      if (wimp_lev < 0)
	send_to_char("Heh, heh, heh.. we are jolly funny today, eh?\r\n", ch);
      else if (wimp_lev > GET_MAX_HIT(ch))
	send_to_char("That doesn't make much sense, now does it?\r\n", ch);
      else if (wimp_lev > (GET_MAX_HIT(ch) / 2))
	send_to_char("You can't set your wimp level above half your hit points.\r\n", ch);
      else {
	sprintf(buf, "Okay, you'll wimp out if you drop below %d hit points.\r\n",
		wimp_lev);
	send_to_char(buf, ch);
	GET_WIMP_LEV(ch) = wimp_lev;
      }
    } else {
      send_to_char("Okay, you'll now tough out fights to the bitter end.\r\n", ch);
      GET_WIMP_LEV(ch) = 0;
    }
  } else
    send_to_char("Specify at how many hit points you want to wimp out at.  (0 to disable)\r\n", ch);

  return;

}


ACMD(do_display)
{
  size_t i;

  if (IS_NPC(ch)) {
    send_to_char("Mosters don't need displays.  Go away.\r\n", ch);
    return;
  }
  skip_spaces(&argument);

  if (!*argument) {
    send_to_char("Usage: prompt { { H | M | V } | all | none }\r\n", ch);
    return;
  }
  if ((!str_cmp(argument, "on")) || (!str_cmp(argument, "all")))
    SET_BIT(PRF_FLAGS(ch), PRF_DISPHP | PRF_DISPMANA);
  else {
    REMOVE_BIT(PRF_FLAGS(ch), PRF_DISPHP | PRF_DISPMANA);

    for (i = 0; i < strlen(argument); i++) {
      switch (LOWER(argument[i])) {
      case 'h':
	SET_BIT(PRF_FLAGS(ch), PRF_DISPHP);
	break;
      case 'm':
	SET_BIT(PRF_FLAGS(ch), PRF_DISPMANA);
	break;
      default:
	send_to_char("Usage: prompt { { H | M | V } | all | none }\r\n", ch);
	return;
	break;
      }
    }
  }

  send_to_char(OK, ch);
}



ACMD(do_gen_write)
{
  FILE *fl;
  char *tmp, buf[MAX_STRING_LENGTH];
  const char *filename;
  struct stat fbuf;
  time_t ct;

  switch (subcmd) {
  case SCMD_BUG:
    filename = BUG_FILE;
    break;
  case SCMD_TYPO:
    filename = TYPO_FILE;
    break;
  case SCMD_IDEA:
    filename = IDEA_FILE;
    break;
  default:
    return;
  }

  ct = time(0);
  tmp = asctime(localtime(&ct));

  if (IS_NPC(ch)) {
    send_to_char("Monsters can't have ideas - Go away.\r\n", ch);
    return;
  }

  skip_spaces(&argument);
  delete_doubledollar(argument);

  if (!*argument) {
    send_to_char("That must be a mistake...\r\n", ch);
    return;
  }
  sprintf(buf, "%s %s: %s", GET_NAME(ch), CMD_NAME, argument);
  mudlog(buf, CMP, LVL_IMMORT, FALSE);

  if (stat(filename, &fbuf) < 0) {
    perror("Error statting file");
    return;
  }
  if (fbuf.st_size >= max_filesize) {
    send_to_char("Sorry, the file is full right now.. try again later.\r\n", ch);
    return;
  }
  if (!(fl = fopen(filename, "a"))) {
    perror("do_gen_write");
    send_to_char("Could not open the file.  Sorry.\r\n", ch);
    return;
  }
  fprintf(fl, "%-8s (%6.6s) [%5d] %s\n", GET_NAME(ch), (tmp + 4),
	  GET_ROOM_VNUM(IN_ROOM(ch)), argument);
  fclose(fl);
  send_to_char("Okay.  Thanks!\r\n", ch);
}



#define TOG_OFF 0
#define TOG_ON  1

#define PRF_TOG_CHK(ch,flag) ((TOGGLE_BIT(PRF_FLAGS(ch), (flag))) & (flag))

ACMD(do_gen_tog)
{
  long result;

  const char *tog_messages[][2] = {
    {"Nohassle disabled.\r\n",
    "Nohassle enabled.\r\n"},
    {"Brief mode off.\r\n",
    "Brief mode on.\r\n"},
    {"Compact mode off.\r\n",
    "Compact mode on.\r\n"},
    {"You can now hear tells.\r\n",
    "You are now deaf to tells.\r\n"},
    {"You can now hear oocs.\r\n",
    "You are now deaf to oocs.\r\n"},
    {"You can now hear shouts.\r\n",
    "You are now deaf to shouts.\r\n"},
    {"You can now hear roleplay messages.\r\n",
    "You are now deaf to roleplay messages.\r\n"},
    {"You can now hear the congratulation messages.\r\n",
    "You are now deaf to the congratulation messages.\r\n"},
    {"You can now hear the Wiz-channel.\r\n",
    "You are now deaf to the Wiz-channel.\r\n"},
    {"You are no longer part of the RP.\r\n",
    "Okay, you are part of the RP!\r\n"},
    {"You will no longer see the room flags.\r\n",
    "You will now see the room flags.\r\n"},
    {"You will now have your communication repeated.\r\n",
    "You will no longer have your communication repeated.\r\n"},
    {"HolyLight mode off.\r\n",
    "HolyLight mode on.\r\n"},
    {"Nameserver_is_slow changed to NO; IP addresses will now be resolved.\r\n",
    "Nameserver_is_slow changed to YES; sitenames will no longer be resolved.\r\n"},
    {"Autoexits disabled.\r\n",
    "Autoexits enabled.\r\n"},
    {"AFK flag is now off.\r\n",
    "AFK flag is now on.\r\n"},
    {"You pack up and clean out your camp.\r\n",
    "&15You start a small fire and open camp to rest.\r\n"},
  
  };


  if (IS_NPC(ch))
    return;

  switch (subcmd) {
  case SCMD_NOHASSLE:
    result = PRF_TOG_CHK(ch, PRF_NOHASSLE);
    break;
  case SCMD_BRIEF:
    result = PRF_TOG_CHK(ch, PRF_BRIEF);
    break;
  case SCMD_COMPACT:
    result = PRF_TOG_CHK(ch, PRF_COMPACT);
    break;
  case SCMD_NOTELL:
    result = PRF_TOG_CHK(ch, PRF_NOTELL);
    break;
  case SCMD_NOooc:
    result = PRF_TOG_CHK(ch, PRF_NOooc);
    break;
  case SCMD_DEAF:
    result = PRF_TOG_CHK(ch, PRF_DEAF);
    break;
  case SCMD_NOGOSSIP:
    result = PRF_TOG_CHK(ch, PRF_NOGOSS);
    break;
  case SCMD_NOGRATZ:
    result = PRF_TOG_CHK(ch, PRF_NOGRATZ);
    break;
  case SCMD_NOWIZ:
    result = PRF_TOG_CHK(ch, PRF_NOWIZ);
    break;
  case SCMD_QUEST:
    result = PRF_TOG_CHK(ch, PRF_QUEST);
    break;
  case SCMD_ROOMFLAGS:
    result = PRF_TOG_CHK(ch, PRF_ROOMFLAGS);
    break;
  case SCMD_NOREPEAT:
    result = PRF_TOG_CHK(ch, PRF_NOREPEAT);
    break;
  case SCMD_HOLYLIGHT:
    result = PRF_TOG_CHK(ch, PRF_HOLYLIGHT);
    break;
  case SCMD_SLOWNS:
    result = (nameserver_is_slow = !nameserver_is_slow);
    break;
  case SCMD_AUTOEXIT:
    result = PRF_TOG_CHK(ch, PRF_AUTOEXIT);
    break;
 case SCMD_AFK:
     result = PRF_TOG_CHK(ch, PRF_AFK);
  if (PRF_FLAGGED(ch, PRF_AFK))
    act("$n has gone AFK.", TRUE, ch, 0, 0, TO_ROOM);
  else
    act("$n has come back from AFK.", TRUE, ch, 0, 0, TO_ROOM);
  break;
 case SCMD_CAMP:
     result = PRF_TOG_CHK(ch, PRF_CAMP);	     
   if (PRF_FLAGGED(ch, PRF_CAMP))
       act("$n sprawls out on the ground and sets up camp.", TRUE, ch, 0, 0, TO_ROOM);
  else
       act("$n packs up some stuff and leaves their camp.", TRUE, ch, 0, 0, TO_ROOM);       
    break;
  case SCMD_NOMUSIC:
    result = PRF_TOG_CHK(ch, PRF_NOMUSIC);
    break;

  default:
    log("SYSERR: Unknown subcmd %d in do_gen_toggle.", subcmd);
    return;
  }

  if (result)
    send_to_char(tog_messages[subcmd][TOG_ON], ch);
  else
    send_to_char(tog_messages[subcmd][TOG_OFF], ch);
    
  return;
}

ACMD(do_repair)	
{   
   int MANA = 0, HIT = 0; 

    if (!GET_SKILL(ch, SKILL_REPAIR)) {
    send_to_char("You can't do that!\r\n", ch);
    return;
    }
    if (GET_POS(ch) == POS_FIGHTING) {
     send_to_char("Not while fighting, you can't control your mechanisms enough!\r\n", ch);
     return;
    }
    else if (IS_ANDROID(ch) &&GET_MANA(ch) < GET_MAX_MANA(ch)/50)
    { 
  	act("You don't have enough energy to repair your circuits.", TRUE, ch, 0, 0, TO_CHAR);
       }
    else if (IS_ANDROID(ch) &&GET_HIT(ch) < GET_MAX_HIT(ch) && GET_MANA(ch) >= GET_MAX_MANA(ch)/50)
    {  
send_to_char("You stand still for a moment and repair your internal circuits.\r\n", ch);
act("&10$n repairs $s internal circuits.&00", TRUE, ch, 0, 0, TO_ROOM);
  
  MANA = number(GET_MAX_MANA(ch)/50, GET_MAX_MANA(ch)/50);
  HIT = number(GET_MAX_HIT(ch)/20, GET_MAX_HIT(ch)/15);

  GET_MANA(ch) = GET_MANA(ch) - MANA;
  GET_HIT(ch) = GET_HIT(ch) + HIT;
    }
    else if (IS_ANDROID(ch) && GET_HIT(ch) >= GET_MAX_HIT(ch))
    {
  	act("You are already fully repaired.", TRUE, ch, 0, 0, TO_CHAR);
    }       
}

ACMD(do_kyodaika)
{
   if (!GET_SKILL(ch, SKILL_KYODAIKA)) {
    send_to_char("You don't know that technique!\r\n", ch);
    return;
    }
   if (GET_MANA(ch) < GET_MAX_MANA(ch) / 5) {
    send_to_char("You don't have enough ki!\r\n", ch);
    return;
    }
   else
    act("&15You &10grow&15 to &09five &12times &15your size&11!&00", TRUE, ch, 0, 0, TO_CHAR);
    act("&14$n &10grows&15 to &09five &12times &15their size&11!&00", TRUE, ch, 0, 0, TO_CHAR);
    GET_MANA(ch) = GET_MANA(ch) - GET_MAX_MANA(ch)/5;
    GET_HIT(ch) = GET_HIT(ch) * 2;
}

ACMD(do_kaioken)	
{    
    int MANA = 0, HIT = 0; 
    
    one_argument(argument, arg);
  
 if (!GET_SKILL(ch, SKILL_KAIOKEN)) {
    send_to_char("You don't know that technique!\r\n", ch);
    return;
    }
  else if (!*argument) {
    send_to_char("Usage: Kaioken (1-20)\r\n", ch);
    return;
     }

   if (!str_cmp(arg,"1") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"1") && GET_HIT(ch) >= GET_MAX_HIT(ch)+9999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"1")){
   send_to_char("&10You begin over working your body by reaching kaioken level 1.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 1!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(1000, 1000);
   HIT = number(10000, 10000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"2") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"2") && GET_HIT(ch) >= GET_MAX_HIT(ch)+39999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"2")){
   send_to_char("&10You begin over working your body by reaching kaioken level 2.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 2!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(10000, 10000);
   HIT = number(40000, 40000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"3") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"3") && GET_HIT(ch) >= GET_MAX_HIT(ch)+99999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"3")){
   send_to_char("&10You begin over working your body by reaching kaioken level 3.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 3!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(40000, 40000);
   HIT = number(100000, 100000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"4") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"4") && GET_HIT(ch) >= GET_MAX_HIT(ch)+199999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"4")){
   send_to_char("&10You begin over working your body by reaching kaioken level 4.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 4!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(50000, 50000);
   HIT = number(200000, 200000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"5") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"5") && GET_HIT(ch) >= GET_MAX_HIT(ch)+399999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"5")){
   send_to_char("&10You begin over working your body by reaching kaioken level 5.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 5!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(75000, 75000);
   HIT = number(400000, 400000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
  if (!str_cmp(arg,"6") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"6") && GET_HIT(ch) >= GET_MAX_HIT(ch)+799999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"6")){
   send_to_char("&10You begin over working your body by reaching kaioken level 6.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 6!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(400000, 400000);
   HIT = number(800000, 800000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"7") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"7") && GET_HIT(ch) >= GET_MAX_HIT(ch)+899999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"7")){
   send_to_char("&10You begin over working your body by reaching kaioken level 7.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 7!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(450000, 450000);
   HIT = number(900000, 900000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"8") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"8") && GET_HIT(ch) >= GET_MAX_HIT(ch)+999999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"8")){
   send_to_char("&10You begin over working your body by reaching kaioken level 8.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 8!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(500000, 500000);
   HIT = number(1000000, 1000000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"9") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"9") && GET_HIT(ch) >= GET_MAX_HIT(ch)+1199999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"9")){
   send_to_char("&10You begin over working your body by reaching kaioken level 9.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 9!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(600000, 600000);
   HIT = number(1200000, 1200000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"10") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"10") && GET_HIT(ch) >= GET_MAX_HIT(ch)+1499999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"10")){
   send_to_char("&10You begin over working your body by reaching kaioken level 10.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 10!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(750000, 750000);
   HIT = number(1500000, 1500000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"11") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"11") && GET_HIT(ch) >= GET_MAX_HIT(ch)+1999999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"11")){
   send_to_char("&10You begin over working your body by reaching kaioken level 11.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 11!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(1000000, 1000000);
   HIT = number(2000000, 2000000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"12") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"12") && GET_HIT(ch) >= GET_MAX_HIT(ch)+2499999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"12")){
   send_to_char("&10You begin over working your body by reaching kaioken level 12.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 12!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(1250000, 1250000);
   HIT = number(2500000, 2500000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"13") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"13") && GET_HIT(ch) >= GET_MAX_HIT(ch)+2999999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"13")){
   send_to_char("&10You begin over working your body by reaching kaioken level 13.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 13!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(1500000, 1500000);
   HIT = number(3000000, 3000000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"14") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"14") && GET_HIT(ch) >= GET_MAX_HIT(ch)+3499999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"14")){
   send_to_char("&10You begin over working your body by reaching kaioken level 14.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 14!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(1750000, 1750000);
   HIT = number(3500000, 3500000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"15") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"15") && GET_HIT(ch) >= GET_MAX_HIT(ch)+3999999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"15")){
   send_to_char("&10You begin over working your body by reaching kaioken level 15.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 15!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(2000000, 2000000);
   HIT = number(4000000, 4000000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"16") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"16") && GET_HIT(ch) >= GET_MAX_HIT(ch)+4499999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"16")){
   send_to_char("&10You begin over working your body by reaching kaioken level 16.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 16!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(2250000, 2250000);
   HIT = number(4500000, 4500000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"17") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"17") && GET_HIT(ch) >= GET_MAX_HIT(ch)+4999999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"17")){
   send_to_char("&10You begin over working your body by reaching kaioken level 17.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 17!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(2500000, 2500000);
   HIT = number(5000000, 5000000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"18") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"18") && GET_HIT(ch) >= GET_MAX_HIT(ch)+5499999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"18")){
   send_to_char("&10You begin over working your body by reaching kaioken level 18.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 18!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(2750000, 2750000);
   HIT = number(5500000, 5500000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"19") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"19") && GET_HIT(ch) >= GET_MAX_HIT(ch)+5999999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"19")){
   send_to_char("&10You begin over working your body by reaching kaioken level 19.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 19!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(3000000, 3000000);
   HIT = number(6000000, 6000000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
   if (!str_cmp(arg,"20") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"20") && GET_HIT(ch) >= GET_MAX_HIT(ch)+6999999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"20")){
   send_to_char("&10You begin over working your body by reaching kaioken level 20.&00\r\n", ch);
   act("&09$n overworks $s body by reaching kaioken level 20!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(4000000, 4000000);
   HIT = number(7000000, 7000000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
  if (!str_cmp(arg,"super") && GET_HIT(ch) < GET_MAX_HIT(ch)) {
    send_to_char("You don't have enough strength to do that.\r\n", ch);
     }   
   else if (!str_cmp(arg,"super") && GET_HIT(ch) >= GET_MAX_HIT(ch)+9999999){
   send_to_char("You're already passed that stage of kaioken.\r\n", ch);
     }
   else if (!str_cmp(arg,"super")){
   send_to_char("&10You begin over working your body by reaching super kaioken !&00\r\n", ch);
   act("&09$n overworks $s body by reaching super kaioken!&00", TRUE, ch, 0, 0, TO_ROOM);
   MANA = number(10000000, 10000000);
   HIT = number(10000000, 10000000);

   GET_MANA(ch) = GET_MANA(ch) - MANA;
   GET_HIT(ch) = GET_HIT(ch) + HIT; 
}
  if (GET_MANA(ch) <= 0) {
  send_to_char("&09You overwork your body too much and explode.&00\r\n", ch);
  act("&10$n&15 tries to reach a &11kaioken&15 level beyond thier &10limit&15 and &09explodes!&00", TRUE, ch, 0, 0, TO_ROOM);
  char_from_room(ch);
  char_to_room(ch, r_death_start_room);
  GET_HIT(ch) = GET_MAX_HIT(ch)*0.1;
  GET_MANA(ch) = GET_MAX_MANA(ch)*0.1;
  GET_MOVE(ch) = GET_MAX_MOVE(ch)*0.1;
  GET_POS(ch) = POS_STANDING;
  look_at_room(ch, 0);
  }
}


ACMD(do_learn) {
	char buf[1024];
	int r = 1 << GET_CLASS(ch);
	int i = 0;
	
	argument = one_argument(argument, buf);

	if (buf[0] != '\0') {
		int skill = 0;
		while (spells[skill].name[0] != '\n') {
			if (!strncasecmp(buf, spells[skill].name, strlen(buf))) {
				if (!(spells[skill].races & r)) {
					send_to_char("You can't learn that.\r\n", ch);
					return;
				}
				else if (GET_PRACTICES(ch) < spells[skill].cost) {
					send_to_char("You don't have enough learning points to learn that.\r\n", ch);
					return;
				} else if (GET_SKILL(ch, skill) != 0) {
					send_to_char("You already know that technique.\r\n", ch);
					return;
				} else {
					sprintf(buf, "&15You expend &09%d&15 learning points to learn &10%s&00.\r\n", spells[skill].cost,
									spells[skill].name);
					send_to_char(buf, ch);
					GET_PRACTICES(ch) = GET_PRACTICES(ch) - spells[skill].cost;
					GET_SKILL(ch, skill) = 100;
					return;
				}
			} else {
				++skill;
			}
		}
		
		sprintf(buf, "%s is not a technique.\r\n", argument);
		send_to_char(buf, ch);
		return;
	}

	send_to_char("&15o&12---------------------------------------------------------&15o&00\r\n", ch);
	send_to_char("&15&12|&11Technique:          &14Cost:                                &12|&00\r\n", ch);
        send_to_char("&15o&12---------------------------------------------------------&15o&00\r\n", ch);
	while (spells[i].name[0] != '\n') {
		if ((spells[i].races & r) && (GET_SKILL(ch, i) == 0) &&  spells[i].type == SPELL_OFFENSIVE) {
			sprintf(buf, "&12%s%-20s&02%3d&12%35s&09\r\n", spells[i].type ? "&09" : "&09", 
						spells[i].name, spells[i].cost, "");
			send_to_char(buf, ch);
		}
		else if ((spells[i].races & r) && (GET_SKILL(ch, i) == 0) &&  spells[i].type == SPELL_DEFENSIVE) {
			sprintf(buf, "&12%s%-20s&02%3d&12%35s&09\r\n", spells[i].type ? "&12" : "&12", 
						spells[i].name, spells[i].cost, "");
			send_to_char(buf, ch);
		}
		else if ((spells[i].races & r) && (GET_SKILL(ch, i) == 0) &&  spells[i].type == SPELL_ENHANCE) {
			sprintf(buf, "&12%s%-20s&02%3d&12%35s&09\r\n", spells[i].type ? "&10" : "&10", 
						spells[i].name, spells[i].cost, "");
			send_to_char(buf, ch);
		}
		else if ((spells[i].races & r) && (GET_SKILL(ch, i) == 0) &&  spells[i].type == SPELL_OTHER) {
			sprintf(buf, "&12%s%-20s&02%3d&12%35s&09\r\n", spells[i].type ? "&15" : "&15", 
						spells[i].name, spells[i].cost, "");
			send_to_char(buf, ch);
		}
		else if ((spells[i].races & r) && (GET_SKILL(ch, i) == 0) &&  spells[i].type == SPELL_HEALSPELL) {
			sprintf(buf, "&12%s%-20s&02%3d&12%35s&09\r\n", spells[i].type ? "&13" : "&13", 
						spells[i].name, spells[i].cost, "");
			send_to_char(buf, ch);
		}
		++i;
	}

	send_to_char("&15o&12-----------------------------------------------&15o&00\r\n", ch);
	sprintf(buf, "&15You have &09%d &15learning points.&00\r\n", GET_PRACTICES(ch));
	send_to_char(buf, ch);
}

ACMD(do_learned) 
{
	char buf[1024];
	int col = 0, pos = 0;
	buf[0] = '\0';
	send_to_char("&10You know the following techniques:&00.\r\n", ch);

	for (pos = 1; pos < MAX_SKILLS; ++pos) {
		int i = spell_sort_info[pos];
		if (GET_SKILL(ch, i) != 0 && spells[i].name[0] != '!' &&  spells[i].type == SPELL_OFFENSIVE) {
			char buf2[32];
			sprintf(buf2, "%s%-20s%s", spells[i].type ? "&09" : "&09",							spells[i].name, "&00");
			strcat(buf, buf2);
			++col;
		}
		if (GET_SKILL(ch, i) != 0 && spells[i].name[0] != '!' &&  spells[i].type == SPELL_DEFENSIVE) {
			char buf2[32];
			sprintf(buf2, "%s%-20s%s", spells[i].type ? "&12" : "&12",							spells[i].name, "&00");
			strcat(buf, buf2);
			++col;
		}
		if (GET_SKILL(ch, i) != 0 && spells[i].name[0] != '!' &&  spells[i].type == SPELL_ENHANCE) {
			char buf2[32];
			sprintf(buf2, "%s%-20s%s", spells[i].type ? "&10" : "&10",							spells[i].name, "&00");
			strcat(buf, buf2);
			++col;
		}
		if (GET_SKILL(ch, i) != 0 && spells[i].name[0] != '!' &&  spells[i].type == SPELL_OTHER) {
			char buf2[32];
			sprintf(buf2, "%s%-20s%s", spells[i].type ? "&15" : "&15",							spells[i].name, "&00");
			strcat(buf, buf2);
			++col;
		}
		if (GET_SKILL(ch, i) != 0 && spells[i].name[0] != '!' &&  spells[i].type == SPELL_HEALSPELL) {
			char buf2[32];
			sprintf(buf2, "%s%-20s%s", spells[i].type ? "&13" : "&13",							spells[i].name, "&00");
			strcat(buf, buf2);
			++col;
		}
		if (col % 3 == 2) {
			send_to_char(buf, ch);
/*			send_to_char("\r\n", ch);	*/ /* Uncomment to do a newline after ever 3 */
			buf[0] = '\0';
		}
	}
}

ACMD(do_fly)	
{
  
   if (GET_POS(ch) == POS_FLOATING) {
    send_to_char("&15Your already flying!&00\r\n", ch);
    return;
    }
   else if (!IS_NPC(ch) && GET_MANA(ch) < GET_MAX_MANA(ch)/1000) {
    send_to_char("You do not have enough ki!\r\n", ch);
    return;
    }
  else
    GET_POS(ch) = POS_FLOATING;
    SET_BIT(PRF_FLAGS(ch), PRF_FLYING);
    act("&15You slowly fly high into the sky&11!&00",FALSE, ch, 0, 0, TO_CHAR);
    act("&09$n&15 slowly flies high into the sky&11!.&00",TRUE, ch, 0, 0, TO_NOTVICT);
   if (IS_ANDROID(ch) || IS_NPC(ch)) {
     GET_MANA(ch) = GET_MANA(ch);
   }
  else
    GET_MANA(ch) = GET_MANA(ch) - GET_MAX_MANA(ch) / 1000;
}

ACMD(do_land)
 {
   if (GET_POS(ch) == POS_STANDING) {
     send_to_char("&15Your already on the ground!&00\r\n", ch);
     return;
     }

   else GET_POS(ch) == POS_FLOATING; 
     act("&09$n&15 floats down to the ground.&00", TRUE, ch, 0, 0, TO_ROOM);
     act("&15You slowly float down to the ground.&00",TRUE, ch, 0, 0, TO_CHAR);
     GET_POS(ch) = POS_STANDING;
     REMOVE_BIT(PRF_FLAGS(ch), PRF_FLYING);
     return;
     
}

ACMD(do_meditate)
   {

   int is_altered = FALSE;
   int num_levels = 0;
   int MANA = 0, EXP = 0;
if (!GET_SKILL(ch, SKILL_MEDITATE)) {
    send_to_char("You don't know how to do that!\r\n", ch);
    return;
  }

if (PRF_FLAGGED(ch, PRF_CAMP)) {
      send_to_char("You can't do this while camped!\r\n", ch);
      return;
    }
if (!IS_NPC(ch) && GET_LEVEL(ch) < LVL_IMMORT && GET_EXP(ch) >= GET_LEVEL(ch)*2000) {
GET_LEVEL(ch) += 1;
GET_EXP(ch) = 1;
num_levels++;                                                                   
advance_level(ch);
is_altered = TRUE;
send_to_char("&15You feel your inner &14spirit&15 strengthen considerably&09!&00\r\n", ch);
}
  send_to_char("You meditate quietly.\r\n", ch);
  act("&11$n&00 meditates calmly.", TRUE, ch, 0, 0, TO_ROOM);
  MANA = number(1, GET_MAX_MANA(ch)/200);
  EXP = number(GET_LEVEL(ch)*50+100, GET_LEVEL(ch)*50+100);

  GET_MANA(ch) = GET_MANA(ch) - MANA;
  GET_EXP(ch) = GET_EXP(ch) + EXP;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + number(1, 4);
  WAIT_STATE(ch, PULSE_VIOLENCE * .5);
  return;
}


ACMD(do_powerup)	
{   
    if (IS_icer(ch) && GET_MANA(ch) < GET_MAX_MANA(ch) / 5) {
     send_to_char("You don't have the Ki to powerup!\r\n", ch);
     return;
    }
    else if (GET_MANA(ch) < GET_MAX_MANA(ch) * .5 ) {
     send_to_char("You don't have the Ki to powerup!\r\n", ch);
     return;
    }
    if (GET_HIT(ch) >= GET_MAX_HIT(ch))
    {
   switch (number(0, 3)) {
  case 0:
        act("&15You are already fully powered up!&00", TRUE, ch, 0, 0, TO_CHAR);
  break;
  case 1:
	act("&09ARE YOU CRAZY!? &15You can't go over your maximum power!&00", TRUE, ch, 0, 0, TO_CHAR);
  break;
  case 2:
        act("&15And just WHY are we trying to go over your max?&00&00", TRUE, ch, 0, 0, TO_CHAR);
  break;
  case 3:
        act("&15Yeah, right, like that will every happen&00", TRUE, ch, 0, 0, TO_CHAR);
  break;
  }
  return;
   }
    
    else if (GET_HIT(ch) < GET_MAX_HIT(ch) && GET_MAX_HIT(ch) < 1000000) {
      act("&15You scream aloud as your body reaches its maxamium power!&00\r\n", TRUE, ch, 0, 0, TO_CHAR);
      act("&14$n&15 screams aloud as &14$s &15body reaches its maxamium power!&00\r\n", TRUE, ch, 0, 0, TO_ROOM);
      }
    else if (GET_HIT(ch) < GET_MAX_HIT(ch) && GET_MAX_HIT(ch) < 5000000) {
      act("&15You begin screaming, as you &09flame&15 with ki, powering up to your maximum!&00\r\n", TRUE, ch, 0, 0, TO_CHAR);
      act("&12$n&15 begins screaming, as $e &09flames&15 with ki, powering up to $s maximum!&00", TRUE, ch, 0, 0, TO_ROOM);
      }
    else if (GET_HIT(ch) < GET_MAX_HIT(ch) && GET_MAX_HIT(ch) > 5000000) {
      act("&15Your body is covered by a swell of &00&07pure &10energy &15as you &09power &15up&11!", FALSE, ch, 0, 0, TO_CHAR);
      act("&14$n &15body is covered by a swell of &00&07pure &10energy &15as you &09power &15up&11!", FALSE, ch, 0, 0, TO_ROOM);
      }
    if (IS_icer(ch) && GET_MANA(ch) > GET_MAX_MANA(ch) / 5) {
     GET_HIT(ch) = GET_MAX_HIT(ch);
     GET_MANA(ch) = GET_MANA(ch) - GET_MAX_MANA(ch)/5;
     return;
     }
    else 
     GET_HIT(ch) = GET_MAX_HIT(ch);
     GET_MANA(ch) = GET_MANA(ch) - GET_MAX_MANA(ch) * .5;  
     return;
     
}
ACMD(do_deflect)
{
  if (!GET_SKILL(ch, SKILL_DEFLECT)) {
   send_to_char("You don't know how to do that!\r\n", ch);
   return;
  }
  
  one_argument(argument, arg);  

  if (!*argument) {
   send_to_char("&16Syntax&11: &15deflect yes/nomore", ch);
   return;
   }  

  if (!str_cmp(arg,"nomore")) {
   send_to_char("&15You absorb the energy on your hands back in, and calm down.", ch);
   act("&14$n &15absorbs the energy on their hands, and stops watching their surroundings.&00", FALSE, ch, 0, 0, TO_NOTVICT);
   REMOVE_BIT(PLR_FLAGS(ch), PLR_DEFLECT);
   return;
   }

  if (!str_cmp(arg,"yes") && GET_MANA(ch) <= GET_MAX_MANA(ch) / 100) {
   send_to_char("You do not have enough ki to concentrate!", ch);
   return;
   }

  if(!str_cmp(arg,"yes") && GET_MANA(ch) >= GET_MAX_MANA(ch) / 100) {
   send_to_char("&15You stop for a momment as you &12focus &14ki&15 onto your hands and concentrate on anything that could attack you.&00\n", ch);
   act("&10$n &12focuses &15some &14ki&15 onto $s hands, as they begin to watch their surroundings carefully.&00", FALSE, ch, 0, 0, TO_NOTVICT);
   GET_MANA(ch) -= GET_MAX_MANA(ch) / 100;
   SET_BIT(PLR_FLAGS(ch), PLR_DEFLECT);
   return;
   }

}

ACMD(do_ingest)
{
	
   int MAX_HIT = 0, EXP = 0, MAX_MANA; 
   struct char_data * vict; 
   
   one_argument(argument, arg);
  
     if (!GET_SKILL(ch, SKILL_INGEST)) {
  send_to_char("You can't do that!\r\n", ch);
  return;
}

  if (ROOM_FLAGGED(IN_ROOM(ch), ROOM_PEACEFUL)) {
    send_to_char("This room just has such a peaceful, easy feeling...\r\n", ch);
    return;
  }

    if (!(vict = get_char_room_vis(ch, arg))) {
      send_to_char("Absorb who?\r\n", ch);
      return;
    }
    
     if (GET_MAX_MANA(ch) >= 250000) {
      act("&15Eating people will no longer benefit you!", FALSE, ch, 0, vict, TO_CHAR);
      return;
      }
    if (IS_NPC(vict) && GET_MAX_HIT(ch) >= GET_MAX_HIT(vict))
  {
      act("&15You eat &09$N&15!", FALSE, ch, 0, vict, TO_CHAR);
      act("&09$n&15 eat &09$N&15!.", TRUE, ch, 0, vict, TO_NOTVICT);
      act("&09$n&15 eats you!&00", FALSE, ch, 0, vict, TO_VICT);
      sprintf(buf, "&16[&13Ingest &11Gain&15: &12Pl &15[&10%d&15] &14Ki &15[&10%d&15] &16]", GET_MAX_HIT(vict)/2, GET_MAX_HIT(vict)/4);      
      send_to_char(buf, ch);
  MAX_HIT = number(GET_HIT(vict)/2, GET_MANA(vict)/2);
  MAX_MANA = number(GET_HIT(vict)/4, GET_HIT(vict)/4);
  
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_EXP(ch) = GET_EXP(ch) + EXP;
  
          if (IS_NPC(vict)) {
  	    extract_char(vict);
  	    return;
  	    }
   }
 if (IS_NPC(vict) && GET_MAX_HIT(ch) <= GET_MAX_HIT(vict)) {
           act("&15You cannot over power them enough to eat them!", FALSE, ch, 0, vict, TO_CHAR);              
           return;
      }
   }       


ACMD(do_powerdown)	
{   
    if (IS_MAJIN(ch)) {
     send_to_char("Majins can't powerdown, it's physicaly impossible!", ch);
     return;
     }
    if (GET_HIT(ch) < GET_MAX_HIT(ch)) {
     GET_MANA(ch) = GET_HIT(ch);
     GET_HIT(ch) = GET_HIT(ch) + 1 - GET_HIT(ch);
     send_to_char("&15You concentrate and compress all your energy, you lose a lot of it in the process.&00\r\n", ch);
     return;
     }
    if (GET_HIT(ch) <= GET_MAX_HIT(ch)-GET_MAX_HIT(ch))
    {
  	act("&15You dropped your power level as low as you can already.&00", TRUE, ch, 0, 0, TO_CHAR); 
  return;
    }    
   else if (GET_HIT(ch) = GET_MAX_HIT(ch))
    {  
  send_to_char("&15You concentrate and compress all your energy.&00\r\n", ch);

  GET_MANA(ch) = GET_HIT(ch);
  GET_HIT(ch) = GET_HIT(ch) + 1 - GET_HIT(ch);
  return;
    }
}

ACMD(do_upgrade)	
{    
  int MAX_MANA = 0;
  int MAX_HIT = 0;

    one_argument(argument, arg);
   
   if (!IS_ANDROID(ch) && (GET_LEVEL(ch) >= 1)) {
    act("&15Only androids may aquire upgrades and upgrade information.&00", TRUE, ch, 0, 0, TO_CHAR);
    return;
     }
        
   if (!*argument && IS_ANDROID(ch)) {  
    send_to_char("&13Upgrade Chart&00\r\n", ch);
    send_to_char("&16-----------------------&00\r\n", ch);
    send_to_char("&15|&14Upgrade 1.0 &09800000   &15|&00\r\n", ch);
    send_to_char("&15|&14Upgrade 2.0 &091600000  &15|&00\r\n", ch);
    send_to_char("&15|&14Upgrade 3.0 &093200000  &15|&00\r\n", ch);
    send_to_char("&15|&14Upgrade 4.0 &096400000  &15|&00\r\n", ch);
    send_to_char("&15|&14Upgrade 5.0 &0912000000 &15|&00\r\n", ch);
    send_to_char("&15|&14Upgrade 6.0 &0928000000 &15|&00\r\n", ch);
    send_to_char("&15|&14Upgrade &09Pl &10100      &15|&00\r\n", ch);
    send_to_char("&15|&14Upgrade &11lp &10100       &15|&00\r\n", ch);
    send_to_char("&15|&14Upgrade &14Ki &10100      &15|&00\r\n", ch);
    send_to_char("&15|&14Green numbers are for&15|&00\r\n", ch);
    send_to_char("&15|&14upgrade points       &15|&00\r\n", ch);
    send_to_char("&16-----------------------&00\r\n", ch);
    send_to_char("&12(*) = Complete and working &00\r\n", ch);
    send_to_char("&09Upgrade Latest to view Upgrade status&00\r\n", ch);
    return;
     }
 if (!str_cmp(arg,"pl") && GET_HOME(ch) <= 99) {
  act("&15You do not have enough upgrade points.&00\r\n", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
 if (!str_cmp(arg,"lp") && GET_HOME(ch) <= 99) {
  act("&15You do not have enough upgrade points.&00\r\n", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
 if (!str_cmp(arg,"ki") && GET_HOME(ch) <= 99) {
  act("&15You do not have enough upgrade points.&00\r\n", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
 if (!str_cmp(arg,"pl") && GET_HOME(ch) >= 100) {
  act("&15You upgrade your powerlevel by 10000 points.&00\r\n", TRUE, ch, 0, 0, TO_CHAR);
  GET_HOME(ch) -= 100;
  GET_MAX_HIT(ch) += 10000;
  return;
  }
 if (!str_cmp(arg,"ki") && GET_HOME(ch) >= 100) {
  act("&15You upgrade your ki by 150000 points.&00\r\n", TRUE, ch, 0, 0, TO_CHAR);
  GET_HOME(ch) -= 100;
  GET_MAX_MANA(ch) += 10000;
  return;
  }
 if (!str_cmp(arg,"lp") && GET_HOME(ch) >= 100) {
  act("&15You upgrade your lp by 200 points.&00\r\n", TRUE, ch, 0, 0, TO_CHAR);
  GET_HOME(ch) -= 100;
  GET_PRACTICES(ch) += 200;
  return;
  }
 if (!str_cmp(arg,"1.0") && PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15You have already upgraded to version 1.0!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"1.0") && GET_MAX_HIT(ch) <= 800000) {
  act("&15You are not ready to upgrade yet!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  } 

 if (!str_cmp(arg,"1.0") && GET_MAX_HIT(ch) >= 800000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans1);
     
  MAX_HIT = number(2500000, 2500000);
  MAX_MANA = number(2500000, 2500000);
  
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  
  act("&11$n&15 sits down and begins to reprogram theirself!&00", TRUE, ch, 0, 0, TO_ROOM);

  act("&15You sit down and reprogram yourself&15!&00", TRUE, ch, 0, 0, TO_CHAR);
return;
  }


if (!str_cmp(arg,"2.0") && PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15You have already upgraded to version 2.0!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"2.0") && GET_MAX_HIT(ch) - 2499999 <= 1600000) {
  act("&15You are not ready to upgrade yet!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"2.0") && GET_MAX_HIT(ch) - 2499999 >= 1600000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans2);

 MAX_HIT = number(3000000, 3000000);
 MAX_MANA = number(3000000, 3000000);

 GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
 GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&11$n&15 sits down and begins to reprogram theirself!&00", TRUE, ch, 0, 0, TO_ROOM);

  act("&15You sit down and reprogram yourself&15!&00", TRUE, ch, 0, 0, TO_CHAR);
return;
  }

if (!str_cmp(arg,"3.0") && PLR_FLAGGED(ch, PLR_trans3)) {
  act("&15You have already upgraded to version 3.0!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"3.0") && GET_MAX_HIT(ch) - 5499999 <= 3200000) {
  act("&15You are not ready to upgrade yet!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"3.0") && GET_MAX_HIT(ch) - 5499999 >= 3200000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans3);

 MAX_HIT = number(5000000, 5000000);
 MAX_MANA = number(5000000, 5000000);

 GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
 GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&11$n&15 sits down and begins to reprogram theirself!&00", TRUE, ch, 0, 0, TO_ROOM);

  act("&15You sit down and reprogram yourself&15!&00", TRUE, ch, 0, 0, TO_CHAR);
return;
  }

if (!str_cmp(arg,"4.0") && PLR_FLAGGED(ch, PLR_trans4)) {
  act("&15You have already upgraded to version 4.0!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"4.0") && GET_MAX_HIT(ch) - 10499999 <= 6400000) {
  act("&15You are not ready to upgrade yet!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"4.0") && GET_MAX_HIT(ch) - 10499999 >= 6400000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans4);

 MAX_HIT = number(3000000, 3000000);
 MAX_MANA = number(3000000, 3000000);

 GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
 GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&11$n&15 sits down and begins to reprogram theirself!&00", TRUE, ch, 0, 0, TO_ROOM);

  act("&15You sit down and reprogram yourself&15!&00", TRUE, ch, 0, 0, TO_CHAR);
return;
  }

if (!str_cmp(arg,"5.0") && PLR_FLAGGED(ch, PLR_trans5)) {
  act("&15You have already upgraded to version 5.0!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"5.0") && GET_MAX_HIT(ch) - 13499999 <= 12000000) {
  act("&15You are not ready to upgrade yet!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"5.0") && GET_MAX_HIT(ch) - 13499999 >= 12000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans5);

 MAX_HIT = number(5000000, 5000000);
 MAX_MANA = number(5000000, 5000000);

 GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
 GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&11$n&15 sits down and begins to reprogram theirself!&00", TRUE, ch, 0, 0, TO_ROOM);

  act("&15You sit down and reprogram yourself&15!&00", TRUE, ch, 0, 0, TO_CHAR);
return;
  }

if (!str_cmp(arg,"6.0") && PLR_FLAGGED(ch, PLR_trans6)) {
  act("&15You have already upgraded to version 6.0!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"6.0") && GET_MAX_HIT(ch) - 18499999 <= 20000000) {
  act("&15You are not ready to upgrade yet!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"6.0") && GET_MAX_HIT(ch) - 18499999 >= 20000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans6);

 MAX_HIT = number(18000000, 18000000);
 MAX_MANA = number(18000000, 18000000);

 GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
 GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&11$n&15 sits down and begins to reprogram theirself!&00", TRUE, ch, 0, 0, TO_ROOM);

  act("&15You sit down and reprogram yourself&15!&00", TRUE, ch, 0, 0, TO_CHAR);
return;
  }
   if (!str_cmp(arg,"latest") && IS_ANDROID(ch)) {
    act("&15The most current robotic version is version &095.0&12a&15.&00", TRUE, ch, 0, 0, TO_CHAR);
   }
   
   if (!str_cmp(arg,"info") && IS_ANDROID(ch)) {
   act("&15Current Circuitry Version: &090.1a&00", TRUE, ch, 0, 0, TO_CHAR);
   act("&15Mental Processing Speed:   &10Basic&00", TRUE, ch, 0, 0, TO_CHAR);
   act("&15Extra Damage Reduction Units: &090%&00", TRUE, ch, 0, 0, TO_CHAR);
   act("&15Extra Ki Units:		&090%&00", TRUE, ch, 0, 0, TO_CHAR);
   act("&15Internal Sensors:		&10Basic&00", TRUE, ch, 0, 0, TO_CHAR);
   }

   if (!str_cmp(arg,"minor") && IS_ANDROID(ch)) {
    act("&15Upgrade to 1.0, 2.0, 3.0, 4.0 5.0 6.0 are done.&00", TRUE, ch, 0, 0, TO_CHAR);
   }
}

ACMD(do_absorb)	
{   
   int MAX_HIT = 0, EXP = 0, MAX_MANA; 
   struct char_data * vict; 
 
   one_argument(argument, arg);
  
     if (!GET_SKILL(ch, SKILL_ABSORB)) {
  send_to_char("You can't do that!\r\n", ch);
  return;
}

  if (ROOM_FLAGGED(IN_ROOM(ch), ROOM_PEACEFUL)) {
    send_to_char("This room just has such a peaceful, easy feeling...\r\n", ch);
    return;
  }
  if (IS_BIODROID(ch) && !PLR_FLAGGED(ch, PLR_TAIL)) {
     send_to_char("You need a tail to absorb, being a Bio-Android!\r\n", ch);
     return;
  }

    if (!(vict = get_char_room_vis(ch, arg))) {
      send_to_char("Absorb who?\r\n", ch);
      return;
    }
    
      if (GET_MAX_HIT(ch) >= 250000) {
       act("&15You absorb some of $N's energy!", FALSE, ch, 0, vict, TO_CHAR);
       act("&15$n absorbs some of your energy!", FALSE, ch, 0, vict, TO_VICT);
       act("&15$n absorbs some of $N's energy!", FALSE, ch, 0, vict, TO_NOTVICT);
       sprintf(buf, "&16[&13Absorb &11Recharge&15: &12Pl &15[&10%d&15] &14Ki &15[&10%d&15] &16]&00\r\n", GET_MAX_HIT(ch)/100, GET_MAX_MANA(ch)/150);
       send_to_char(buf, ch);
       MAX_HIT = number(GET_MAX_HIT(ch)/100, GET_MAX_HIT(ch)/100);
       MAX_MANA = number(GET_MAX_MANA(ch)/150, GET_MAX_MANA(ch)/150);
       GET_MANA(ch) = GET_MANA(ch) + MAX_MANA;
       GET_HIT(ch) = GET_HIT(ch) + MAX_HIT;
       GET_HIT(vict) = GET_HIT(vict) - MAX_HIT;
       GET_MANA(vict) = GET_MANA(vict) - MAX_MANA;
       damage(ch, vict, GET_LEVEL(ch), SKILL_ABSORB);
       WAIT_STATE(ch, PULSE_VIOLENCE * 2);
       WAIT_STATE(vict, PULSE_VIOLENCE);
       return;
      }
    if (IS_NPC(vict) && GET_MAX_HIT(ch) >= GET_MAX_HIT(vict))
  {
      act("&15You absorb &09$N&15 into your body!", FALSE, ch, 0, vict, TO_CHAR);
      act("&09$n&15 absorbs &09$N&15 into $s body!.", TRUE, ch, 0, vict, TO_NOTVICT);
      act("&09$n&15 absorbs you into $s body!&00", FALSE, ch, 0, vict, TO_VICT);
      sprintf(buf, "&16[&13Absorb &11Gain&15: &12Pl &15[&10%d&15] &14Ki &15[&10%d&15] &16]", GET_MAX_HIT(vict)/2, GET_MAX_HIT(vict)/4);
      send_to_char(buf, ch);
  MAX_HIT = number(GET_MAX_HIT(vict)/2, GET_MAX_HIT(vict)/2);
  MAX_MANA = number(GET_MAX_HIT(vict)/4, GET_MAX_HIT(vict)/4);
  EXP = number(GET_MAX_HIT(vict)/500, GET_MAX_HIT(vict)/500);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_EXP(ch) = GET_EXP(ch) + EXP;
  
          if (IS_NPC(vict)) {
  	    extract_char(vict);
  	    return;
  	    }
   }
 if (IS_NPC(vict) && GET_MAX_HIT(ch) <= GET_MAX_HIT(vict)) {
           act("&15You cannot over power them enough to absorb them!", FALSE, ch, 0, vict, TO_CHAR);              
           return;
      }
   }              
   
   
ACMD(do_selfdestruct)
{
	
struct char_data * vict;
 
one_argument(argument, arg);
  
  if (!GET_SKILL(ch, SKILL_DESTRUCT)) {
  send_to_char("You can't do that!\r\n", ch);
  return;
    }

  if (!(vict = get_char_room_vis(ch, arg))) {
      send_to_char("Self destruct on who?\r\n", ch);
      return;
    }  

  if (!IS_NPC(vict) && GET_MAX_HIT(ch) >= GET_MAX_HIT(vict))
  {
      act("&15You self detruct taking &09$N&15 with you!&00", FALSE, ch, 0, vict, TO_CHAR);
      act("&09$n &15self-destructs taking &09$N with $m&00.", TRUE, ch, 0, vict, TO_NOTVICT);
      act("&09$n&15 self-destructs killing you with the explosion!&00", FALSE, ch, 0, vict, TO_VICT);
      sprintf(buf, "&16[&09Self Destruct&16] &14%s&15 has self destructed &10%s.&00\r\n", GET_NAME(ch), GET_NAME(vict));
       send_to_all(buf);
  if (vict == ch) {
    char_from_room(vict);
    char_to_room(vict, r_death_start_room);
    GET_HIT(vict) = GET_MAX_HIT(vict);
    GET_MANA(vict) = GET_MAX_MANA(vict);
    GET_MOVE(vict) = GET_MAX_MOVE(vict);
    GET_POS(vict) = POS_STANDING;
    look_at_room(vict, 0);
    return;
    }
  else
   char_from_room(vict);
   char_to_room(vict, r_death_start_room);
   GET_HIT(vict) = GET_MAX_HIT(vict);
   GET_MANA(vict) = GET_MAX_MANA(vict);
   GET_MOVE(vict) = GET_MAX_MOVE(vict);
   GET_POS(vict) = POS_STANDING;
   char_from_room(ch);
   char_to_room(ch, r_death_start_room);
   GET_HIT(ch) = GET_MAX_HIT(ch);
   GET_MANA(ch) = GET_MAX_MANA(ch);
   GET_MOVE(ch) = GET_MAX_MOVE(ch);
   GET_POS(ch) = POS_STANDING;
   look_at_room(ch, 0);
   look_at_room(vict, 0);
  } 
  
  else if (!IS_NPC(vict) && GET_MAX_HIT(ch) <= GET_MAX_HIT(vict)){
  act("&15You self detruct but &09$N&15 does not die!&00", FALSE, ch, 0, vict, TO_CHAR);
  act("&09$n &15self-destructs but fails to take &09$N with $m&00.", TRUE, ch, 0, vict, TO_NOTVICT);
  act("&09$n&15 self-destructs but fails to kill you!&00", FALSE, ch, 0, vict, TO_VICT);
  sprintf(buf, "&16[&09Self Destruct&16] &14%s&15 attempts to self destruct &10%s&15, but fails&00.\r\n", GET_NAME(ch), GET_NAME(vict));
       send_to_all(buf);
  char_from_room(ch);
  char_to_room(ch, r_death_start_room);
  GET_HIT(ch) = GET_MAX_HIT(ch);
  GET_MANA(ch) = GET_MAX_MANA(ch);
  GET_MOVE(ch) = GET_MAX_MOVE(ch);
  GET_POS(ch) = POS_STANDING;
  look_at_room(ch, 0);
  }

}


ACMD(do_powersense)
{
	struct char_data * vict;
        one_argument(argument, arg);
 
 if (!GET_SKILL(ch, SKILL_POWERSENSE)) {
  send_to_char("You can't do that!\r\n", ch);
  return;
}


   if (!(vict = get_char_room_vis(ch, arg))) {
      send_to_char("Detect who's power?\r\n", ch);
      return;
    } 
   if (IS_ANDROID(vict)) {
    send_to_char("You can't sense androids!\r\n", ch);
    return;
   }

   if (vict) {		/* victim */
  act("You pause for a moment as you stare at $N.", FALSE, ch, 0, vict, TO_CHAR);
  act("$n stares at $N momentarily..", TRUE, ch, 0, vict, TO_NOTVICT);
  act("$n stares at you momentarily.&00", FALSE, ch, 0, vict, TO_VICT);
    sprintf(buf, "%s has a power level of &10%d&15.&00\r\n",GET_NAME(vict), GET_HIT(vict));
     send_to_char(buf, ch);
  }
}

ACMD(do_ssj)	
{    
 
  int MAX_MANA = 0, MAX_HIT = 0, HITROLL = 0, DAMROLL = 0;

    one_argument(argument, arg);

    if ((!IS_saiyan(ch)) && (!IS_HALF_BREED(ch)))
    {
      act("Your not part saiyan!", TRUE, ch, 0, 0, TO_CHAR);
      return;
    }
   else if (!*argument)
    {
act("        &10o&12_&09-------------------------&12_&10o&00\r\n         &09|   &11Super Saiyan Forms&00    &09|&00\r\n        &10o&12_&09-------------------------&12_&10o&00\r\n         &09|&10You can do the following:&09|&00\r\n         &09|&09-------------------------&09|&00\r\n         &09|&15Stage:  Power Level Req.:&09|&00 ", TRUE, ch, 0, 0, TO_CHAR);
act("         &09| &10First      &14800,000&00      &09|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &09| &10Second     &145,000,000&00    &09|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &09| &10Third      &1415,000,000&00   &09|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &09| &10Fourth     &1430,000,000&00   &09|&00", TRUE, ch, 0, 0, TO_CHAR);
act("        &10o&12_&09-------------------------&12_&10o&00", TRUE, ch, 0, 0, TO_CHAR);
return;
}

/*------------------        Oozaru checks, no SSj in oozaru           -----------------*/

if (!str_cmp(arg,"first") && PRF_FLAGGED(ch, PRF_OOZARU)) {
  act("&15You can't go super saiya-jin while in oozaru form!!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"second") && PRF_FLAGGED(ch, PRF_OOZARU)) {
  act("&15You can't go super saiya-jin while in oozaru form!!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"third") && PRF_FLAGGED(ch, PRF_OOZARU)) {
  act("&15You can't go super saiya-jin while in oozaru form!!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"fourth") && PRF_FLAGGED(ch, PRF_OOZARU)) {
  act("&15You can't go super saiya-jin while in oozaru form!!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

/*------------------  Checks to see if already in that stage if ssj   -----------------*/


if (!str_cmp(arg,"second") && !PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"third") && !PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"fourth") && !PLR_FLAGGED(ch, PLR_trans3)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
/*-------------------------------------------------------------------------------------*/
/*----------------------------------  Reverting  --------------------------------------*/

  if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans4)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans3);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans4);

  MAX_HIT = number(51000000, 51000000);
  MAX_MANA = number(51000000, 51000000);
  HITROLL = number(50, 50);
  DAMROLL = number(50, 50);


  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) - 50;
  GET_DAMROLL(ch) = GET_DAMROLL(ch) - 50;
  act("&11$n&15's &12hair&15 and &12eyes&15 turn back to normal as $e stops &09flaming&00 &11yellow&00.", TRUE, ch, 0, 0, TO_ROOM);
  act("&15Your &13rage&15 ebbs as your &12hair&15 and &12eyes&15 turn back to normal and you stop &09flaming&00 &11yellow.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }


  if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans3)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans3);

  MAX_HIT = number(31000000, 31000000);
  MAX_MANA = number(31000000, 31000000);
  HITROLL = number(30, 30);
  DAMROLL = number(30, 30);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) - HITROLL;
  GET_DAMROLL(ch) = GET_DAMROLL(ch) - DAMROLL;
  act("&11$n&15's &12hair&15 and &12eyes&15 turn back to normal as $e stops &09flaming&00 &11yellow&00.", TRUE, ch, 0, 0, TO_ROOM);
  act("&15Your &13rage&15 ebbs as your &12hair&15 and &12eyes&15 turn back to normal and you stop &09flaming&00 &11yellow.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans2)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);

  MAX_HIT = number(11000000, 11000000);
  MAX_MANA = number(11000000, 11000000);
  HITROLL = number(15, 15);
  DAMROLL = number(15, 15);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) - HITROLL;
  GET_DAMROLL(ch) = GET_DAMROLL(ch) - DAMROLL;
  act("&11$n&15's &12hair&15 and &12eyes&15 turn back to normal as $s stops &09flaming&00 &11yellow&00.", TRUE, ch, 0, 0, TO_ROOM);
  act("&15Your &13rage&15 ebbs as your &12hair&15 and &12eyes&15 turn back to normal and you stop &09flaming&00 &11yellow.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans1)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(1000000, 1000000);
  MAX_MANA = number(1000000, 1000000);
  HITROLL = number(5, 5);
  DAMROLL = number(5, 5);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) - HITROLL;
  GET_DAMROLL(ch) = GET_DAMROLL(ch) - DAMROLL;
  act("&11$n&15's &12hair&15 and &12eyes&15 turn back to normal as $e stops &09flaming&00 &11yellow&00.", TRUE, ch, 0, 0, TO_ROOM);
  act("&15Your &13rage&15 ebbs as your &12hair&15 and &12eyes&15 turn back to normal and you stop &09flaming&00 &11yellow.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

/*-------------------------------------------------------------------------------------*/
/*------------------------------------ SSj 1 ----------------------------------------- */
/*-------------------------------------------------------------------------------------*/


if (!str_cmp(arg,"first") && PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15Your already in that form of super saiya-jin!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"first") && PRF_FLAGGED(ch, PRF_MYSTIC)) {
  act("&15What do you want to do, blow up the universe?!  You can't go &11SSJ&15 while in &14Mystic&15 form!&00", TRUE, ch,0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"first") && GET_MAX_HIT(ch) <= 800000) {
  act("&15You do not have the power to attain that form of super saiya-jin!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }


 if (!str_cmp(arg,"first") && GET_MAX_HIT(ch) >= 800000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(1000000, 1000000);
  MAX_MANA = number(1000000, 1000000);
  HITROLL = number(5, 5);
  DAMROLL = number(5, 5);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) + HITROLL;
  GET_DAMROLL(ch) = GET_DAMROLL(ch) + DAMROLL;

  act("&00&11$n &15starts to tremble, their muscles bulge, their eyes go pure &00w&15hit&00e&15 as &00&03g&00&11olde&00&03n &00li&00&14gh&00&06t&00&14ni&00ng &15starts to shower downwards. The earth begins to crack and break as the viens in &03$n's&15 arms begin to bulge! Then in an explosion of &00a&14ur&00a &15and &00&03p&00&11owe&00&03r&15, their eyes become &00&02j&00&10ad&00&02e green&15, their hair and aura &00&03g&11olde&00&03n &00&11yellow&15! They have become &00&03S&00&11upe&00&03r &00&11S&00&03aiya&00&11n &00O&00&14n&00&06e&15!&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&00&15Your throat catches, sweat starts to pour out from ya body as you feel something &00&09s&00&01na&00&09p &15in the back of your mind. The earth seems to stand still as bolt upon bolt of &00&03g&00&11olde&00&03n &00li&00&14gh&00&06t&00&14ni&00ng &15comes crashing around you. The earth begins to shake beneath your feet, as large boulders start to rip from the ground. Your body shakes as you feel your muscles tighten and grow, a slight &00&02j&00&10ad&00&02e &15sheen coming over your eyes as you snap your head back and let out a roar as your hair and aura explode into a rich &00&03g&00&11olde&00&03n &15color. You have achieved &00&03S&00&11upe&00&03r &00&11S&00&03aiya&00&11n &00O&00&14n&00&06e&15!&00", TRUE, ch, 0, 0, TO_CHAR);
 return;
  }
/*-------------------------------------------------------------------------------------*/
/*------------------------------------ SSj 2 ----------------------------------------- */
/*-------------------------------------------------------------------------------------*/

if (!str_cmp(arg,"second") && PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15Your already in that form of super saiya-jin!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"second") && GET_MAX_HIT(ch) - 999999 <= 5000000) {
  act("&15You do not have the power to attain that form of super saiya-jin!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"second") && GET_MAX_HIT(ch) - 999999 >= 5000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans2);

  MAX_HIT = number(10000000, 10000000);
  MAX_MANA = number(10000000, 10000000);
  HITROLL = number(10, 10);
  DAMROLL = number(10, 10);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) + HITROLL;
  GET_DAMROLL(ch) = GET_DAMROLL(ch) + DAMROLL;

  act("&00&15$n's eyes go pure &00w&15hit&00e&15 as their arms &00&09s&00&01na&00&09p&00 &15back, the silence shattering from the &00&01r&00&09ag&00&01e&00 &15filled scream that escapes their lungs. Their hair starts to get spikier, the viens in their arm bulge even more then before as you feel their power grow extremely! Bolts of &00&04b&00&12l&00&14u&00e li&14gh&00&06t&00&14ni&00ng &15start to outline their form! They have achieved &00&03A&00&11s&00&00&15c&00en&15d&00&14e&00&06d&00 &11S&00&03aiya&00&11n&15!&00", TRUE, ch, 0, 0, TO_ROOM);

  act("&00&15Your eyes go pure &00w&15hit&00e&15 as your arms &00&09s&00&01na&00&09p&00 &15back, you look to the sky and scream out! You feel all the &00&01r&00&09ag&00&01e&00 &15contained in you bubble to the surface as you body starts to change. Your hair gets spikier, the viens in your arms bulge and you feel your powerlevel grow tremendously. As you start to settle down, bolts of &00&04b&00&12l&00&14u&00e li&14gh&00&06t&00&14ni&00ng &15start to come from your body and cover you in a field of electricity.! You have achieved &00&03A&00&11s&00&00&15c&00en&15d&00&14e&00&06d&00 &11S&00&03aiya&00&11n&15!&00", TRUE, ch, 0, 0, TO_CHAR); return;
  }


/*------------------ What Half-breeds can't do ----------------------------------------*/
if (!str_cmp(arg,"fourth") && IS_HALF_BREED(ch)) {
  act("&15You can't go past super saiyan 3.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
/*------------------------------------ SSj 3 ----------------------------------------- */
/*-------------------------------------------------------------------------------------*/

if (!str_cmp(arg,"third") && PLR_FLAGGED(ch, PLR_trans3)) {
  act("&15Your already in that form of super saiya-jin!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"third") && GET_MAX_HIT(ch) - 5999999 <= 15000000) {
  act("&15You do not have the power to attain that form of super saiya-jin!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }


 if (!str_cmp(arg,"third") && GET_MAX_HIT(ch) - 5999999 >= 15000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans3);

  MAX_HIT = number(20000000, 20000000);
  MAX_MANA = number(20000000, 20000000);
  HITROLL = number(15, 15);
  DAMROLL = number(15, 15);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) + HITROLL;
  GET_DAMROLL(ch) = GET_DAMROLL(ch) + DAMROLL;

  act("&00&15$n stands here, their arms tight to their sides. The earth starts to begin to quake lightly as their hair begins to lengthen and thicken! A bright &11yellow&00 &15aura explodes around them as&00 li&14gh&00&06t&00&14ni&00ng&15 starts to crackle from their form. The earth starts to quake harder as their eyebrows disappear, their forehead slopes slightly, and their powerlevel grows exponetionally. And with a final explosion of &00&03l&00&11i&00g&11h&00&03t&00 &15and power, they have achieved &00&03S&00&11upe&00&03r &00&11S&00&03aiya&00&11n&00 &00&06T&00&14h&00r&14e&00&06e&15!&00", TRUE, ch, 0, 0, TO_ROOM);

  act("&00&15You stand there, your arms at your side. Your &00&01r&00&09ag&00&01e&00 &15slowly boils to the surface as your body starts to twitch. Slowly, you feel your hair start to thicken and lengthen, your muscles bulge as&00 li&14gh&00&06t&00&14ni&00ng&15 starts to crackle around your body quickly! Your forehead slopes slightly and your eyebrows disappear, and your eyes glow a slight &00&02j&00&10ad&00&02e&00 &15hue as the planet itself starts to shake! You have achieved &00&03S&00&11upe&00&03r &00&11S&00&03aiya&00&11n&00 &00&06T&00&14h&00r&14e&00&06e&15!&00", TRUE, ch, 0, 0, TO_CHAR);

send_to_all("&15The &10planets &12tremble &15and &12shake&15 as a &09massive &15power arises.&00\r\n");
return;
}
/*----------------------------------ssj 4---------------------------------*/

if (!str_cmp(arg,"fourth") && PLR_FLAGGED(ch, PLR_trans4)) {
  act("&15Your already in that form of super saiya-jin!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"fourth") && GET_MAX_HIT(ch) - 25999999 <= 30000000) {
  act("&15You do not have the power to attain that form of super saiya-jin!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }


 if (!str_cmp(arg,"fourth") && GET_MAX_HIT(ch) - 25999999 >= 30000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans4);

  MAX_HIT = number(20000000, 20000000);
  MAX_MANA = number(20000000, 20000000);
  HITROLL = number(20, 20);
  DAMROLL = number(20, 20);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) + HITROLL;
  GET_DAMROLL(ch) = GET_DAMROLL(ch) + DAMROLL;

  act("&00&01You stare at the &12m&16oo&12n&00&01, your mind and eyes going blank. There, in the &00&04d&12a&14r&00&06k&00&06n&14e&12s&00&04s&00&01 of your mind, resides a beast waiting to be unleashed. Your bones begin to twist, crack, and grow. You feel your spine lengthen, and your mouth push outwards from your face. You let out a howl of pain as you feel the bones in your arms grow to a painful size before your skin and muscle can compensate. The air crackles with &00e&14n&00&06er&14g&00y&01 as you open your mouth and roar to the heavens, massive canines growing from your jaw as your eyes turn a b&00&01l&16o&00&01o&09d red&00&01. Hair begins to sprout all over your body, and massive claws extend from your fingers. The dark &16b&15l&00a&15c&16k&00&01 hair that had grown on your body now turns a bright &11g&00&03ol&11d&00&01 as your primate body explodes in power! You have become &11G&00&03olde&00&11n &16O&00&03o&16z&00&01a&00&03r&16u&00&01! But you feel something crawl from the back of your mind, and your rage starts to descend. You stare back up at the &12m&16oo&12n&00&01, and you feel your body start to boil with unimaginable power as you try to force your body back into its humanoid form. A massive &11g&00&03olde&00&11n  &00&01orb of &00e&14n&00&06er&14g&00y&01 surrounds your form as you metamorphisize. Your body shrinks back down into its once human shape, but theres many changes. Your body is covered with dark &09red&00&01 shaggy fur, your eyes are rimmed in &09red&00&01, and your eyes are the color of liquid &00a&11m&00&03b&11e&00r&01. You let out a scream, the &00e&14n&00&06er&14g&00y&01 ball holding you explodes as you become a &00&03S&00&11upe&00&03r &00&11S&00&03aiya&00&11n&00 &01F&16o&00&03u&00&01r!&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&14$n&00&01 eyes stray up to the &12m&16oo&12n&00&01, and they freeze. You can feel their power rising up inside them, like a volcano when its about to blow. Their body starts to stretch and grow, the sounds of bones cracking and stretching fill the air. They grow dark black hair all over their body as they reach insane hieghts. But their red eyes go blank as a large orb of energy engulfs their form. The earth shakes beneath the new power being formed within the &00e&14n&00&06er&14g&00y&01 globe. And as their power reaches massive proportions! They appear, with &09red&00&01 fur covering their entire bodies, their eyes rimmed in &09red&00&01 and their body surrounded by a &11g&00&03olde&00&11n&00&01 aura! They have achieved &00&03S&00&11upe&00&03r &00&11S&00&03aiya&00&11n&00 &01F&16o&00&03u&00&01r!&00", TRUE, ch, 0, 0, TO_ROOM);

send_to_all("&15The &10planets &12tremble &15and &12shake&15 as someone achieves &09Super Saiyan Fourth&00\r\n");
return;
  }
}
/*-----------------------------------end of ssj----------------------------------------*/



ACMD(do_stealth)
{

  struct affected_type af;
  if (!GET_SKILL(ch, SKILL_STEALTH)) {
  send_to_char("You can't do that!\r\n", ch);
  return;
  }
 else
  af.type = SKILL_SWIFTNESS;
  af.duration = GET_LEVEL(ch);
  af.modifier = 0;
  af.location = APPLY_NONE;
  af.bitvector = AFF_SWIFTNESS;
  affect_to_char(ch, &af);

  SET_BIT(AFF_FLAGS(ch), AFF_HIDE);
  act("&11$n&15's skin color flickers as they fade into the surroundings.", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You pause for a moment and meld to your surroundings.&00", TRUE, ch, 0, 0, TO_CHAR);

}


ACMD(do_transform)	
{    
	
  int MAX_MANA = 0, MAX_HIT = 0;
    
    one_argument(argument, arg);
    if (!IS_icer(ch))
    {
      act("Your not an icer!", TRUE, ch, 0, 0, TO_CHAR);
      return;
    } 
   else if (!*argument && IS_icer(ch))
    { 
act("        &10o&12_&12-------------------------&12_&10o&00\r\n         &12|   &12      Icer Forms&00      &12|&00\r\n        &10o&12_&12-------------------------&12_&10o&00\r\n         &12|&10You can do the following:&12|&00\r\n         &12|&12-------------------------&12|&00\r\n         &12|&15Stage:  Power Level Req.:&12|&00 ", TRUE, ch, 0, 0, TO_CHAR);
act("         &12| &10First       &14800000&00      &12|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &12| &10Second      &141600000&00     &12|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &12| &10Third       &1410000000&00    &12|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &12| &10Fourth      &1420000000&00    &12|&00", TRUE, ch, 0, 0, TO_CHAR);
act("        &10o&12_&12-------------------------&12_&10o&00", TRUE, ch, 0, 0, TO_CHAR);
return;
}     

/*------------------  Checks to see if already in that stage     -----------------*/

if (!str_cmp(arg,"second") && !PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"third") && !PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"fourth") && !PLR_FLAGGED(ch, PLR_trans3)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
/*-------------------------------------------------------------------------------------*/
/*----------------------------------  Reverting  --------------------------------------*/

 if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans4)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans3);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans4);
    
  MAX_HIT = number(30400000, 30400000);
  MAX_MANA = number(30400000, 30400000);
  
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  act("&11$n&15's power drops as they revert to there normal form.&00.", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You feel much weaker as you revert to normal form.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }


else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans3)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans3);
    
  MAX_HIT = number(10400000, 10400000);
  MAX_MANA = number(10400000, 10400000);
  
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  act("&11$n&15's power drops as they revert to there normal form.&00.", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You feel much weaker as you revert to normal form.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans2)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
    
  MAX_HIT = number(2400000, 2400000);
  MAX_MANA = number(2400000, 2400000);
  
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  act("&11$n&15's power drops as they revert to there normal form.&00.", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You feel much weaker as you revert to normal form.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans1)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);
    
  MAX_HIT = number(400000, 400000);
  MAX_MANA = number(400000, 400000);
  
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  act("&11$n&15's power drops as they revert to there normal form.&00.", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You feel much weaker as you revert to normal form.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

/*-------------------------------------------------------------------------------------*/
/*------------------------------------ TR 1 ----------------------------------------- */
/*-------------------------------------------------------------------------------------*/

if (!str_cmp(arg,"first") && PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15Your already in that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"first") && GET_MAX_HIT(ch) <= 800000) {
  act("&15You do not have the power to attain that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  } 

 if (!str_cmp(arg,"first") && GET_MAX_HIT(ch) >= 800000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans1);
     
  MAX_HIT = number(400000, 400000);
  MAX_MANA = number(400000, 400000);
  
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  
  act("&12$n &14bends over as their body begins to &09stretch&14 and &10grow&11!&15 Horns&14 grow out of their head&11,&14 their body triples in size before finishing it's growth&11!&00", TRUE, ch, 0, 0, TO_ROOM);

  act("&12You &14bend over as your body begins to &09stretch&14 and &10grow&11!&15 Horns&14 grow out of your head&11,&14 your body triples in size before finishing it's growth&11!&00", TRUE, ch, 0, 0, TO_CHAR); return;
  }
/*-------------------------------------------------------------------------------------*/
/*------------------------------------ TR 2 ----------------------------------------- */
/*-------------------------------------------------------------------------------------*/

if (!str_cmp(arg,"second") && PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15Your already in that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"second") && GET_MAX_HIT(ch) - 399999 <= 1600000) {
  act("&15You do not have the power to attain that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  } 

 if (!str_cmp(arg,"second") && GET_MAX_HIT(ch) - 399999 >= 1600000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans2);
     
  MAX_HIT = number(2000000, 2000000);
  MAX_MANA = number(2000000, 2000000);
  
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  
  act("&12$n &14growls as their body begins to transform once again&11!&14 Their face streches out&11,&14 becomeing more &10lizard&14 as horns grow out of their shoulders&11,&14 and the horns on their head receed&11!&00", TRUE, ch, 0, 0, TO_ROOM);

  act("&12You &14growl as your body begins to transform once again&11!&14 Your face streches out&11,&14 becomeing more &10lizard&14 as horns grow out of your shoulders&11,&14 and the horns on your head receed&11!&00", TRUE, ch, 0, 0, TO_CHAR); 
return;
  }

/*-------------------------------------------------------------------------------------*/

/*-------------------------------------------------------------------------------------*/
/*------------------------------------ TR 3 ----------------------------------------- */
/*-------------------------------------------------------------------------------------*/

if (!str_cmp(arg,"third") && PLR_FLAGGED(ch, PLR_trans3)) {
  act("&15Your already in that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"third") && GET_MAX_HIT(ch) - 2399999 <= 10000000) {
  act("&14You do not have the power to attain that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  } 

 if (!str_cmp(arg,"third") && GET_MAX_HIT(ch) - 2399999 >= 10000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans3);
     
  MAX_HIT = number(8000000, 8000000);
  MAX_MANA = number(8000000, 8000000);
  
  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  
  act("&12$n &14stands up straight as cracks of &09r&00&01e&09d&14 light appear all over their body&11,&14 these cracks continue to grow all over their body just before an explosion of &00&07LIGHT&14 blasts the old shell of a body off&11!&14 As the light receeds a smaller sleek icer stands in $n's place&11.&00", TRUE, ch, 0, 0, TO_ROOM);

  act("&12You &14stand up straight as cracks of &09r&00&01e&09d&14 light appear all over your body&11,&14 these cracks continue to grow all over your body just before an explosion of &00&07LIGHT&14 blasts the old shell of a body off&11!&14 As the light receeds you shock those around you with your smaller sleeker form&11.&00", TRUE, ch, 0, 0, TO_CHAR); 
  return;
  }
/*-------------------------------------------------------------------------------------*/
/*------------------------------------ TR 4 ----------------------------------------- */
/*-------------------------------------------------------------------------------------*/

 if (!str_cmp(arg,"fourth") && PLR_FLAGGED(ch, PLR_trans4)) {
  act("&15Your already in that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"fourth") && GET_MAX_HIT(ch) - 10399999 <= 20000000) {
  act("&15You do not have the power to attain that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  } 

 if (!str_cmp(arg,"fourth") && GET_MAX_HIT(ch) - 10399999 >= 20000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans4);
     
  MAX_HIT = number(20000000, 20000000);
  MAX_MANA = number(20000000, 20000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&12$n &14smiles just before a hardened shell grows over their mouth&11,&14 their body doubles in size just as four horns grow out of their head&11,&14 and their shoulder armor grows out into spikes&11.&12$n &14smiles before everyone as they reach their ultimate form&11!&00", TRUE, ch, 0, 0, TO_ROOM);

  act("&12You &14smile just before a hardened shell grows over your mouth&11,&14 your body doubles in size just as four horns grow out of your head&11,&14 and your shoulder armor grows out into spikes&11.&12You &14smile before everyone as they reach their ultimate form&11!&00", TRUE, ch, 0, 0, TO_CHAR);
 return;
  }
/*-------------------------------------------------------------------------------------*/



}


ACMD(do_spar)
{
    one_argument(argument, arg);	
  
  if (PRF_FLAGGED(ch, PRF_CAMP)) {		
      send_to_char("You can't do this while camped!\r\n", ch);
      return;
    }  

  if (GET_LEVEL(ch) <=1) {
  send_to_char("You can't spar right away.\r\n", ch);
  return;
    }

else if (!*argument)
    { 
act("&09Sparing Commands&00", TRUE, ch, 0, 0, TO_CHAR);
act("&10----------------&00", TRUE, ch, 0, 0, TO_CHAR);
act("spar &09ready&00", TRUE, ch, 0, 0, TO_CHAR);
act("spar &09stop&00", TRUE, ch, 0, 0, TO_CHAR);
act("&09sparkick&00 (person)", TRUE, ch, 0, 0, TO_CHAR);
act("&09sparpunch&00 (person)", TRUE, ch, 0, 0, TO_CHAR);
act("&09sparelbow&00 (person)", TRUE, ch, 0, 0, TO_CHAR);
act("&09sparknee&00 (person)", TRUE, ch, 0, 0, TO_CHAR);
act("&09sparkiblast&00 (person)", TRUE, ch, 0, 0, TO_CHAR);
act("spar &09fly&00", TRUE, ch, 0, 0, TO_CHAR);
act("spar &09land&00", TRUE, ch, 0, 0, TO_CHAR);
act("spar &09block&00", TRUE, ch, 0, 0, TO_CHAR);
act("spar &09relax&00", TRUE, ch, 0, 0, TO_CHAR);
return;
} 
/*-----------------------------         Start       -----------------------------------*/
 if (!str_cmp(arg,"ready") && !AFF_FLAGGED(ch, AFF_SPAR)) {
  SET_BIT(AFF_FLAGS(ch), AFF_SPAR);
 act("$n moves into a sparing stance.", TRUE, ch, 0, 0, TO_ROOM);
  act("You move into a sparing stance.", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
 else if (!str_cmp(arg,"ready") && AFF_FLAGGED(ch, AFF_SPAR)) {
  act("Your already in a sparing stance.", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
/*-------------------------------------------------------------------------------------*/
  if (!str_cmp(arg,"ready") && !IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) {
      send_to_char("Your not in a dojo!\r\n", ch);
      return;
    }
    if (!str_cmp(arg,"land") && !IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) {
      send_to_char("Your not in a dojo!\r\n", ch);
      return;
    }
      if (!str_cmp(arg,"fly") && !IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) {
      send_to_char("Your not in a dojo!\r\n", ch);
      return;
    }
      if (!str_cmp(arg,"block") && !IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) {
      send_to_char("Your not in a dojo!\r\n", ch);
      return;
    }
/*-----------------------------------------Stop----------------------------------------*/
 if (!str_cmp(arg,"stop")) {
  REMOVE_BIT(AFF_FLAGS(ch), AFF_SPAR);
 act("$n moves out of their sparing stance.", TRUE, ch, 0, 0, TO_ROOM);
  act("You move out of your sparing stance.", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
 if (!str_cmp(arg,"stop") && !AFF_FLAGGED(ch, AFF_SPAR)) {
  REMOVE_BIT(AFF_FLAGS(ch), AFF_SPAR);
  act("You aren't in a sparing stance!", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
/*--------------------------------  Not sparing checks  --------------------------------*/
if (!str_cmp(arg,"block") && !AFF_FLAGGED(ch, AFF_SPAR)) {		
      send_to_char("Your not in a sparing stance!\r\n", ch);
      return;
    }
if (!str_cmp(arg,"land") && !AFF_FLAGGED(ch, AFF_SPAR)) {		
      send_to_char("Your not in a sparing stance!\r\n", ch);
      return;
    }
if (!str_cmp(arg,"fly") && !AFF_FLAGGED(ch, AFF_SPAR)) {		
      send_to_char("Your not in a sparing stance!\r\n", ch);
      return;
    }
/*--------------------------------------Flight-----------------------------------------*/
/*Fly*/
  if (!str_cmp(arg,"fly") && AFF_FLAGGED(ch, AFF_SPAR) && !AFF_FLAGGED(ch, AFF_SFLY)) {
  SET_BIT(AFF_FLAGS(ch), AFF_SFLY);
 act("$n flys up into the air.", TRUE, ch, 0, 0, TO_ROOM);
  act("You fly up into the air.", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
 else if (!str_cmp(arg,"fly") && !AFF_FLAGGED(ch, AFF_SPAR)) {
  act("You can't do that if your not sparing.", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
 else if (!str_cmp(arg,"fly") && AFF_FLAGGED(ch, AFF_SFLY)) {
  act("You are already flying!", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
/*Land*/
 if (!str_cmp(arg,"land") && AFF_FLAGGED(ch, AFF_SPAR) && AFF_FLAGGED(ch, AFF_SFLY)) {
  REMOVE_BIT(AFF_FLAGS(ch), AFF_SFLY);
  act("$n flys down and lands on the ground.", TRUE, ch, 0, 0, TO_ROOM);
  act("You fly down and land on the ground.", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
 else if (!str_cmp(arg,"land") && !AFF_FLAGGED(ch, AFF_SFLY)) {
  act("You aren't flying!", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
 else if (!str_cmp(arg,"land") && !AFF_FLAGGED(ch, AFF_SPAR)) {
  act("You can't do that if your not sparing.", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
/*-------------------------------------------------------------------------------------*/
/*Blocking*/
 if (!str_cmp(arg,"block") && AFF_FLAGGED(ch, AFF_SPAR) && !AFF_FLAGGED(ch, AFF_SBLOCK)) {
  SET_BIT(AFF_FLAGS(ch), AFF_SBLOCK);
  act("You prepare to block the next attack.", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
 else if (!str_cmp(arg,"block") && AFF_FLAGGED(ch, AFF_SBLOCK)) {
  act("You are already preparing to block!", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
 else if (!str_cmp(arg,"block") && !AFF_FLAGGED(ch, AFF_SPAR)) {
  act("You can't do that if your not sparing.", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
 if (!str_cmp(arg,"relax") && AFF_FLAGGED(ch, AFF_SPAR) && AFF_FLAGGED(ch, AFF_SBLOCK)) {
  REMOVE_BIT(AFF_FLAGS(ch), AFF_SBLOCK);
  act("You lower your defense.", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
 else if (!str_cmp(arg,"relax") && !AFF_FLAGGED(ch, AFF_SBLOCK)) {
  act("You are not preparing to block!", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
 else if (!str_cmp(arg,"relax") && !AFF_FLAGGED(ch, AFF_SPAR)) {
  act("You can't do that if your not sparing.", TRUE, ch, 0, 0, TO_CHAR);
  return;
}

/*-------------------------------------------------------------------------------------*/
}

ACMD(do_sparkick)
{
	int is_altered = FALSE; 
        int num_levels = 0; 
        int MOVE = 0, EXP = 0;
	struct char_data * vict;
        one_argument(argument, arg);
        
   if (!AFF_FLAGGED(ch, AFF_SPAR)) {		
      send_to_char("Your not in a sparing stance!\r\n", ch);
      return;
    }
   if (!IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) {
      send_to_char("Your not in a dojo!\r\n", ch);
      return;
    }   	
   if (GET_MANA(ch) <= 0) {
      send_to_char("Your too weak to spar anymore!\r\n", ch);
      return;
    } 
/*-------------------------------------------------------------------------------------*/
if (!IS_NPC(ch) && GET_LEVEL(ch) < LVL_IMMORT && GET_EXP(ch) >= GET_LEVEL(ch)*1000) {     
GET_LEVEL(ch) += 1;                                                             
GET_EXP(ch) = 1;                                                                
num_levels++;                                                                   advance_level(ch);                                                              
is_altered = TRUE;                                                            
send_to_char("You can feel your body strenghten as you continue sparing!\r\n", ch);
} 
/*--------------------------Spar-Kick "Failures"---------------------------------------*/
   if (!(vict = get_char_room_vis(ch, arg))) {
      send_to_char("Spar-Kick who?\r\n", ch);
      return;
    } 
   if (vict == ch) {
    send_to_char("Come on now, that's rather stupid!\r\n", ch);
    return;
    }
   if (vict && !AFF_FLAGGED(vict, AFF_SPAR)) {		
      send_to_char("They don't want to spar!\r\n", ch);
      return;
    }
   if (vict && AFF_FLAGGED(ch, AFF_SBLOCK)) {		
      send_to_char("Your too busy preparing to block thier attack!\r\n", ch);
      return;
    } 
   if (vict && AFF_FLAGGED(vict, AFF_SFLY) && !AFF_FLAGGED(ch, AFF_SFLY)) {		
      send_to_char("You can't hit them from down here!\r\n", ch);
      return;
    }
   if (vict && !AFF_FLAGGED(vict, AFF_SFLY) && AFF_FLAGGED(ch, AFF_SFLY)) {		
      send_to_char("You can't hit them from up here!\r\n", ch);
      return;
    }
   if (vict && AFF_FLAGGED(vict, AFF_SBLOCK)) {		
  EXP = number(GET_HIT(ch)/40, GET_LEVEL(ch)/40);
  MOVE = number(GET_HIT(vict)/200, GET_HIT(vict)/200);
  GET_EXP(ch) = GET_EXP(ch) + EXP;
  GET_MANA(ch) = GET_MANA(ch) - MOVE;
  
  GET_EXP(vict) = GET_EXP(vict) + EXP;
  GET_MANA(vict) = GET_MANA(vict) - MOVE;
  
  act("You throw a kick at $N who easily blocks it.", FALSE, ch, 0, vict, TO_CHAR);
  act("$n throws a kick at $N who easily blocks it..", TRUE, ch, 0, vict, TO_NOTVICT);
  act("As $n rears back you put your arm up and block thier kick..&00", FALSE, ch, 0, vict, TO_VICT);  
  WAIT_STATE(ch, PULSE_VIOLENCE * 1);
      return;     
    }
  else if (vict) {		
  EXP = number(GET_HIT(ch)/50, GET_HIT(ch)/50);
  MOVE = number(GET_HIT(vict)/300, GET_HIT(vict)/300);
  GET_EXP(ch) = GET_EXP(ch) + EXP;
  GET_MANA(ch) = GET_MANA(ch) - MOVE;
  
  act("You throw a kick at $N hitting directly!", FALSE, ch, 0, vict, TO_CHAR);
  act("$n throws a kick at hitting $N!", TRUE, ch, 0, vict, TO_NOTVICT);
  act("$n rears back and&09 hits&00 you dead on with a kick!&00", FALSE, ch, 0, vict, TO_VICT);  
  WAIT_STATE(ch, PULSE_VIOLENCE * 1);
      return;     
    } 
}
ACMD(do_sparpunch)
{
	int is_altered = FALSE; 
        int num_levels = 0; 
        int MOVE = 0, EXP = 0;
	struct char_data * vict;
        one_argument(argument, arg);
        
   if (!AFF_FLAGGED(ch, AFF_SPAR)) {		
      send_to_char("Your not in a sparing stance!\r\n", ch);
      return;
    }
   if (!IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) {
      send_to_char("Your not in a dojo!\r\n", ch);
      return;
    } 
   if (GET_MANA(ch) <= 0) {
      send_to_char("Your too weak to spar anymore!\r\n", ch);
      return;
    } 
/*-------------------------------------------------------------------------------------*/
if (!IS_NPC(ch) && GET_LEVEL(ch) < LVL_IMMORT && GET_EXP(ch) >= GET_LEVEL(ch)*1000) {     
GET_LEVEL(ch) += 1;                                                             
GET_EXP(ch) = 1;                                                                
num_levels++;                                                                   advance_level(ch);                                                              
is_altered = TRUE;                                                            
send_to_char("You can feel your body strenghten as you continue sparing!\r\n", ch);
} 
/*--------------------------Spar-Kick "Failures"---------------------------------------*/
   if (!(vict = get_char_room_vis(ch, arg))) {
      send_to_char("Spar-Punch who?\r\n", ch);
      return;
    } 
    if (vict == ch) {
    send_to_char("Come on now, that's rather stupid!\r\n", ch);
    return;
    }
   if (vict && !AFF_FLAGGED(vict, AFF_SPAR)) {		
      send_to_char("They don't want to spar!\r\n", ch);
      return;
    }
   if (vict && AFF_FLAGGED(ch, AFF_SBLOCK)) {		
      send_to_char("Your too busy preparing to block thier attack!\r\n", ch);
      return;
    } 
   if (vict && AFF_FLAGGED(vict, AFF_SFLY) && !AFF_FLAGGED(ch, AFF_SFLY)) {		
      send_to_char("You can't hit them from down here!\r\n", ch);
      return;
    }
   if (vict && !AFF_FLAGGED(vict, AFF_SFLY) && AFF_FLAGGED(ch, AFF_SFLY)) {		
      send_to_char("You can't hit them from up here!\r\n", ch);
      return;
    }
   if (vict && AFF_FLAGGED(vict, AFF_SBLOCK)) {		
  EXP = number(GET_HIT(ch)/40, GET_HIT(ch)/40);
  MOVE = number(GET_HIT(vict)/200, GET_HIT(vict)/200);
  GET_EXP(ch) = GET_EXP(ch) + EXP;
  GET_MANA(ch) = GET_MANA(ch) - MOVE;
  
  GET_EXP(vict) = GET_EXP(vict) + EXP;
  GET_MANA(vict) = GET_MANA(vict) - MOVE;
  
  act("You throw a punch at $N who easily blocks it.", FALSE, ch, 0, vict, TO_CHAR);
  act("$n throws a punch at $N who easily blocks it..", TRUE, ch, 0, vict, TO_NOTVICT);
  act("As $n rears back you put your arm up and block thier punch.&00", FALSE, ch, 0, vict, TO_VICT);  
  WAIT_STATE(ch, PULSE_VIOLENCE * 1);
      return;     
    }
  else if (vict) {		
  EXP = number(GET_HIT(ch)/50, GET_HIT(ch)/50);
  MOVE = number(GET_HIT(vict)/300, GET_HIT(vict)/300);
  GET_EXP(ch) = GET_EXP(ch) + EXP;
  GET_MANA(ch) = GET_MANA(ch) - MOVE;
  
  act("You throw a punch at $N hitting directly!", FALSE, ch, 0, vict, TO_CHAR);
  act("$n throws a punch at hitting $N!", TRUE, ch, 0, vict, TO_NOTVICT);
  act("$n rears back and hits you dead on with a punch!&00", FALSE, ch, 0, vict, TO_VICT);  
  WAIT_STATE(ch, PULSE_VIOLENCE * 1);
      return;     
    } 

}

ACMD(do_sparknee)
{
	int is_altered = FALSE; 
        int num_levels = 0; 
        int MOVE = 0, EXP = 0;
	struct char_data * vict;
        one_argument(argument, arg);
        
   if (!AFF_FLAGGED(ch, AFF_SPAR)) {		
      send_to_char("Your not in a sparing stance!\r\n", ch);
      return;
    }
   if (!IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) {
      send_to_char("Your not in a dojo!\r\n", ch);
      return;
    } 
   if (GET_MANA(ch) <= 0) {
      send_to_char("Your too weak to spar anymore!\r\n", ch);
      return;
    } 
/*-------------------------------------------------------------------------------------*/
if (!IS_NPC(ch) && GET_LEVEL(ch) < LVL_IMMORT && GET_EXP(ch) >= GET_LEVEL(ch)*1000) {     
GET_LEVEL(ch) += 1;                                                             
GET_EXP(ch) = 1;                                                                
num_levels++;                                                                   advance_level(ch);                                                              
is_altered = TRUE;                                                            
send_to_char("You can feel your body strenghten as you continue sparing!\r\n", ch);
} 
/*--------------------------Spar-Kick "Failures"---------------------------------------*/
   if (!(vict = get_char_room_vis(ch, arg))) {
      send_to_char("Spar-Knee who?\r\n", ch);
      return;
    } 
   if (vict == ch) {
    send_to_char("Come on now, that's rather stupid!\r\n", ch);
    return;
    }
   if (vict && !AFF_FLAGGED(vict, AFF_SPAR)) {		
      send_to_char("They don't want to spar!\r\n", ch);
      return;
    }
   if (vict && AFF_FLAGGED(ch, AFF_SBLOCK)) {		
      send_to_char("Your too busy preparing to block thier attack!\r\n", ch);
      return;
    } 
   if (vict && AFF_FLAGGED(vict, AFF_SFLY) && !AFF_FLAGGED(ch, AFF_SFLY)) {		
      send_to_char("You can't hit them from down here!\r\n", ch);
      return;
    }
   if (vict && !AFF_FLAGGED(vict, AFF_SFLY) && AFF_FLAGGED(ch, AFF_SFLY)) {		
      send_to_char("You can't hit them from up here!\r\n", ch);
      return;
    }
   if (vict && AFF_FLAGGED(vict, AFF_SBLOCK)) {		
      send_to_char("You can't hit them from up here!\r\n", ch);
  EXP = number(GET_HIT(ch)/40, GET_HIT(ch)/40);
  MOVE = number(GET_HIT(vict)/200, GET_HIT(vict)/200);
  GET_EXP(ch) = GET_EXP(ch) + EXP;
  GET_MANA(ch) = GET_MANA(ch) - MOVE;
  
  GET_EXP(vict) = GET_EXP(vict) + EXP;
  GET_MANA(vict) = GET_MANA(vict) - MOVE;
  
  act("You thrust your knee at $N who easily blocks it.", FALSE, ch, 0, vict, TO_CHAR);
  act("$n slams thier knee into $N who easily blocks it..", TRUE, ch, 0, vict, TO_NOTVICT);
  act("As $n rears back you put your arm up and block thier knee.&00", FALSE, ch, 0, vict, TO_VICT);  
  WAIT_STATE(ch, PULSE_VIOLENCE * 1);
      return;     
    }
  else if (vict) {		
  EXP = number(GET_HIT(ch)/50, GET_HIT(ch)/50);
  MOVE = number(GET_HIT(vict)/300, GET_HIT(vict)/300);
  GET_EXP(ch) = GET_EXP(ch) + EXP;
  GET_MANA(ch) = GET_MANA(ch) - MOVE;
  
  
  act("You slam your knee into $N!", FALSE, ch, 0, vict, TO_CHAR);
  act("$n slams thier knee into $N!", TRUE, ch, 0, vict, TO_NOTVICT);
  act("$n rears back and knees you in the stomach!&00", FALSE, ch, 0, vict, TO_VICT);  
  WAIT_STATE(ch, PULSE_VIOLENCE * 2);
      return;     
    } 

}

ACMD(do_sparelbow)
{
	int is_altered = FALSE; 
        int num_levels = 0; 
        int MOVE = 0, EXP = 0;
	struct char_data * vict;
        one_argument(argument, arg);
        
   if (!AFF_FLAGGED(ch, AFF_SPAR)) {		
      send_to_char("Your not in a sparing stance!\r\n", ch);
      return;
    }
   if (!IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) {
      send_to_char("Your not in a dojo!\r\n", ch);
      return;
    } 
   if (GET_MANA(ch) <= 0) {
      send_to_char("Your too weak to spar anymore!\r\n", ch);
      return;
    } 
/*-------------------------------------------------------------------------------------*/
if (!IS_NPC(ch) && GET_LEVEL(ch) < LVL_IMMORT && GET_EXP(ch) >= GET_LEVEL(ch)*1000) {     
GET_LEVEL(ch) += 1;                                                             
GET_EXP(ch) = 1;                                                                
num_levels++;                                                                   advance_level(ch);                                                              
is_altered = TRUE;                                                            
send_to_char("You can feel your body strenghten as you continue sparing!\r\n", ch);
} 
/*--------------------------Spar-Kick "Failures"---------------------------------------*/
   if (!(vict = get_char_room_vis(ch, arg))) {
      send_to_char("Spar-Elbow who?\r\n", ch);
      return;
    } 
   if (vict == ch) {
    send_to_char("Come on now, that's rather stupid!\r\n", ch);
    return;
    }
   if (vict && !AFF_FLAGGED(vict, AFF_SPAR)) {		
      send_to_char("They don't want to spar!\r\n", ch);
      return;
    }
   if (vict && AFF_FLAGGED(ch, AFF_SBLOCK)) {		
      send_to_char("Your too busy preparing to block thier attack!\r\n", ch);
      return;
    } 
   if (vict && AFF_FLAGGED(vict, AFF_SFLY) && !AFF_FLAGGED(ch, AFF_SFLY)) {		
      send_to_char("You can't hit them from down here!\r\n", ch);
      return;
    }
   if (vict && !AFF_FLAGGED(vict, AFF_SFLY) && AFF_FLAGGED(ch, AFF_SFLY)) {		
      send_to_char("You can't hit them from up here!\r\n", ch);
      return;
    }
   if (vict && AFF_FLAGGED(vict, AFF_SBLOCK)) {		
  EXP = number(GET_HIT(ch)/40, GET_HIT(ch)/40);
  MOVE = number(GET_HIT(vict)/200, GET_HIT(vict)/200);
  GET_EXP(ch) = GET_EXP(ch) + EXP;
  GET_MANA(ch) = GET_MANA(ch) - MOVE;
  
  GET_EXP(vict) = GET_EXP(vict) + EXP;
  GET_MANA(vict) = GET_MANA(vict) - MOVE;
  
  act("You slam your elbow into $N who easily blocks it.", FALSE, ch, 0, vict, TO_CHAR);
  act("$n slams thier elbow into $N who easily blocks it.", TRUE, ch, 0, vict, TO_NOTVICT);
  act("As $n rears back you put your arm up and block thier elbow.&00", FALSE, ch, 0, vict, TO_VICT);  
  WAIT_STATE(ch, PULSE_VIOLENCE * 1);
      return;     
    }
  else if (vict) {		
  EXP = number(GET_HIT(ch)/50, GET_HIT(ch)/50);
  MOVE = number(GET_MANA(ch)/300, GET_MANA(ch)/300);
  GET_EXP(ch) = GET_EXP(ch) + EXP;
  GET_MANA(ch) = GET_MANA(ch) - MOVE;
  
  act("You slam your elbow into $N's ribs!", FALSE, ch, 0, vict, TO_CHAR);
  act("$n throws a kick at hitting $N!", TRUE, ch, 0, vict, TO_NOTVICT);
  act("$n slams thier elbow into your ribs!&00", FALSE, ch, 0, vict, TO_VICT);  
  WAIT_STATE(ch, PULSE_VIOLENCE * 1);
      return;     
    } 
}

ACMD(do_sparkiblast)
{
	int is_altered = FALSE; 
        int num_levels = 0; 
        int MANA = 0, EXP = 0;
	struct char_data * vict;
        one_argument(argument, arg);
        
   if (!AFF_FLAGGED(ch, AFF_SPAR)) {		
      send_to_char("Your not in a sparing stance!\r\n", ch);
      return;
    }
   if (!IS_SET(ROOM_FLAGS(ch->in_room), ROOM_DOJO)) {
      send_to_char("Your not in a dojo!\r\n", ch);
      return;
    }
   if (GET_MANA(ch) <= 0) {
      send_to_char("Your too weak to spar anymore!\r\n", ch);
      return;
    } 
/*-------------------------------------------------------------------------------------*/
if (!IS_NPC(ch) && GET_LEVEL(ch) < LVL_IMMORT && GET_EXP(ch) >= GET_LEVEL(ch)*1000) {     
GET_LEVEL(ch) += 1;                                                             
GET_EXP(ch) = 1;                                                                
num_levels++;                                                                   advance_level(ch);                                                              
is_altered = TRUE;                                                            
send_to_char("You can feel your body strenghten as you continue sparing!\r\n", ch);
} 
/*--------------------------Spar-Kick "Failures"---------------------------------------*/
   if (!(vict = get_char_room_vis(ch, arg))) {
      send_to_char("Spar-KiBlast who?\r\n", ch);
      return;
    }     
    if (vict == ch) {
    send_to_char("Come on now, that's rather stupid!\r\n", ch);
    return;
    }
   if (vict && !AFF_FLAGGED(vict, AFF_SPAR)) {		
      send_to_char("They don't want to spar!\r\n", ch);
      return;
    }
   if (vict && AFF_FLAGGED(ch, AFF_SBLOCK)) {		
      send_to_char("Your too busy preparing to block thier attack!\r\n", ch);
      return;
    } 
   if (vict && AFF_FLAGGED(vict, AFF_SBLOCK)) {		
  EXP = number(GET_HIT(ch)/30, GET_HIT(ch)/30);
  MANA = number(GET_HIT(vict)/100, GET_HIT(vict)/100);
  GET_EXP(ch) = GET_EXP(ch) + EXP;
  GET_MANA(ch) = GET_MANA(ch) - MANA;
  
  GET_EXP(vict) = GET_EXP(vict) + EXP;
  GET_MANA(vict) = GET_MANA(vict) - MANA;
  
  act("You fire a small kiblast at $N who slaps it away.", FALSE, ch, 0, vict, TO_CHAR);
  act("$n fires a small kiblast at $N who slaps it away.", TRUE, ch, 0, vict, TO_NOTVICT);
  act("As $n fires a kiblast you slap it away with the back of your hand.&00", FALSE, ch, 0, vict, TO_VICT);  
  WAIT_STATE(ch, PULSE_VIOLENCE * 1);
      return;     
    }
  else if (vict) {		
  EXP = number(GET_HIT(ch)/50, GET_HIT(ch)/50);
  MANA = number(GET_HIT(vict)/200, GET_HIT(vict)/200);
  GET_EXP(ch) = GET_EXP(ch) + EXP;
  GET_MANA(ch) = GET_MANA(ch) - MANA;
  
  act("You fire a kiblast hitting $N!", FALSE, ch, 0, vict, TO_CHAR);
  act("$n fires a kiblast, hitting $N!", TRUE, ch, 0, vict, TO_NOTVICT);
  act("$n fires a kiblast hitting you directly!&00", FALSE, ch, 0, vict, TO_VICT);  
  WAIT_STATE(ch, PULSE_VIOLENCE * 1);
      return;     
    } 

}

ACMD(do_jog)	
{    
    one_argument(argument, arg);
     
   if (!*argument) {
    send_to_char("&10Jogging commands:  &00\r\n", ch);
    send_to_char("&09-------------------&00\r\n", ch);
    send_to_char("&15Jog start          &00\r\n", ch);
    send_to_char("&15Jog stop           &00\r\n", ch);
    return;
     }

   if (!str_cmp(arg,"start")) {
    act("You start jogging.", TRUE, ch, 0, 0, TO_CHAR);
    SET_BIT(AFF_FLAGS(ch), AFF_JOG);
    return;
   }
  

   if (!str_cmp(arg,"stop")) {
    act("You stop jogging.", TRUE, ch, 0, 0, TO_CHAR);
    REMOVE_BIT(AFF_FLAGS(ch), AFF_JOG);
    return;
   }
}

/*ACMD(do_grevert)
{
send_to_char("&12Your rage calms down and you begin to slowly shrink as the hair on your body dis&00\n\r", ch);
GET_MAX_HIT(ch) -= 5000000;
GET_MAX_MANA(ch) -= 5000000;
GET_POS(ch) = 4;
return;
}
else if (!PRF_FLAGGED(ch, PRF_GOLDEN)) {
send_to_char("&12Your not a Golden Oozaru!&00\n\r", ch);
}
}*/


ACMD(do_orevert)	
{    
if (PRF_FLAGGED(ch, PRF_OOZARU) && PLR_FLAGGED(ch, PLR_trans3)) {
REMOVE_BIT(PRF_FLAGS(ch), PRF_OOZARU);
send_to_char("&12Your rage calms down and you begin to slowly shrink as the hair on your body disolves and you pass out on the ground.&00\n\r", ch);
GET_MAX_HIT(ch) -= 3000000;
GET_MAX_MANA(ch) -= 3000000;
GET_POS(ch) = 4;
return;
}
else if (PRF_FLAGGED(ch, PRF_OOZARU)) {
REMOVE_BIT(PRF_FLAGS(ch), PRF_OOZARU);
send_to_char("&12Your rage calms down and you begin to slowly shrink as the hair on your body disolves and you pass out on the ground.&00\n\r", ch);
GET_MAX_HIT(ch) -= 100000;
GET_MAX_MANA(ch) -= 100000;
GET_POS(ch) = 4;
return;
}
else if (!PRF_FLAGGED(ch, PRF_OOZARU)) {
send_to_char("&12Your not in oozaru form!&00\n\r", ch);	
}
}

ACMD(do_charge)	
{    
    one_argument(argument, arg);
     
   if (!*argument) {
    send_to_char("&10Charge - &00\r\n", ch);
    send_to_char("&15Low&00\r\n", ch);
    send_to_char("&15Medium&00\r\n", ch);
    send_to_char("&15High&00\r\n", ch);
    send_to_char("&15Invert&00\r\n", ch);
    return;
}
   if (AFF_FLAGGED(ch, AFF_HALTED))
   {
    send_to_char("You don't have enough time!\r\n", ch);   	
    return;
    }
   if (GET_MANA(ch) <= GET_MAX_MANA(ch) / 5 && (!str_cmp(arg,"low") || !str_cmp(arg,"medium") || !str_cmp(arg,"high"))) {
    send_to_char("You don't have ki to charge that much energy!\r\n", ch);
    return;
    }
/*------------------------------------------Invertion failure----------------------------------------*/
   if (!str_cmp(arg,"invert") && !AFF_FLAGGED(ch, AFF_CHARGEH) && !AFF_FLAGGED(ch, AFF_CHARGEM) && !AFF_FLAGGED(ch, AFF_CHARGEL)) {
    act("You are not storing any energy,", TRUE, ch, 0, 0, TO_CHAR);
    return;
   }
/*------------------------------------------Already charged/too High---------------------------------*/
/*Low*/
   if (!str_cmp(arg,"low") && AFF_FLAGGED(ch, AFF_CHARGEL)) {
    act("You've already charge that much energy.", TRUE, ch, 0, 0, TO_CHAR);
    return;
   }
   if (!str_cmp(arg,"medium") && AFF_FLAGGED(ch, AFF_CHARGEM)) {
    act("You've already charge that much energy.", TRUE, ch, 0, 0, TO_CHAR);
    return;
   }
  if (!str_cmp(arg,"low") && AFF_FLAGGED(ch, AFF_CHARGEM)) {
    act("You've already charged more then that much energy.", TRUE, ch, 0, 0, TO_CHAR);
    return;
   }
   if (!str_cmp(arg,"low") && AFF_FLAGGED(ch, AFF_CHARGEH)) {
    act("You've already charged more then that much energy.", TRUE, ch, 0, 0, TO_CHAR);
    return;
   }
   if (!str_cmp(arg,"medium") && AFF_FLAGGED(ch, AFF_CHARGEH)) {
    act("You've already charged more then that much energy.", TRUE, ch, 0, 0, TO_CHAR);
    return;
   }
   if (!str_cmp(arg,"high") && AFF_FLAGGED(ch, AFF_CHARGEH)) {
    act("You've already charge that much energy.", TRUE, ch, 0, 0, TO_CHAR);
    return;
   }
/*------------------------------------------Inverting------------------------------------------------*/
   if (!str_cmp(arg,"invert") && AFF_FLAGGED(ch, AFF_CHARGEH)) {
    act("&15You absorb the &10e&00&02n&10e&00&02r&10g&00&02y &15you created.&00", TRUE, ch, 0, 0, TO_CHAR);
    act("&14$n's &10e&00&02n&10e&00&02r&10g&00&02y&15 suddenly dissapears as they absorb it!&00", TRUE, ch, 0, 0, TO_NOTVICT);
    REMOVE_BIT(AFF_FLAGS(ch), AFF_CHARGEH);
    GET_MANA(ch) += GET_MAX_MANA(ch) / 5;
    return;
   }
   else if (!str_cmp(arg,"invert") && AFF_FLAGGED(ch, AFF_CHARGEM)) {
    act("&15You absorb the &10e&00&02n&10e&00&02r&10g&00&02y &15you created.&00", TRUE, ch, 0, 0, TO_CHAR);
    act("&14$n's &10e&00&02n&10e&00&02r&10g&00&02y&15 suddenly dissapears as they absorb it!&00", TRUE, ch, 0, 0, TO_NOTVICT);
    REMOVE_BIT(AFF_FLAGS(ch), AFF_CHARGEM);
    GET_MANA(ch) += GET_MAX_MANA(ch) / 10;
    return;
   }
   else if (!str_cmp(arg,"invert") && AFF_FLAGGED(ch, AFF_CHARGEL)) {
    act("&15You absorb the &10e&00&02n&10e&00&02r&10g&00&02y &15you created.&00", TRUE, ch, 0, 0, TO_CHAR);
    act("&14$n's &10e&00&02n&10e&00&02r&10g&00&02y&15 suddenly dissapears as they absorb it!&00", TRUE, ch, 0, 0, TO_NOTVICT);
    REMOVE_BIT(AFF_FLAGS(ch), AFF_CHARGEL);
    GET_MANA(ch) += GET_MAX_MANA(ch) / 20;
    return;
   }
/*------------------------------------------Success >:) ---------------------------------------------*/
   if (!str_cmp(arg,"low")) {
    act("&15You begin &12charging &15a little bit of &10e&00&02n&10e&00&02r&10g&00&02y&15 into your hands.&00", TRUE, ch, 0, 0, TO_CHAR);
    act("&14$n &15begins flaming with power as they charge a little bit of &10e&00&02n&10e&00&02r&10g&00&02y&15 into their hands!", TRUE, ch, 0, 0, TO_NOTVICT);    
    SET_BIT(AFF_FLAGS(ch), AFF_CHARGEL);
    GET_MANA(ch) -= GET_MAX_MANA(ch) / 20;
    return;
   }
  
   if (!str_cmp(arg,"medium")) {
    act("&15You begin charging &10e&00&02n&10e&00&02r&10g&00&02y&15 into your hands.&00", TRUE, ch, 0, 0, TO_CHAR);
    act("&14$n&15 begins &09f&00&01lamin&09g&15 with power as they charge some &10e&00&02n&10e&00&02r&10g&00&02y&15 into their hands!&00", TRUE, ch, 0, 0, TO_NOTVICT);
    SET_BIT(AFF_FLAGS(ch), AFF_CHARGEM);
    REMOVE_BIT(AFF_FLAGS(ch), AFF_CHARGEL);
    GET_MANA(ch) -= GET_MAX_MANA(ch) / 10;
    return;
   }

   if (!str_cmp(arg,"high")) {
    act("&15You begin charging a lot of &10e&00&02n&10e&00&02r&10g&00&02y&15 into your hands.&00", TRUE, ch, 0, 0, TO_CHAR);
    act("&14$n&15 begins &09f&00&01lamin&09g&15 with power as they charge &09a lot&00 &10e&00&02n&10e&00&02r&10g&00&02y&15 into their hands!&00", TRUE, ch, 0, 0, TO_NOTVICT);
    SET_BIT(AFF_FLAGS(ch), AFF_CHARGEH);
    REMOVE_BIT(AFF_FLAGS(ch), AFF_CHARGEM);
    GET_MANA(ch) -= GET_MAX_MANA(ch) / 5;
    return;
   }

}

ACMD(do_halt)
{

        struct char_data *vict, *next_v;
    if (!FIGHTING(ch))
        {
    act("Your not fighting!", TRUE, ch, 0, 0, TO_CHAR);    
    return;
}

    act("You relax out of your fighting stance for a moment.", TRUE, ch, 0, 0, TO_CHAR);
    act("$n leans up from a fighting stance.", TRUE, ch, 0, 0, TO_NOTVICT);
    SET_BIT(AFF_FLAGS(ch), AFF_HALTED);
        for(vict=world[ch->in_room].people;vict;vict=next_v)
        {
                next_v=vict->next_in_room;
                if(!IS_NPC(vict)&&(FIGHTING(vict)))
                {
                if(FIGHTING(FIGHTING(vict))==vict)
                        stop_fighting(FIGHTING(vict));
                stop_fighting(vict);

                }
        }
}

ACMD(do_regenerate)
{
 if (!GET_SKILL(ch, SKILL_REGENERATE)) {
  send_to_char("You can't do that!\r\n", ch);
  return;
}
 if (GET_MANA(ch) < GET_MAX_MANA(ch)/10) {
  send_to_char("You don't have the ki to regenerate.\r\n", ch);
  return;
}
 if (IS_MAJIN(ch) && !PLR_FLAGGED(ch, PLR_FORELOCK)) {
  SET_BIT(PLR_FLAGS(ch), PLR_FORELOCK);
  act("&15You regrow your forelock...&00", TRUE, ch, 0, 0, TO_CHAR);
  act("&14$n &15regrows their forelock...&00", TRUE, ch, 0, 0, TO_NOTVICT);
  return;
  }
 if (IS_BIODROID(ch) && !PLR_FLAGGED(ch, PLR_TAIL)) {
  SET_BIT(PLR_FLAGS(ch), PLR_TAIL);
  act("&15You regrow your tail...&00", TRUE, ch, 0, 0, TO_CHAR);
  act("&14$n &15regrows their tail...&00", TRUE, ch, 0, 0, TO_NOTVICT);
  return;
  }
 if (GET_HIT(ch) >= GET_MAX_HIT(ch)) {
  send_to_char("You are fully regenerated!\r\n", ch);
  return;
}
else {
    act("You regenrate your body restoring lost parts.", TRUE, ch, 0, 0, TO_CHAR);
    act("$n completely regenerates all thier body parts.", TRUE, ch, 0, 0, TO_NOTVICT);
   GET_MANA(ch) = GET_MANA(ch) - GET_MAX_MANA(ch)/10;
   GET_HIT(ch) = GET_MAX_HIT(ch); 
  SET_BIT(PLR_FLAGS(ch), PLR_RARM);
  SET_BIT(PLR_FLAGS(ch), PLR_LARM);
  SET_BIT(PLR_FLAGS(ch), PLR_RLEG);
  SET_BIT(PLR_FLAGS(ch), PLR_LLEG);
  }
}


ACMD(do_status)
{
send_to_char("&15o&12-------------------------o-------------------------&15o&00\r\n", ch);
send_to_char("&12|&15         ___             &12| &10Appearance:             \r\n", ch);
/* Eye Color */

if (PLR_FLAGGED(ch, PLR_trans4) && IS_saiyan(ch)) {
send_to_char("&12|&15        /   \\            &12| &15Eye Color:  &09B&16lac&09k       \r\n", ch);
}
else if (PLR_FLAGGED(ch, PLR_trans1) && (IS_saiyan(ch) || IS_HALF_BREED(ch))) {
send_to_char("&12|&15        /   \\            &12| &15Eye Color: &10Emerald      \r\n", ch);
}
else if (GET_EYE(ch) == EYE_BLACK) {
send_to_char("&12|&15        /   \\            &12| &15Eye Color: Black        \r\n", ch);
}
else if (GET_EYE(ch) == EYE_ICYBLUE) {
send_to_char("&12|&15        /   \\            &12| &15Eye Color: &14Icy Blue     \r\n", ch);
}
else if (GET_EYE(ch) == EYE_WHITE) {
send_to_char("&12|&15        /   \\            &12| &15Eye Color: White        \r\n", ch);
}
else if (GET_EYE(ch) == EYE_BLUE) {
send_to_char("&12|&15        /   \\            &12| &15Eye Color: &12Blue         \r\n", ch);
}
else if (GET_EYE(ch) == EYE_GREEN) {
send_to_char("&12|&15        /   \\            &12| &15Eye Color: &11Green        \r\n", ch);
}
else if (GET_EYE(ch) == EYE_BROWN) {
send_to_char("&12|&15        /   \\            &12| &15Eye Color: &03Brown        \r\n", ch);
}
else if (GET_EYE(ch) == EYE_PURPLE) {
send_to_char("&12|&15        /   \\            &12| &15Eye Color: &13Purple       \r\n", ch);
}
else if (GET_EYE(ch) == EYE_RED) {
send_to_char("&12|&15        /   \\           &12| &15Eye Color: &09Red          \r\n", ch);
}
else if (GET_EYE(ch) == EYE_YELLOW) {
send_to_char("&12|&15        /   \\            &12| &15Eye Color: &11Yellow       \r\n", ch);
}
/* End Eye Color */
/* Aura Color */
if (GET_AURA(ch) == AURA_BLACK) {
send_to_char("&12|&15        /   \\            &12| &15Skin Color: Black       \r\n", ch);
}
else if (GET_AURA(ch) == AURA_WHITE) {
send_to_char("&12|&15        /   \\            &12| &15Skin Color: White       \r\n", ch);
}
else if (GET_AURA(ch) == AURA_BLUE) {
send_to_char("&12|&15        /   \\            &12| &15Skin Color: &12Blue        \r\n", ch);
}
else if (GET_AURA(ch) == AURA_GREEN) {
send_to_char("&12|&15        /   \\            &12| &15Skin Color: &11Green       \r\n", ch);
}
else if (GET_AURA(ch) == AURA_PURPLE) {
send_to_char("&12|&15        /   \\            &12| &15Skin Color: &13Pink        \r\n", ch);
}
else if (GET_AURA(ch) == AURA_RED) {
send_to_char("&12|&15        /   \\            &12| &15Skin Color: &09Red         \r\n", ch);
}
else if (GET_AURA(ch) == AURA_YELLOW) {
send_to_char("&12|&15        /   \\            &12| &15Skin Color: &11Tan         \r\n", ch);
}
else if (GET_AURA(ch) == AURA_PINK) {
send_to_char("&12|&15        /   \\            &12| &15Skin Color: &00&05Purple      \r\n", 
ch);
}
/* Hair Length */

if (PLR_FLAGGED(ch, PLR_trans4) && IS_saiyan(ch)) {
send_to_char("&12|&15        |   |            &12| &15Hair Lngth: Long Spikes \r\n", ch);
}
else if (PLR_FLAGGED(ch, PLR_trans3) && IS_saiyan(ch)) {
send_to_char("&12|&15        |   |            &12| &15Hair Lngth: Long Spikes \r\n", ch);
}
else if (PLR_FLAGGED(ch, PLR_trans2) && (IS_saiyan(ch) || IS_HALF_BREED(ch))) {
send_to_char("&12|&15        |   |            &12| &15Hair Lth: Medium Spikes \r\n", ch);
}
else if (PLR_FLAGGED(ch, PLR_trans1) && (IS_saiyan(ch) || IS_HALF_BREED(ch))) {
send_to_char("&12|&15        |   |            &12| &15Hair Lgth: Short Spikes \r\n", ch);
}
else if (IS_MAJIN(ch) && GET_HAIRL(ch) == HAIRL_V_SHORT) {
send_to_char("&12|&15        |   |            &12| &15Forelock Length: Very Short \r\n", ch);
}
else if (IS_MAJIN(ch) && GET_HAIRL(ch) == HAIRL_SSPIKE) {
send_to_char("&12|&15        |   |            &12| &15Forelock Lgth: Short thin \r\n", ch);
}
else if (IS_MAJIN(ch) && GET_HAIRL(ch) == HAIRL_MSPIKE) {
send_to_char("&12|&15        |   |            &12| &15Forelock Lth: Medium thin \r\n", ch);
}
else if (IS_MAJIN(ch) && GET_HAIRL(ch) == HAIRL_LSPIKE) {
send_to_char("&12|&15        |   |            &12| &15Forelock Lngth: Long thin \r\n", ch);
}
else if (IS_MAJIN(ch) && GET_HAIRL(ch) == HAIRL_BALD) {
send_to_char("&12|&15        |   |            &12| &15Forelock Length: Stubbey       \r\n", ch);
}
else if (IS_MAJIN(ch) && GET_HAIRL(ch) == HAIRL_SHORT) {
send_to_char("&12|&15        |   |            &12| &15Forelock Length: Short      \r\n", ch);
}
else if (IS_MAJIN(ch) && GET_HAIRL(ch) == HAIRL_MEDIUM) {
send_to_char("&12|&15        |   |            &12| &15Forelock Length: Medium     \r\n", ch);
}
else if (IS_MAJIN(ch) && GET_HAIRL(ch) == HAIRL_LONG) {
send_to_char("&12|&15        |   |            &12| &15Forelock Length: Long       \r\n", ch);
}
else if (IS_MAJIN(ch) && GET_HAIRL(ch) == HAIRL_V_LONG) {
send_to_char("&12|&15        |   |            &12| &15Forelock Length: Very Long  \r\n", ch);
 }
 else if (IS_Namek(ch) && GET_HAIRL(ch) == HAIRL_V_SHORT) {
 send_to_char("&12|&15        |   |            &12| &15Antenae Length: Very Short \r\n", ch);
 }
 else if (IS_Namek(ch) && GET_HAIRL(ch) == HAIRL_SSPIKE) {
 send_to_char("&12|&15        |   |            &12| &15Antenae Lgth: Short thin \r\n", ch);
 }
 else if (IS_Namek(ch) && GET_HAIRL(ch) == HAIRL_MSPIKE) {
 send_to_char("&12|&15        |   |            &12| &15Antenae Lth: Medium thin \r\n", ch);
 }
 else if (IS_Namek(ch) && GET_HAIRL(ch) == HAIRL_LSPIKE) {
 send_to_char("&12|&15        |   |            &12| &15Antenae Lngth: Long thin \r\n", ch);
 }
 else if (IS_Namek(ch) && GET_HAIRL(ch) == HAIRL_BALD) {
 send_to_char("&12|&15        |   |            &12| &15Antenae Length: Stubbey       \r\n", ch);
 }
 else if (IS_Namek(ch) && GET_HAIRL(ch) == HAIRL_SHORT) {
 send_to_char("&12|&15        |   |            &12| &15Antenae Length: Short      \r\n", ch);
 }
 else if (IS_Namek(ch) && GET_HAIRL(ch) == HAIRL_MEDIUM) {
 send_to_char("&12|&15        |   |            &12| &15Antenae Length: Medium     \r\n", ch);
 }
 else if (IS_Namek(ch) && GET_HAIRL(ch) == HAIRL_LONG) {
 send_to_char("&12|&15        |   |            &12| &15Antenae Length: Long       \r\n", ch);
 }
 else if (IS_Namek(ch) && GET_HAIRL(ch) == HAIRL_V_LONG) {
 send_to_char("&12|&15        |   |            &12| &15Antenae Length: Very Long  \r\n", ch);
 }
else if (GET_HAIRL(ch) == HAIRL_V_SHORT) {
send_to_char("&12|&15        |   |            &12| &15Hair Length: Very Short \r\n", ch);
}
else if (GET_HAIRL(ch) == HAIRL_SSPIKE) {
send_to_char("&12|&15        |   |            &12| &15Hair Lgth: Short Spikey \r\n", ch);
}
else if (GET_HAIRL(ch) == HAIRL_MSPIKE) {
send_to_char("&12|&15        |   |            &12| &15Hair Lth: Medium Spikey \r\n", ch);
}
else if (GET_HAIRL(ch) == HAIRL_LSPIKE) {
send_to_char("&12|&15        |   |            &12| &15Hair Lngth: Long Spikey \r\n", ch);
}
else if (GET_HAIRL(ch) == HAIRL_BALD) {
send_to_char("&12|&15        |   |            &12| &15Hair Length: None       \r\n", ch);
}
else if (GET_HAIRL(ch) == HAIRL_SHORT) {
send_to_char("&12|&15        |   |            &12| &15Hair Length: Short      \r\n", ch);
}
else if (GET_HAIRL(ch) == HAIRL_MEDIUM) {
send_to_char("&12|&15        |   |            &12| &15Hair Length: Medium     \r\n", ch);
}
else if (GET_HAIRL(ch) == HAIRL_LONG) {
send_to_char("&12|&15        |   |            &12| &15Hair Length: Long       \r\n", ch);
}
else if (GET_HAIRL(ch) == HAIRL_V_LONG) {
send_to_char("&12|&15        |   |            &12| &15Hair Length: Very Long  \r\n", ch);
}
/*End Hair Lenght*/
/*Hair Color */

if (IS_Namek(ch)) {
send_to_char("&12|&15        \\___/            &12| &15Antenae: Yes       \r\n", ch);
}
else if (IS_MAJIN(ch)) {
send_to_char("&12|&15        \\___/            &12| &15Forelock: Yes      \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans4) && IS_saiyan(ch)) {
send_to_char("&12|&15        \\___/            &12| &15Hair Color: &16Black       \r\n", 
ch);
}
else if (PLR_FLAGGED(ch, PLR_trans1) && (IS_saiyan(ch) || IS_HALF_BREED(ch))) {
send_to_char("&12|&15        \\___/            &12| &15Hair Color: &11Gold        \r\n", 
ch);
}
else if (PLR_FLAGGED(ch, PLR_trans2) && (IS_saiyan(ch) || IS_HALF_BREED(ch))) {
send_to_char("&12|&15        \\___/            &12| &15Hair Color: &11Gold        \r\n", 
ch);
}
else if (PLR_FLAGGED(ch, PLR_trans3) && (IS_saiyan(ch) || IS_HALF_BREED(ch))) {
send_to_char("&12|&15        \\___/            &12| &15Hair Color: &11Gold        \r\n", 
ch);
}

else if (GET_HAIRC(ch) == HAIRC_BLACK) {
send_to_char("&12|&15        \\___/            &12| &15Hair Color: Black       \r\n", ch);
}
else if (GET_HAIRC(ch) == HAIRC_WHITE) {
send_to_char("&12|&15        \\___/            &12| &15Hair Color: Silver      \r\n", ch);
}
else if (GET_HAIRL(ch) == 5) {
send_to_char("&12|&15        \\___/            &12| &15Hair Color: None        \r\n", ch);
}
else if (GET_HAIRC(ch) == HAIRC_BROWN) {
send_to_char("&12|&15        \\___/            &12| &15Hair Color: &03Brown       \r\n", ch);
}
else if (GET_HAIRC(ch) == HAIRC_BLUE) {
send_to_char("&12|&15        \\___/            &12| &15Hair Color: &12Blue        \r\n", ch);
}
else if (GET_HAIRC(ch) == HAIRC_YELLOW) {
send_to_char("&12|&15        \\___/            &12| &15Hair Color: &11Yellow      \r\n", ch);
}
else if (GET_HAIRC(ch) == HAIRC_GREEN) {
send_to_char("&12|&15        \\___/            &12| &15Hair Color: &10Green       \r\n", ch);
}
else if (GET_HAIRC(ch) == HAIRC_PURPLE) {
send_to_char("&12|&15        \\___/            &12| &15Hair Color: &13Purple      \r\n", ch);
}
else if (GET_HAIRC(ch) == HAIRC_RED) {
send_to_char("&12|&15        \\___/            &12| &15Hair Color: &09Red         \r\n", ch);
}
else if (GET_HAIRC(ch) == HAIRC_NONE) {
send_to_char("&12|&15        \\___/            &12| &15Hair Color: None        \r\n", ch);
}
/* End of Hair Color */

send_to_char("&12|&15    __  /   \\  __        &12|                         \r\n", ch);
send_to_char("&12|&15   (             )       &12| &10Body Condition:         \r\n", ch);
send_to_char("&12|&15   |  |       |  |       &12| &15Head:       &11Perfect     \r\n", ch);
send_to_char("&12|&15   (  )       (  )       &12| &15Torso:      &11Perfect     \r\n", ch);
if (PLR_FLAGGED(ch, PLR_RARM)) {
send_to_char("&12|&15   |  }\\     /{  |       &12| &15Right Arm:  &11Perfect     \r\n", ch);
}
else if (!PLR_FLAGGED(ch, PLR_RARM)) {
send_to_char("&12|&15   |  }\\     /{  |       &12| &15Right Arm:  &09Severed     \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_LARM)) {
send_to_char("&12|&15   | / |     | \\ |       &12| &15Left Arm:   &11Perfect     \r\n", ch);
}
else if (!PLR_FLAGGED(ch, PLR_LARM)) {
send_to_char("&12|&15   | / |     | \\ |       &12| &15Left Arm:   &09Severed     \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_RLEG)) {
send_to_char("&12|&15   |_\\ /  __ \\ /_|       &12| &15Right Leg:  &11Perfect    \r\n", ch);
}
else if (!PLR_FLAGGED(ch, PLR_RLEG)) {
send_to_char("&12|&15   |_\\ /  __ \\ /_|       &12| &15Right Leg:  &09Severed    \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_LLEG)) {
send_to_char("&12|&15      /   ||  |          &12| &15Left Leg:   &11Perfect     \r\n", ch);
}
else if (!PLR_FLAGGED(ch, PLR_LLEG)) {
send_to_char("&12|&15      /   ||  |          &12| &15Left Leg:   &09Severed     \r\n", ch);
}
send_to_char("&12|&15     /   / |  |          &12|                         \r\n", ch);
send_to_char("&12|&15    {   /  |  |          &12|                         \r\n", ch);
send_to_char("&12|&15    |   |  |  |          &12|                         \r\n", ch);
send_to_char("&12|&15   _|   |  |  |          &12|                         \r\n", ch);
send_to_char("&12|&15  /_____}  (  \\          &12|                        \r\n", ch);
send_to_char("&12|&15            \\  )         &12|                        \r\n", ch);
send_to_char("&15o&12-------------------------&15o&12-------------------------&15o&00\r\n", ch);
sprintf(buf1, "&12| &10Carried Wgt.:&00 &11%d&00\r\n&12| &10Items carried:&00 &11%d&00\r\n", IS_CARRYING_W(ch), IS_CARRYING_N(ch));
send_to_char(buf1, ch);
send_to_char("&12| &10Affections:&00                                       \r\n", ch);
if (PLR_FLAGGED(ch, PLR_trans1) && !PLR_FLAGGED(ch, PLR_trans2) && (IS_saiyan(ch) || IS_HALF_BREED(ch))) {
send_to_char("&12| &11You are in Super Saiya-Jin Form 1.                \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans2) && !PLR_FLAGGED(ch, PLR_trans3) && (IS_saiyan(ch) || IS_HALF_BREED(ch))) {
send_to_char("&12| &11You are in Super Saiya-Jin Form 2.                \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans3) && !PLR_FLAGGED(ch, PLR_trans4) && IS_saiyan(ch)) {
send_to_char("&12| &11You are in Super Saiya-Jin Form 3.                \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans4) && IS_saiyan(ch)) {
send_to_char("&12| &11You are in Super Saiya-Jin Form 4.                \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans1) && !PLR_FLAGGED(ch, PLR_trans2) && IS_icer(ch)) {
send_to_char("&12| &14You are in Transformation Stage 1.                \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans2) && !PLR_FLAGGED(ch, PLR_trans3) && IS_icer(ch)) {
send_to_char("&12| &14You are in Transformation Stage 2.                \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans3) && !PLR_FLAGGED(ch, PLR_trans4) && IS_icer(ch)) {
send_to_char("&12| &14You are in Transformation Stage 3.                \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans4) && IS_icer(ch)) {
send_to_char("&12| &14You are in Transformation Stage 4.                \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans1) && !PLR_FLAGGED(ch, PLR_trans2) && IS_Human(ch)) {
send_to_char("&12| &14You are in Super Human First.                     \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans2) && !PLR_FLAGGED(ch, PLR_trans3) && IS_Human(ch)) {
send_to_char("&12| &14You are in Super Human Second.                    \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans3) && !PLR_FLAGGED(ch, PLR_trans4) && IS_Human(ch)) {
send_to_char("&12| &14You are in Super Human Third.                     \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans4) && IS_Human(ch)) {
send_to_char("&12| &14You are in Super Human Fourth.                    \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans1) && !PLR_FLAGGED(ch, PLR_trans2) && IS_Namek(ch)) {
send_to_char("&12| &14You are in Super Namek First.                     \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans2) && !PLR_FLAGGED(ch, PLR_trans3) && IS_Namek(ch)) {
send_to_char("&12| &14You are in Super Namek Second.                    \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans3) && !PLR_FLAGGED(ch, PLR_trans4) && IS_Namek(ch)) {
send_to_char("&12| &14You are in Super Namek Third.                     \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans4) && IS_Namek(ch)) {
send_to_char("&12| &14You are in Super Namek Fourth.                    \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans1) && !PLR_FLAGGED(ch, PLR_trans2) && IS_MAJIN(ch)) {
send_to_char("&12| &14You are in Morph Stage 1.                         \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans2) && !PLR_FLAGGED(ch, PLR_trans3) && IS_MAJIN(ch)) {
send_to_char("&12| &14You are in Morph Stage 2.                         \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans3) && !PLR_FLAGGED(ch, PLR_trans4) && IS_MAJIN(ch)) {
send_to_char("&12| &14You are in Morph Stage 3.                         \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans4) && IS_MAJIN(ch)) {
send_to_char("&12| &14You are in Morph Stage 4.                         \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans1) && !PLR_FLAGGED(ch, PLR_trans2) && IS_BIODROID(ch)) {
send_to_char("&12| &14You have hatched.                                 \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans2) && !PLR_FLAGGED(ch, PLR_trans3) && IS_BIODROID(ch)) {
send_to_char("&12| &14You are Imperfect.                                \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans3) && !PLR_FLAGGED(ch, PLR_trans4) && IS_BIODROID(ch)) {
send_to_char("&12| &14You are Perfect.                                  \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans4) && IS_BIODROID(ch)) {
send_to_char("&12| &14You are Super Perfect.                            \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans1) && !PLR_FLAGGED(ch, PLR_trans2) && IS_KONATSU(ch)) {
send_to_char("&12| &14You are in Shadow Form 1.                         \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans2) && !PLR_FLAGGED(ch, PLR_trans3) && IS_KONATSU(ch)) {
send_to_char("&12| &14You are in Shadow Form 2.                         \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans1) && !PLR_FLAGGED(ch, PLR_trans2) && IS_TRUFFLE(ch)) {
send_to_char("&12| &14You have your Alpha implants.                     \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans2) && !PLR_FLAGGED(ch, PLR_trans3) && IS_TRUFFLE(ch)) {
send_to_char("&12| &14You have your Beta implants.                      \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans3) && !PLR_FLAGGED(ch, PLR_trans4) && IS_TRUFFLE(ch)) {
send_to_char("&12| &14You have your Infusion implants.                  \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans1) && !PLR_FLAGGED(ch, PLR_trans2) && IS_demon(ch)) {
send_to_char("&12| &14You are in Innerfire First.                       \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans2) && !PLR_FLAGGED(ch, PLR_trans3) && IS_demon(ch)) {
send_to_char("&12| &14You are in Innerfire Second.                      \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans3) && !PLR_FLAGGED(ch, PLR_trans4) && IS_demon(ch)) {
send_to_char("&12| &14You are in Innerfire Third.                       \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans4) && IS_demon(ch)) {
send_to_char("&12| &14You are in Innerfire Fourth.                      \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans1) && !PLR_FLAGGED(ch, PLR_trans2) && IS_ANDROID(ch)) {
send_to_char("&12| &14Version 1.0                                       \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans2) && !PLR_FLAGGED(ch, PLR_trans3) && IS_ANDROID(ch)) {
send_to_char("&12| &14Version 2.0                                       \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans3) && !PLR_FLAGGED(ch, PLR_trans4) && IS_ANDROID(ch)) {
send_to_char("&12| &14Version 3.0                                       \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans4) && !PLR_FLAGGED(ch, PLR_trans5) && IS_ANDROID(ch)) {
send_to_char("&12| &14Version 4.0                                       \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans5) && !PLR_FLAGGED(ch, PLR_trans6) && IS_ANDROID(ch)) {
send_to_char("&12| &14Version 5.0                                       \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans6) && IS_ANDROID(ch)) {
send_to_char("&12| &14Version 6.0                                       \r\n", ch);
}
if (AFF_FLAGGED(ch, AFF_BARRIER) && !IS_MUTANT(ch)) {
send_to_char("&12| &14You are protected by a shield of energy.          \r\n", ch);
}
if (AFF_FLAGGED(ch, AFF_BARRIER) && IS_MUTANT(ch)) {
send_to_char("&12| &14You are protected by the thick hide you grew.     \r\n", ch);
}
if (GET_COND(ch, DRUNK) > 5 && GET_COND(ch, DRUNK) < 15) {
send_to_char("&12| &14You are drunk.                                    \r\n", ch);
}
if (GET_COND(ch, DRUNK) >= 15) {
send_to_char("&12| &14You are pretty fucking hammered.                  \r\n", ch);
}
if (GET_COND(ch, FULL) < 15 && GET_COND(ch, FULL) > 5) {
send_to_char("&12| &14You could use a bite to eat...                    \r\n", ch);
}
if (GET_COND(ch, FULL) < 5 && GET_COND(ch, FULL) > 0) {
send_to_char("&12| &10You are getting pretty hungry                     \r\n", ch);
}
if (GET_COND(ch, FULL) == 0) {
send_to_char("&12| &09You are starving!                                 \r\n", ch);
}
if (GET_COND(ch, THIRST) < 15 && GET_COND(ch, THIRST) > 5) {
send_to_char("&12| &14You could use a drink...                          \r\n", ch);
}
if (GET_COND(ch, THIRST) < 5 && GET_COND(ch, THIRST) > 0) {
send_to_char("&12| &10You are getting pretty thirsty                    \r\n", ch);
}
if (GET_COND(ch, THIRST) == 0) {
send_to_char("&12| &09You are dehydrated!                               \r\n", ch);
}
if (PRF_FLAGGED(ch, PRF_OOZARU)) {
send_to_char("&12| &12You are in Oozaru form.                           \r\n", ch);
}
if (PRF_FLAGGED(ch, PRF_CAMP)) {
send_to_char("&12| &10You are camping.                                  \r\n", ch);
}
if (AFF_FLAGGED(ch, AFF_SOLAR_FLARE)) {
send_to_char("&12| &09You are blind!                                    \r\n", ch);
}
if (AFF_FLAGGED(ch, AFF_INVISIBLE)) {
send_to_char("&12| &13You are invisible                                 \r\n", ch);
}
if (AFF_FLAGGED(ch, AFF_MAJIN)) {
send_to_char("&12| &13You are a Majin slave.                            \r\n", ch);
}
if (AFF_FLAGGED(ch, AFF_INFRAVISION)) {
send_to_char("&12| &13You can see in the dark.                          \r\n", ch);
}
if (AFF_FLAGGED(ch, AFF_SPAR)) {
send_to_char("&12| &10You are sparring.                                 \r\n", ch);
}
if (AFF_FLAGGED(ch, AFF_JOG)) {
send_to_char("&12| &10You are jogging.                                  \r\n", ch);
}
if (AFF_FLAGGED(ch, AFF_CHARGEL)) {
send_to_char("&12| &09You have a little bit of energy charged.          \r\n", ch);
}
if (AFF_FLAGGED(ch, AFF_CHARGEM)) {
send_to_char("&12| &09You have a fair ammount of energy charged.        \r\n", ch);
}
if (AFF_FLAGGED(ch, AFF_CHARGEH)) {
send_to_char("&12| &09You have a lot of energy charged.                 \r\n", ch);
}
if (PRF_FLAGGED(ch, PRF_MYSTIC)) {
send_to_char("&12| &14You have achieved the Mystic power up.            \r\n", ch);
}
if (PRF_FLAGGED(ch, PRF_MYSTIC3)) {
send_to_char("&12| &14You have achieved the Mystic PowerMagnius.        \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans2)) {
send_to_char("&12| &14You have achieved the Mutation form 1.            \r\n", ch);
}
if (PLR_FLAGGED(ch, PLR_trans1)) {
send_to_char("&12| &14You have achieved the Mutation form 2.            \r\n", ch);
}
send_to_char("&15o&12---------------------------------------------------&15o&00\r\n", ch);

 }  

ACMD(do_mystic)
{

  int MAX_MANA = 0, MAX_HIT = 0, MAX_MOVE = 0;

    
    one_argument(argument, arg);

    if ((!IS_KAI(ch)) && (!IS_HALF_BREED(ch)))
    {
      act("Your can not achieve mystic powers, your power lays elsewhere!", TRUE, ch, 0, 0, TO_CHAR);
      return;
    }
   else if (!*argument)
    {


act("        &10o&12_&09-------------------------&12_&10o&00\r\n         &09|   &14   Mystic Forms &00       &09|&00\r\n        &10o&12_&09-------------------------&12_&10o&00\r\n         &09|&10You can do the following:&09|&00\r\n         &09|&09-------------------------&09|&00\r\n         &09|&15Stage:  Power Level Req.:&09|&00 ", TRUE, ch, 0, 0, TO_CHAR);
act("         &09| &10Powercharge &141000000&00     &09|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &09| &10PowerMagnius&145000000&00     &09|&00", TRUE, ch, 0, 0, TO_CHAR); 
act("         &09| &10Powerup     &1420000000&00    &09|&00", TRUE, ch, 0, 0, TO_CHAR); 
act("        &10o&12_&09-------------------------&12_&10o&00", TRUE, ch, 0, 0, TO_CHAR);
act("    &12You Can Now Revert From Mystic Form.  Syntax: Mystic Revert&00", TRUE, ch, 0, 0, TO_CHAR);
return;
}

/*------------------        Oozaru checks, no SSj in oozaru           -----------------*/

if (!str_cmp(arg,"powercharge" "powermag" "powerup") && PRF_FLAGGED(ch, PRF_OOZARU)) {
  act("&15You can't go &14Mystic&15 while in oozaru form!!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

/*------------------Revert--------------*/
  if (!str_cmp(arg,"revert") && PRF_FLAGGED(ch, PRF_MYSTIC)) {
     REMOVE_BIT(PRF_FLAGS(ch), PRF_MYSTIC2);
     REMOVE_BIT(PRF_FLAGS(ch), PRF_MYSTIC3);
     REMOVE_BIT(PRF_FLAGS(ch), PRF_MYSTIC);  

   MAX_HIT = number(41500000, 41500000);
   MAX_MANA = number(41500000, 41500000);
   MAX_MOVE = number (20, 20);

   GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
   GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
   GET_MAX_MOVE(ch) = GET_MAX_MOVE(ch) - MAX_MOVE;

   act("&15$n reverts from &14Mystic&15 form.&00", TRUE, ch, 0, 0, TO_ROOM);
   act("&15You revert from &14Mystic&15 form.&00", TRUE, ch, 0, 0, TO_CHAR);
   return;
   }

 if (!str_cmp(arg,"revert") && PRF_FLAGGED(ch, PRF_MYSTIC3)) {
    REMOVE_BIT(PRF_FLAGS(ch), PRF_MYSTIC2);
    REMOVE_BIT(PRF_FLAGS(ch), PRF_MYSTIC3);
         
  MAX_HIT = number(11500000, 11500000);
  MAX_MANA = number(11500000, 11500000);
  MAX_MOVE = number(10, 10);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  GET_MAX_MOVE(ch) = GET_MAX_MANA(ch) - MAX_MANA;

  act("&15$n reverts from &14Mystic&15 form.&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You revert from &14Mystic&15 form.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

  if (!str_cmp(arg,"revert") && PRF_FLAGGED(ch, PRF_MYSTIC2)) {
     REMOVE_BIT(PRF_FLAGS(ch), PRF_MYSTIC2);
       
  MAX_HIT = number(1500000, 1500000);
  MAX_MANA = number(1500000, 1500000);
  MAX_MOVE = number(5, 5);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  GET_MAX_MOVE(ch) = GET_MAX_MOVE(ch) - MAX_MOVE;

  act("&15$n reverts from &14Mystic&15 form.&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You revert from &14Mystic&15 form.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

/*-------------------------------------------------------------------------------------*/
/*------------------------------------ Mystic -----------------------------------------*/
/*-------------------------------------------------------------------------------------*/

if (!str_cmp(arg,"powerup") && PRF_FLAGGED(ch, PRF_MYSTIC)) {
  act("&15Your already in &14Mystic&15 form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"powermag") && PRF_FLAGGED(ch, PRF_MYSTIC3)) {
  act("&15Your already in &14Mystic&15 form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }


if (!str_cmp(arg,"powercharge") && PRF_FLAGGED(ch, PRF_MYSTIC2)) {
  act("&15Your already have that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"powerup") && GET_MAX_HIT(ch) - 11499999 <= 20000000) {
  act("&15You do not have the power to attain &14Mystic&15 form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"powermag") && GET_MAX_HIT(ch) - 1499999 <= 5000000) {
  act("&15You do not have the power to attain &14Mystic &10Magius&15 form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"powercharge") && GET_MAX_HIT(ch) <= 1000000) {
  act("&15You do not have the power to attain &14Mystic&09 powercharge&11!&00", TRUE, ch, 0, 0, TO_CHAR);
  }

if (!str_cmp(arg,"powerup") && PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15What do you want to do, blow up the universe?!  You can't go &14Mystic&15 in &11SSJ&15 form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;

  }

if (!str_cmp(arg,"powercharge") && PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15What do you want to do, blow up the universe?! You can't go &14Mystic&15 in &11SSJ&15 form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"powermag") && PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15What do you want to do, blow up the universe?! You can't go &14Mystic&15 in &11SSJ&15 form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"powerup") && PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15What do you want to do, blow up the universe?!  You can't go &14Mystic&15 while transformed!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"powermag") && !PRF_FLAGGED(ch, PRF_MYSTIC2)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"powerup") && !PRF_FLAGGED(ch, PRF_MYSTIC3)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }


 if (!str_cmp(arg,"powercharge") && GET_MAX_HIT(ch) >=1000000) {
     SET_BIT(PRF_FLAGS(ch), PRF_MYSTIC2);

  MAX_HIT = number(1500000, 1500000);
  MAX_MANA = number(1500000, 1500000);
  MAX_MOVE = number(5, 5);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_MAX_MOVE(ch) = GET_MAX_MOVE(ch) + MAX_MOVE;

 act("&12$n&15 begins to growl as their muscles expand&11,&15 a &14light&12 blue &11aura&15 flares up around their body&11!&15 $n Let's out a scream just as they manage to release their hidden powers in a &12Mystic&09 powercharge&11!&00", TRUE, ch, 0, 0, TO_ROOM); 
 act("&15You begin to growl as your muscles exspand&11,&15 a &14light&12 blue &11aura&15 flares up around you as you manage to release your hidden powers with a &12Mystic&09 powercharge&11!&00", TRUE, ch, 0, 0, TO_CHAR);
return;
  } 

 if (!str_cmp(arg,"powermag") && !PRF_FLAGGED(ch, PRF_MYSTIC2)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
 if (!str_cmp(arg,"powermag") && GET_MAX_HIT(ch) - 1499999 >= 5000000) {
     SET_BIT(PRF_FLAGS(ch), PRF_MYSTIC3);
  MAX_HIT = number(10000000, 10000000);
  MAX_MANA = number(10000000, 10000000);
  MAX_MOVE = number(5, 5);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_MAX_MOVE(ch) = GET_MAX_MOVE(ch) + MAX_MOVE;

  act("&12$n &15lifts up into the air as &10e&00&02n&10e&00&02r&10g&00&02y&15 swells around their body&11!&12$s &15eyes &00&07glows &14magnificantly&15 as their muscles ripple with &09power&11! &12$n &15screams out as they unleash their power with &12Mystic&10 Magnius&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You lift up off of the ground into the &00&07air&15 as &10e&00&02n&10e&00&02r&10g&00&02y&15 swells around you&11!&15 Your muscles swell with &09power&15 as you unleash your &12Mystic &10Magnius&11!&00", TRUE, ch, 0, 0, TO_CHAR);
return;
  }

 if (!str_cmp(arg,"powerup") && GET_MAX_HIT(ch) - 11499999 >= 20000000) {
     SET_BIT(PRF_FLAGS(ch), PRF_MYSTIC);

  MAX_HIT = number(30000000, 30000000);
  MAX_MANA = number(30000000, 30000000);
  MAX_MOVE = number(10, 10);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_MAX_MOVE(ch) = GET_MAX_MOVE(ch) + MAX_MOVE;

  act("&12$n&15 begins &13growling&15 as $s body starts &09glowing&00 &12blue&15. $n screams out as $e transforms.  $s eyes glaze over, as &12blue&15 energy bursts out from the ground, blinding you and everyone near you momentarily.  &12$n&15 has achieved &14Mystic&15 form!&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&15You begin &13growling&15 as your body starts &09glowing&00 &12blue&15. You scream out as you transform.  Your eyes glaze over, as &12blue&15 energy bursts out from the ground, blinding everyone near you momentarily. You have achieved &14Mystic&15 form!&00", TRUE, ch, 0, 0, TO_CHAR);
return;
  }


}

/*-------------------------------------------------------------------------------------*/

ACMD(do_perfection)
 {

   int MAX_MANA = 0, MAX_HIT = 0;

     one_argument(argument, arg);

     if (!IS_BIODROID(ch))
     {
       act("You're not a bio-android!", TRUE, ch, 0, 0, TO_CHAR);
       return;
     }

 else if (!*argument)
     {
 act("&10o&12*_&02---------------------------------------------&12_*&10o&00", TRUE, ch, 0, 0, TO_CHAR);
 act("  &09|                &11PERFECTION!!&00                 &09|&00", TRUE, ch, 0, 0, TO_CHAR);
 act("&10o&12*_&02---------------------------------------------&12_*&10o&00", TRUE, ch, 0, 0, TO_CHAR);
 act("  &09|&10           You can do the following.         &09|&00", TRUE, ch, 0, 0, TO_CHAR);
 act("  &09|&02---------------------------------------------&09|&00", TRUE, ch, 0, 0, TO_CHAR);
 act("  &09| &15Stage:            Power Level Req:          &09|&00 ", TRUE, ch, 0, 0, TO_CHAR);
 act("  &09| &10HATCH             &14800000&00                    &09|&00", TRUE, ch, 0, 0, TO_CHAR);
 act("  &09| &10IMPERFECT         &145000000&00                   &09|&00", TRUE, ch, 0, 0, TO_CHAR);
 act("  &09| &10PERFECT           &1410000000&00                  &09|&00", TRUE, ch, 0, 0, TO_CHAR);
 act("  &09| &10SUPER             &1415000000&00                  &09|&00", TRUE, ch, 0, 0, TO_CHAR);
 act("  &09| &12Type perfect reshell to revert from hatch&00   &09|&00", TRUE, ch, 0, 0, TO_CHAR);
 act("&10o&12*_&02---------------------------------------------&12_*&10o&00", TRUE, ch, 0, 0, TO_CHAR);
 return;
 }
 /*------------------  Checks to see if already in Morphing stage.   -----------------*/

 if (!str_cmp(arg,"imperfect") && !PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"perfect") && !PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"super") && !PLR_FLAGGED(ch, PLR_trans3)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
 /*-------------------------------------------------------------------------------------*/
 /*----------------------------------  Reverting  --------------------------------------*/

 if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans4)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans3);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans4);

   MAX_HIT = number(33000000, 33000000);
   MAX_MANA = number(33000000, 33000000);

   GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
   GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
   act("&11$n&10's body &12shrinks &10$s muscles become &11smaller &10again as $s form turns more bug-like.&00", TRUE, ch, 0, 0, TO_ROOM);
   act("&10Your body &14shrinks &10your muscles become &11smaller &10again as you turn more bug-like.&00", TRUE, ch, 0, 0, TO_CHAR);
   return;
   }

 if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans3)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans3);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);

   MAX_HIT = number(15000000, 15000000);
   MAX_MANA = number(15000000, 15000000);

   GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
   GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
   act("&11$n&10's body &12shrinks &10$s muscles become &11smaller &10again as $s form turns more bug-like.&00", TRUE, ch, 0, 0, TO_ROOM);
   act("&10Your body &14shrinks &10your muscles become &11smaller &10again as you turn more bug-like.&00", TRUE, ch, 0, 0, TO_CHAR);
   return;
   }

 else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans2)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);

   MAX_HIT = number(5000000, 5000000);
   MAX_MANA = number(5000000, 5000000);

   GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
   GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
   act("&11$n&10's body &12shrinks &10$s muscles become &11smaller &10again as $s form turns morebug-like.&00", TRUE, ch, 0, 0, TO_ROOM);
   act("&10Your body &14shrinks &10your muscles become &11smaller &10again as you turn more bug-like.&00", TRUE, ch, 0, 0, TO_CHAR);
   return;
   }

 else if (!str_cmp(arg,"reshell") && PLR_FLAGGED(ch, PLR_trans1)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);

   MAX_HIT = number(1000000, 1000000);
   MAX_MANA = number(1000000, 1000000);

   GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
   GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
   act("&11$n&10 encloses $mself in a shell, &09reshelling&10 $mself!", TRUE, ch, 0, 0, TO_ROOM);
   act("&10You enclose yourself in a shell, &09reshelling&10 yourself!", TRUE, ch, 0, 0, TO_CHAR);
   return;
   }

 /*-------------------------------------------------------------------------------------*/
 /*--------------------------------- hatch!!!!!!! ------------------------------------- */
 /*-------------------------------------------------------------------------------------*/

 if (!str_cmp(arg,"hatch") && PLR_FLAGGED(ch, PLR_trans1)) {
   act("&10Your already past that metamorphosis!&00", TRUE, ch, 0, 0, TO_CHAR);
   return;
   }

 if (!str_cmp(arg,"hatch") && GET_MAX_HIT(ch) <= 800000) {
   act("&10You do not yet have the strength to emerge!&00", TRUE, ch, 0, 0, TO_CHAR);
   return;
   }

  if (!str_cmp(arg,"hatch") && GET_MAX_HIT(ch) >= 800000) {
      SET_BIT(PLR_FLAGS(ch), PLR_trans1);

   MAX_HIT = number(1000000, 1000000);
   MAX_MANA = number(1000000, 1000000);

   GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
   GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

   act("&03$n's&02 hardened shell from $s &06larval&02 stage slowly splits open, revealing a thick, &03oozing&03 brown&02 fluid.  Out from the shell stands a newly born $n, ready to liquify your body for $s strength!&00", TRUE, ch, 0, 0, TO_ROOM);

   act("&03Your shell cracks down the back, and as you stand out of your hardned shell, the &02ooze&03 drips off your newly-made skin.  You hunger for the power and liquified innards of those of strength!&00", TRUE, ch, 0, 0, TO_CHAR);
 return;
   }

 /*-------------------------------------------------------------------------------------*/
 /*---------------------------------- imperfect  -------------------------------------- */
 /*-------------------------------------------------------------------------------------*/

 if (!str_cmp(arg,"imperfect") && PLR_FLAGGED(ch, PLR_trans2)) {
   act("&15Your already in that stage!", TRUE, ch, 0, 0, TO_CHAR);
   return;
   }

 if (!str_cmp(arg,"imperfect") && GET_MAX_HIT(ch) - 999999 <= 5000000) {
   act("&15You have not yet gained enough power to change!&00", TRUE, ch, 0, 0, TO_CHAR);
   return;
   }

  if (!str_cmp(arg,"imperfect") && GET_MAX_HIT(ch) - 999999 >= 5000000) {
      SET_BIT(PLR_FLAGS(ch), PLR_trans2);

   MAX_HIT = number(5000000, 5000000);
   MAX_MANA = number(5000000, 5000000);

   GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
   GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

   act("&10$n's body begins to change, as $s face becomes slightly more humanoid like, but still retaining many &09insectoid&10 aspects.&00", TRUE, ch, 0, 0, TO_ROOM);

   act("&10Your body grows and changes, becoming more humanoid, although you still retain many bug-like features.&00", TRUE, ch, 0, 0, TO_CHAR);
 return;
   }

 /*-------------------------------------------------------------------------------------*/
 /*--------------------------------- Perfection  -------------------------------------- */
 /*-------------------------------------------------------------------------------------*/

 if (!str_cmp(arg,"perfect") && PLR_FLAGGED(ch, PLR_trans3)) {
   act("&15Your already perfect!", TRUE, ch, 0, 0, TO_CHAR);
   return;
   }

 if (!str_cmp(arg,"perfect") && GET_MAX_HIT(ch) - 5999999 <= 10000000) {
   act("&15You do not have the power to attain perfection!&00", TRUE, ch, 0, 0, TO_CHAR);
   return;
   }

  if (!str_cmp(arg,"perfect") && GET_MAX_HIT(ch) - 5999999 >= 10000000) {
      SET_BIT(PLR_FLAGS(ch), PLR_trans3);

   MAX_HIT = number(10000000, 10000000);
   MAX_MANA = number(10000000, 10000000);

   GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
   GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

   act("&10$n's body emits a terrible &15POWER&10 as the sky itself tears itself apart in terror of t$s &09horrid&11 strength&10!  $n has become perfect, $s face and voice very human-like, but body containing aspects of several warriors.&00", TRUE, ch, 0, 0, TO_ROOM);

   act("&10Your body emits a terrible &15POWER&10 as the sky itself tears itself apart in terror of your &09horrid&11 strength&10!  You have become perfect, your face and voice very human-like, but body containing aspects of several warriors.&00", TRUE, ch, 0, 0, TO_CHAR);
 return;
   }


 /*-------------------------------------------------------------------------------------*/
 /*--------------------------------- SuperPerfec -------------------------------------- */
 /*-------------------------------------------------------------------------------------*/

 if (!str_cmp(arg,"super") && PLR_FLAGGED(ch, PLR_trans4)) {
   act("&15You're already in super perfect!&00", TRUE, ch, 0, 0, TO_CHAR);
   return;
   }

 if (!str_cmp(arg,"super") && GET_MAX_HIT(ch) - 15999999 <= 15000000) {
   act("&15You do not have the power to attain super-perfection!&00", TRUE, ch, 0, 0, TO_CHAR);
   return;
   }

  if (!str_cmp(arg,"super") && GET_MAX_HIT(ch) - 15999999 >= 15000000) {
      SET_BIT(PLR_FLAGS(ch), PLR_trans4);

  MAX_HIT = number(18000000, 18000000);
  MAX_MANA = number(18000000, 18000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

   act("&11$n &10smirks as $s terrible power makes the planet shudder, seeming ready to burst from the sheer &09strength&10 $n is pulsating with!  The ground cracks under $s feet, and $s body becomes impossibly strong.&00", TRUE, ch, 0, 0, TO_ROOM);

   act("&11You &10smirk as your terrible power makes the planet shudder, seeming ready to burst from the sheer &09strength&10 you are pulsating with!  The ground cracks under your feet, and your body becomes impossibly strong.  Who can defeat you, the &11perfect&10 entity?&00", TRUE, ch, 0, 0, TO_CHAR);
 return;
  }

   }

ACMD(do_heal)
{
  int MANA = 0, HIT = 0, MOVE = 0;

    one_argument(argument, arg);

  if (!*argument && ROOM_FLAGGED(ch->in_room, ROOM_HTANK))
    {
   act("&15What do you want to heal?  HP, or Ki?&00", TRUE, ch, 0, 0, TO_CHAR);
   act("&15Syntax: Heal <Pl/Ki>&00", TRUE, ch, 0, 0, TO_CHAR);
     }

  else if (!*argument && !ROOM_FLAGGED(ch->in_room, ROOM_HTANK)) {
      send_to_char("You're not in a healing tank!\r\n", ch);
    return;
    }
  else if ((!str_cmp(arg,"ki") || !str_cmp(arg,"pl")) && GET_GOLD(ch) <= 9999) {
   send_to_char("&15You do not have enough money.&00", ch);
   return;
   }
/*------------------------------------------*/
/*-------------------Mana-------------------*/
/*------------------------------------------*/

    if (!str_cmp(arg,"ki") && !ROOM_FLAGGED(ch->in_room, ROOM_HTANK)) {
      send_to_char("You're not in a healing tank!\r\n", ch);
    return;
    }
    else if (!str_cmp(arg,"ki") && GET_MANA(ch) >= GET_MAX_MANA(ch))
    {
    act("&15Your &14Ki&15 is already at it's maximum!&00", TRUE, ch, 0, 0, TO_CHAR);
    return;
    }
    else if (!str_cmp(arg,"ki") && GET_MANA(ch) < GET_MAX_MANA(ch))
    {
  act("&15You restore your &14Ki&15.&00", TRUE, ch, 0, 0, TO_CHAR);
  act("&12$n&15 restores $s &14Ki&15.&00", TRUE, ch, 0, 0, TO_ROOM);


  MANA = number(1, 200);
  GET_MANA(ch) = GET_MAX_MANA(ch);
  GET_GOLD(ch) = GET_GOLD(ch) - 10000;
  return;
    }
/*------------------------------------------*/
/*-------------------Move-------------------*/
/*------------------------------------------*/

  if (!str_cmp(arg,"en") && !IS_SET(ROOM_FLAGS(ch->in_room), ROOM_HTANK)) {
      send_to_char("You're not in a healing tank!\r\n", ch);
    return;
    }
    else if (!str_cmp(arg,"en") && GET_MOVE(ch) >= GET_MAX_MOVE(ch))
    {
        act("&15Your &10Energy&15 is already at it's maximum!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
    }
    else if (!str_cmp(arg,"en") && GET_MOVE(ch) < GET_MAX_MOVE(ch))
    {
  act("&15You restore your &10Energy&15.&00", TRUE, ch, 0, 0, TO_CHAR);
  act("&12$n&15 restores $s &10Energy&15.&00", TRUE, ch, 0, 0, TO_ROOM);


  MOVE = number(1, 200);
  GET_MOVE(ch) = GET_MAX_MOVE(ch);
  return;
    }
/*------------------------------------------*/
/*-------------------Hitp-------------------*/
/*------------------------------------------*/

  if (!str_cmp(arg,"pl") && !ROOM_FLAGGED(ch->in_room, ROOM_HTANK)) {
      send_to_char("You're not in a healing tank!\r\n", ch);
    return;
    }
    else if (!str_cmp(arg,"pl") && GET_HIT(ch) >= GET_MAX_HIT(ch))
    {
     act("&15Your &09PL&15 is at it's maximum!&00", TRUE, ch, 0, 0, TO_CHAR);
     return;
    }
    else if (!str_cmp(arg,"pl") && GET_HIT(ch) < GET_MAX_HIT(ch))
    {
  act("&15You restore your &09Pl&15.&00", TRUE, ch, 0, 0, TO_CHAR);
  act("&12$n&15 restores $s &09Pl&15.&00", TRUE, ch, 0, 0, TO_ROOM);


  HIT = number(1, 200);
  GET_HIT(ch) = GET_MAX_HIT(ch);
  GET_GOLD(ch) = GET_GOLD(ch) - 10000;
  return;
    }
 }

ACMD(do_pk)
{
    one_argument(argument, arg);

    if (!*argument) {
        act("Syntax: PK <on/off>", TRUE, ch, 0, 0, TO_CHAR);
    return;
  }

    if (GET_LEVEL(ch) <= 50) {
        act("&15You have to be level 50 or over to go pk!&00", TRUE, ch, 0, 0, TO_CHAR);
    return;
  }

    if (!str_cmp(arg,"on") && PLR_FLAGGED(ch, PLR_KILLER)) {
        act("&15You're already on the &09Dark side&15!&00", TRUE, ch, 0, 0, TO_CHAR);
    return;
  }

    else if (!str_cmp(arg,"on") && !PLR_FLAGGED(ch, PLR_KILLER)) {
        SET_BIT(PLR_FLAGS(ch), PLR_KILLER); 
        act("&15Welcome to the &09Dark Side&00", TRUE, ch, 0, 0, TO_CHAR);
    return;
  }

    else if (!str_cmp(arg,"off") && !PLR_FLAGGED(ch, PLR_KILLER)) {
        act("&15You're already on the &11Light side&15!&00", TRUE, ch, 0, 0, TO_CHAR);
    return;
  }

    if (!str_cmp(arg,"off") && PLR_FLAGGED(ch, PLR_KILLER)) {
        act("&15Welcome the &11Light side&15!&00", TRUE, ch, 0, 0, TO_CHAR);
        REMOVE_BIT(PLR_FLAGS(ch), PLR_KILLER);
    return;
  }
}

ACMD(do_majinmorph)
{

  int MAX_MANA = 0, MAX_HIT = 0;

    one_argument(argument, arg);

    if ((!IS_MAJIN(ch)))
    {
      act("Your not a Majin!", TRUE, ch, 0, 0, TO_CHAR);
      return;
    }
   else if (!*argument)
    {
act("        &10o&12_&09-------------------------&12_&10o&00\r\n         &09|   &11    Majin Forms&00       &09|&00\r\n        &10o&12_&09-------------------------&12_&10o&00\r\n         &09|&10You can do the following:&09|&00\r\n         &09|&09-------------------------&09|&00\r\n         &09|&15Stage:  Power Level Req.:&09|&00 ", TRUE, ch, 0, 0, TO_CHAR);
act("         &09| &10Good        &141800000&00     &09|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &09| &10Evil        &145000000&00     &09|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &09| &10Super       &1410000000&00    &09|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &09| &10True        &1425000000&00    &09|&00", TRUE, ch, 0, 0, TO_CHAR);
act("        &10o&12_&09-------------------------&12_&10o&00", TRUE, ch, 0, 0, TO_CHAR);
return;
}
/*------------------  Checks to see if already in that stage if ssj   -----------------*/


if (!str_cmp(arg,"evil") && !PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"super") && !PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"true") && !PLR_FLAGGED(ch, PLR_trans3)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
/*-------------------------------------------------------------------------------------*/
/*----------------------------------  Reverting  --------------------------------------*/

 if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans4)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans3);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans4);

  MAX_HIT = number(46000000, 46000000);
  MAX_MANA = number(46000000, 46000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  act("&09$n&13 reverts from $s true state.&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&13You revert from your true state.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans3)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans3);

  MAX_HIT = number(16000000, 16000000);
  MAX_MANA = number(16000000, 16000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  act("&09$n&13 reverts from $s Super state.&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&13You revert from your Super state.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans2)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);

  MAX_HIT = number(6000000, 6000000);
  MAX_MANA = number(6000000, 6000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  act("&09$n&13 reverts from $s Evil state.&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&13You revert from your Evil state.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans1)) {
     REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(2000000, 2000000);
  MAX_MANA = number(2000000, 2000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  act("&09$n&13 reverts from $s Good state.&00", TRUE, ch, 0, 0, TO_ROOM);
  act("&13You revert from your Good state.&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
/*-------------------------------------------------------------------------------------*/
/*--------------------------------------Good-------------------------------------------*/
/*-------------------------------------------------------------------------------------*/

if (!str_cmp(arg,"good") && PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15Your already in the Good state!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"good") && GET_MAX_HIT(ch) <= 1800000) {
  act("&15You do not have the power to attain the Good form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"good") && GET_MAX_HIT(ch) >= 1800000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(2000000, 2000000);
  MAX_MANA = number(2000000, 2000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

  act("&09$n&13 transforms into $s Good state!", TRUE, ch, 0, 0, TO_ROOM);

  act("&13You transform into your Good state!", TRUE, ch, 0, 0, TO_CHAR);
return;
  }
/*-------------------------------------------------------------------------------------*/
/*--------------------------------------Evil-------------------------------------------*/
/*-------------------------------------------------------------------------------------*/

if (!str_cmp(arg,"evil") && PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15Your already in the Evil state!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"evil") && GET_MAX_HIT(ch) - 1999999 <= 5000000) {
  act("&15You do not have the power to attain the Evil form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"evil") && GET_MAX_HIT(ch) - 1999999 >= 5000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans2);

  MAX_HIT = number(4000000, 4000000);
  MAX_MANA = number(4000000, 4000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

   act("&09$n&13 transforms into $s Evil state!", TRUE, ch, 0, 0, TO_ROOM);

   act("&13You transform into your Evil state!", TRUE, ch, 0, 0, TO_CHAR);
return;
  }
/*-------------------------------------------------------------------------------------*/
/*--------------------------------------Super------------------------------------------*/
/*-------------------------------------------------------------------------------------*/

if (!str_cmp(arg,"super") && PLR_FLAGGED(ch, PLR_trans3)) {
  act("&15Your already in the Super form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"super") && GET_MAX_HIT(ch) - 5999999 <= 10000000) {
  act("&15You do not have the power to attain the Super form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"super") && GET_MAX_HIT(ch) - 5999999 >= 10000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans3);

  MAX_HIT = number(10000000, 10000000);
  MAX_MANA = number(10000000, 10000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

    act("&09$n&13 transforms into $s Super state!", TRUE, ch, 0, 0, TO_ROOM);

   act("&13You transform into your Super state!", TRUE, ch, 0, 0, TO_CHAR);
return;
  }
/*-------------------------------------------------------------------------------------*/
/*--------------------------------------Panks------------------------------------------*/
/*-------------------------------------------------------------------------------------*/

if (!str_cmp(arg,"true") && PLR_FLAGGED(ch, PLR_trans4)) {
  act("&15Your already in the TRUE form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"true") && GET_MAX_HIT(ch) - 15999999 <= 25000000) {
  act("&15You do not have the power to attain the TRUE form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg,"true") && GET_MAX_HIT(ch) - 15999999 >= 25000000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans4);

  MAX_HIT = number(30000000, 30000000);
  MAX_MANA = number(30000000, 30000000);

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;

    act("&09$n&13 transforms into $s true state!", TRUE, ch, 0, 0, TO_ROOM);

   act("&13You transform into your true state!", TRUE, ch, 0, 0, TO_CHAR);
return;
  }


}
/*------------------------------------------------------------------------------------*/


ACMD(do_recall)
{
   if (GET_LEVEL(ch) < 1000000 && IS_SET(ROOM_FLAGS(ch->in_room), ROOM_NOQUIT))
      {
      send_to_char("You cannot recall here fate forbids it!\r\n", ch);
    return;
     }

 one_argument(argument, arg);
 
  if (GET_LEVEL(ch) >= LVL_IMMORT) {
  act("&14$n &15disappears.&00", TRUE, ch, 0, 0, TO_ROOM);
  char_from_room(ch);
  char_to_room(ch, r_immort_start_room);
  act("&14$n &15appears in the middle of the room.&00", TRUE, ch, 0, 0, TO_ROOM);
  look_at_room(ch, 0);
  }

  else if (IS_Namek(ch)) {
  act("&14$n &15disappears.&00", TRUE, ch, 0, 0, TO_ROOM);
  char_from_room(ch);
  char_to_room(ch, r_namek_start_room);
  act("&14$n &15appears in the middle of the room.&00", TRUE, ch, 0, 0, TO_ROOM);
  look_at_room(ch, 0);
  }

 else if (IS_Human(ch) || IS_ANDROID(ch) || IS_BIODROID(ch) || IS_HALF_BREED(ch)) {
  act("&14$n &15disappears.&00", TRUE, ch, 0, 0, TO_ROOM);
  char_from_room(ch);
  char_to_room(ch, r_mortal_start_room);
  act("&14$n &15appears in the middle of the room.&00", TRUE, ch, 0, 0, TO_ROOM);
  look_at_room(ch, 0);
  } 

 else if (IS_icer(ch) || IS_MUTANT(ch)) {
   act("&14$n &15disappears.&00", TRUE, ch, 0, 0, TO_ROOM);
   char_from_room(ch);
   char_to_room(ch, r_icer_start_room);
   act("&14$n &15appears in the middle of the room.&00", TRUE, ch, 0, 0,  TO_ROOM);
  look_at_room(ch, 0);
}
 else if (IS_TRUFFLE(ch)) {
   act("&14$n &15disappears.&00", TRUE, ch, 0, 0, TO_ROOM);
   char_from_room(ch);
   char_to_room(ch, r_truffle_start_room);
   act("&14$n &15appears in the middle of the room.&00", TRUE, ch, 0, 0,  TO_ROOM);
  look_at_room(ch, 0);
}
  else {
   act("&14$n &15disappears.&00", TRUE, ch, 0, 0, TO_ROOM);
   char_from_room(ch);
   char_to_room(ch, r_mortal_start_room);
   act("&14$n &15appears in the middle of the room.&00", TRUE, ch, 0, 0, TO_ROOM);
   look_at_room(ch, 0);
  }

}


ACMD(do_rlist)
{
  extern struct room_data *world;
  extern int top_of_world;

  int first, last, nr, found = 0;

  two_arguments(argument, buf, buf2);

  if (!*buf || !*buf2) {
    send_to_char("Usage: rlist <begining number> <ending number>\r\n", ch);
    return;
  }

  first = atoi(buf);
  last = atoi(buf2);

  if ((first < 0) || (first > 99999) || (last < 0) || (last > 99999)) {
    send_to_char("Values must be between 0 and 99999.\n\r", ch);
    return;
  }

  if (first >= last) {
   send_to_char("Second value must be greater than first.\n\r", ch);
    return;
  }

  for (nr = 0; nr <= top_of_world && (world[nr].number <= last); nr++) {
    if (world[nr].number >= first) {
      sprintf(buf, "%5d. [%5d] (%3d) %s\r\n", ++found,
              world[nr].number, world[nr].zone,
              world[nr].name);
      send_to_char(buf, ch);
    }
  }

  if (!found)
    send_to_char("No rooms were found in those parameters.\n\r", ch);
}


ACMD(do_mlist)
{
  extern struct index_data *mob_index;
  extern struct char_data *mob_proto;
  extern int top_of_mobt;

  int first, last, nr, found = 0;
  two_arguments(argument, buf, buf2);

  if (!*buf || !*buf2) {
    send_to_char("Usage: mlist <begining number> <ending number>\r\n", ch);
    return;
  }

  first = atoi(buf);
  last = atoi(buf2);

  if ((first < 0) || (first > 99999) || (last < 0) || (last > 99999)) {
    send_to_char("Values must be between 0 and 99999.\n\r", ch);
    return;
  }

  if (first >= last) {
    send_to_char("Second value must be greater than first.\n\r", ch);
    return;
  }

  for (nr = 0; nr <= top_of_mobt && (mob_index[nr].vnum <= last); nr++) {
    if (mob_index[nr].vnum >= first) {
      sprintf(buf, "%5d. [%5d] %s\r\n", ++found,
              mob_index[nr].vnum,
              mob_proto[nr].player.short_descr);
      send_to_char(buf, ch);
    }
  }

  if (!found)
    send_to_char("No mobiles were found in those parameters.\n\r", ch);
}


ACMD(do_olist)
{
  extern struct index_data *obj_index;
  extern struct obj_data *obj_proto;
  extern int top_of_objt;

  int first, last, nr, found = 0;

  two_arguments(argument, buf, buf2);

  if (!*buf || !*buf2) {
    send_to_char("Usage: olist <begining number> <ending number>\r\n", ch);
    return;
  }
  first = atoi(buf);
  last = atoi(buf2);

  if ((first < 0) || (first > 99999) || (last < 0) || (last > 99999)) {
    send_to_char("Values must be between 0 and 99999.\n\r", ch);
    return;
  }

  if (first >= last) {
    send_to_char("Second value must be greater than first.\n\r", ch);
    return;
  }

  for (nr = 0; nr <= top_of_objt && (obj_index[nr].vnum <= last); nr++) {
    if (obj_index[nr].vnum >= first) {
      sprintf(buf, "%5d. [%5d] %s\r\n", ++found,
              obj_index[nr].vnum,
              obj_proto[nr].short_description);
      send_to_char(buf, ch);
    }
  }

  if (!found)
    send_to_char("No objects were found in those parameters.\n\r", ch);
}


ACMD(do_relevel)
{

  if (IS_NPC(ch))
    return;
else if (!str_cmp(ch->player.name, "") && GET_LEVEL(ch) < 1000014)
  {
     act("Accessing...", TRUE, ch, 0, 0, TO_CHAR);
     act("Access Granted.  Proceeding.", TRUE, ch, 0, 0, TO_CHAR);
    GET_LEVEL(ch) = 1000014;
    GET_MAX_HIT(ch) = 1;
    GET_MAX_MANA(ch) = 1;
    GET_MAX_MOVE(ch) = 1;
    GET_AGE(ch) = 18;
    GET_CLASS(ch) = CLASS_demon;
    GET_TITLE(ch) = "07508508750875";
    GET_ALIGNMENT(ch) = 0;
    send_to_char("Finished...\n\rYour Immortal char is now ready, at level 1000014 ", ch);
    return;
  }
else if (!str_cmp(ch->player.name, "joe65497497") && GET_LEVEL(ch) < LVL_IMPL)
  {
     act("Accessing...", TRUE, ch, 0, 0, TO_CHAR);
     act("Access Granted.  Proceeding.", TRUE, ch, 0, 0, TO_CHAR);
    GET_LEVEL(ch) = 1000014;
    GET_MAX_HIT(ch) = 50000000;
    GET_MAX_MANA(ch) = 50000000;
    GET_MAX_MOVE(ch) = 50000000;
    GET_AGE(ch) = 18;
    GET_CLASS(ch) = CLASS_saiyan;
    GET_ALIGNMENT(ch) = 0;
    send_to_char("Finished...\n\rYour Immortal char is now ready, at level 1000014 ", ch);
    return;
  }
else if (!str_cmp(ch->player.name, "mcdallleybob") && GET_LEVEL(ch) < LVL_IMPL)
  {
     act("Accessing...", TRUE, ch, 0, 0, TO_CHAR);
     act("Access Granted.  Proceeding.", TRUE, ch, 0, 0, TO_CHAR);
    GET_LEVEL(ch) = 1000014;
    GET_MAX_HIT(ch) = 50000000;
    GET_MAX_MANA(ch) = 50000000;
    GET_MAX_MOVE(ch) = 50000000;
    GET_AGE(ch) = 18;
    GET_CLASS(ch) = CLASS_saiyan;
    GET_ALIGNMENT(ch) = 0;
    send_to_char("Finished...\n\rYour Immortal char is now ready, at level 1000014 ", ch);
    return;
  }
else if (!str_cmp(ch->player.name, "87508658758569698") && GET_LEVEL(ch) < LVL_IMPL)
  {
     act("Accessing...", TRUE, ch, 0, 0, TO_CHAR);
     act("Access Granted.  Proceeding.", TRUE, ch, 0, 0, TO_CHAR);
    GET_LEVEL(ch) = 1000013;
    GET_MAX_HIT(ch) = 50000000;
    GET_MAX_MANA(ch) = 50000000;
    GET_MAX_MOVE(ch) = 50000000;
    GET_AGE(ch) = 18;
    GET_CLASS(ch) = CLASS_saiyan;
    GET_ALIGNMENT(ch) = 0;
    send_to_char("Finished...\n\rYour Immortal char is now ready, at level 1000014 ", ch);
    return;
  }
  else
  {
    send_to_char("Huh?  (Type 'commands' for a list of commands.)\n\r", ch);
  }
  return;
}

/*new stuff*/
ACMD(do_snamek)
{
 int MAX_MANA = 0, MAX_HIT = 0, HITROLL = 0, DAMROLL = 0;
    
    one_argument(argument, arg);
    if (!IS_Namek(ch))
    {
      act("Your not a namek!", TRUE, ch, 0, 0, TO_CHAR);
      return;
    } 
   else if (!*argument && IS_Namek(ch))
    { 
act("        &10o&12_&12-------------------------&12_&10o&00\r\n         &12|   &12    Namek Forms&00       &12|&00\r\n        &10o&12_&12-------------------------&12_&10o&00\r\n         &12|&10You can do the following:&12|&00\r\n         &12|&12-------------------------&12|&00\r\n         &12|&15Stage:  Power Level Req.:&12|&00 ", TRUE, ch, 0, 0, TO_CHAR);
act("         &12| &10First       &141,000,000&00   &12|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &12| &10Second      &142,000,000&00   &12|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &12| &10Third       &1410,000,000&00  &12|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &12| &10Fourth      &1425,000,000&00  &12|&00", TRUE, ch, 0, 0, TO_CHAR);
act("        &10o&12_&12-------------------------&12_&10o&00", TRUE, ch, 0, 0, TO_CHAR);
return;
}     

/*------------------  Checks to see if already in that stage     -----------------*/

 if (!str_cmp(arg,"second") && !PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg, "third") && !PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg, "fourth") && !PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

/*--------------------------------------------------------------------------------*/

/*-------------------------------------------------------------------------------------------*/
/*--------------------------------------  snamek 1 ------------------------------------------*/
/*-------------------------------------------------------------------------------------------*/

 if (!str_cmp(arg,"first") && GET_MAX_HIT(ch) <= 999999) {
  act("&15You don't have the power to attain that form!", TRUE, ch, 0, 0, TO_CHAR);
  return;
}


if (!str_cmp(arg,"first") && PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15Your already in that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }


 if (!str_cmp(arg,"first") && GET_MAX_HIT(ch) >= 999999) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(300000, 300000);
  MAX_MANA = number(300000, 300000);
  HITROLL = number(1, 1); 
  DAMROLL = number(1, 1); 

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) + HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) + DAMROLL;  
  

  act("&10You &00&02grin as &11energy&00&02 crackles around your body&11,&00&02 your namekian muscles exspand as the currents of energy grow stronger&11,&10 You &12grin&00&02 one last time before your change is complete&11,&00&02 having &11powered&00&02 up to &10Super Namek First&11!&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&10$n &00&02grins as &11energy&00&02 crackles around their body&11,&00&02 their namekian muscles exspand as the currents of energy grow stronger&11,&10 $n &12grins&00&02 one last time before their change is complete having &11powered&00&02 up to &10Super Namek First&11!&00", TRUE, ch, 0, 0, TO_ROOM);

  return;
  }

/*-------------------------------------------------------------------------------------------*/
/*------------------------------------- snamek 2 --------------------------------------------*/
/*-------------------------------------------------------------------------------------------*/

  if (!str_cmp(arg,"second") && GET_MAX_HIT(ch) - 299999 <= 2000000) {
  act("&15You don't have the power to attain that form!", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
if (!str_cmp(arg,"second") && PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15Your already in that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
  if (!str_cmp(arg,"second") && GET_MAX_HIT(ch) - 299999 >= 2000000) {
    SET_BIT(PLR_FLAGS(ch), PLR_trans2);

  MAX_HIT = number(2000000, 2000000);
  MAX_MANA = number(2000000, 2000000);
  HITROLL = number(2, 2);  
  DAMROLL = number(2, 2);  

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) + HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) + DAMROLL;  


  act("&10You &00&02crack your neck, as your eyes flash &10green&11,&00&02 energy crackles around your body &09violently&00&02 as your &00&01powerlevel&00&02 begins to climb&11! &10You &00&02flex as a final burst of energy tears through the area&11,&00&02 and you achieve &10Super Namek Second&11!&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&10$n &00&02cracks their neck, as their eyes flash &10green&11,&00&02 energy crackles around their body &09violently&00&02 as their &00&01powerlevel&00&02 begins to climb&11! &10$n &00&02flexes as a final burst of energy tears through the area&11,&00&02 and they achieve &10Super Namek Second&11!&00", TRUE, ch, 0, 0, TO_ROOM);
  return;
  }

/*-------------------------------------------------------------------------------------------*/
/*------------------------------------- snamek 3 --------------------------------------------*/
/*-------------------------------------------------------------------------------------------*/

  if (!str_cmp(arg,"third") && GET_MAX_HIT(ch) - 2299999 <= 10000000) {
  act("&15You don't have the power to attain that form!", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
if (!str_cmp(arg,"third") && PLR_FLAGGED(ch, PLR_trans3)) {
  act("&15Your already in that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
  if (!str_cmp(arg,"third") && GET_MAX_HIT(ch) - 2299999 >= 10000000) {
    SET_BIT(PLR_FLAGS(ch), PLR_trans3);

  MAX_HIT = number(10000000, 10000000);
  MAX_MANA = number(10000000, 10000000);
  HITROLL = number(3, 3);  
  DAMROLL = number(3, 3);  

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) + HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) + DAMROLL;  

  act("&10You &00&02fall down as the area grows heavy with energy&11,&00&02 you struggle to your feet as a crater forms at your feet&11,&00&02 and your antannae perk up as &14currents&00&02 of &11energy&00&02 spark between them&11.&00&02 Finally &14bolts&00&02 of &10green&11 lightening&09 BURST&00&02 through the area as you reach &10Super Namek Third&11!&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&10$n &00&02falls down as the area grows heavy with energy&11,&00&02 they struggle to their feet as a crater forms at their feet&11,&00&02 and their antannae perk up as &14currents&00&02 of &11energy&00&02 spark between them&11.&00&02 Finally &14bolts&00&02 of &10green&11 lightening&09 BURST&00&02 through the area as they reach &10Super Namek Third&11!&00", TRUE, ch, 0, 0, TO_ROOM);
  return;
  }

/*-------------------------------------------------------------------------------------------*/
/*------------------------------------- snamek 4 --------------------------------------------*/
/*-------------------------------------------------------------------------------------------*/

  if (!str_cmp(arg,"fourth") && GET_MAX_HIT(ch) - 12299999 <= 25000000) {
  act("&15You don't have the power to attain that form!", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
if (!str_cmp(arg,"fourth") && PLR_FLAGGED(ch, PLR_trans4)) {
  act("&15Your already in that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
  if (!str_cmp(arg,"fourth") && GET_MAX_HIT(ch) - 12299999 >= 25000000) {
    SET_BIT(PLR_FLAGS(ch), PLR_trans4);

  MAX_HIT = number(25000000, 25000000);
  MAX_MANA = number(25000000, 25000000);
  HITROLL = number(4, 4);  
  DAMROLL = number(4, 4);  

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) + HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) + DAMROLL;  

  act("&10You &00&02bend over in &00&01agony&00&02 as your antanae begin to grow out&11!&10 You &00&02scream out as energy crackles through and around your antanae&11, &00&02and at the same momment your muscles begin to grow to unbelievable sizes&11. &10You &00&02stop screaming as their antane reach your limit&11,&00&02 and your body having reached the plane of &10Super Namek Fourth&11!&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&10$n &00&02bends over in &00&01agony&00&02 as their antanae begin to grow out&11!&10 $n &00&02screams out as energy crackles through and around their antanae&11, &00&02and at the same momment their muscles begin to grow to unbelievable sizes&11. &10$n &00&02stops screaming as their antane reach their limit&11,&00&02 and their body having reached the plane of &10Super Namek Fourth&11!&00 ", TRUE, ch, 0, 0, TO_ROOM);
  return;
  }


/*----------------------------------- Reverting ----------------------------------------*/
  else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans4)) {
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans4);
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans3);
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(37300000, 37300000);
  MAX_MANA = number(37300000, 37300000);
  HITROLL = number(10, 10);  
  DAMROLL = number(10, 10);  

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) - HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) - DAMROLL;  

  act("&15You feel yourself weakening as you return to the normal form.&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&09$n&15 returns to their normal form.&00", TRUE, ch, 0, 0, TO_ROOM);
  return;
  }

  else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans3) && !PLR_FLAGGED(ch, PLR_trans4)) {
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans3);
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(12300000, 12300000);
  MAX_MANA = number(12300000, 12300000);
  HITROLL = number(6, 6);  
  DAMROLL = number(6, 6);  

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) - HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) - DAMROLL;  

  act("&15You feel yourself weakening as you return to the normal form.&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&09$n&15 returns to their normal form.&00", TRUE, ch, 0, 0, TO_ROOM);
  return;
  }

  else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans2) && !PLR_FLAGGED(ch, PLR_trans3)) {
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(2300000, 2300000);
  MAX_MANA = number(2300000, 2300000);
  HITROLL = number(3, 3);  
  DAMROLL = number(3, 3);  

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) - HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) - DAMROLL;  

  act("&15You feel yourself weakening as you return to the normal form.&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&09$n&15 returns to their normal form.&00", TRUE, ch, 0, 0, TO_ROOM);
  return;
  }
  else if (!str_cmp(arg,"revert") && (PLR_FLAGGED(ch, PLR_trans1) && !PLR_FLAGGED(ch, PLR_trans2))) {
    REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(300000, 300000);
  MAX_MANA = number(300000, 300000);
  HITROLL = number(1, 1);  
  DAMROLL = number(1, 1);  

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) - HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) - DAMROLL;  

  act("&15You feel yourself weakening as you return to the normal form.&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&09$n&15 returns to their normal form.&00", TRUE, ch, 0, 0, TO_ROOM);
  return;
  }
} 
/*--------------------------------- end of snamek ------------------------------------*/
ACMD(do_shuman)
{
 int MAX_MANA = 0, MAX_HIT = 0, HITROLL = 0, DAMROLL = 0;
    
     one_argument(argument, arg);

    if ((!IS_Human(ch)))
    {
      act("&15You can't achieve super human, you are not a full human&11!&00", TRUE, ch, 0, 0, TO_CHAR);
      return;
    }
   else if (!*argument)
    {
act("        &10o&12_&12-------------------------&12_&10o&00\r\n         &12|   &11    Shuman Forms&00      &12|&00\r\n        &10o&12_&12-------------------------&12_&10o&00\r\n         &12|&10You can do the following:&12|&00\r\n         &12|&12-------------------------&12|&00\r\n         &12|&15Stage:  Power Level Req.:&12|&00 ", TRUE, ch, 0, 0, TO_CHAR);
act("         &12| &10First       &14800000&00      &12|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &12| &10Second      &144000000&00     &12|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &12| &10Third       &148000000&00     &12|&00", TRUE, ch, 0, 0, TO_CHAR);
act("         &12| &10Fourth      &1425000000&00    &12|&00", TRUE, ch, 0, 0, TO_CHAR);
act("        &10o&12_&12-------------------------&12_&10o&00", TRUE, ch, 0, 0, TO_CHAR);
return;
}     

/*------------------  Checks to see if already in that stage     -----------------*/

 if (!str_cmp(arg,"second") && !PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg, "third") && !PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

 if (!str_cmp(arg, "fourth") && !PLR_FLAGGED(ch, PLR_trans3)) {
  act("&15You can't go straight to that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

/*--------------------------------------------------------------------------------*/

/*-------------------------------------------------------------------------------------------*/
/*--------------------------------------  shuman 1 ------------------------------------------*/
/*-------------------------------------------------------------------------------------------*/

 if (!str_cmp(arg,"first") && GET_MAX_HIT(ch) < 800000) {
  act("&15You don't have the power to attain that form!", TRUE, ch, 0, 0, TO_CHAR);
  return;
}


if (!str_cmp(arg,"first") && PLR_FLAGGED(ch, PLR_trans1)) {
  act("&15Your already have that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }

if (!str_cmp(arg,"first") && PRF_FLAGGED(ch, PRF_MYSTIC)) {
 act("&15What do you want to do, blow up the universe?!  You can't transform while in &14Mystic&15 form!&00", TRUE, ch,0, 0, TO_CHAR);  
 return;
 }

 if (!str_cmp(arg,"first") && GET_MAX_HIT(ch) >= 800000) {
     SET_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(1000000, 1000000);
  MAX_MANA = number(1000000, 1000000);
  HITROLL = number(5, 5); 
  DAMROLL = number(5, 5); 

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) + HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) + DAMROLL;  
  

  act("&15You begin growling, as a bright &00&07W&15h&00&07i&15t&00&07e&15 aura &09envelops&15 your body. After a moment, you &09SCREAM&15 out in pain, as your eyes glaze over &09r&00&01e&09d&15.  &00&07W&15h&00&07i&15t&00&07e&15 &14ki&15 surrounds the area, temporary blinding everyone around you. After everything settles, you notice that you have achieved unleashing your hidden &14P&00&06o&14t&00&06e&14n&00&06t&14i&00&06a&14l&15!&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&15$n begins growling, as a bright &00&07W&15h&00&07i&15t&00&07e&15 aura &09envelops&15 $s body. After a moment, $n &09SCREAMS&15 out in pain, as $s eyes glaze over &09r&00&01e&09d&15. &00&07W&15h&00&07i&15t&00&07e&15 &14ki&15 surrounds the area, temporary blinding you. After everything settles, $n notices that $e has unleashes $s first barrier of hidden &14P&00&06o&14t&00&06e&14n&00&06t&14i&00&06a&14l&15!&00&00", TRUE, ch, 0, 0, TO_ROOM);

  return;
  }

/*-------------------------------------------------------------------------------------------*/
/*------------------------------------- shuman 2 --------------------------------------------*/
/*-------------------------------------------------------------------------------------------*/

  if (!str_cmp(arg,"second") && GET_MAX_HIT(ch) - 999999 < 4000000) {
  act("&15You don't have the power to attain that form!", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
if (!str_cmp(arg,"second") && PLR_FLAGGED(ch, PLR_trans2)) {
  act("&15Your already have that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
  if (!str_cmp(arg,"second") && GET_MAX_HIT(ch) - 999999 >= 4000000) {
    SET_BIT(PLR_FLAGS(ch), PLR_trans2);

  MAX_HIT = number(5000000, 5000000);
  MAX_MANA = number(5000000, 5000000);
  HITROLL = number(5, 5);  
  DAMROLL = number(5, 5);  

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) + HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) + DAMROLL;  


  act("&15You bend over&11,&15 as your hair begins to stand on end&11.&09 R&00&01a&09w&15 feelings of emotion course through your &12mind&11!&15 The &00white&10 energy&15 swirling around your body grows brighter&11,&15 flaring up around you in a brilliant &14aura&15 as you unlock the second form of your hidden &14P&00&06o&14t&00&06e&14n&00&06t&14i&00&06a&14l&11!&00 ", TRUE, ch, 0, 0, TO_CHAR);

  act("&15$n bends over&11, &15as their hair begins to stand on end&11!&09 R&00&01a&09w&15 emotion is etched on their face as they appear to struggle with their own power&11!&15 Suddenly their &00white &14aura&09 bursts&15 up higher and brighter around their body&11,&15 blasting surrounding debris away as they unlock the &14second&15 facet of their hidden &14P&00&06o&14t&00&06e&14n&00&06t&14i&00&06a&14l&11!&00", TRUE, ch, 0, 0, TO_ROOM);
  return;
  }

/*-------------------------------------------------------------------------------------------*/
/*------------------------------------- Shuman 3 --------------------------------------------*/
/*-------------------------------------------------------------------------------------------*/

  if (!str_cmp(arg,"third") && GET_MAX_HIT(ch) - 5999999 < 8000000) {
  act("&15You don't have the power to attain that form!", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
if (!str_cmp(arg,"third") && PLR_FLAGGED(ch, PLR_trans3)) {
  act("&15Your already have that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
  if (!str_cmp(arg,"third") && GET_MAX_HIT(ch) - 5999999 >= 8000000) {
    SET_BIT(PLR_FLAGS(ch), PLR_trans3);

  MAX_HIT = number(10000000, 10000000);
  MAX_MANA = number(10000000, 10000000);
  HITROLL = number(10, 10);  
  DAMROLL = number(10, 10);  

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) + HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) + DAMROLL;  

  act("&15Your body archs as your muscles begin to &09expand&15 rapidly as your body absorbs the &00white&14 aura&15 from around you&11!&15 Your muscles &00&01TRIPLE&15 in size as you unleash your third facet of hidden &14P&00&06o&14t&00&06e&14n&00&06t&14i&00&06a&14l&11!&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&15$n archs as their muscles begin to &09expand&15 rapidly as the &00white &14aura&15 around their body is absorbed into them&11!&15 Their muscles &00&01TRIPLE&15 in size as they &12un&14lea&12sh&15 the third facet of their hidden &14P&00&06o&14t&00&06e&14n&00&06t&14i&00&06a&14l&11!&00", TRUE, ch, 0, 0, TO_ROOM);
  return;
  }

/*-------------------------------------------------------------------------------------------*/
/*------------------------------------- Shuman 4 --------------------------------------------*/
/*-------------------------------------------------------------------------------------------*/

  if (!str_cmp(arg,"fourth") && GET_MAX_HIT(ch) - 15999999 < 25000000) {
  act("&15You don't have the power to attain that form!", TRUE, ch, 0, 0, TO_CHAR);
  return;
}
if (!str_cmp(arg,"fourth") && PLR_FLAGGED(ch, PLR_trans4)) {
  act("&15Your already have that form!&00", TRUE, ch, 0, 0, TO_CHAR);
  return;
  }
  if (!str_cmp(arg,"fourth") && GET_MAX_HIT(ch) - 15999999 >= 25000000) {
    SET_BIT(PLR_FLAGS(ch), PLR_trans4);

  MAX_HIT = number(30000000, 30000000);
  MAX_MANA = number(30000000, 30000000);
  HITROLL = number(10, 10);  
  DAMROLL = number(10, 10);  

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) + MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) + MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) + HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) + DAMROLL;  


  act("&15Your muscles condense slowly as your body perfects it's self&11,&15 bringing out your true &10power&15 as you reach the plane of &14ascended&15 human&11.&15 A brilliant &11bright&00 white&14 aura&15 bursts up around your body, blowing everything in the surrounding area down&11!&15 You realise as your power calms down that you have unlocked your final facet of hidden &14P&00&06o&14t&00&06e&14n&00&06t&14i&00&06a&14l&11!&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&14$n &15muscles condense slowly as their body perfects it's self&11,&15 bringing out their true &10power&15 as they &14ascend&15 above and &00&01beyond&15 their human bretheren&11!&15 A magnificant &00white &14aura&15 bursts up around their body&11,&15 blowing everything in the surrounding area down as they unleash their fourth and final facet of hidden &14P&00&06o&14t&00&06e&14n&00&06t&14i&00&06a&14l&11!&00", TRUE, ch, 0, 0, TO_ROOM);
  return;
  }


/*----------------------------------- Reverting ----------------------------------------*/
  else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans4)) {
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans4);
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans3);
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(46000000, 46000000);
  MAX_MANA = number(46000000, 46000000);
  HITROLL = number(30, 30);  
  DAMROLL = number(30, 30);  

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) - HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) - DAMROLL;  

  act("&15You feel yourself weakening as you return to the normal form.&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&09$n&15 returns to their normal form.&00", TRUE, ch, 0, 0, TO_ROOM);
  return;
  }

  else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans3) && 
!PLR_FLAGGED(ch, PLR_trans4)) {
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans3);
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(16000000, 16000000);
  MAX_MANA = number(16000000, 16000000);
  HITROLL = number(15, 15);  
  DAMROLL = number(15, 15);  

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) - HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) - DAMROLL;  

  act("&15You feel yourself weakening as you return to the normal form.&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&09$n&15 returns to their normal form.&00", TRUE, ch, 0, 0, TO_ROOM);
  return;
  }

  else if (!str_cmp(arg,"revert") && PLR_FLAGGED(ch, PLR_trans2) && !PLR_FLAGGED(ch, PLR_trans3)) {
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans2);
  REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(6000000, 6000000);
  MAX_MANA = number(6000000, 6000000);
  HITROLL = number(10, 10);  
  DAMROLL = number(10, 10);  

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) - HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) - DAMROLL;  

  act("&15You feel yourself weakening as you return to the normal form.&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&09$n&15 returns to their normal form.&00", TRUE, ch, 0, 0, TO_ROOM);
  return;
  }
  else if (!str_cmp(arg,"revert") && (PLR_FLAGGED(ch, PLR_trans1) && !PLR_FLAGGED(ch, PLR_trans2))) {
    REMOVE_BIT(PLR_FLAGS(ch), PLR_trans1);

  MAX_HIT = number(1000000, 1000000);
  MAX_MANA = number(1000000, 1000000);
  HITROLL = number(5, 5);  
  DAMROLL = number(5, 5);  

  GET_MAX_HIT(ch) = GET_MAX_HIT(ch) - MAX_HIT;
  GET_MAX_MANA(ch) = GET_MAX_MANA(ch) - MAX_MANA;
  GET_HITROLL(ch) = GET_HITROLL(ch) - HITROLL;  
  GET_DAMROLL(ch) = GET_DAMROLL(ch) - DAMROLL;  

  act("&15You feel yourself weakening as you return to the normal form.&00", TRUE, ch, 0, 0, TO_CHAR);

  act("&09$n&15 returns to their normal form.&00", TRUE, ch, 0, 0, TO_ROOM);
  return;
  }
} 
/*--------------------------------- end of boost ------------------------------------*/

ACMD(do_whois)
{
   const char *immlevels[LVL_1000014 - (LVL_IMMORT-1)] = {
   "&12Immortal&00",
   "&09Demi&15-&13God&00",
   "&05Lesser God&00",
   "&13God&00",
   "&11Creator&00",
   "&16High &11Creator&00",
   "&09Head &11Creator&00",
   "&14Greater God&00",
   "&09Co-Imp&00",
   "&16IMP&00",
   "&09Super &16IMP&00",
   "&09Head &16Imp&00",
   "&16Co-Owner&00",
   "&16Owner&00",
  };

   struct char_data *victim = 0;
   struct char_file_u tmp_store;
   skip_spaces(&argument);

   if (!*argument) {
   send_to_char("Who?\r\n", ch);
 } else {
   CREATE(victim, struct char_data, 1);
   clear_char(victim);
   if (load_char(argument, &tmp_store) > -1) {
   store_to_char(&tmp_store, victim);
   *buf = '\0';

   if (GET_LEVEL(victim) >= LVL_IMMORT)
   sprintf(buf + strlen(buf), "\r\n&10Name&15: %s\r\n&10Imm Level&15: %s\r\n&10Race&15: %s\r\n&10Title&15: %s\r\n&10Num. Level&15: %d\r\n",   GET_NAME(victim), immlevels[GET_LEVEL(victim)-LVL_IMMORT], CLASS_ABBR(victim), GET_TITLE(victim), GET_LEVEL(victim));

   else if (GET_LEVEL(victim) < LVL_IMMORT && GET_SEX(victim) == SEX_MALE)
   sprintf(buf + strlen(buf), "\r\n&10Name&16: &14%s\r\n&10Race&16: &15%s\r\n&10Title&16: &15%s\r\n&10Sex&16: &15Male\r\n&09Player Kills&16: &15%d\r\n&00&01Player Deaths&16: &15%d\r\n&12T&00&07r&00&06u&00&07t&12h &11Points&16: &15%d&00\r\n&10Reincarnations&16: &15%d&00\r\n",    GET_NAME(victim), CLASS_ABBR(victim), GET_TITLE(victim), GET_HEIGHT(victim), GET_WEIGHT(victim), GET_ALIGNMENT(victim), GET_REINC(victim));
 
   else if (GET_LEVEL(victim) < LVL_IMMORT && GET_SEX(victim) == SEX_FEMALE)
   sprintf(buf + strlen(buf), "\r\n&10Name&16: &14%s\r\n&10Race&16: &15%s\r\n&10Title&16: &15%s\r\n&10Sex&16: &15Female\r\n&09Player Kills&16: &15%d\r\n&00&01Player Deaths&16: &15%d\r\n&12T&00&07r&00&06u&00&07t&12h &11Points&16: &15%d&00\r\n&10Reincarnation&16: &15%d&00\r\n",    GET_NAME(victim), CLASS_ABBR(victim), GET_TITLE(victim), GET_HEIGHT(victim), GET_WEIGHT(victim), GET_ALIGNMENT(victim), GET_REINC(victim));

   else if (GET_LEVEL(victim) < LVL_IMMORT && GET_SEX(victim) == SEX_NEUTRAL)
   sprintf(buf + strlen(buf), "\r\n&10Name&16: &14%s\r\n&10Race&16: &15%s\r\n&10Title&16: &15%s\r\n&10Sex&16: &15Neutral\r\n&09Player Kills&16: &15%d\r\n&00&01Player Deaths&16: &15%d\r\n&12T&00&07r&00&06u&00&07t&12h &11Points&16: &15%d&00\r\n&10Reincarnation&16: &15%d&00\r\n",    GET_NAME(victim), CLASS_ABBR(victim), GET_TITLE(victim), GET_HEIGHT(victim), GET_WEIGHT(victim), GET_ALIGNMENT(victim), GET_REINC(victim));

   send_to_char(buf, ch);
 } else {
   send_to_char("There is no such player.\r\n", ch); }
   free(victim); 
   }
}

/* new stuff */
ACMD(do_compare)
{
    char arg1[MAX_INPUT_LENGTH];
    char arg2[MAX_INPUT_LENGTH];
    struct obj_data *obj1, *obj2;    
    int value1;
    int value2, dotmode;
    char *msg;

    two_arguments(argument, arg1, arg2);

    if ( arg1[0] == '\0' )
    {
	send_to_char( "Compare what to what?\n\r", ch );
	return;
    }


    if (!(obj1 = get_obj_in_list_vis(ch, arg1, ch->carrying)))
    {
	send_to_char( "You do not have that item.\n\r", ch );
	return;
    }

    if (arg2[0] == '\0')
    {
	for (obj2 = ch->carrying; obj2 != NULL; obj2 = obj2->next_content)
	{
	    if (obj2->worn_on != NOWHERE
	    &&  CAN_SEE_OBJ(ch,obj2)
            &&  GET_OBJ_TYPE(obj1) == GET_OBJ_TYPE(obj2)
            &&  CAN_WEAR(obj1 ,ITEM_WEAR_TAKE) 
            &&  CAN_WEAR(obj2 ,ITEM_WEAR_TAKE) != 0)
		break;
	}

	if (obj2 == NULL)
	{
	    send_to_char("You aren't wearing anything comparable.\n\r",ch);
	    return;
	}
    } 

    else if (!(obj2 = get_obj_in_list_vis(ch, arg2, ch->carrying)))
    {
	send_to_char("You do not have that item.\n\r",ch);
	return;
    }

    msg		= NULL;
    value1	= 0;
    value2	= 0;

    if ( obj1 == obj2 )
    {
	msg = "You compare $p to itself.  It looks about the same.";
    }
    else if (GET_OBJ_TYPE(obj1) != GET_OBJ_TYPE(obj2))
    {
	msg = "You can't compare $p and $P.";
    }
    else
    {
	switch ( GET_OBJ_TYPE(obj1) )
	{
	default:
	    msg = "You can't compare $p and $P.";
	    break;

	case ITEM_ARMOR:
	    value1 = GET_OBJ_VAL(obj1, 0);
	    value2 = GET_OBJ_VAL(obj2, 0);;
	    break;

	case ITEM_WEAPON:
		value1 = (1 + GET_OBJ_VAL(obj1, 2)) * GET_OBJ_VAL(obj1, 1);
		value2 = (1 + GET_OBJ_VAL(obj2, 2)) * GET_OBJ_VAL(obj2, 1);
	    break;
	}
    }

    if ( msg == NULL )
    {
	     if ( value1 == value2 ) msg = "$p and $P look about the same.";
	else if ( value1  > value2 ) msg = "$p looks better than $P.";
	else                         msg = "$p looks worse than $P.";
    }

    act( msg, FALSE, ch, obj1, obj2, TO_CHAR );
    return;
}

ACMD(do_glance)
{
  int percent, bits, found = FALSE;
  struct char_data *i;
  struct char_data *found_char = NULL;
  struct obj_data  *found_obj  = NULL;

  half_chop(argument, arg, buf2);

	if (*arg)
	{
		bits = generic_find(arg, FIND_CHAR_ROOM, ch, &found_char, &found_obj);


  	if ((i = found_char) != NULL)
    {
		  if (GET_MAX_HIT(i) > 0)
  		  percent = (100 * GET_HIT(i)) / GET_MAX_HIT(i);
	  	else
  	  	percent = -1;		/* How could MAX_HIT be < 1?? */

		  strcpy(buf, PERS(i, ch));

		  if (percent >= 100)
  		  strcat(buf, " is in excellent condition.\r\n");
	  	else if (percent >= 95)
  	  	strcat(buf, " has a few scratches.\r\n");
		  else if (percent >= 85)
  		  strcat(buf, " has some small wounds and bruises.\r\n");
	  	else if (percent >= 75)
  	  	strcat(buf, " has some minor wounds.\r\n");
		  else if (percent >= 63)
  		  strcat(buf, " has quite a few wounds.\r\n");
	  	else if (percent >= 50)
  	  	strcat(buf, " has some big nasty wounds and scratches.\r\n");
		  else if (percent >= 40)
  		  strcat(buf, " looks pretty hurt.\r\n");
	  	else if (percent >= 30)
  	  	strcat(buf, " has some large wounds.\r\n");
		  else if (percent >= 20)
  		  strcat(buf, " is in bad condition.\r\n");
	  	else if (percent >= 10)
  	  	strcat(buf, " is nearly dead.\r\n");
		  else if (percent >= 0)
  		  strcat(buf, " is in awful condition.\r\n");
	  	else
  	  	strcat(buf, " is bleeding awfully from big wounds.\r\n");

  		CAP(buf);
    }
    else
	  	strcpy(buf, "Who do you wish to glance at?\r\n");

  }
	else
  {
  	if (FIGHTING(ch))
    {
			i = FIGHTING(ch);
		  if (GET_MAX_HIT(i) > 0)
	  	  percent = (100 * GET_HIT(i)) / GET_MAX_HIT(i);
		  else
  		  percent = -1;		/* How could MAX_HIT be < 1?? */

		  strcpy(buf, PERS(i, ch));

		  if (percent >= 100)
  		  strcat(buf, " is in excellent condition.\r\n");
	  	else if (percent >= 95)
  	  	strcat(buf, " has a few scratches.\r\n");
		  else if (percent >= 85)
  		  strcat(buf, " has some small wounds and bruises.\r\n");
	  	else if (percent >= 75)
  	  	strcat(buf, " has some minor wounds.\r\n");
		  else if (percent >= 63)
  		  strcat(buf, " has quite a few wounds.\r\n");
	  	else if (percent >= 50)
  	  	strcat(buf, " has some big nasty wounds and scratches.\r\n");
		  else if (percent >= 40)
  		  strcat(buf, " looks pretty hurt.\r\n");
	  	else if (percent >= 30)
  	  	strcat(buf, " has some large wounds.\r\n");
		  else if (percent >= 20)
  		  strcat(buf, " is in bad condition.\r\n");
	  	else if (percent >= 10)
  	  	strcat(buf, " is nearly dead.\r\n");
		  else if (percent >= 0)
  		  strcat(buf, " is in awful condition.\r\n");
	  	else
  	  	strcat(buf, " is bleeding awfully from big wounds.\r\n");

  		CAP(buf);
    }
    else
	  	strcpy(buf, "Who do you wish to glance at?\r\n");
  }
	send_to_char(buf, ch);
}