/* Tired of your players running around not eating and drinking
 *  like they're supposed to?  This revamp of update.c will take 
 *  care of that!  This snippet was pieced together using a few 
 *  things from fight.c, mainly the experience adjustment.  Yes, 
 *  players will loose experience for dying because they didn't
 *  drink.
 *
 *  Currently players loose about 3hp every time their position is 
 *  updated and they see "You are hungry/You are thirsty".
 *
 *  You can adjust the hp loss with the "ch->hit -= 5" statement.
 *  Players also regain hunger/thirst/full when they die. So they wont 
 *  continually die from hunger/thirst.

 *  It sends a notification across WizNet, and has messages such as:
 *
 *  SAMPLES: (messages are easily changable)
 *
 *  Players in room see:
 *     Athos withers away and dies from dehydration! 
 *     Athos withers away and dies from starvation!
 *
 *  WizNet logs:
 *     Athos died from dehydration in The Temple Of Mota [room 3001]
 *     Athos died from starvation in the Temple of Mota [room 3001]
 *
 *  Player sees:
 *     You have died from dehydration!
 *     You have died from starvation!
 *
 *
 * CREDITS: None to my knowledge other than the original credits provided
 *          in update.c. fairly easy cut & paste snippet.
 *          requires no credit for my part in piecing together.
 *          please adjust and hack n slash and flush if you want.
 *
 *          All reviews are welcome. Critique the work. Flame it,
 *          boil it in a stew and eat it.
 *
 */


IN UPDATE.C, FIND "void gain_condition"

IN "void gain_condition" find the iCond block.

**************************************************************
    if (ch->pcdata->condition[iCond] == 0)
    {
        switch (iCond)
        {
            case COND_HUNGER:
                send_to_char ("You are hungry.\n\r", ch);
                break;

            case COND_THIRST:
                send_to_char ("You are thirsty.\n\r", ch);
                break;

            case COND_DRUNK:
                if (condition != 0)
                    send_to_char ("You are sober.\n\r", ch);
                break;
        }
    }

****************************************************************
   
and replace with:

/******************* BEGIN SNIPPET *****************************/

    if (ch->pcdata->condition[iCond] == 0)
    {
        switch (iCond)
        {
            case COND_HUNGER:
                /* DEATH FROM HUNGER */
                ch->hit -= 5;
                if (ch->hit > 0 )
                  {
                   send_to_char ("You are hungry.\n\r", ch);
                  }
                if (ch->hit <= 0 )
                   {

                     act("{RYou have died from starvation!{x",ch,NULL,NULL,TO_CHAR);
                     act("{R$n withers away and dies from starvation!{x",ch,NULL,NULL,TO_ROOM);
                     if (ch->exp > exp_per_level (ch, ch->pcdata->points) * ch->level)
                             gain_exp (ch, (2 * (exp_per_level (ch, ch->pcdata->points)
                                      * ch->level - ch->exp) / 3) + 50);

                     sprintf (log_buf, "%s died from hunger in %s [room %d]",
                             ch->name, ch->in_room->name, ch->in_room->vnum);

                     wiznet (log_buf, NULL, NULL, WIZ_DEATHS, 0, 0);

                      make_corpse (ch);
                      int i;

                      extract_char (ch, FALSE);
                      while (ch->affected)
                      affect_remove (ch, ch->affected);
                      ch->affected_by = race_table[ch->race].aff;
                      for (i = 0; i < 4; i++)
                          ch->armor[i] = 100;
                      ch->position = POS_RESTING;
                      ch->hit = UMAX (5, ch->hit);
                      ch->mana = UMAX (5, ch->mana);
                      ch->move = UMAX (5, ch->move);
                      ch->pcdata->condition[COND_THIRST] = 48;
                      ch->pcdata->condition[COND_HUNGER] = 48;
                      ch->pcdata->condition[COND_FULL] = 48;

                      return;
                    }

                break;

            case COND_THIRST:

                 /* DEATH FROM THIRST */
                    ch->hit -= 5;
                    if (ch->hit > 0 )
                       {
                         send_to_char ("You are thirsty.\n\r", ch);
                       }
                    if (ch->hit <= 0 )
                       {
                          act("{RYou have died from dehydration!{x",ch,NULL,NULL,TO_CHAR);
                          act("{R$n withers away and dies from dehydration!{x",ch,NULL,NULL,TO_ROOM);
                          if (ch->exp > exp_per_level (ch, ch->pcdata->points) * ch->level)
                                  gain_exp (ch, (2 * (exp_per_level (ch, ch->pcdata->points)
                                           * ch->level - ch->exp) / 3) + 50);

                          sprintf (log_buf, "%s died from dehydration in %s [room %d]",
                                            ch->name, ch->in_room->name, ch->in_room->vnum);

                          wiznet (log_buf, NULL, NULL, WIZ_DEATHS, 0, 0);

                          make_corpse (ch);
                          int i;

                          extract_char (ch, FALSE);
                          while (ch->affected)
                          affect_remove (ch, ch->affected);
                          ch->affected_by = race_table[ch->race].aff;
                          for (i = 0; i < 4; i++)
                              ch->armor[i] = 100;
                          ch->position = POS_RESTING;
                          ch->hit = UMAX (5, ch->hit);
                          ch->mana = UMAX (5, ch->mana);
                          ch->move = UMAX (5, ch->move);
                          ch->pcdata->condition[COND_THIRST] = 48;
                          ch->pcdata->condition[COND_HUNGER] = 48;
                          ch->pcdata->condition[COND_FULL] = 48;

                          return;
                       }

                break;

            case COND_DRUNK:
                if (condition != 0)
                    send_to_char ("You are sober.\n\r", ch);
                break;
        }
    }

*****************END SNIPPET******************************************/

  return;
}



The above return statement is part of the original gain_condition block, be 
sure not to remove it.