Re: energy drain

From: Chuck Reed (master@i-55.com)
Date: 06/12/99


>  /* We could keep track of how many hp a player gained at each level,
>     but what a pain!  And what to do about NPCs?!  Just find the
>     average HP per level and subtract HP based on this average.  */

If you just take care of their hitpoints, players can abuse the spell to
gain tremendous ammounts of movement or mana or practice sessions, etc.

I had a God command that penalizes EXP, and consequently needed to handle
lowering players levels.  I wrote the following based on the mud's stats,
you can change it around for yours if you'd like.

void lower_level(struct char_data * ch)
{
  int add_hp = 0, add_mana = 0, add_move = 0;

  extern struct wis_app_type wis_app[];
  extern struct con_app_type con_app[];

  add_hp = con_app[GET_CON(ch)].hitp;

  if(GET_LEVEL(ch) <= 0)
    return;

  switch (GET_CLASS(ch)) {

  case CLASS_MAGIC_USER:
    add_hp += number(5, 9);
    add_mana = number(GET_LEVEL(ch), (int) (1.5 * GET_LEVEL(ch)));
    add_mana = MIN(add_mana, 10);
    add_move = number(1, 4);
    break;

  case CLASS_CLERIC:
    add_hp += number(7, 11);
    add_mana = number(GET_LEVEL(ch), (int) (1.5 * GET_LEVEL(ch)));
    add_mana = MIN(add_mana, 10);
    add_move = number(1, 4);
    break;

  case CLASS_ASSASSIN:
    add_hp += number(9, 14);
    add_mana = 0;
    add_move = number(2, 5);
    break;

  case CLASS_WARRIOR:
    add_hp += number(11, 17);
    add_mana = 0;
    add_move = number(2, 4);
    break;

  case CLASS_SHAMAN:
    add_hp   = number(11, 14);
    add_mana = number(GET_LEVEL(ch), (2.0 * GET_LEVEL(ch)));
    add_mana = MIN(add_mana, 10);
    add_move = number(2, 4);
    break;
  }

  ch->points.max_hit -= MAX(1, add_hp);
  ch->points.max_move -= MAX(1, add_move);
  ch->points.max_mana -= add_mana;

  GET_PRACTICES(ch) -= MAX(2, wis_app[GET_WIS(ch)].bonus);
  GET_LEVEL(ch) -= 1;
  save_char(ch, NOWHERE);
}


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     |  http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html  |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST