[CODE] Object OLC apply limits (Oasis 2.0)

From: Del (caminturn@earthlink.net)
Date: 01/22/00


TESTED on the pre bpl17, oasis 2.0

oedid.c
 add to the int in void oedit_parse
 mod and check

 replace:

case OEDIT_APPLYMOD:
  mod = atoi(arg);
  if (GET_LEVEL(ch) != LVL_IMPL) {
    check = OLC_OBJ(d)->affected[OLC_VAL(d)].location;
    switch (check) {
      case APPLY_NONE:
          break;
      case APPLY_STR:
        mod = MAX(MIN_APPLY_STR, MIN(MAX_APPLY_STR, mod));
        break;
      case APPLY_DEX:
        mod = MAX(MIN_APPLY_DEX, MIN(MAX_APPLY_DEX, mod));
        break;
      case APPLY_INT:
        mod = MAX(MIN_APPLY_INT, MIN(MAX_APPLY_INT, mod));
        break;
      case APPLY_WIS:
        mod = MAX(MIN_APPLY_WIS, MIN(MAX_APPLY_WIS, mod));
        break;
      case APPLY_CON:
        mod = MAX(MIN_APPLY_CON, MIN(MAX_APPLY_CON, mod));
        break;
      case APPLY_CHA:
        mod = MAX(MIN_APPLY_CHA, MIN(MAX_APPLY_CHA, mod));
        break;
      case APPLY_CLASS:
        mod = 0;
        break;
      case APPLY_LEVEL:
        mod = 0;
        break;
      case APPLY_AGE:
        mod = MAX(MIN_APPLY_AGE, MIN(MAX_APPLY_AGE, mod));
        break;
      case APPLY_CHAR_WEIGHT:
        mod = 0;
        break;
      case APPLY_CHAR_HEIGHT:
        mod = 0;
        break;
      case APPLY_MANA:
        mod = MAX(MIN_APPLY_MANA, MIN(MAX_APPLY_MANA, mod));
        break;
      case APPLY_HIT:
        mod = MAX(MIN_APPLY_HIT, MIN(MAX_APPLY_HIT, mod));
        break;
      case APPLY_MOVE:
        mod = MAX(MIN_APPLY_MOVE, MIN(MAX_APPLY_MOVE, mod));
        break;
      case APPLY_GOLD:
        mod = 0;
        break;
      case APPLY_EXP:
        mod = 0;
        break;
      case APPLY_AC:
        mod = MAX(MIN_APPLY_AC, MIN(MAX_APPLY_AC, mod));
        break;
      case APPLY_HITROLL:
        mod = MAX(MIN_APPLY_HITROLL, MIN(MAX_APPLY_HITROLL, mod));
        break;
      case APPLY_DAMROLL:
        mod = MAX(MIN_APPLY_DAMROLL, MIN(MAX_APPLY_DAMROLL, mod));
        break;
      case APPLY_SAVING_PARA:
      case APPLY_SAVING_ROD:
      case APPLY_SAVING_PETRI:
      case APPLY_SAVING_BREATH:
      case APPLY_SAVING_SPELL:
        mod = MAX(MIN_APPLY_SPELL, MIN(MAX_APPLY_SPELL, mod));
        break;
      /*
       * ADD MORE APPLY'S HERE THAT CORRESPONDS TO structs.h
       */
      default:
        mod = 0;
        log("SYSERR: Default in OLC Max check.\r\n");
        /* should not get here */
        break;
      }
    }
    OLC_OBJ(d)->affected[OLC_VAL(d)].modifier = mod;
    oedit_disp_prompt_apply_menu(d);
    return;


add to structs.h
/* set these to your own limits */

#define MAX_APPLY_STR            2
#define MIN_APPLY_STR           -2
#define MAX_APPLY_DEX            2
#define MIN_APPLY_DEX           -2
#define MAX_APPLY_INT            2
#define MIN_APPLY_INT           -2
#define MAX_APPLY_WIS            2
#define MIN_APPLY_WIS           -2
#define MAX_APPLY_CON            2
#define MIN_APPLY_CON           -2
#define MAX_APPLY_CHA            2
#define MIN_APPLY_CHA           -2
#define MAX_APPLY_AGE            5
#define MIN_APPLY_AGE           -5
#define MAX_APPLY_MANA           15
#define MIN_APPLY_MANA          -15
#define MAX_APPLY_HIT            10
#define MIN_APPLY_HIT           -10
#define MAX_APPLY_MOVE           10
#define MIN_APPLY_MOVE          -10
#define MAX_APPLY_AC             10
#define MIN_APPLY_AC            -10
#define MAX_APPLY_HITROLL        2
#define MIN_APPLY_HITROLL       -2
#define MAX_APPLY_DAMROLL        2
#define MIN_APPLY_DAMROLL       -2
#define MAX_APPLY_SPELL          10
#define MIN_APPLY_SPELL         -10


     +------------------------------------------------------------+
     | 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 : 04/10/01 PDT