Re: Remember the Saving Throw table formulas?

shirak@CANADA.COM
Date: 11/06/98


>>2)  Change the formula to this:
>>
>>return (int)((-(high_val - low_val) / ((float)(top_level-1))) * (level - 1)

>>+ high_val);
>>
>>Perhaps a bit more tweaking, and I can get it perfect.
>>
>>(to save you the test, results with this are 860 total, and 353 wc thing)


Well...., I did a bunch of tweaking, and I think that this is as close as a
straight line can come to matching the old values (if there is enuf demand,
I might try and calculate out all the curved lines..., but I'm not gon worry
about that yet, I think this is close enuf)  I've gotten the results down to
740 total, 325 wc thing.  I had to tweak a lot of values, so the whole thing
is pasted below...

>>Also..., if that function would round to nearest int instead of just dropping

>>the decimal (I have no help files, and can't remember function name), most
of
>>the results of -1 (probably 100 or so) would be perfect.
>
>Rounding (to tens) goes like:
>        (result + 5) / 10
>Rounding to 1:
>        (result + .5)
>(Since .5 + .5 = 1 and >.5 + .5 = 1+ and <.5 + .5 < 1)
>
>Not sure what your function would be, I'll leave it up to you to figure
>out. :)

I remember using a round() function before, but that is probably much more efficient,
and won't require anymore .h files etc.  Well..., after testing it, I discovered
that not many of the -1's will round up to zero, but a LOT of zeros round up
to 1 (I even tried little tests like adding .1)..., Another 1/2 or so work might
strip off a couple more lines, but thats it I think.

---Begin code ---
char saving_throws(int class_num, int type, int level)
{
  int top_level, high_val, low_val;

  switch(class_num)
  {
  case CLASS_MAGIC_USER:
    switch(type)
    {
    case SAVING_PARA:   high_val = 71; low_val = 29; break;
    case SAVING_ROD:    high_val = 54; low_val = 8; break;
    case SAVING_PETRI:  high_val = 65; low_val = 14; break;
    case SAVING_BREATH: high_val = 75; low_val = 24; break;
    case SAVING_SPELL:  high_val = 60; low_val = 9; break;
    default: log("SYSERR: Invalid saving throw type."); return 99;
    }
    break;
  case CLASS_CLERIC:
    switch(type)
    {
    case SAVING_PARA:   high_val = 58; low_val = 5; break;
    case SAVING_ROD:    high_val = 71; low_val = 27; break;
    case SAVING_PETRI:  high_val = 65; low_val = 22; break;
    case SAVING_BREATH: high_val = 80; low_val = 37; break;
    case SAVING_SPELL:  high_val = 75; low_val = 32; break;
    default: log("SYSERR: Invalid saving throw type."); return 99;
    }
    break;
  case CLASS_THIEF:
    switch(type)
    {
    case SAVING_PARA:   high_val = 65; low_val = 36; break;
    case SAVING_ROD:    high_val = 70; low_val = 13; break;
    case SAVING_PETRI:  high_val = 60; low_val = 31; break;
    case SAVING_BREATH: high_val = 80; low_val = 51; break;
    case SAVING_SPELL:  high_val = 75; low_val = 17; break;
    default: log("SYSERR: Invalid saving throw type."); return 99;
    }
    break;
  case CLASS_WARRIOR:
    switch(type)
    {
    case SAVING_PARA:   high_val = 70; low_val = 8; break;
    case SAVING_ROD:    high_val = 80; low_val = 16; break;
    case SAVING_PETRI:  high_val = 75; low_val = 13; break;
    case SAVING_BREATH: high_val = 85; low_val = 13; break;
    case SAVING_SPELL:  high_val = 85; low_val = 21; break;
    default: log("SYSERR: Invalid saving throw type."); return 99;
    }
    break;
  default:
    log("SYSERR: Invalid class passed to saving throw.");
    return 99;
  }
  top_level = 30;
  if(level > top_level)
    return 0;
  else
    return (int)((-(high_val - low_val) / ((float)(top_level-1))) * (level -
1) + high_val);
}
--- End code ---

Once again..., I remind everyone how much I hate web-mail and wish I could get
a proper e-mail client to work behind the firewall at work...

Hmm..., Afterthought(s):

Did someone reconfigure the list, I never got my last message back to me like
I'm used to.  Could it have something to do with my e-mail change?  (it's a
forwarding address, I still receive on old e-mail account too, but changing
ISP's soon)

Hmm..., getting more and more offtopic..., but changing ISP's reminds me.  Would
anyone be willing to host my CircleMUD WWW page for free?  I will probably have
WWW space at my new ISP too, but it's kinda a pain changing addresses.  It's
currently at www.connect.ab.ca/~rbmstrk if anyone wants to check it out.


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



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