Browse Source

[added] arousal pain cap

Lusticon 3 months ago
parent
commit
d85eb55c49
1 changed files with 38 additions and 34 deletions
  1. 38 34
      locations/arousal.qsrc

+ 38 - 34
locations/arousal.qsrc

@@ -210,41 +210,45 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		!! ARGS[4] grange of inserted object
 		!! ARGS[5] skill (0-2) aka silavag
 		!! ARGS[6] stimulation time
-		!! length and girth abilities of hole are not also separated
-		!! but I suppose that they are related although it is not propable
-		!! we can estimate difference in girth and length
-		grdif = (ARGS[4] - ARGS[0])/2
-		ltdif = (ARGS[3] - ARGS[0])/4
-		!! painful intercourse
-		if pain_coeff > rand(0,2):
-			grdif += rand(pain_coeff/2, pain_coeff)
-			ltdif += rand(pain_coeff/2, pain_coeff)
-		end
-		!! in pain, compensated with lube
-		if ARGS[2] > 0:
-			if ARGS[2] > rand(ARGS[1]/2, ARGS[1]): grdif += rand(ARGS[2] / max(1,ARGS[1]/2), ARGS[2] / max(1,ARGS[1]/4))
-			if ARGS[2] > rand(ARGS[1]/2, ARGS[1]): ltdif += rand(ARGS[2] / max(1,ARGS[1]/2), ARGS[2] / max(1,ARGS[1]/4))
-		end
-		!! lube can compensate the difference a bit, or make it worse if there is no lube at all
-		if ARGS[1] > 0:
-			grdif -= rand(ARGS[1]/2, ARGS[1])
-			ltdif -= rand(ARGS[1]/4, ARGS[1]/2)
-		else
-			grdif += max(1, rand(grdif/4, grdif/2)) / max(1,ARGS[5]+1)
-			ltdif += max(1, rand(ltdif/6, ltdif/4)) / max(1,ARGS[5]+1)
-		end
-		!! when skilled, it does not harm PC
-		if ARGS[5] > 0 and ltdif > 0: ltdif /= ARGS[5]+1
-		!! if there is any discomfort, check intercourse duration, compensated by skill
-		if stim_time > 1:
-			if grdif > rand(stim_time): grdif += rand(stim_time / (max(1,ARGS[5])*5), stim_time / (max(1,ARGS[5])*3))
-			if ltdif > rand(stim_time): ltdif += rand(stim_time / (max(1,ARGS[5])*5), stim_time / (max(1,ARGS[5])*3))
-		end
-
-		!! min\max
-		grdif = max(0, grdif / max(1, (ARGS[0]/6)))
-		ltdif = max(0, ltdif / max(1, (ARGS[0]/6)))
+		grdif = 0
+		ltdif = 0
+		!! cap pain to vitality
+		if ARGS[2] < (120 - pcs_vital)/2:
+			!! length and girth abilities of hole are not also separated
+			!! but I suppose that they are related although it is not propable
+			!! we can estimate difference in girth and length
+			grdif = (ARGS[4] - ARGS[0])/2
+			ltdif = (ARGS[3] - ARGS[0])/4
+			!! painful intercourse
+			if pain_coeff > rand(0,2):
+				grdif += rand(pain_coeff/2, pain_coeff)
+				ltdif += rand(pain_coeff/2, pain_coeff)
+			end
+			!! in pain, compensated with lube
+			if ARGS[2] > 0:
+				if ARGS[2] > rand(ARGS[1]/2, ARGS[1]): grdif += rand(ARGS[2] / max(1,ARGS[1]/2), ARGS[2] / max(1,ARGS[1]/4))
+				if ARGS[2] > rand(ARGS[1]/2, ARGS[1]): ltdif += rand(ARGS[2] / max(1,ARGS[1]/2), ARGS[2] / max(1,ARGS[1]/4))
+			end
+			!! lube can compensate the difference a bit, or make it worse if there is no lube at all
+			if ARGS[1] > 0:
+				grdif -= rand(ARGS[1]/2, ARGS[1])
+				ltdif -= rand(ARGS[1]/4, ARGS[1]/2)
+			else
+				grdif += max(1, rand(grdif/4, grdif/2)) / max(1,ARGS[5]+1)
+				ltdif += max(1, rand(ltdif/6, ltdif/4)) / max(1,ARGS[5]+1)
+			end
+			!! when skilled, it does not harm PC
+			if ARGS[5] > 0 and ltdif > 0: ltdif /= ARGS[5]+1
+			!! if there is any discomfort, check intercourse duration, compensated by skill
+			if stim_time > 1:
+				if grdif > rand(stim_time): grdif += rand(stim_time / (max(1,ARGS[5])*5), stim_time / (max(1,ARGS[5])*3))
+				if ltdif > rand(stim_time): ltdif += rand(stim_time / (max(1,ARGS[5])*5), stim_time / (max(1,ARGS[5])*3))
+			end
 
+			!! min\max
+			grdif = max(0, grdif / max(1, (ARGS[0]/6)))
+			ltdif = max(0, ltdif / max(1, (ARGS[0]/6)))
+		end
 		!{ 'hole size <<ARGS[0]>>; length: <<ARGS[3]>>; grange: <<ARGS[4]>>; hole slippery: <<ARGS[1]>>; current pain: <<ARGS[2]>>; stim_time: <<stim_time>>; skill: <<ARGS[5]>>; grdif: <<grdif>>; ltdif: <<ltdif>>' }
 	}