View Single Post
Lawful_g
Senior Member
Volunteer Data File Contributor
 
Join Date: Mar 2007
Posts: 1,245

Old October 13th, 2011, 07:44 PM
Alright, I finally discovered the problem, in the previous code medium non quadraped characters were multiplying their newmaxstr times 0, when they should have multiplied by 1. Also it looks like some lines in the table round up, and others round down. I changed it to round up here.

Code:
      doneif (field[gIsEquip].value = 0)

      var newstr as number
      var newmaxwt as number
      var newmedwt as number
      var newlitwt as number
      var diff as number

      ~ If we have enhancement bonus 1 or higher, we don't stack, so stop now.
      doneif (hero.child[aSTR].field[BonEnhance].value >= 1)

      ~ Get our strength +1
      newstr = hero.child[aSTR].field[aFinalVal].value + 1

      ~ Generate our new max encumberance...
      if (newstr = 29) then
        newmaxwt = 1400
      elseif (newstr = 28) then
        newmaxwt = 1200
      elseif (newstr = 27) then
        newmaxwt = 1040
      elseif (newstr = 26) then
        newmaxwt = 920
      elseif (newstr = 25) then
        newmaxwt = 800
      elseif (newstr = 24) then
        newmaxwt = 700
      elseif (newstr = 23) then
        newmaxwt = 600
      elseif (newstr = 22) then
        newmaxwt = 520
      elseif (newstr = 21) then
        newmaxwt = 460
      elseif (newstr = 20) then
        newmaxwt = 400
      elseif (newstr = 19) then
        newmaxwt = 350
      elseif (newstr = 18) then
        newmaxwt = 300
      elseif (newstr = 17) then
        newmaxwt = 260
      elseif (newstr = 16) then
        newmaxwt = 230
      elseif (newstr = 15) then
        newmaxwt = 200
      elseif (newstr = 14) then
        newmaxwt = 175
      elseif (newstr = 13) then
        newmaxwt = 150
      elseif (newstr = 12) then
        newmaxwt = 130
      elseif (newstr = 11) then
        newmaxwt = 115
      elseif (newstr = 10) then
        newmaxwt = 100
      elseif (newstr = 9) then
        newmaxwt = 90
      elseif (newstr = 8) then
        newmaxwt = 80
      elseif (newstr = 7) then
        newmaxwt = 70
      elseif (newstr = 6) then
        newmaxwt = 60
      elseif (newstr = 5) then
        newmaxwt = 50
      elseif (newstr = 4) then
        newmaxwt = 40
      elseif (newstr = 3) then
        newmaxwt = 30
      elseif (newstr = 2) then
        newmaxwt = 20
      elseif (newstr = 1) then
        newmaxwt = 10
        endif

      if (hero.tagis[Helper.Quadruped] <> 0) then
        if (herofield[tSize].value >= 4) then
          newmaxwt *= 24
        elseif (herofield[tSize].value >= 3) then
          newmaxwt *= 12
        elseif (herofield[tSize].value >= 2) then
          newmaxwt *= 6
        elseif (herofield[tSize].value >= 1) then
          newmaxwt *= 3
        elseif (herofield[tSize].value >= 0) then
          newmaxwt *= 1.5
        elseif (herofield[tSize].value >= -1) then
          newmaxwt *= 1
        elseif (herofield[tSize].value >= -2) then
          newmaxwt *= .75
        elseif (herofield[tSize].value >= -3) then
          newmaxwt *= .50
        elseif (herofield[tSize].value >= -4) then
          newmaxwt *= .25
          endif
      elseif (hero.tagis[Helper.Quadruped] = 0) then
        if (herofield[tSize].value >= 4) then
          newmaxwt *= 16
        elseif (herofield[tSize].value >= 3) then
          newmaxwt *= 8
        elseif (herofield[tSize].value >= 2) then
          newmaxwt *= 4
        elseif (herofield[tSize].value >= 1) then
          newmaxwt *= 2
        elseif (herofield[tSize].value >= 0) then
          newmaxwt *= 1
        elseif (herofield[tSize].value >= -1) then
          newmaxwt *= .75
        elseif (herofield[tSize].value >= -2) then
          newmaxwt *= .50
        elseif (herofield[tSize].value >= -3) then
          newmaxwt *= .25
        elseif (herofield[tSize].value >= -4) then
          newmaxwt *= .125
          endif
        endif

      ~ Now that we have the max wt, we need to define out medium encumberance and light encumberance limits. Fortunately they are merely 2/3 and 1/3 of our max, rounded up to the nearest pound.
      newmedwt = round(newmaxwt *.66, 0, 1)
      newlitwt = round(newmaxwt *.33, 0, 1)

      ~ Now compare our values to the current encumberance values and adjust them up
      diff = newmaxwt - herofield[tEncumHvy].value
      herofield[tEncumHvy].value += diff

      diff = newmedwt - herofield[tEncumMed].value
      herofield[tEncumMed].value += diff

      diff = newlitwt - herofield[tEncumLgt].value
      herofield[tEncumLgt].value += diff
Lawful_g is offline   #20 Reply With Quote