npc_set_preference.qsrc 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. # npc_set_preference
  2. !! npc_code = 'A***', 'B***', 'C***', etc.
  3. !! Full reset of npc preferences:
  4. !! gs 'npc_set_preference', 'reset', npc_code
  5. !!
  6. !! Add a preference to an npc:
  7. !! gs 'npc_set_preference', npc_code, trait, amount
  8. !! trait: = 'strong', 'cum_on_face', 'tits_big', 'ass_bubble', etc.
  9. !!
  10. !! amount = 'hate', 'dislike', 'neutral', 'like', 'love'
  11. if $ARGS[0] = 'reset':
  12. $npc_preferences[$ARGS[1]] = ''
  13. end
  14. !! $ARGS[0] = 'A***', 'B***', 'C***', etc.
  15. if isnum(mid($ARGS[0], 2)):
  16. !!Dynamically create the $npc_pref_traits and npc_trait_values arrays
  17. dynamic $npc_preferences[$ARGS[0]]
  18. dynamic $npc_pref_values[$ARGS[0]]
  19. !! Example of these created arrays.
  20. !!$npc_pref_traits: npc_pref_traits[i] = 'strong'
  21. !!npc_trait_values: npc_trait_values['strong'] = -15
  22. !! Translate 'hate, dislike, etc. into a number and store it.'
  23. temp_set_preference_trait_value = func('npc_set_preference', 'get_value', $ARGS[1], $ARGS[2])
  24. !! This block of code is here to find the index of the preferences.
  25. skip_check_preferences_loop = 0
  26. :check_preference_loop_start
  27. !! Escape the preference loops if we found the index of the preferences
  28. if skip_check_preferences_loop = 0:
  29. if arrsize('$npc_pref_traits') > 0:
  30. preference_loop_index = 0
  31. :check_preferences_loop
  32. if $npc_pref_traits[preference_loop_index] = $ARGS[1]:
  33. skip_check_preferences_loop = 1
  34. jump 'check_preference_loop_start'
  35. end
  36. preference_loop_index += 1
  37. if preference_loop_index < arrsize('$npc_pref_traits'): jump 'check_preferences_loop'
  38. end
  39. end
  40. killvar 'check_preferences_loop'
  41. killvar 'skip_check_preferences_loop'
  42. killvar 'check_preference_loop_start'
  43. if pref_trait_value ! 0:
  44. if arrsize('$npc_pref_traits') = 0:
  45. !!replace(..., ' ', '') is there to remove the tabs from the string.
  46. $npc_preferences[$ARGS[0]] = replace({killvar '$npc_pref_traits'
  47. $npc_pref_traits[] = } + "'<<$ARGS[1]>>'" + {
  48. }, ' ', '')
  49. $npc_pref_values[$ARGS[0]] = replace({killvar 'npc_trait_values'
  50. npc_trait_values} + "['<<$ARGS[1]>>'] = <<temp_set_preference_trait_value>>" + {
  51. }, ' ', '')
  52. else
  53. if preference_loop_index < arrsize('$npc_pref_traits'):
  54. !!The npc already has a preference for the trait.
  55. !!We overwrite the trait and then escape the preference_loop
  56. npc_trait_values[$ARGS[1]] = temp_set_preference_trait_value
  57. !!Rebuild the $npc_pref....[$ARGS[0]] strings from the grounds up
  58. gs 'npc_set_preference', 'rebuild_preferences', $ARGS[0]
  59. else
  60. !!We have checked that the npc has no preference for the trait.
  61. !!We add the preference to the npc.
  62. $npc_preferences[$ARGS[0]] += replace({$npc_pref_traits[] = } + "'<<$ARGS[1]>>'" + {
  63. }, ' ', '')
  64. $npc_pref_values[$ARGS[0]] += replace({npc_trait_values} + "['<<$ARGS[1]>>'] = <<temp_set_preference_trait_value>>" + {
  65. }, ' ', '')
  66. end
  67. end
  68. else
  69. !! The trait exists and we are setting it to 0. Best just remove it entirely
  70. if temp_preference_loop_index < arrsize('$npc_pref_traits'):
  71. killvar '$npc_pref_traits', temp_preference_loop_index
  72. gs 'shortgs', 'remove_array_element', 'npc_trait_values', $ARGS[1]
  73. !!Rebuild the $npc_pref....[$ARGS[0]] strings from the grounds up
  74. gs 'npc_set_preference', 'rebuild_preferences', $ARGS[0]
  75. end
  76. end
  77. killvar '$npc_pref_traits'
  78. killvar 'npc_trait_values'
  79. killvar 'preference_loop_index'
  80. killvar 'temp_set_preference_trait_value'
  81. end
  82. !! Called as gs 'npc_set_preference', 'rebuild_preferences', $npc_code
  83. if $ARGS[0] = 'rebuild_preferences':
  84. !!Rebuild the $npc_pref....[$ARGS[0]] strings from the grounds up
  85. $temp_npc_pref_traits = {killvar '$npc_pref_traits'
  86. }
  87. $temp_npc_trait_values = {killvar 'npc_trait_values'
  88. }
  89. !!Loop over every preference and add it to the $npc_pref....[$ARGS[0]] strings.
  90. rebuild_preferences_index = 0
  91. :rebuild_preferences_loop
  92. $temp_npc_pref_traits += {$npc_pref_traits[] = } + "'<<$npc_pref_traits[rebuild_preferences_index]>>'" + {
  93. }
  94. $temp_npc_trait_values += {npc_trait_values} + "['<<$npc_pref_traits[rebuild_preferences_index]>>'] = <<npc_trait_values[rebuild_preferences_index]>>" + {
  95. }
  96. rebuild_preferences_index += 1
  97. if rebuild_preferences_index < arrsize('$npc_pref_traits'): jump 'rebuild_preferences_loop'
  98. !!Overwrite the $npc_pref....[$ARGS[0]] strings with the rebuild string.
  99. $npc_preferences[$ARGS[0]] = replace($temp_npc_pref_traits, ' ', '')
  100. $npc_pref_values[$ARGS[0]] = replace($temp_npc_trait_values, ' ', '')
  101. killvar '$temp_npc_pref_traits'
  102. killvar '$temp_npc_trait_values'
  103. killvar 'rebuild_preferences_loop'
  104. killvar 'rebuild_preferences_index'
  105. end
  106. !! Called as gs 'npc_set_preference', 'remove_prefence', $npc_code, $pref_trait
  107. if $ARGS[0] = 'remove_preference':
  108. if arrsize('$npc_pref_traits') > 0:
  109. !! Check the position of the preference in the preference array.
  110. temp_set_preferences_trait_position = arrpos('$npc_pref_traits', $ARGS[2])
  111. !! If the preference exists:
  112. if temp_set_preferences_trait_position ! -1:
  113. !! Remove the preference from the array.
  114. killvar '$npc_pref_traits', temp_set_preferences_trait_position
  115. gs 'shortgs', 'remove_array_element', 'npc_trait_values', $ARGS[2]
  116. !! Then rebuild the dynamic string.
  117. gs 'npc_set_preference', 'rebuild_preferences', $ARGS[1]
  118. end
  119. killvar 'temp_set_preferences_trait_position'
  120. end
  121. end
  122. !!====================================!!
  123. !! !!
  124. !! Calculate pref_value !!
  125. !! !!
  126. !!====================================!!
  127. !! gs 'npc_set_preference', 'get_value', $PREFERENCE, $VALUE
  128. !! $PREFERENCE: body_fit, clothes_bimbo, etc.
  129. !! $VALUE: 'love', 'like', 'neutral', 'dislike', or 'hate'
  130. if $ARGS[0] = 'get_value':
  131. temp_pref_values['love'] = 10
  132. temp_pref_values['like'] = 3
  133. temp_pref_values['neutral'] = 0
  134. temp_pref_values['dislike'] = -3
  135. temp_pref_values['hate'] = -10
  136. if $ARGS[1] = 'body_bmi_starving':
  137. temp_pref_values['love'] = 60
  138. temp_pref_values['like'] = 40
  139. temp_pref_values['dislike'] = -5
  140. temp_pref_values['hate'] = -10
  141. elseif $ARGS[1] = 'body_bmi_underweight':
  142. temp_pref_values['love'] = 10
  143. temp_pref_values['like'] = 5
  144. temp_pref_values['dislike'] = -25
  145. temp_pref_values['hate'] = -35
  146. elseif $ARGS[1] = 'body_bmi_normal':
  147. temp_pref_values['love'] = 5
  148. temp_pref_values['like'] = 2
  149. temp_pref_values['dislike'] = -50
  150. temp_pref_values['hate'] = -70
  151. elseif $ARGS[1] = 'body_bmi_overweight':
  152. temp_pref_values['love'] = 10
  153. temp_pref_values['like'] = 5
  154. temp_pref_values['dislike'] = -25
  155. temp_pref_values['hate'] = -35
  156. elseif $ARGS[1] = 'body_bmi_obese':
  157. temp_pref_values['love'] = 60
  158. temp_pref_values['like'] = 40
  159. temp_pref_values['dislike'] = -5
  160. temp_pref_values['hate'] = -10
  161. end
  162. result = temp_pref_values[$ARGS[2]]
  163. killvar 'temp_pref_values'
  164. end
  165. !! Body
  166. !! 'body_ass_bubble'
  167. !! 'body_ass_big'
  168. !! 'body_ass_average'
  169. !! 'body_ass_flat'
  170. !! 'body_bmi_starving'
  171. !! 'body_bmi_underweight'
  172. !! 'body_bmi_normal'
  173. !! 'body_bmi_overweight'
  174. !! 'body_bmi_obese'
  175. !! 'body_fit'
  176. !! 'body_lips_thin'
  177. !! 'body_lips_normal'
  178. !! 'body_lips_plump'
  179. !! 'body_lips_big'
  180. !! 'body_lips_pillowy'
  181. !! 'body_pregnant'
  182. !! 'body_tan'
  183. !! 'body_tan_not'
  184. !! 'body_tits_big'
  185. !! 'body_tits_average'
  186. !! 'body_tits_small'
  187. !! 'body_strong'
  188. !! 'body_weak'
  189. !! 'body_sweaty'
  190. !! 'body_stinky'
  191. !!
  192. !! Clothes
  193. !! 'clothes_bimbo'
  194. !! 'clothes_goth'
  195. !! 'clothes_punk'
  196. !! 'clothes_thin'
  197. !! 'clothes_skirt_long'
  198. !! 'clothes_skirt_short'
  199. !! 'clothes_exposed_ass'
  200. !! 'clothes_exposed_bra'
  201. !! 'clothes_exposed_panties'
  202. !! 'clothes_exposed_pussy'
  203. !! 'clothes_exposed_tits'
  204. !!
  205. !! Cosmetics
  206. !! 'cosmetics_deodorant'
  207. !! 'cosmetics_makeup'
  208. !! 'cosmetics_piercing'
  209. !! 'cosmetics_tattoo'
  210. !!
  211. !! Cum
  212. !! 'cum_face'
  213. !! 'cum_clothes'
  214. !!
  215. !! Hair
  216. !! 'hair_pubes_shaven'
  217. !! 'hair_pubes_grown'
  218. !! 'hair_pubes_style_...' & !! not yet implemented.
  219. !! 'hair_leg'
  220. !! 'hair_leg_not'
  221. !! 'hair_short'
  222. !! 'hair_average'
  223. !! 'hair_long'
  224. !! 'hair_curly'
  225. !! 'hair_straight'
  226. !! 'hair_color_black'
  227. !! 'hair_color_....' & !! not yet implemented.
  228. --- npc_set_preference ---------------------------------