Browse Source

[added] New willpower system, instructions in the willpower file

KevinSmarts 5 years ago
parent
commit
315c8cbef5
5 changed files with 298 additions and 7 deletions
  1. 1 0
      glife.qproj
  2. 2 0
      locations/preCUST.qsrc
  3. 18 0
      locations/preSYS.qsrc
  4. 10 7
      locations/stat.qsrc
  5. 267 0
      locations/willpower.qsrc

+ 1 - 0
glife.qproj

@@ -56,6 +56,7 @@
 		<Location name="food"/>
 		<Location name="food"/>
 		<Location name="food_menu"/>
 		<Location name="food_menu"/>
 		<Location name="virginity_call"/>
 		<Location name="virginity_call"/>
+		<Location name="willpower"/>
 	</Folder>
 	</Folder>
 	<Folder name="Body">
 	<Folder name="Body">
 		<Location name="body"/>
 		<Location name="body"/>

+ 2 - 0
locations/preCUST.qsrc

@@ -231,6 +231,7 @@ if $ARGS[0] = 'Done':
 		pcs_energy = 100
 		pcs_energy = 100
 		pcs_hydra = 100
 		pcs_hydra = 100
 		pcs_sleep = 100
 		pcs_sleep = 100
+		willpowermax = 150
 
 
 !!		Starting Option Adjustments
 !!		Starting Option Adjustments
 !!		The TG Background options would be aplied here
 !!		The TG Background options would be aplied here
@@ -297,6 +298,7 @@ if $ARGS[0] = 'Done':
 		pcs_energy = 100
 		pcs_energy = 100
 		pcs_hydra = 100
 		pcs_hydra = 100
 		pcs_sleep = 100
 		pcs_sleep = 100
+		willpowermax = 100
 
 
 !!		Starting Option Adjustments
 !!		Starting Option Adjustments
 !!		The TG Background options would be aplied here
 !!		The TG Background options would be aplied here

+ 18 - 0
locations/preSYS.qsrc

@@ -475,6 +475,7 @@ if $ARGS[0] = 'charselect':
 				pcs_skin = 40
 				pcs_skin = 40
 				genbsize = 17
 				genbsize = 17
 				salo = 60
 				salo = 60
+				willpowermax = 90
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -495,6 +496,7 @@ if $ARGS[0] = 'charselect':
 				grupvalue[6] = 30
 				grupvalue[6] = 30
 				npc_rel['A29'] += 20
 				npc_rel['A29'] += 20
 				if player_avatar ! 1: pcs_hairlng = 200
 				if player_avatar ! 1: pcs_hairlng = 200
+				willpowermax = 80
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -519,6 +521,7 @@ if $ARGS[0] = 'charselect':
 				npc_rel['A129'] += 10
 				npc_rel['A129'] += 10
 				komp = 1
 				komp = 1
 				if player_avatar ! 1: pcs_hairlng = 120
 				if player_avatar ! 1: pcs_hairlng = 120
+				willpowermax = 90
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -540,6 +543,7 @@ if $ARGS[0] = 'charselect':
 				chessmonth = month
 				chessmonth = month
 				npc_rel['A151'] += 20
 				npc_rel['A151'] += 20
 				if player_avatar ! 1: pcs_hairlng = 200
 				if player_avatar ! 1: pcs_hairlng = 200
+				willpowermax = 90
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -568,6 +572,7 @@ if $ARGS[0] = 'charselect':
 				gsAboVolley += 30
 				gsAboVolley += 30
 				npc_rel['A13'] += 10
 				npc_rel['A13'] += 10
 				npc_rel['A69'] += 10
 				npc_rel['A69'] += 10
+				willpowermax = 140
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -602,6 +607,7 @@ if $ARGS[0] = 'charselect':
 				gsAboDance += 30
 				gsAboDance += 30
 				npc_rel['A23'] += 20
 				npc_rel['A23'] += 20
 				grupvalue[1] = 20
 				grupvalue[1] = 20
+				willpowermax = 140
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -626,6 +632,7 @@ if $ARGS[0] = 'charselect':
 				npc_rel['A8'] += 5
 				npc_rel['A8'] += 5
 				npc_rel['A18'] -= 30
 				npc_rel['A18'] -= 30
 				npc_rel['A131'] += 10
 				npc_rel['A131'] += 10
+				willpowermax = 140
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -647,6 +654,7 @@ if $ARGS[0] = 'charselect':
 				npc_rel['A131'] += 10
 				npc_rel['A131'] += 10
 				npc_rel['A149'] += 10
 				npc_rel['A149'] += 10
 				npc_rel['A34'] += 10
 				npc_rel['A34'] += 10
+				willpowermax = 140
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -679,6 +687,7 @@ if $ARGS[0] = 'charselect':
 				gs 'preSYS', 'socialgroup_setting', 10, 5, 0, 0, 0, 0
 				gs 'preSYS', 'socialgroup_setting', 10, 5, 0, 0, 0, 0
 				npc_rel['A140'] += 10
 				npc_rel['A140'] += 10
 				salo = 80
 				salo = 80
+				willpowermax = 110
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -719,6 +728,7 @@ if $ARGS[0] = 'charselect':
 				gs 'preSYS', 'socialgroup_setting_boys', 20, 20, 20, 20, 20, 0
 				gs 'preSYS', 'socialgroup_setting_boys', 20, 20, 20, 20, 20, 0
 				salo = 60
 				salo = 60
 				pav_sex = 20
 				pav_sex = 20
+				willpowermax = 110
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -759,6 +769,7 @@ if $ARGS[0] = 'charselect':
 				npc_rel['A33'] -= 10
 				npc_rel['A33'] -= 10
 				npc_rel['A34'] -= 10
 				npc_rel['A34'] -= 10
 				grupvalue[4] = 40
 				grupvalue[4] = 40
+				willpowermax = 130
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -794,6 +805,7 @@ if $ARGS[0] = 'charselect':
 				npc_rel['A29'] -= 20
 				npc_rel['A29'] -= 20
 				npc_rel['A33'] -= 10
 				npc_rel['A33'] -= 10
 				npc_rel['A34'] -= 10
 				npc_rel['A34'] -= 10
+				willpowermax = 120
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -856,6 +868,7 @@ if $ARGS[0] = 'charselect':
 				kotovLoveQW = 1
 				kotovLoveQW = 1
 				vitekvisit = 5
 				vitekvisit = 5
 				npc_sex['A9'] += 5
 				npc_sex['A9'] += 5
+				willpowermax = 100
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -915,6 +928,7 @@ if $ARGS[0] = 'charselect':
 				npc_rel['A28'] -= 10
 				npc_rel['A28'] -= 10
 				npc_rel['A29'] -= 10
 				npc_rel['A29'] -= 10
 				npc_rel['A33'] += 10
 				npc_rel['A33'] += 10
+				willpowermax = 120
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -941,6 +955,7 @@ if $ARGS[0] = 'charselect':
 				pcs_observ = 20
 				pcs_observ = 20
 				pcs_skin = 10
 				pcs_skin = 10
 				npc_rel['A11'] -= 20
 				npc_rel['A11'] -= 20
+				willpowermax = 80
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -964,6 +979,7 @@ if $ARGS[0] = 'charselect':
 					pcs_lashes = 2
 					pcs_lashes = 2
 				end
 				end
 				salo = 20
 				salo = 20
+				willpowermax = 70
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -995,6 +1011,7 @@ if $ARGS[0] = 'charselect':
 				npc_rel['A28'] += 10
 				npc_rel['A28'] += 10
 				npc_rel['A29'] += 10
 				npc_rel['A29'] += 10
 				npc_rel['A11'] -= 20
 				npc_rel['A11'] -= 20
+				willpowermax = 150
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end
@@ -1061,6 +1078,7 @@ if $ARGS[0] = 'charselect':
 				orgasm = 15
 				orgasm = 15
 				swallow = 20
 				swallow = 20
 				trt_cumeater = 1
 				trt_cumeater = 1
+				willpowermax = 50
 				gt 'preCUST', 'SGStart'
 				gt 'preCUST', 'SGStart'
 			end
 			end
 		end
 		end

+ 10 - 7
locations/stat.qsrc

@@ -192,12 +192,11 @@ elseif pcs_inhib > 100:
 end
 end
 
 
 healthmax = (pcs_vital * 10 + pcs_stren * 5)
 healthmax = (pcs_vital * 10 + pcs_stren * 5)
-willpowermax = (pcs_intel * 5 + pcs_sprt * 5)
 stammax = 5 * (2 * pcs_vital + pcs_agil + pcs_stren) / 2
 stammax = 5 * (2 * pcs_vital + pcs_agil + pcs_stren) / 2
 mannamax = (pcs_intel * pcs_magik) + pcs_magik * 100 + pcs_vital * 10 + rikudo
 mannamax = (pcs_intel * pcs_magik) + pcs_magik * 100 + pcs_vital * 10 + rikudo
 speed = (2 * (pcs_stren + pcs_agil) + pcs_vital) / 5
 speed = (2 * (pcs_stren + pcs_agil) + pcs_vital) / 5
 if healthmax < 1: healthmax = 1
 if healthmax < 1: healthmax = 1
-if willpowermax < 1: willpowermax = 1
+if willpowermax < 50: willpowermax = 50
 if stammax < 1: stammax = 1
 if stammax < 1: stammax = 1
 if mannamax < 1: mannamax = 1
 if mannamax < 1: mannamax = 1
 
 
@@ -424,6 +423,10 @@ if minut >= 60:
 		pcs_sleep -= 4
 		pcs_sleep -= 4
 	end
 	end
 
 
+	pcs_willpwr += willpowermax/50
+	if pcs_willpwr > willpowermax: pcs_willpwr = willpowermax
+	if pcs_willpwr < 20: will_degrade += 1
+	if will_degrade >= 20: willpowermax -= 1 & will_degrade = 0
 	if pcs_stam > stammax: pcs_stam = stammax
 	if pcs_stam > stammax: pcs_stam = stammax
 
 
 	gs 'femcyc'
 	gs 'femcyc'
@@ -935,15 +938,15 @@ else
 end
 end
 
 
 if pcs_willpwr >= willpowermax:
 if pcs_willpwr >= willpowermax:
-	$pcs_willpwr = '<font color="green">Your mind is clear.</font>'
+	$pcs_willpwr = '<font color="green">You feel in charge of your actions.</font>'
 elseif pcs_willpwr >= willpowermax * 75 / 100:
 elseif pcs_willpwr >= willpowermax * 75 / 100:
-	$pcs_willpwr = '<font color=#0064FF>You are mostly clear of mind.</font>'
+	$pcs_willpwr = '<font color=#0064FF>You are mostly in control.</font>'
 elseif pcs_willpwr >= willpowermax * 50 / 100:
 elseif pcs_willpwr >= willpowermax * 50 / 100:
-	$pcs_willpwr = '<font color="brown">You are depressed.</font>'
+	$pcs_willpwr = '<font color="brown">You might have to make some concessions.</font>'
 elseif pcs_willpwr >= willpowermax * 25 / 100:
 elseif pcs_willpwr >= willpowermax * 25 / 100:
-	$pcs_willpwr = '<font color="red">You have depression.</font>'
+	$pcs_willpwr = '<font color="red">You will have to toe the line.</font>'
 else
 else
-	$pcs_willpwr = '<font color="red">You are on the verge of madness.</font>'
+	$pcs_willpwr = '<font color="red">You are completely at our people''s mercy.</font>'
 end
 end
 
 
 !!stop auto birth control pill taking if the player believes they are pregnant or are pregnant
 !!stop auto birth control pill taking if the player believes they are pregnant or are pregnant

+ 267 - 0
locations/willpower.qsrc

@@ -0,0 +1,267 @@
+# willpower
+
+!!To use call with gs 'willpower', '<type>'
+!!type is the nature of the demand and can be any of the following:
+!!
+!!Sex acts, this is for the cost to refuse advances or force another to partake
+!!'hj', 'bj', 'sex', 'anal', 'gangbang', 'prostitution', 'swallow', 'cum_inside'
+!!Bridging a gap in skill, for succeeding when not quite meeting the required skill/attribute, must include skill with _lvl postfix in $ARGS[1]
+!!'skill'
+!!Standing up to unwanted sex
+!!'rape'
+!!Refusing peer pressure
+!!'drink', 'drugs', 'crime', 'exhib'
+!!Forcing Sveta to stay awake
+!!'sleep'
+!!The value returned as will_cost can be used to inform the player of cost and limit actions
+!!To apply the cost just call gs 'willpower', 'resist' or gs 'willpower', 'force'
+!!Force is for Sveta forcing someone else and will slowly increase the will stat, otherwise its the same as resist
+
+if $ARGS[0] = 'calc':
+	gs 'willpower', 'dnd'
+	will_calc = will_dnd
+!!fatigue
+	if pcs_sleep < 5:
+		will_calc += 50
+	elseif pcs_sleep < 10:
+		will_calc += 25
+	elseif pcs_sleep < 20:
+		will_calc += 10
+	elseif pcs_sleep < 30:
+		will_calc += 5
+	end
+!!hunger
+	if pcs_energy < 5:
+		will_calc += 50
+	elseif pcs_energy < 10:
+		will_calc += 25
+	elseif pcs_energy < 20:
+		will_calc += 10
+	elseif pcs_energy < 30:
+		will_calc += 5
+	end
+!!thirst
+	if pcs_hydra < 5:
+		will_calc += 50
+	elseif pcs_hydra < 10:
+		will_calc += 25
+	elseif pcs_hydra < 20:
+		will_calc += 10
+	elseif pcs_hydra < 30:
+		will_calc += 5
+	end
+!!Very horny
+	if pcs_horny >= 90: will_calc += 10
+!!Bad syphilis, you is mental
+	if Sifilis >= 50: will_calc += 100
+!!feeling sick
+	if sick > 72:
+		will_calc += 35
+	elseif sick > 48:
+		will_calc += 20
+	elseif sick > 24:
+		will_calc += 10
+	elseif sick > 1:
+		will_calc += 5
+	end
+
+end
+
+if $ARGS[0] = 'hj':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	if stat['hj'] <= 90:
+		will_cost = ((100 - stat['hj']) + will_calc)/10
+	else
+		will_cost = (10 + will_calc)/10
+	end
+end
+
+if $ARGS[0] = 'bj':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	if missCum >= timeTresh: will_calc += 100
+	if stat['bj'] <= 90:
+		will_cost = ((100 - stat['bj']) + will_calc)/10
+	else
+		will_cost = (10 + will_calc)/10
+	end
+end
+	
+if $ARGS[0] = 'sex':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	if stat['vaginal'] <= 90:
+		will_cost = ((100 - stat['vaginal']) + will_calc)/10
+	else
+		will_cost = (10 + will_calc)/10
+	end
+end
+	
+if $ARGS[0] = 'anal':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	if missCum >= timeTresh: will_calc += 100
+	if stat['anal'] <= 90:
+		will_cost = ((100 - stat['anal']) + will_calc)/10
+	else
+		will_cost = (10 + will_calc)/10
+	end
+end
+	
+if $ARGS[0] = 'gangbang':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	if missCum >= timeTresh: will_calc += 100
+	if stat['group'] <= 90:
+		will_cost = ((100 - stat['group']) + will_calc)/10
+	else
+		will_cost = (10 + will_calc)/10
+	end
+end
+	
+if $ARGS[0] = 'prostitution':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	if missCum >= timeTresh: will_calc += 100
+	prost_will = pav_prostitute + city_prostitute + oldtown_prostitute + village_prostitute
+	if prost_will <= 90:
+		will_cost = ((100 - prost_will) + will_calc)/10
+	else
+		will_cost = (10 + will_calc)/10
+	end
+end
+	
+if $ARGS[0] = 'swallow':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	if trt_cumeater = 0:
+		will_cost = (100 + will_calc)/10
+	else
+		will_cost = (10 + will_calc)/10
+	end
+end
+
+!! no stat for this currently so just a baseline figure and reduction if cum already inside
+if $ARGS[0] = 'cum_inside':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	if missCum >= timeTresh: will_calc += 100
+	if cumloc[0] <= 0:
+		will_cost = (100 + will_calc)/10
+	else
+		will_cost = (10 + will_calc)/10
+	end
+end
+
+!! requires the skill to be named with the _lvl postfix
+if $ARGS[0] = 'skill':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	dynamic 'will_cost = <<$ARGS[1]>> + will_calc)/10'
+end
+	
+if $ARGS[0] = 'rape':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	if missCum >= timeTresh: will_calc += 100
+	if stat['bj'] <= 90:
+		will_cost = ((100 - stat['bj']) + will_calc)/10
+	else
+		will_cost = (10 + will_calc)/10
+	end
+end
+
+if $ARGS[0] = 'drink':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	if alko > 10:
+		will_cost = (60 + will_calc)/10
+	elseif alko > 6:
+		will_cost = (100 + will_calc)/10
+	elseif alko > 3:
+		will_cost = (80 + will_calc)/10
+	end
+end
+
+!!Drug needs already included in the will_calc so just a small base cost here
+if $ARGS[0] = 'drugs':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	will_cost = (20 + will_calc)/10
+end
+
+!!There is no related stat so just a base cost of 6
+if $ARGS[0] = 'crime':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	will_cost = (60 + will_calc)/10
+end
+
+if $ARGS[0] = 'exhib':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	if stat['bj'] <= 90:
+	if Exhibitionist_lvl = 3:
+		will_cost = (0 + will_calc)/10
+	elseif Exhibitionist_lvl = 2:
+		will_cost = (1 + will_calc)/10
+	elseif Exhibitionist_lvl = 1:
+		will_cost = (2 + will_calc)/10
+	elseif pcs_inhib > 70:
+		will_cost = (3 + will_calc)/10
+	else
+		will_cost = (100 - pcs_inhib + will_calc)/10
+	end
+end
+
+!!this is to force you to stay wake so will cost nothing if you have more than 5 sleep, it has no base cost as there will always be a sleep cost in calc
+if $ARGS[0] = 'sleep':
+	gs 'willpower', 'calc'
+	will_cost = 0
+	if pcs_sleep <= 5: will_cost = will_calc/10
+end
+
+!!modifiers for drink an drugs
+if $ARGS[0] = 'dnd':
+	will_dnd = 0
+	if alko > 10:
+		will_dnd += 80
+	elseif alko > 6:
+		will_dnd += 40
+	elseif alko > 3:
+		will_dnd += 20
+	end
+
+	!!cigarettes
+	if smokerNeed > 10: will_dnd += 10
+	!!amphetamines
+	if amphWithdrawl > 2:
+		will_dnd += 40
+	elseif amphHigh > 0:
+		will_dnd += 60
+	end
+	!!heroine
+	if SLomka > 0:
+		will_dnd += 80
+	elseif StrongNarkota > 0:
+		will_dnd += 50
+	end
+	!!cocaine
+	if narkoman = 1:
+		will_dnd += 40
+	elseif nark < 0:
+		will_dnd -= 20
+	end
+end
+
+if $ARGS[0] = 'resist': pcs_willpwr -= will_cost
+
+if $ARGS[0] = 'force':
+	pcs_willpwr -= will_cost
+	will_counter += 1
+	if will_counter > 10: pcs_will += 1
+end
+
+--- willpower ---------------------------------
+