6D/
6D/area/
6D/boards/
6D/city/
6D/color/
6D/corpses/
6D/councils/
6D/htowns/
6D/news/
6D/specials/
6D/src/specials/
6D/src/trades/
/*
 *Code Information: I find this command quite useful, it reveals
 *important information which pertains to the player invoking it.
 *do_status was written by: Taon "Dustan Gunn", for use on 6Dragons
 *mud. This function is still currently under major construction. -Taon
 *Note: This isnt the final information header, just using it to
 *keep those with current shell access a little informed.
 */

#include "h/mud.h"

//I intend on cleaning up the format once finished. -Taon

void do_status(CHAR_DATA *ch, char *argument)
{

  if(IS_NPC(ch) && !xIS_SET(ch->act, ACT_BEASTPET))
    return;

  if(ch->position == POS_SLEEPING)
  {
    send_to_char("Can't check status while sleeping!\r\n", ch);
    return;
  }

  send_to_char("\r\n", ch);
  if(!IS_BLIND(ch))
  {
    send_to_char("\r\n&W-------------------&B[&D &i&W&uStatus&D&D&D &B]&D&W---------------------&D\r\n\r\n", ch);
  }
  else
  {
    send_to_char("\r\nStatus\r\n", ch);
  }
  send_to_char("&WHunger&D: ", ch);

  if(xIS_SET(ch->act, ACT_BEASTPET))
  {
    CHAR_DATA              *master = NULL;

    if(ch->master)
      master = ch->master;

    if(!master)
      return;

    if(master->pcdata->pethungry <= 99)
      send_to_char("&OYou're STARVING to death!!!&D\r\n", ch);
    else if(master->pcdata->pethungry <= 269 && master->pcdata->pethungry >= 100)
      send_to_char("&OYour getting very hungry!&D\r\n", ch);
    else if(master->pcdata->pethungry <= 279 && master->pcdata->pethungry >= 270)
      send_to_char("&OYou feel faint from hunger.&D\r\n", ch);
    else if(master->pcdata->pethungry <= 299 && master->pcdata->pethungry >= 280)
      send_to_char("&OYou're starting to get hungry.&D\r\n", ch);
    else if(master->pcdata->pethungry >= 300)
      send_to_char("&OYou're not hungry.&D\r\n", ch);
    // thirst
    send_to_char("&WThirst&D: ", ch);

    if(master->pcdata->petthirsty <= 99)
      send_to_char("&OYou're dying of thirst!&D\r\n", ch);
    else if(master->pcdata->petthirsty <= 269 && master->pcdata->petthirsty >= 100)
      send_to_char("&OYou really could use a sip of water.&D\r\n", ch);
    else if(master->pcdata->petthirsty <= 279 && master->pcdata->petthirsty >= 270)
      send_to_char("&OYour throat is parched.&D\r\n", ch);
    else if(master->pcdata->petthirsty <= 299 && master->pcdata->petthirsty >= 280)
      send_to_char("&OYou don't feel too thirsty.&D\r\n", ch);
    else if(master->pcdata->petthirsty >= 300)
      send_to_char("&OYou're not thirsty.&D\r\n", ch);

    return;
  }

  if(!IS_IMMORTAL(ch))
  {
    if(ch->pcdata->condition[COND_FULL] <= 0)
      send_to_char("&OYou're STARVING to death!!!&D\r\n", ch);
    else if(ch->pcdata->condition[COND_FULL] <= 10 && ch->pcdata->condition[COND_FULL] >= 1)
      send_to_char("&OYour getting very hungry!&D\r\n", ch);
    else if(ch->pcdata->condition[COND_FULL] <= 20 && ch->pcdata->condition[COND_FULL] >= 11)
      send_to_char("&OYou feel faint from hunger.&D\r\n", ch);
    else if(ch->pcdata->condition[COND_FULL] <= 30 && ch->pcdata->condition[COND_FULL] >= 21)
      send_to_char("&OYou're starting to get hungry.&D\r\n", ch);
    else if(ch->pcdata->condition[COND_FULL] >= 31)
      send_to_char("&OYou're not hungry.&D\r\n", ch);
  }
  else
    send_to_char("&OYou're always full!&D\r\n", ch);

  send_to_char("&WThirst&D: ", ch);

  if(!IS_IMMORTAL(ch))
  {
    if(ch->pcdata->condition[COND_THIRST] <= 0)
      send_to_char("&OYou're dying of thirst!&D\r\n", ch);
    else if(ch->pcdata->condition[COND_THIRST] <= 10 && ch->pcdata->condition[COND_THIRST] >= 1)
      send_to_char("&OYou really could use a sip of water.&D\r\n", ch);
    else if(ch->pcdata->condition[COND_THIRST] <= 20 && ch->pcdata->condition[COND_THIRST] >= 11)
      send_to_char("&OYour throat is parched.&D\r\n", ch);
    else if(ch->pcdata->condition[COND_THIRST] <= 30 && ch->pcdata->condition[COND_THIRST] >= 21)
      send_to_char("&OYou don't feel too thirsty.&D\r\n", ch);
    else if(ch->pcdata->condition[COND_THIRST] >= 31)
      send_to_char("&OYou're not thirsty.&D\r\n", ch);
  }
  else
    send_to_char("&OYou're never THIRSTY!&D\r\n", ch);

  send_to_char("&WEncumbrance&D: ", ch);
  ch_printf(ch, "&O%d/%d&D\r\n", ch->carry_weight, can_carry_w(ch));

  send_to_char("&WPosition&D: ", ch);

  switch (ch->position)
  {
    case POS_DEAD:
      send_to_char("&OYou're DEAD!!!&D\r\n", ch);
      break;
    case POS_INCAP:
      send_to_char("&OYou've been incapitated!&D\r\n", ch);
      break;
    case POS_STUNNED:
      send_to_char("&OYou're STUNNED!!!&D\r\n", ch);
      break;
    case POS_STANDING:
      send_to_char("&OYou're standing up.&D\r\n", ch);
      break;
    case POS_MEDITATING:
      send_to_char("&OYou're in a deep meditation.&D\r\n", ch);
      break;
    case POS_SITTING:
    case POS_RESTING:
      send_to_char("&OYou're sitting down.&D\r\n", ch);
      break;
    case POS_SLEEPING:
      send_to_char("&OYou're asleep.&D\r\n", ch);
      break;
    case POS_MOUNTED:
      send_to_char("&OYou're riding on a mount.&D\r\n", ch);
      break;
    case POS_MORTAL:
      send_to_char("&OYou're mortally wounded!&D\r\n", ch);
      break;
    case POS_EVASIVE:
      send_to_char("&OYou're taking evasive action.&D\r\n", ch);
      break;
    case POS_DEFENSIVE:
      send_to_char("&OYou're taking defensive action.&D\r\n", ch);
      break;
    case POS_AGGRESSIVE:
      send_to_char("&OYou're taking aggressive action.&D\r\n", ch);
      break;
    case POS_BERSERK:
      send_to_char("&OYou're &iBERSERKING*D!!&D\r\n", ch);
      break;
    case POS_FIGHTING:
      send_to_char("&OYou're fighting!&D\r\n", ch);
      break;
    default:
      send_to_char("&OError: Position out of bounds, for status.&D\r\n", ch);
      bug("Error: do_status doesn't reconize %s's current position.", ch->name);
      break;
  }

  send_to_char("&WMentalstate&D: ", ch);

  // Allow the fall throughs in this switch. -Taon
/* Whoops, think these are backwards! Were from -1 to -10, fixed 16/7/08 Volk */
  switch (ch->mental_state / 10)
  {
    case -10:
    case -9:
      send_to_pager("&OYou can barely keep your eyes open.&D\r\n", ch);
      break;
    case -8:
    case -7:
    case -6:
      send_to_pager("&OYou feel quite sedated.&D\r\n", ch);
      break;
    case -5:
    case -4:
    case -3:
      send_to_pager("&OYou could use a rest.&D\r\n", ch);
      break;
    case -2:
    case -1:
      send_to_pager("&OYou feel fine.&D\r\n", ch);
      break;
    case 0:
    case 1:
      send_to_pager("&OYou feel great.&D\r\n", ch);
      break;
    case 2:
    case 3:
      send_to_pager("&OYour mind is racing, preventing you from thinking straight.&D\r\n", ch);
      break;
    case 4:
    case 5:
    case 6:
      send_to_pager("&OYour mind is going 100 miles an hour.&D\r\n", ch);
      break;
    case 7:
    case 8:
      send_to_pager("&OYou have no idea what is real, and what is not.&D\r\n", ch);
      break;
    case 9:
    case 10:
      send_to_pager("&O&uYou are a Supreme Entity&D&D.\r\n", ch);
      break;
    default:
      send_to_pager("&OYou're completely messed up!&D\r\n", ch);
      break;
  }

  if(ch->quest_curr > 1)
    ch_printf(ch, "&WGlory Points&D: &O%d&D\r\n", ch->quest_curr);

  send_to_char("&W\r\nGeneral Information:&D\r\n", ch);

  if(ch->move <= ch->max_move / 5)
    send_to_char("&OYou need to rest, your body is tiring out.&D\r\n", ch);
  if(ch->mana <= ch->max_mana / 5)
    send_to_char("&OYou feel as if your magic is nearly drained.&D\r\n", ch);
  if(ch->hit <= ch->max_hit / 5)
    send_to_char("&OYou're hurt quite badly.&D\r\n", ch);

  if(IS_BLOODCLASS(ch) && (ch->blood <= ch->max_blood / 6))
    send_to_char("&OYour body begins to &uwithdraw&D&O from lack of blood.&D\r\n", ch);

  if(ch->pcdata->condition[COND_DRUNK] > 0)
  {
    if(ch->pcdata->condition[COND_DRUNK] < 3)
      send_to_char("&OYou've had a bit to drink.&D.&D\r\n", ch);
    else if(ch->pcdata->condition[COND_DRUNK] < 5)
      send_to_char("&OYou've been drinking.&D.&D\r\n", ch);
    else if(ch->pcdata->condition[COND_DRUNK] < 10)
      send_to_char("&OYou are starting to feel &udrunk&D.&D\r\n", ch);
    else if(ch->pcdata->condition[COND_DRUNK] >= 10)
      send_to_char("&OYou are &udrunk&D.&D\r\n", ch);
  }

  if(IS_VAMPIRE(ch))
  {
    if(IS_OUTSIDE(ch))
    {
      switch (time_info.sunlight)
      {
        case SUN_LIGHT:
          send_to_char("&YYou're burning to a crisp under the sun.&D\r\n", ch);
          break;
        case SUN_RISE:
          send_to_char("&YYou feel your skin begin to burn in the morning light.&D\r\n", ch);
          break;
        case SUN_SET:
          send_to_char("&YYou feel your skin burning under the setting sun.&D\r\n", ch);
          break;
      }
    }
  }

  if(IS_AFFECTED(ch, AFF_SHAPESHIFT))
    send_to_char("&OYour shape-shifted into another shape.&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_DISGUISE))
    send_to_char("&OYour in a disguise to hide your identiy.&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_ANOINT))
    send_to_char("&OYou've been recently anointed.&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_POISON))
    send_to_char("&OYou feel as if you've been poisoned.&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_FURY) || IS_AFFECTED(ch, AFF_BERSERK))
    send_to_char("&OYou're in a &ubloody rage&D&O.&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_FLYING) || IS_AFFECTED(ch, AFF_FLOATING))
    send_to_char("&OYour feet aren't touching the ground.&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_CHARM))
    send_to_char("&OYou're charmed.&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_BLINDNESS))
    send_to_char("&O&i&uA thick film covers your eyes preventing you from seeing.&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_HIDE))
    send_to_char("&OYou seem to be &ihiding&D&O from someone.&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_MAIM))
    send_to_char("&OYou've been badly &umaimed&D&O, causing you to bleed freely.&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_SILENCE))
    send_to_char("&OA magical force prevents you from speaking.&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_SURREAL_SPEED))
    send_to_char("&OYour body seems to be moving as fast as&i lightning.&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_SLOW))
    send_to_char("&O&iYour body is moving at a slow rate..&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_PARALYSIS) || ch->position == POS_STUNNED)
    send_to_char("&OYou're suffering from some sort of &i&uparalysis.&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_FEIGN))
    send_to_char("&OYou lay stiff on the ground, playing possum.&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_CURSE))
    send_to_char("&OYou feel as if you're cursed.&D\r\n", ch);
  if(IS_AFFECTED(ch, AFF_IRON_SKIN))
    send_to_char("&OYour skin is as solid as iron.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_UNSEARING_SKIN))
    send_to_char("&OYour flesh bares resistance to fire.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_ROOT))
    send_to_char("&OYour feet are &urooted&D&O into the ground.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_SHIELD) || IS_AFFECTED(ch, AFF_WARD))
    send_to_char("&OYour surrounded by a magical shield.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_INFRARED))
    send_to_char("&OYour eyes glow bright red.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_DETECT_INVIS))
    send_to_char("&OYou can see invisible people and objects.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_DETECT_HIDDEN))
    send_to_char("&OYou can see hidden people and objects.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_BOOST))
    send_to_char("&OYou've been boosted in power.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_SANCTUARY))
    send_to_char("&OYou're defenses are greatly improved.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_REACTIVE))
    send_to_char("&OYour body heals itself during combat.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_TRUESIGHT))
    send_to_char("&OYour vision is enhanced.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_NOSIGHT))
    send_to_char("&OYou can see without your eyes.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_ICESHIELD))
    send_to_char("&OYour surrounded by a shield of ice.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_SHOCKSHIELD))
    send_to_char("&OYou're surrounded by a shield of energy.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_FIRESHIELD))
    send_to_char("&OYou're surrounded by a shield of fire.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_RECOIL))
    send_to_char("&OYou're positioned in a coiled up stance.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_KEEN_EYE))
    send_to_char("&OYour eyes are sharply attuned to your surroundings.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_KINETIC))
    send_to_char("&OA barrier of kinetic energy swirls around you.\r\n&D", ch);
  if(IS_AFFECTED(ch, AFF_SUSTAIN_SELF))
    send_to_char("&OYour body is fighting off hunger.\r\n&D", ch);

  if(ch->hate_level > 0)
  {
    if(ch->hate_level <= 5)
      send_to_char("&OYou're watching out for someone.&D\r\n", ch);
    else if(ch->hate_level < 20)
      send_to_char("&OYou get the feeling someone is after you.\r\n&D", ch);
    else if(ch->hate_level >= 20)
      send_to_char("&OYou're hated amongst your peers.&D\r\n", ch);
  }
  if(!IS_BLIND(ch))
    send_to_char("\r\n&W--------------------------------------------------&D\r\n\r\n", ch);
  return;
}