body.qsrc 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587
  1. # body
  2. !!vhips = derived from salo in body_shape
  3. !!vhtmp = slows the change to vhips in body_shape
  4. !!wratio = waist to hips ratio set in body_shape
  5. !!bratio = band to waist ratio set in body_shape
  6. !!hratio = hip to height ratio set in body_shape
  7. !!vofat = used as a place to put extra salo at extreme high values (i.e. really, really fat) set in body_shape
  8. !!nbsize = starts at a set genetic bust size, but can be adjusted down if salo drops too low
  9. !!magicf2b = set in body_shape for the fat moved to bust
  10. !!genbsize = the set genetic bust size
  11. !!salocatnow = the current category of salo
  12. !!salocatlast = the previous category of salo
  13. !!magf2bdo = flag for magic bust increase; 0, ready; 1, do it; 2, ask; 3, no
  14. !!mgf2bnocnt = used to count the number of times a bust increase was turned down and stop asking after 3
  15. !!magtarcup = set in the dream code as the target cup size
  16. !!btwarn = used to flag if to display the gaining/losing weight message when bathing
  17. !!salolast = used when doing a soft rest to control the cycling of the main code
  18. !!sftrstflag = used to prevent a code chunk from firing on a soft reset
  19. !!Image set variables
  20. !! bodset = body image and descriptor control variable, used to indicate which image and descriptor set is in use
  21. !! $bodimgsets[x] = body shape descriptors, tens place is the set (using bodset), 0 - 7 the descriptors (using salocatnow), 8 filler, 9 is the folder name
  22. !! bdsetlock = flag to indicate set control override, 0 is use the formula to pick a set, 1 is use a fixed set
  23. !! fixbodset = the identification number of the fixed image set
  24. !! bodsetcnt = the number of sets present
  25. !! imgset6ovr[x] and imgset7ovr[x] = a flag to indicate that an image set (x) has its own image 6 and/or 7
  26. !! extended lash functionality; pcs_lashes = n are: {2, largest natural size}, {3, with temporary false lashes on or basic 2D lash extensions}, {4, with ornate false lashes on or lavish 4D extensions}, {5, with extremely ornate, 6D-style extensions} - xerya
  27. $this = 'body'
  28. if $ARGS[0] = 'RegularUpdate':
  29. if dounspell = 0:
  30. gs $this, 'UpdateBodyMeasurement'
  31. pcs_weight = func($this, 'CalcWeight')
  32. pcs_bmi = func($this, 'CalcBMI')
  33. end
  34. !!Since "musle" is used all over the place
  35. musle = strenbuf
  36. if pcs_skin > 900: pcs_skin = 900
  37. if pcs_skin < 0: pcs_skin = 0
  38. end
  39. if $ARGS[0] = 'DailyUpdate':
  40. !{
  41. Update once a day and called from cikl
  42. }
  43. if dounspell = 1:
  44. if strenbuf > 90:
  45. strenbuf -= 2
  46. elseif strenbuf > 80:
  47. strenbuf -= 1
  48. end
  49. if vitalbuf > 90:
  50. vitalbuf -= 2
  51. elseif vitalbuf > 80:
  52. vitalbuf -= 1
  53. end
  54. if strenbuf > pcs_stren: strenbuf -= 1
  55. if strenbuf < pcs_stren: strenbuf += 1
  56. if vitalbuf > pcs_vital: vitalbuf -= 1
  57. if vitalbuf < pcs_vital: vitalbuf += 1
  58. if agilbuf > pcs_agil: agilbuf -= 1
  59. if agilbuf < pcs_agil: agilbuf += 1
  60. else
  61. gs $this
  62. end
  63. gs $this, 'UpdateBodyImage'
  64. !!---- Calculation of lash extension degradation and false lash removal
  65. if pcs_lashes > 2:
  66. if lashextensionstyle >= 1:
  67. lashextensionduration -= 1
  68. if lashextensionduration >= 1 and lashextensionduration <= 4:
  69. 'It''s time for you to do your maintenance on your lash extensions; you should go to the salon or you risk growing them all out.'
  70. end
  71. if lashextensionduration <= 0:
  72. 'You waited too long to do maintenance on your lash extensions; there''s too little there to notice or work with at this point.'
  73. pcs_lashes = pcs_naturallashes
  74. killvar 'lashextensionstyle'
  75. killvar 'lashextensionduration'
  76. killvar 'lashextensionnew'
  77. end
  78. end
  79. if false_lashes > 0:
  80. false_lashes -= 1
  81. if false_lashes = 0:
  82. 'Your false lashes came off in the night; there''s no recovering them now.'
  83. pcs_lashes = pcs_naturallashes
  84. else
  85. 'Somehow, your lashes managed to stay attached throughout the night. You might be able to get away with wearing them another day straight.'
  86. end
  87. end
  88. end
  89. !! Max. Hair length 600mm, or 60cm, which should be somewhere in the lower back area.
  90. !! Hair grows 1mm each day, it takes 20 months (1 month = 30 days) to regrow the hair from 0.
  91. if pcs_hairlng < 1001 and hairgrowcht = 0:pcs_hairlng += 1
  92. ! Hair colour change
  93. if pcs_haircol ! nathcol:
  94. dyefade -=1
  95. if dyefade < 0: dyefade = 0
  96. end
  97. !!pubic hair colouring
  98. !! pcs_pubecol = natural colour
  99. !! pcs_pubecol[1] = flag for saveupdate
  100. !! pcs_pubecol[2] = actual colour
  101. !! pcs_pubecol[3] = countdown timer for dye
  102. if pcs_pubecol[2] ! pcs_pubecol:
  103. pcs_pubecol[3] -=1
  104. if pcs_pubecol[3] < 0: pcs_pubecol[3] = 0
  105. if pcs_pubecol[3] = 0: pcs_pubecol[2] = pcs_pubecol
  106. end
  107. if pcs_pubes < 2: pcs_pubecol[2] = pcs_pubecol
  108. if hscrunch > 0:
  109. hscrunchrand = rand(1, 100)
  110. if hscrunchrand <= 8:hscrunch -= 1
  111. end
  112. ! Leg and pubes hair growth
  113. if lashair ! 1:
  114. pcs_leghair += 1
  115. !!Pubic hair growth at 1/2 per night
  116. if pcs_pubes['growth'] > 1:
  117. pcs_pubes['growth'] = 0
  118. pcs_pubes += 1
  119. end
  120. pcs_pubes['growth'] += 1
  121. end
  122. if age < 18 and rand (0,2) = 0 and pcs_leghair > 0: pcs_leghair -= 1
  123. if pcs_skin <= 200:
  124. pcs_skin += min(skinDailyGain * 2, 20) - skinDailyPenalty - 1
  125. elseif pcs_skin <= 400:
  126. pcs_skin += min(skinDailyGain, 10) - skinDailyPenalty - 1
  127. elseif pcs_skin <= 600:
  128. pcs_skin += min(skinDailyGain/2, 5) - skinDailyPenalty - 1
  129. elseif pcs_skin <= 800:
  130. pcs_skin += min(skinDailyGain/3, 3) - skinDailyPenalty - 1
  131. elseif pcs_skin <= 900:
  132. pcs_skin += min(skinDailyGain/5, 2) - skinDailyPenalty - 1
  133. end
  134. !skin variable reset
  135. killvar 'moisturizerDailyCount'
  136. killvar 'skinDailyGain'
  137. killvar 'skinDailyPenalty'
  138. end
  139. if $ARGS[0] = '':
  140. !!This controls the gradual change in stat to -buf
  141. if strenbuf > pcs_stren: strenbuf -= 1
  142. if strenbuf < pcs_stren: strenbuf += 1
  143. if vitalbuf > pcs_vital: vitalbuf -= 1
  144. if vitalbuf < pcs_vital: vitalbuf += 1
  145. if agilbuf > pcs_agil: agilbuf -= 1
  146. if agilbuf < pcs_agil: agilbuf += 1
  147. !!All the ratios were rounded to 2 digits and there are divide 100s at the final calc points
  148. !!Waist to hip ratio
  149. wrtemp = ((2 * vitalbuf + strenbuf + agilbuf) /4)
  150. !! Primary wratio handling
  151. if wrtemp < 11:
  152. wratio = 85 + (11 - (vitalbuf + strenbuf + agilbuf)/3)
  153. elseif wrtemp < 20:
  154. wratio = 85
  155. elseif wrtemp < 35:
  156. wratio = 85 - (wrtemp - 20) / 3
  157. elseif wrtemp < 55:
  158. wratio = 80 - (wrtemp - 35) / 4
  159. elseif wrtemp < 80:
  160. wratio = 75 - (wrtemp - 55) / 5
  161. elseif wrtemp >= 80:
  162. wratio = 70
  163. end
  164. !! High stat value edge case handling
  165. if (vitalbuf + strenbuf + agilbuf) /3 > 100: wratio -= ((vitalbuf + strenbuf)/2 - agilbuf)/5
  166. !! This is the oops and high stat gone overboard handling
  167. if wratio < 65: wratio = 65
  168. killvar 'wrtemp'
  169. !!For band to waist ratio
  170. brtemp = (2 * strenbuf + vitalbuf + agilbuf) /4
  171. if brtemp < 10:
  172. bratio = 105
  173. elseif brtemp =< 23:
  174. bratio = 106
  175. elseif brtemp =< 80:
  176. bratio = 106 + (brtemp - 23) / 3
  177. else
  178. bratio = 125
  179. end
  180. killvar 'brtemp'
  181. !!For hip to height ratio which is used to set the center point
  182. hrtemp = (2 * agilbuf + vitalbuf + strenbuf) /4
  183. if hrtemp < 35:
  184. hratio = 60
  185. elseif hrtemp < 45:
  186. hratio = 59
  187. elseif hrtemp < 60:
  188. hratio = 58
  189. elseif hrtemp < 80:
  190. hratio = 57
  191. else
  192. hratio = 56
  193. end
  194. killvar 'hrtemp'
  195. !!Salo Handling; the first part is because during a reset fat is not used and should be cleared
  196. if sftrstflag = 1 or cheatNoFat = 1:
  197. fat = 0
  198. else
  199. if fat > (17 + vitalbuf / 25): salo += 1 & fat = 0
  200. if fat < (-2 - (vitalbuf / 10)): salo -= 1 & fat = 0
  201. end
  202. !!This is the salo cap for the weight approximation
  203. if salo > 250: salo = 250
  204. !!This calculates the current salo category; ranges are 20 points, seemed to balance best if the range is x10 the hip devisor
  205. :salocatloop
  206. if salo < 10:
  207. salocatnow = 0
  208. else
  209. salocatnow = 1 + (salo - 10) / 20
  210. end
  211. !!This resets the genetic bust size (genbsize) when the cheat is used to reduce breast size (maybe other things later)
  212. if titreduc = 1:
  213. killvar 'titreduc'
  214. if genbsize > nbsize:
  215. genbsize = 2 + nbsize - nbsize mod 5
  216. end
  217. end
  218. !!This controls the movement of salo to/from bust in order of precedence
  219. if salobustdo = 0 and nbsize < genbsize and salocatnow > 2:
  220. if sftrstflag = 0:'<b>Your breasts seem fuller.</b>'
  221. nbsize += 1
  222. salo -= 3
  223. salobustdo = 1
  224. jump 'salocatloop'
  225. end
  226. if salobustdo = 0 and magf2bdo = 1 and salocatnow > salocatlast and pcs_mana >= manamax / 2 and magikDostup = 0:
  227. if sftrstflag = 0:'<b>Your breasts seem fuller.</b>'
  228. magicf2b += 1
  229. salo -= 3
  230. salobustdo = 1
  231. if magicf2b >= 2 + magtarcup * 5: magf2bdo = 0
  232. if pcs_magik < 20:
  233. pcs_mana -= 2000 / pcs_magik
  234. else
  235. mana -= 100
  236. end
  237. jump 'salocatloop'
  238. end
  239. if salobustdo = 0 and salocatnow < 2 and salocatlast >= 2 and magicf2b > 0 and magikDostup = 0:
  240. if sftrstflag = 0:'<b>Your breasts seem to be getting smaller.</b>'
  241. magicf2b -= 1
  242. salo += 3
  243. salobustdo = 1
  244. magf2bdo = 1
  245. jump 'salocatloop'
  246. end
  247. if salobustdo = 0 and salocatnow < 1 and salocatlast >= 1 and nbsize > 0:
  248. if sftrstflag = 0:'<b>Your breasts seem to be getting smaller.</b>'
  249. nbsize -= 1
  250. salo += 3
  251. salobustdo = 1
  252. jump 'salocatloop'
  253. end
  254. !!This is if a Succubus has salo < 1
  255. if succubusflag = 1 and salo < 1:
  256. sucexcess -= 1
  257. salo += 3
  258. end
  259. !!This is if salo is still < 1
  260. if salo < 1:
  261. if fat >= 1:
  262. salo = 1
  263. fat -= 1
  264. elseif fat <= 0 and pcs_stren + pcs_vital > 0:
  265. stren_deg -= 1000
  266. vital_deg -= 1000
  267. salo = 1
  268. else
  269. if Enable_nogameover = 0:
  270. over = 3
  271. gt 'gameover'
  272. exit
  273. else
  274. pl '<font color=red><B>You starved to death, but Cheat Mode keeps you Alive.</B></font>'
  275. salo = 1
  276. end
  277. end
  278. end
  279. killvar 'tempvct' & killvar 'salobustdo'
  280. !!This is the hip calcs, 80 is the center of the current max-min range (10 - 130)
  281. vhtmp = (salo - 80) / 2
  282. if vhips > vhtmp: vhips -= 1
  283. if vhips < vhtmp: vhips += 1
  284. !! Because a reset should be updating hip size instantly (this set is a bit redundant anyway)
  285. if sftrstflag = 1: vhips = vhtmp
  286. if (pcs_hgt * hratio) / 100 + vhips > (pcs_hgt * 72) / 100:
  287. vofat = ((pcs_hgt * hratio) / 100 + vhips - (pcs_hgt * 72) / 100) / 2
  288. vhips -= vofat * 2
  289. end
  290. !!This will trigger the warning notices in the bathing code (the +/- 12 should always be +/- 11 + the max change to salo w/ fat)
  291. if salolast > salo and salo <= 12 + (20 * (salocatnow - 1)): btwarn = 1
  292. if salolast < salo and salo >= (20 * (salocatnow + 1)) - 12: btwarn = 2
  293. !!This will trigger the dream for the option to use magic to increase bust
  294. !!Three nos at the dream will lock it out (1 yes resets the count)
  295. if pcs_magik >= 5 and MagikDostup = 0 and magf2bdo = 0:
  296. if salolast < salo and salo >= (20 * (salocatnow + 1)) - 11 and tits < 10:
  297. if mgf2bnocnt < 3:
  298. magf2bdo = 2
  299. else
  300. magf2bdo = 3 & killvar 'mgf2bnocnt'
  301. end
  302. end
  303. end
  304. !!This is to deal with the possibility that salocatnow changed by more than 1 (fat burners, vitamins, plastic surgery, etc.)
  305. if salocatnow < salocatlast: salocatlast -= 1
  306. if salocatnow > salocatlast: salocatlast += 1
  307. !!This is for use in the warning code and as part of the reset routines
  308. if salolast > salo: salolast -= 1
  309. if salolast < salo: salolast += 1
  310. !!Setting the pcs_apprnc bonus based on fat and strength
  311. pcs_bmi = FUNC($this, 'CalcBMI')
  312. !!This is to clean up unused variables
  313. killvar 'normbuffpick' & killvar 'nrmbfpckct'
  314. killvar 'vmeat' & killvar 'vfat' & killvar 'Kves' & killvar 'krost'
  315. killvar 'koefvesbt' & killvar 'koefbt'
  316. end
  317. if $ARGS[0] = 'UpdateBodyMeasurement':
  318. pcs_hips = (pcs_hgt * hratio) / 100 + vhips
  319. pcs_waist = (pcs_hips * wratio) / 100 + vofat
  320. pcs_band = (pcs_waist * bratio) / 100 + vofat
  321. pcs_bust = (pcs_waist * bratio) / 100 + nbsize + magicf2b + silicone
  322. pcs_butt = (pcs_hips / 10) + silicone_butt + butt_cheat
  323. pcs_cupsize = pcs_bust - pcs_band
  324. ! Update tits size
  325. if pcs_cupsize <= 5:
  326. tits = 0
  327. $titsize = 'AA cup'
  328. elseif pcs_cupsize <= 10:
  329. tits = 1
  330. $titsize = 'A cup'
  331. elseif pcs_cupsize <= 15:
  332. tits = 2
  333. $titsize = 'B cup'
  334. elseif pcs_cupsize <= 20:
  335. tits = 3
  336. $titsize = 'C cup'
  337. elseif pcs_cupsize <= 25:
  338. tits = 4
  339. $titsize = 'D cup'
  340. elseif pcs_cupsize <= 30:
  341. tits = 5
  342. $titsize = 'E cup'
  343. elseif pcs_cupsize <= 35:
  344. tits = 6
  345. $titsize = 'F cup'
  346. elseif pcs_cupsize <= 40:
  347. tits = 7
  348. $titsize = 'G cup'
  349. elseif pcs_cupsize <= 45:
  350. tits = 8
  351. $titsize = 'H cup'
  352. elseif pcs_cupsize <= 50:
  353. tits = 9
  354. $titsize = 'I cup'
  355. elseif pcs_cupsize <= 55:
  356. tits = 10
  357. $titsize = 'J cup'
  358. else
  359. tits = 11
  360. $titsize = 'K cup'
  361. end
  362. end
  363. if $ARGS[0] = 'CalcWeight':
  364. !{pcs_weight: Svetas weight in kg
  365. Optimal Weight (170cm): 60kg, 60 salo
  366. This is an approximation, so that a sveta with a different height has the same BMI for the same salo values.
  367. The default height of 170 cm is used as a starting point. The bmi deviates by 0.06 for a deviation of 10cm and 0.4 for a deviation of 20cm.}
  368. result = 30 + salo / 2 + (pcs_hgt - 170) * 7 / 10
  369. !{Do not remove (julzor)
  370. This is the old more complex function, but it doesn''t work correctly.
  371. This variable is actually only used ONCE (except for the BMI calculation), when stripping, to see if you fall off the pole from being too heavy. I am reluctant to touch it, since the math is not explained. Maybe later.
  372. Weight = (height in cm x bottom of average weight in kilos for a 170cm female / 170cm + (hip modifier + 2 x overrun fat)/4 + cup size}
  373. !result = (pcs_hgt * 62 / 170) + (vhips + (vofat * 2)) / 4 + tits
  374. end
  375. if $ARGS[0] = 'UpdateBodyImage':
  376. !Update body image set
  377. if dounspell = 1:
  378. salocatnow = (pcs_hips / 10) - 5
  379. if bdsetlock = 0:
  380. if (knowpreg = 1 or (preg = 1 and thinkpreg = 1) or (preg = 1 and PregChem > 3600)):
  381. bodset = 3
  382. elseif strenbuf >= 70:
  383. bodset = 2
  384. elseif strenbuf <= 40:
  385. bodset = 0
  386. else
  387. bodset = 1
  388. end
  389. else
  390. bodset = fixbodset
  391. end
  392. elseif (knowpreg = 1 or (preg = 1 and thinkpreg = 1) or (preg = 1 and PregChem > 3600)) and bodet ! 3 and bdsetlock = 0:
  393. bodset = 3
  394. elseif preg = 0 and bodset = 3 and bdsetlock = 0:
  395. if strenbuf >= 70:
  396. bodset = 2
  397. elseif strenbuf <= 40:
  398. bodset = 0
  399. else
  400. bodset = 1
  401. end
  402. end
  403. ! Update body description
  404. if (knowpreg = 1 or (preg = 1 and thinkpreg = 1) or (preg = 1 and PregChem > 3600)) and bodset = 3:
  405. if PregChem > 6216:
  406. $body = $bodimgsets[((bodset * 10) + 8)]
  407. elseif PregChem < 2688:
  408. $body = $bodimgsets[(bodset * 10)]
  409. else
  410. $body = $bodimgsets[((bodset * 10)+((PregChem - 2184)/504))]
  411. end
  412. elseif salocatnow <= 7:
  413. $body = $bodimgsets[((bodset * 10) + salocatnow)]
  414. else
  415. $body = $bodimgsets[((bodset * 10) + 7)]
  416. end
  417. end
  418. if $ARGS[0] = 'CalcBMI':
  419. result = 10000 * (30 + salo / 2 + (pcs_hgt - 170) * 7 / 10) / (pcs_hgt * pcs_hgt)
  420. end
  421. if $ARGS[0] = 'SkinGain':
  422. if $ARGS[1] = 'CleanSelf' and lastShowerSkinGain ! daystart:
  423. lastShowerSkinGain = daystart
  424. skinDailyGain += 5
  425. if bathLuffa = 1: skinDailyGain += 3
  426. end
  427. if $ARGS[1] = 'Moisturizer':
  428. moisturizerDailyCount += 1
  429. if moisturizerDailyCount <= 2: skinDailyGain += 3
  430. end
  431. end
  432. if $ARGS[0] = 'SkinLoss':
  433. if $ARGS[1] = 'Smoke' and lastSmokeSkinPenalty ! daystart:
  434. lastSmokeSkinPenalty = daystart
  435. skinDailyPenalty += 1
  436. end
  437. if $ARGs[1] = 'MakeUpSleep':
  438. skinDailyPenalty += 10
  439. end
  440. end
  441. if $ARGS[0] = 'softreset':
  442. !!This is for use in immediately updating shape if something has caused a large change in salo, primarily fat burners and plastic surgery
  443. sftrstflag = 1
  444. :resetloop
  445. if salo ! salolast:
  446. if gmstrtflag = 1: salobustdo = 1
  447. gs 'body'
  448. jump 'resetloop'
  449. end
  450. !!Updates pcs_apprncbase after a reset
  451. gs 'AppearanceSystem', 'UpdateBaseAppearnce'
  452. !!Clears the warning and reset status flags if they were set
  453. sftrstflag = 0
  454. btwarn = 0
  455. end
  456. if $ARGS[0] = 'hardreset':
  457. !!This is primarily for canceling out "dounspell" and setting salo to whatever value will result in the current hip size then balancing everything out.
  458. !!Also could be built in as a means to in-game undo "dounspell", other than the cheat.
  459. if dounspell = 1 and dounsplkil > 0:
  460. salo = 12
  461. fat = 0
  462. agilbuf = pcs_agil & strenbuf = pcs_stren & vitalbuf = pcs_vital
  463. salobustdo = 1 & sftrstflag = 1 & normbuffpick = -1
  464. gs 'body'
  465. salo = (pcs_hips * 2) - ((pcs_hgt * hratio) / 50) + 80
  466. if salo < 10:
  467. salocatnow = 0
  468. else
  469. salocatnow = 1 + (salo - 10) / 20
  470. end
  471. salocatlast = salocatnow
  472. salolast = salo
  473. vhtmp = (salo - 80) / 2
  474. vhips = vhtmp
  475. if genbsize = 0 and nbsize > 0:
  476. If nbsize >= 27:
  477. genbsize = 27
  478. else
  479. genbsize = 2 + nbsize - nbsize mod 5
  480. end
  481. elseif genbsize = 0 and nbsize = 0 and silicone >= 20:
  482. genbsize = 12 & nbsize = 12 & silicone -= 10
  483. end
  484. sftrstflag = 0 & normbuffpick = 0 & btwarn = 0 & magf2bdo = 0
  485. killvar 'dounsplkil'
  486. newbdsp = 1
  487. dounspell = 0
  488. gs 'AppearanceSystem', 'UpdateBaseAppearnce'
  489. gs 'body'
  490. gs 'stat'
  491. else
  492. 'If you''re seeing this, something odd happened. Please make a bug report that the body shape hard reset improperly triggered and what you were doing.'
  493. end
  494. end
  495. if $ARGS[0] = 'initial':
  496. !! Sets the genetic bust size if it was not set in the start routines
  497. if genbsize = 0:
  498. genbsize = 12 & nbsize = 12
  499. else
  500. nbsize = genbsize
  501. end
  502. agilbuf = pcs_agil & strenbuf = pcs_stren & vitalbuf = pcs_vital
  503. normbuffpick = -1 & gmstrtflag = 1
  504. !! Calling soft reset will cause the main code to cycle up to the starting value of salo
  505. gs 'body', 'softreset'
  506. !! This sets/resets the controler variables
  507. salocatlast = salocatnow
  508. normbuffpick = 0 & magf2bdo = 0
  509. killvar 'gmstrtflag'
  510. newbdsp = 1
  511. !! This does all the body shape setting before the first stat call
  512. gs $this, 'UpdateBodyMeasurement'
  513. pcs_weight = func($this, 'CalcWeight')
  514. pcs_bmi = func($this, 'CalcBMI')
  515. gs 'body_desc', 'BMI'
  516. end
  517. --- body ---------------------------------