|
@@ -0,0 +1,273 @@
|
|
|
+# body_shape
|
|
|
+!!vhips = derived from salo in body_shape
|
|
|
+!!vhtmp = slows the change to vhips in body_shape
|
|
|
+!!wratio = waist to hips ratio set in body_shape
|
|
|
+!!bratio = band to waist ratio set in body_shape
|
|
|
+!!hratio = hip to height ratio set in body_shape
|
|
|
+!!vofat = used as a place to put extra salo at extreme high values (i.e. really, really fat) set in body_shape
|
|
|
+!!nbsize = starts at a set genetic bust size, but can be adjusted down if salo drops too low
|
|
|
+!!magicf2b = set in body_shape for the fat moved to bust
|
|
|
+!!genbsize = the set genetic bust size
|
|
|
+!!salocatnow = the current category of salo
|
|
|
+!!salocatlast = the previous category of salo
|
|
|
+!!magf2bdo = flag for magic bust increase; 0, ready; 1, do it; 2, ask; 3, no
|
|
|
+!!mgf2bnocnt = used to count the number of times a bust increase was turned down and stop asking after 3
|
|
|
+!!magtarcup = set in the dream code as the target cup size
|
|
|
+!!normbuffpick = sets the status of using normal or buff body images and calculation
|
|
|
+!!nrmbfpckct = used to count the number of times a switch to buff was turned down and stop asking after 3
|
|
|
+!!btwarn = used to flag if to display the gaining/losing weight message when bathing
|
|
|
+!!salolast = used when doing a soft rest to control the cycling of the main code
|
|
|
+!!sftrstflag = used to prevent a code chunk from firing on a soft reset
|
|
|
+
|
|
|
+if $ARGS[0] = '':
|
|
|
+!!Fall of muscularity over time
|
|
|
+ if stren >= 26 and vital >= 26 and sftrstflag = 0:
|
|
|
+ if downmusl >= 5:
|
|
|
+ downmusl = 0
|
|
|
+ stren -= 1
|
|
|
+ vital -= 1
|
|
|
+ agil -= 1
|
|
|
+ fat += 5
|
|
|
+ else
|
|
|
+ downmusl += rand (0,1)
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+!!This controls the gradual change in stat to -buf
|
|
|
+ if strenbuf > stren: strenbuf -= 1
|
|
|
+ if strenbuf < stren: strenbuf += 1
|
|
|
+ if vitalbuf > vital: vitalbuf -= 1
|
|
|
+ if vitalbuf < vital: vitalbuf += 1
|
|
|
+ if agilbuf > agil: agilbuf -= 1
|
|
|
+ if agilbuf < agil: agilbuf += 1
|
|
|
+
|
|
|
+!!All the ratios were rounded to 2 digits and there are divide 100s at the final calc points
|
|
|
+!!Waist to hip ratio
|
|
|
+ if (vitalbuf + strenbuf + agilbuf) /3 < 11:
|
|
|
+ wratio = 85 + (11 - (vitalbuf + strenbuf + agilbuf)/3)
|
|
|
+ elseif (vitalbuf + strenbuf + agilbuf) /3 > 100:
|
|
|
+ wratio = 70 - ((vitalbuf + strenbuf)/2 - agilbuf)/5
|
|
|
+ end
|
|
|
+
|
|
|
+ wrtemp = ((2 * vitalbuf + strenbuf + agilbuf) /4)
|
|
|
+ if wrtemp >= 11 and wrtemp < 20: wratio = 85
|
|
|
+ if wrtemp >= 20 and wrtemp < 35: wratio = 85 - (wrtemp - 20) / 3
|
|
|
+ if wrtemp >= 35 and wrtemp < 55: wratio = 80 - (wrtemp - 35) / 4
|
|
|
+ if wrtemp >= 55 and wrtemp < 80: wratio = 75 - (wrtemp - 55) / 5
|
|
|
+ if wrtemp >= 80 and (vitalbuf + strenbuf + agilbuf) /3 <= 100: wratio = 70
|
|
|
+
|
|
|
+ if wratio < 65: wratio = 65
|
|
|
+ killvar 'wrtemp'
|
|
|
+
|
|
|
+!!Setting the vnesh bonus based on wratio
|
|
|
+ if wratio >= 85: bodykoef = 0
|
|
|
+ if wratio < 85 and wratio >= 80: bodykoef = 2
|
|
|
+ if wratio < 80 and wratio >= 75: bodykoef = 4
|
|
|
+ if wratio < 75 and wratio >= 70: bodykoef = 8
|
|
|
+ If wratio <= 69: bodykoef = 4
|
|
|
+
|
|
|
+!!For band to waist ratio
|
|
|
+ brtemp = (2 * strenbuf + vitalbuf + agilbuf) /4
|
|
|
+ if brtemp < 10: bratio = 105
|
|
|
+ if brtemp >= 10 and brtemp =< 23: bratio = 106
|
|
|
+ if brtemp > 23 and brtemp =< 80: bratio = 106 + (brtemp - 23) / 3
|
|
|
+ if brtemp > 80: bratio = 125
|
|
|
+ killvar 'brtemp'
|
|
|
+
|
|
|
+!!For hip to height ratio which is used to set the center point
|
|
|
+ hrtemp = (2 * agilbuf + vitalbuf + strenbuf) /4
|
|
|
+ if hrtemp < 35: hratio = 60
|
|
|
+ if hrtemp >= 35 and hrtemp < 45: hratio = 59
|
|
|
+ if hrtemp >= 45 and hrtemp < 60: hratio = 58
|
|
|
+ if hrtemp >= 60 and hrtemp < 80: hratio = 57
|
|
|
+ if hrtemp >= 80: hratio = 56
|
|
|
+ killvar 'hrtemp'
|
|
|
+
|
|
|
+!!Salo Handling
|
|
|
+ if salo > fat: salo -= 1
|
|
|
+ if salo < fat: salo += 1
|
|
|
+
|
|
|
+!!This calculates the current salo category; ranges are 20 points, seemed to balance best if the range is x10 the hip devisor
|
|
|
+ :salocatloop
|
|
|
+ if salo < 10:
|
|
|
+ salocatnow = 0
|
|
|
+ else
|
|
|
+ salocatnow = 1 + (salo - 10) / 20
|
|
|
+ end
|
|
|
+
|
|
|
+!!This controls the movement of salo to/from bust in order of precedence
|
|
|
+ if salobustdo = 0 and nbsize < genbsize and salocatnow > 2:
|
|
|
+ nbsize += 1
|
|
|
+ salo -= 3
|
|
|
+ salobustdo = 1
|
|
|
+ jump 'salocatloop'
|
|
|
+ end
|
|
|
+
|
|
|
+ if salobustdo = 0 and magf2bdo = 1 and salocatnow > salocatlast and manna >= mannamax / 2:
|
|
|
+ magicf2b += 1
|
|
|
+ salo -= 3
|
|
|
+ salobustdo = 1
|
|
|
+ if magicf2b >= 2 + magtarcup * 5: magf2bdo = 0
|
|
|
+ if magik < 20:
|
|
|
+ manna -= 2000 / magik
|
|
|
+ else
|
|
|
+ mana -= 100
|
|
|
+ end
|
|
|
+ jump 'salocatloop'
|
|
|
+ end
|
|
|
+
|
|
|
+ if salobustdo = 0 and salocatnow < 2 and salocatlast >= 2 and magicf2b > 0:
|
|
|
+ magicf2b -= 1
|
|
|
+ salo += 3
|
|
|
+ salobustdo = 1
|
|
|
+ magf2bdo = 1
|
|
|
+ jump 'salocatloop'
|
|
|
+ end
|
|
|
+
|
|
|
+ if salobustdo = 0 and salocatnow < 2 and salocatlast >= 2 and nbsize > 0:
|
|
|
+ nbsize -= 1
|
|
|
+ salo += 3
|
|
|
+ salobustdo = 1
|
|
|
+ jump 'salocatloop'
|
|
|
+ end
|
|
|
+
|
|
|
+!!This is for switching to and from the normal and buff image sets (& vital resisting salo w/ buff set)
|
|
|
+ if normbuffpick = 0 and salocatnow <= 2 and (strenbuf + agilbuf) >= 50: normbuffpick = 1
|
|
|
+ if normbuffpick = 1 and nrmbfpckct >= 3: normbuffpick = -1
|
|
|
+ if normbuffpick >= 1 and salocatnow > 2 and vitalbuf >= 25:
|
|
|
+ if vitalbuf / 25 > tempvct:
|
|
|
+ tempvct += 1
|
|
|
+ salo -= 1
|
|
|
+ jump 'salocatloop'
|
|
|
+ else
|
|
|
+ normbuffpick = 0
|
|
|
+ end
|
|
|
+ end
|
|
|
+!!Note: normbuffpick = 1 will trigger the bathing option scene and three nos there will set normbuffpick = -1; until a choice is made, will behave as =2
|
|
|
+
|
|
|
+!!This is if salo is still < 1 (will add code for Succubus here later)
|
|
|
+ if salo < 1:
|
|
|
+ if fat >= 1:
|
|
|
+ salo = 1
|
|
|
+ if fat > 1: fat -= 1
|
|
|
+ elseif fat <= 0 and stren + vital > 0:
|
|
|
+ stren -= 1
|
|
|
+ vital -= 1
|
|
|
+ salo = 1
|
|
|
+ else
|
|
|
+ if Enable_nogameover = 0:
|
|
|
+ over = 3
|
|
|
+ gt 'gameover'
|
|
|
+ exit
|
|
|
+ else
|
|
|
+ pl '<font color=red><B>You starved to death, but Cheat Mode keeps you Alive.</B></font>'
|
|
|
+ salo = 1
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ killvar 'tempvct' & killvar 'salobustdo'
|
|
|
+
|
|
|
+!!This is the hip calcs, 80 is the center of the current max-min range (10 - 130)
|
|
|
+ if normbuffpick = 2:
|
|
|
+ vhtmp = (strenbuf - agilbuf) / 2
|
|
|
+ else
|
|
|
+ vhtmp = (salo - 80) / 2
|
|
|
+ end
|
|
|
+ if vhips > vhtmp: vhips -= 1
|
|
|
+ if vhips < vhtmp: vhips += 1
|
|
|
+
|
|
|
+ if (rost * hratio) / 100 + vhips > (rost * 72) / 100:
|
|
|
+ vofat = ((rost * hratio) / 100 + vhips - (rost * 72) / 100) / 2
|
|
|
+ vhips -= vofat * 2
|
|
|
+ end
|
|
|
+
|
|
|
+!!This will trigger the warning notices in the bathing code (the +/- 12 should always be +/- 11 + the max change to salo w/ fat)
|
|
|
+ if salolast > salo and salo <= 12 + (20 * (salocatnow - 1)): btwarn = 1
|
|
|
+ if salolast < salo and salo >= (20 * (salocatnow + 1)) - 12: btwarn = 2
|
|
|
+
|
|
|
+!!This will trigger the dream for the option to use magic to increase bust
|
|
|
+!!Three nos at the dream will lock it out (1 yes resets the count)
|
|
|
+ if magik >= 5 and MagikDostup ! 0 and magf2bdo = 0:
|
|
|
+ if salolast < salo and salo >= (20 * (salocatnow + 1)) - 11 and tits < 10:
|
|
|
+ if mgf2bnocnt < 3:
|
|
|
+ magf2bdo = 2
|
|
|
+ else
|
|
|
+ magf2bdo = 3 & killvar 'mgf2bnocnt'
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+!!This is to deal with the possibility that salocatnow changed by more than 1 (fat burners, vitamins, plastic surgery, etc.)
|
|
|
+ if salocatnow < salocatlast: salocatlast -= 1
|
|
|
+ if salocatnow > salocatlast: salocatlast += 1
|
|
|
+
|
|
|
+!!This is for use in the warning code
|
|
|
+ if salolast > salo: salolast -= 1
|
|
|
+ if salolast < salo: salolast += 1
|
|
|
+
|
|
|
+!!This accounts for higher Stats burning more fat during the day (the plus 5 is to give some working room)
|
|
|
+ if salo + 5 < fat:
|
|
|
+ if salo + 5 < fat - ((agilbuf + strenbuf + vitalbuf)/30):
|
|
|
+ fat -= (agilbuf + strenbuf + vitalbuf)/30
|
|
|
+ else
|
|
|
+ fat = salo + 5
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+end
|
|
|
+
|
|
|
+if $ARGS[0] = 'softreset':
|
|
|
+!!This is for use in immediately updating shape if something has forced salo = fat by
|
|
|
+!!cycling the main code the number of times it would have normally w/ a change in fat
|
|
|
+ sftrstflag = 1
|
|
|
+ :resetloop
|
|
|
+ if fat ! salo:
|
|
|
+ gs 'body_shape'
|
|
|
+ jump 'resetloop'
|
|
|
+ end
|
|
|
+!!Clears the warning and reset status flags if they were set
|
|
|
+ sftrstflag = 0
|
|
|
+ btwarn = 0
|
|
|
+end
|
|
|
+
|
|
|
+if $ARGS[0] = 'hardreset':
|
|
|
+!!This is primarily for canceling out "dounspell" and setting salo to whatever value will result in the current hip size then balancing everything out.
|
|
|
+!!Also could be built in as a means to in-game undo "dounspell", other than the cheat.
|
|
|
+ if dounspell = 1 and dounsplkil > 0:
|
|
|
+ fat = 12 & salo = 12
|
|
|
+ agilbuf = agil & strenbuf = stren & vitalbuf = vital
|
|
|
+ salobustdo = 1 & sftrstflag = 1 & normbuffpick = -1
|
|
|
+ gs 'body_shape'
|
|
|
+ salo = (bedra * 2) - ((rost * hratio) / 50) + 80
|
|
|
+ fat = salo
|
|
|
+ if salo < 10:
|
|
|
+ salocatnow = 0
|
|
|
+ else
|
|
|
+ salocatnow = 1 + (salo - 10) / 20
|
|
|
+ end
|
|
|
+ salocatlast = salocatnow
|
|
|
+ salolast = salo
|
|
|
+ vhtmp = (salo - 80) / 2
|
|
|
+ vhips = vhtmp
|
|
|
+ if genbsize = 0 and nbsize > 0:
|
|
|
+ If nbsize >= 30:
|
|
|
+ genbsize = 30
|
|
|
+ else
|
|
|
+ genbsize = nbsize - nbsize mod 5
|
|
|
+ end
|
|
|
+ elseif genbsize = 0 and nbsize = 0 and silicone >= 20:
|
|
|
+ genbsize = 10 & nbsize = 10 & silicone -= 10
|
|
|
+ end
|
|
|
+ sftrstflag = 0 & normbuffpick = 0 & btwarn = 0 & magf2bdo = 0
|
|
|
+ killvar 'dounsplkil'
|
|
|
+ dounspell = 0
|
|
|
+ gs 'body_shape'
|
|
|
+ gs 'stat'
|
|
|
+ else
|
|
|
+ 'If you''re seeing this, something odd happened.'
|
|
|
+ end
|
|
|
+end
|
|
|
+
|
|
|
+--- body_shape ---------------------------------
|
|
|
+
|