Prechádzať zdrojové kódy

[changed] sex pain fine-tune

Lusticon 4 mesiacov pred
rodič
commit
b65e5ba76f
3 zmenil súbory, kde vykonal 218 pridanie a 174 odobranie
  1. 113 74
      locations/arousal.qsrc
  2. 104 89
      locations/pain.qsrc
  3. 1 11
      locations/stat.qsrc

+ 113 - 74
locations/arousal.qsrc

@@ -90,52 +90,6 @@ killvar 'orgasm_flag'
 
 if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0] ! 'count2':
 
-	stim_time = max(1, iif(ARGS[1] >= 0, ARGS[1], ARGS[1]*-1))
-	$get_hole_pain = {
-		!! ARGS[0] hole size
-		!! ARGS[1] hole slippery
-		!! ARGS[2] current pain
-		!! ARGS[3] length of inserted object
-		!! ARGS[4] grange of inserted object
-		!! ARGS[5] skill (0-2) aka silavag
-		!! 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 compensated with lube
-		if pain_coeff > rand(0,3):
-			grdif += rand(pain_coeff/max(1,ARGS[1]/2), pain_coeff/max(1,ARGS[1]))
-			ltdif += rand(pain_coeff/max(1,ARGS[1]/2), pain_coeff/max(1,ARGS[1]))
-		end
-		!! in pain compensated by skill
-		if ARGS[2] > rand(2,5):
-			grdif += rand(ARGS[2]/max(1,ARGS[5]*4), ARGS[2]/max(1,ARGS[5]*2))
-			ltdif += rand(ARGS[2]/max(1,ARGS[5]*4), ARGS[2]/max(1,ARGS[5]*2))
-		end
-		!! if there is any discomfort, check intercourse duration, compensated by skill
-		if stim_time > 1:
-			if grdif > rand(ARGS[5]*2): grdif += rand(stim_time/(max(1,ARGS[5])*10), stim_time/(max(1,ARGS[5])*5))
-			if ltdif > rand(ARGS[5]*2): ltdif += rand(stim_time/(max(1,ARGS[5])*10), stim_time/(max(1,ARGS[5])*5))
-		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], ARGS[1]*2)
-			ltdif -= rand(ARGS[1]/2, ARGS[1])
-		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]
-
-		!! min\max
-		grdif = max(0, min(15-(ARGS[0]/4), grdif))
-		ltdif = max(0, min(15-(ARGS[0]/4), ltdif))
-
-		!{ '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>>' }
-	}
-
 	if arrpos('$ARGS', 'unaware') >= 0: temp_unaware = 1
 	if arrpos('$ARGS', 'no_orgasm_msg') >= 0: temp_text = 1
 	
@@ -154,15 +108,20 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 	grange = dyneval('result=strpos(''skinny   slimx     well pr   thicker   thickx    massive   monstrous'',$ARGS[0])',mid($temp_dick_girth+'x',1,6))/2
 
 	!! first let us determine how slippery are pc''s holes
-	if vaginal_slip < pcs_horny / 10: vaginal_slip = pcs_horny / 10
-	!! cum slippery
-	if cumloc[0] > 0: vaginal_slip += rand(cumvol[0]/10, cumvol[0]/5)
-	if cumloc[3] > 0: anal_slip += rand(cumvol[3]/15, cumvol[3]/10)
-	if mid($ARGS[0],1,4) = 'anal' and anal_slip < 8 + pain['asshole']/2 - pcs_ass:
+	if anal_slip < max(1, 8 + pain['asshole']/2 - pcs_ass) _ 
+	and mid($ARGS[0],1,4) = 'anal' and arrpos('$ARGS', 'anal_finger') < 0:
+		!! cum
+		if cumloc[3] > 0: anal_slip += rand(cumvol[3]/15, cumvol[3]/10)
+		!! spit
 		if arrpos('$ARGS', 'spit') >= 0: anal_slip += 4
-		if arrpos('$ARGS', 'lube') >= 0 and ar_anal_lube = 0: anal_slip += 8 & ar_anal_lube = 1
-		if auto_anal_lube = 1 and anal_slip < 8 + pain['asshole']/2 - pcs_ass:
-			if  arrpos('$ARGS', 'anal_finger') < 0 _ 
+		!! lube
+		if anal_slip < max(1, 8 + pain['asshole']/2 - pcs_ass):
+			!! event lube
+			if arrpos('$ARGS', 'lube') >= 0 and ar_anal_lube = 0:
+				anal_slip += 8
+				ar_anal_lube = 1
+			!! PC lube
+			elseif auto_anal_lube = 1 _ 
 			and arrpos('$ARGS', 'rape') < 0 _ 
 			and arrpos('$ARGS', 'gangbang') < 0 _ 
 			and arrpos('$ARGS', 'rough') < 0 _ 
@@ -173,17 +132,29 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 				gs 'arousal', 'auto_lube', 'anal'
 			end
 		end
-		!! an old variable that is still in use somewhere
+		!! an old(?) variable that is still in use somewhere
 		if anal_slip <> lubonus and lubonus > 0:
 			anal_slip += lubonus
 			lubonus = anal_slip
 		end
 	end
-	if mid($ARGS[0],1,4) = 'vagi' and vaginal_slip < 8 + pain['vaginal']/2 - pcs_vag:
+
+	if vaginal_slip < max(1, 8 + pain['vaginal']/2 - pcs_vag) _ 
+	and mid($ARGS[0],1,4) = 'vagi' and arrpos('$ARGS', 'vaginal_finger') < 0:
+		!! horny
+		if vaginal_slip < pcs_horny / 10: vaginal_slip = pcs_horny / 10
+		!! cum
+		if cumloc[0] > 0: vaginal_slip += rand(cumvol[0]/10, cumvol[0]/5)
+		!! spit
 		if arrpos('$ARGS', 'spit') >= 0: vaginal_slip += 4
-		if arrpos('$ARGS', 'lube') >= 0 and ar_vag_lube = 0: vaginal_slip += 8 & ar_vag_lube = 1
-		if auto_vag_lube = 1 and vaginal_slip < 8 + pain['vaginal']/2 - pcs_vag:
-			if  arrpos('$ARGS', 'vaginal_finger') < 0 _ 
+		!! lube
+		if vaginal_slip < max(1, 8 + pain['vaginal']/2 - pcs_vag):
+			!! event lube
+			if arrpos('$ARGS', 'lube') >= 0 and ar_vag_lube = 0:
+				vaginal_slip += 8
+				ar_vag_lube = 1
+			!! PC lube
+			elseif auto_vag_lube = 1 _ 
 			and arrpos('$ARGS', 'rape') < 0 _ 
 			and arrpos('$ARGS', 'gangbang') < 0 _ 
 			and arrpos('$ARGS', 'rough') < 0 _ 
@@ -214,16 +185,65 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 
 !! set up pain coefficient
 	pain_coeff = 0
-	if arrpos('$ARGS', 'rape') >= 0:         pain_coeff += rand(25,40)
-	if arrpos('$ARGS', 'gangbang') >= 0:     pain_coeff += rand(15,20)
-	if arrpos('$ARGS', 'beast') >= 0:        pain_coeff += rand(10,15)
-	if arrpos('$ARGS', 'rough') >= 0:        pain_coeff += rand(5,10)
-	if arrpos('$ARGS', 'BDSM') >= 0:         pain_coeff += rand(4,6)
-	if arrpos('$ARGS', 'maso') >= 0:         pain_coeff += rand(3,5)
-	if arrpos('$ARGS', 'bound') >= 0:        pain_coeff += rand(2,4)
+	if arrpos('$ARGS', 'rape') >= 0:         pain_coeff += rand(15,30)
+	if arrpos('$ARGS', 'gangbang') >= 0:     pain_coeff += rand(10,15)
+	if arrpos('$ARGS', 'beast') >= 0:        pain_coeff += rand(7,10)
+	if arrpos('$ARGS', 'rough') >= 0:        pain_coeff += rand(5,7)
+	if arrpos('$ARGS', 'BDSM') >= 0:         pain_coeff += rand(4,5)
+	if arrpos('$ARGS', 'maso') >= 0:         pain_coeff += rand(3,4)
+	if arrpos('$ARGS', 'bound') >= 0:        pain_coeff += rand(2,3)
 	if arrpos('$ARGS', 'sub') >= 0:          pain_coeff += rand(1,2)
-	if arrpos('$ARGS', 'prostitution') >= 0: pain_coeff += max(0, rand(-2,2))
-	if arrpos('$ARGS', 'unknown') >= 0:      pain_coeff += max(0, rand(-3,1))
+	if arrpos('$ARGS', 'prostitution') >= 0: pain_coeff += max(0, rand(-3,2))
+	if arrpos('$ARGS', 'unknown') >= 0:      pain_coeff += max(0, rand(-4,1))
+
+	stim_time = max(1, iif(ARGS[1]<0, -ARGS[1], ARGS[1]))
+	$get_hole_pain = {
+		!! ARGS[0] hole size
+		!! ARGS[1] hole slippery
+		!! ARGS[2] current pain
+		!! ARGS[3] length of inserted object
+		!! 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 / (ARGS[0]/6))
+		ltdif = max(0, ltdif / (ARGS[0]/6))
+		!!grdif = max(0, min(15-(ARGS[0]/4), grdif))
+		!!ltdif = max(0, min(15-(ARGS[0]/4), ltdif))
+
+		!{ '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>>' }
+	}
 
 !!add count and effects due to action
 	if $ARGS[0] = 'clit_finger':
@@ -367,6 +387,9 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		elseif pcs_traits['buttslut_lvl'] >= 2:
 			stim['mag'] += 3
 		end
+		if vaginal_slip < max(1, anal_slip/2):
+			if cumloc[3] > 0: vaginal_slip += rand(cumvol[3]/10, cumvol[3]/5)
+		end
 		dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], temp_dick, grange, temp_silavag
 		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
 		!! the pain lover the pleasure
@@ -382,6 +405,9 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		orgasm_flag['anal'] = 1
 		count['anal_dildo'] = 1
 		!! the same as for 'anal'
+		if vaginal_slip < max(1, anal_slip/2):
+			if cumloc[3] > 0: vaginal_slip += rand(cumvol[3]/10, cumvol[3]/5)
+		end
 		dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], temp_dick, grange, temp_silavag
 		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
 		if pcs_traits['buttslut_lvl'] = 1:
@@ -405,6 +431,9 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			stim['mag'] += 1
 		end
 		!! the same as for 'anal'
+		if vaginal_slip < max(1, anal_slip/2):
+			if cumloc[3] > 0: vaginal_slip += rand(cumvol[3]/10, cumvol[3]/5)
+		end
 		dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], temp_dick, grange, temp_silavag
 		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
 		gs 'pain', grdif + ltdif, 'asshole', 'stretch'
@@ -451,7 +480,10 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		pcs_sweat += rand(1,3)*max(1,stim_time/5)
 		orgasm_flag['vaginal'] = 1
 		!! add anal lube from vaginal juices
-		if anal_slip < max(1, vaginal_slip/2): anal_slip = max(1, vaginal_slip/rand(2,3))
+		if anal_slip < max(1, vaginal_slip/2):
+			anal_slip = max(1, vaginal_slip/rand(2,3))
+			if cumloc[0] > 0: anal_slip += rand(cumvol[0]/15, cumvol[0]/10)
+		end
 		!! pre-cum check
 		if rand(0,120) < ARGS[1]: cumprecheck = 1 & gs 'cum_manage'
 		if temp_unaware = 1:
@@ -488,7 +520,10 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		count['vaginal_dildo'] = 1
 		stim['mag'] += 1
 		!! the same as for 'vaginal'
-		if anal_slip < max(1, vaginal_slip/2): anal_slip = max(1, vaginal_slip/rand(2,3))
+		if anal_slip < max(1, vaginal_slip/2):
+			anal_slip = max(1, vaginal_slip/rand(2,3))
+			if cumloc[0] > 0: anal_slip += rand(cumvol[0]/15, cumvol[0]/10)
+		end
 		dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], temp_dick, grange, temp_silavag
 		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
 		gs 'pain', grdif + ltdif, 'vaginal', 'stretch'
@@ -512,7 +547,10 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		end
 		stim['mag'] += 1
 		!! the same as for 'vaginal'
-		if anal_slip < max(1, vaginal_slip/2): anal_slip = max(1, vaginal_slip/rand(2,3))
+		if anal_slip < max(1, vaginal_slip/2):
+			anal_slip = max(1, vaginal_slip/rand(2,3))
+			if cumloc[0] > 0: anal_slip += rand(cumvol[0]/15, cumvol[0]/10)
+		end
 		dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], temp_dick, grange, temp_silavag
 		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
 		gs 'pain', grdif + ltdif, 'vaginal', 'stretch'
@@ -936,6 +974,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 	stim['total'] = ((stim['mag']*stim['act']*stim['kink']/100) + stim['pref'])*stim['time'] / 120
 
 !!Reduction in arousal linked to pain, masochism helps to deal with this
+	gs 'pain', 'calc'
 	if pain['total'] > 0:
 		if maso['pref'] <= 0 and pain['total'] < 50:
 			if pain['total'] - (maso['exp'] + 1 / 6) > 0:stim['total'] -= (pain['total'] - (maso['exp'] / 6))
@@ -1004,10 +1043,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 	killvar '$orgasm_txt'
 	killvar '$stim_les'
 	killvar '$stim_foot'
-	killvar 'stim_time'
-	killvar 'pain_coeff'
 	killvar '$get_hole_pain'
-	killvar 'grdif' & killvar 'ltdif'
 
 	gs 'nichUtil','onArouse',$ARGS[0]
 	
@@ -1093,6 +1129,9 @@ if $ARGS[0] = 'end':
 	killvar 'vaginal_slip'
 	killvar 'ar_vag_lube'
 	killvar '$orgasm_or'
+	killvar 'stim_time'
+	killvar 'pain_coeff'
+	killvar 'grdif' & killvar 'ltdif'
 
 !!Updating fetish exp for acts carried out and clearing data
 	gs 'arousal', 'checks', 'maso'

+ 104 - 89
locations/pain.qsrc

@@ -1,101 +1,116 @@
 # pain
-!For checking pain and when applicable triggering arousal.
-!ARGS[0] magnitude of pain inflicted 1 is very light, 9 is the maximum value in the given way of causing pain
-!$ARGS[1] should equal the body part being hurt from any of the following:
-!BobyPart 'head', 'hair', 'ears', 'eyebrows', 'eyes', 'cheeks', 'nose', 'mouth', 'lips', 'tongue', 'throat', 'neck', 'back',
-!'asscheeks', 'asshole', 'hips', 'thighs', 'legL', 'legR', 'feet', 'toes', 'shoulders', 'armL', 'armR', 'handL', 'handR',
-!'fingers', 'chest', 'breasts', 'nipples', 'ribs', 'tummy', 'pubic', 'vaginal', 'labia', 'clitoris', 'urethra', 'cervix',
-!'wrists', 'ankles'
-!$ARGS[2] The action the participant has performed on Sveta (some of these can cause arousal if Sveta is into pain)
-!Acts: 'pierce', 'slap', 'spank', 'pinch', 'bite', 'burn', 'freeze', 'hit', 'kick', 'Slam', 'shock', 'bind', 'stretch'
-!'tear', 'break', 'twist', 'ache', 'cramp', 'labor', 'choke', 'fall', 'pull'
-!Format to use: gs 'pain', n, 'BobyPart', 'Act'
-!For pain to multiple body parts, use multiple calls
+if $ARGS[0] = 'calc':
 
-pain[1] = min(ARGS[0]+ARGS[1]+ARGS[2],9)
-if pain[1]<1: exit
+    paintmp1 = func('shortgs','modul',pain['head'],pain['hair'],pain['ears'],pain['eyebrows'],pain['eyes'],pain['cheeks'],pain['nose'],pain['mouth'])
+    paintmp2 = func('shortgs','modul',pain['tummy'],pain['pubic'],pain['vaginal'],pain['labia'],pain['clitoris'],pain['urethra'],pain['cervix'],pain['lips'])
+    paintmp3 = func('shortgs','modul',pain['throat'],pain['asscheeks'],pain['asshole'],pain['hips'],pain['thighs'],pain['legL'],pain['legR'],pain['feet'])
+    paintmp4 = func('shortgs','modul',pain['toes'],pain['shoulders'],pain['armL'],pain['armR'],pain['hands'],pain['fingers'],pain['chest'],pain['breasts'])
+    paintmp5 = func('shortgs','modul',pain['tongue'],pain['neck'],pain['back'],pain['nipples'],pain['ribs'],vgape * 2, agape * 4,spanked * 24)
 
-pain[2] = 0
-if arrpos('$ARGS', 'slap') >= 0:    pain[2] = 1
-if arrpos('$ARGS', 'bind') >= 0:    pain[2] = 1
-if arrpos('$ARGS', 'spank') >= 0:   pain[2] = 3 & spank += 1
-if arrpos('$ARGS', 'choke') >= 0:   pain[2] = 3
-if arrpos('$ARGS', 'shock') >= 0:   pain[2] = 4
-if arrpos('$ARGS', 'twist') >= 0:   pain[2] = 4
-if arrpos('$ARGS', 'pull') >= 0:    pain[2] = 4	
-if arrpos('$ARGS', 'fall') >= 0:    pain[2] = 4
-if arrpos('$ARGS', 'labor') >= 0:   pain[2] = 4
-if arrpos('$ARGS', 'pinch') >= 0:   pain[2] = 5
-if arrpos('$ARGS', 'stretch') >= 0: pain[2] = 6
-if arrpos('$ARGS', 'slam') >= 0:    pain[2] = 6
-if arrpos('$ARGS', 'burn') >= 0:    pain[2] = 7
-if arrpos('$ARGS', 'freeze') >= 0:  pain[2] = 7
-if arrpos('$ARGS', 'hit') >= 0:     pain[2] = 7
-if arrpos('$ARGS', 'pierce') >= 0:  pain[2] = 8
-if arrpos('$ARGS', 'bite') >= 0:    pain[2] = 8
-if arrpos('$ARGS', 'tear') >= 0:    pain[2] = 9
-if arrpos('$ARGS', 'ache') >= 0:    pain[2] = 9
-if arrpos('$ARGS', 'kick') >= 0:    pain[2] = 10
-if arrpos('$ARGS', 'break') >= 0:   pain[2] = 10
-if arrpos('$ARGS', 'cramp') >= 0:   pain[2] = 10
-if pain[2]<1: exit
+    pain['total'] = func('shortgs','modul',paintmp1,paintmp2,paintmp3,paintmp4,paintmp5)
 
-pain[3] = 0
-if arrpos('$ARGS', 'hair') >= 0:      pain[3] = 1  & $painPart = 'hair'
-if arrpos('$ARGS', 'asscheeks') >= 0: pain[3] = 2  & $painPart = 'asscheeks'
-if arrpos('$ARGS', 'feet') >= 0:      pain[3] = 2  & $painPart = 'feet'
-if arrpos('$ARGS', 'shoulders') >= 0: pain[3] = 2  & $painPart = 'shoulders'
-if arrpos('$ARGS', 'wrists') >= 0:    pain[3] = 2  & $painPart = 'wrists'
-if arrpos('$ARGS', 'ankles') >= 0:    pain[3] = 2  & $painPart = 'ankles'
-if arrpos('$ARGS', 'armL') >= 0:      pain[3] = 2  & $painPart = 'armL'
-if arrpos('$ARGS', 'armR') >= 0:      pain[3] = 2  & $painPart = 'armR'
-if arrpos('$ARGS', 'cheeks') >= 0:    pain[3] = 3  & $painPart = 'cheeks'
-if arrpos('$ARGS', 'legL') >= 0:      pain[3] = 3  & $painPart = 'legL'
-if arrpos('$ARGS', 'legR') >= 0:      pain[3] = 3  & $painPart = 'legR'
-if arrpos('$ARGS', 'hands') >= 0:     pain[3] = 3  & $painPart = 'hands'
-if arrpos('$ARGS', 'mouth') >= 0:     pain[3] = 4  & $painPart = 'mouth'
-if arrpos('$ARGS', 'jaw') >= 0:       pain[3] = 4  & $painPart = 'jaw'
-if arrpos('$ARGS', 'thighs') >= 0:    pain[3] = 4  & $painPart = 'thighs'
-if arrpos('$ARGS', 'toes') >= 0:      pain[3] = 4  & $painPart = 'toes'
-if arrpos('$ARGS', 'fingers') >= 0:   pain[3] = 4  & $painPart = 'fingers'
-if arrpos('$ARGS', 'nose') >= 0:      pain[3] = 5  & $painPart = 'nose'
-if arrpos('$ARGS', 'back') >= 0:      pain[3] = 5  & $painPart = 'back'
-if arrpos('$ARGS', 'ribs') >= 0:      pain[3] = 5  & $painPart = 'ribs'
-if arrpos('$ARGS', 'hips') >= 0:      pain[3] = 5  & $painPart = 'hips'
-if arrpos('$ARGS', 'head') >= 0:      pain[3] = 6  & $painPart = 'head'
-if arrpos('$ARGS', 'ears') >= 0:      pain[3] = 6  & $painPart = 'ears'
-if arrpos('$ARGS', 'eyebrows') >= 0:  pain[3] = 6  & $painPart = 'eyebrows'
-if arrpos('$ARGS', 'lips') >= 0:      pain[3] = 6  & $painPart = 'lips'
-if arrpos('$ARGS', 'throat') >= 0:    pain[3] = 6  & $painPart = 'throat'
-if arrpos('$ARGS', 'tummy') >= 0:     pain[3] = 6  & $painPart = 'tummy'
-if arrpos('$ARGS', 'pubic') >= 0:     pain[3] = 6  & $painPart = 'pubic'
-if arrpos('$ARGS', 'urethra') >= 0:   pain[3] = 6  & $painPart = 'urethra'
-if arrpos('$ARGS', 'tongue') >= 0:    pain[3] = 7  & $painPart = 'tongue'
-if arrpos('$ARGS', 'neck') >= 0:      pain[3] = 7  & $painPart = 'neck'
-if arrpos('$ARGS', 'chest') >= 0:     pain[3] = 7  & $painPart = 'chest'
-if arrpos('$ARGS', 'eyes') >= 0:      pain[3] = 8  & $painPart = 'eyes'
-if arrpos('$ARGS', 'breasts') >= 0:   pain[3] = 8  & $painPart = 'breasts'
-if arrpos('$ARGS', 'vaginal') >= 0:   pain[3] = 8  & $painPart = 'vaginal'
-if arrpos('$ARGS', 'labia') >= 0:     pain[3] = 8  & $painPart = 'labia'
-if arrpos('$ARGS', 'cervix') >= 0:    pain[3] = 8  & $painPart = 'cervix'
-if arrpos('$ARGS', 'asshole') >= 0:   pain[3] = 9  & $painPart = 'asshole'
-if arrpos('$ARGS', 'nipples') >= 0:   pain[3] = 9  & $painPart = 'nipples'
-if arrpos('$ARGS', 'clitoris') >= 0:  pain[3] = 10 & $painPart = 'clitoris'
-if pain[3]<1: exit
+    if pain['total'] > 100: pain['total'] = 100
+    pain['damage'] = pain['total']
 
-curpain = (pain[1] * pain[2] * pain[3]) /10
-prevpain = pain[$painPart]
+else
+    !For checking pain and when applicable triggering arousal.
+    !ARGS[0] magnitude of pain inflicted 1 is very light, 9 is the maximum value in the given way of causing pain
+    !$ARGS[1] should equal the body part being hurt from any of the following:
+    !BobyPart 'head', 'hair', 'ears', 'eyebrows', 'eyes', 'cheeks', 'nose', 'mouth', 'lips', 'tongue', 'throat', 'neck', 'back',
+    !'asscheeks', 'asshole', 'hips', 'thighs', 'legL', 'legR', 'feet', 'toes', 'shoulders', 'armL', 'armR', 'handL', 'handR',
+    !'fingers', 'chest', 'breasts', 'nipples', 'ribs', 'tummy', 'pubic', 'vaginal', 'labia', 'clitoris', 'urethra', 'cervix',
+    !'wrists', 'ankles'
+    !$ARGS[2] The action the participant has performed on Sveta (some of these can cause arousal if Sveta is into pain)
+    !Acts: 'pierce', 'slap', 'spank', 'pinch', 'bite', 'burn', 'freeze', 'hit', 'kick', 'Slam', 'shock', 'bind', 'stretch'
+    !'tear', 'break', 'twist', 'ache', 'cramp', 'labor', 'choke', 'fall', 'pull'
+    !Format to use: gs 'pain', n, 'BobyPart', 'Act'
+    !For pain to multiple body parts, use multiple calls
 
-pain[$painPart] = func( 'shortgs','modul',prevpain,curpain)
+    pain[1] = min(ARGS[0]+ARGS[1]+ARGS[2],9)
+    if pain[1]<1: exit
 
-if pain[$painPart] > 100: pain[$painPart] = 100
+    pain[2] = 0
+    if arrpos('$ARGS', 'slap') >= 0:    pain[2] = 1
+    if arrpos('$ARGS', 'bind') >= 0:    pain[2] = 1
+    if arrpos('$ARGS', 'spank') >= 0:   pain[2] = 3 & spank += 1
+    if arrpos('$ARGS', 'choke') >= 0:   pain[2] = 3
+    if arrpos('$ARGS', 'shock') >= 0:   pain[2] = 4
+    if arrpos('$ARGS', 'twist') >= 0:   pain[2] = 4
+    if arrpos('$ARGS', 'pull') >= 0:    pain[2] = 4	
+    if arrpos('$ARGS', 'fall') >= 0:    pain[2] = 4
+    if arrpos('$ARGS', 'labor') >= 0:   pain[2] = 4
+    if arrpos('$ARGS', 'pinch') >= 0:   pain[2] = 5
+    if arrpos('$ARGS', 'stretch') >= 0: pain[2] = 6
+    if arrpos('$ARGS', 'slam') >= 0:    pain[2] = 6
+    if arrpos('$ARGS', 'burn') >= 0:    pain[2] = 7
+    if arrpos('$ARGS', 'freeze') >= 0:  pain[2] = 7
+    if arrpos('$ARGS', 'hit') >= 0:     pain[2] = 7
+    if arrpos('$ARGS', 'pierce') >= 0:  pain[2] = 8
+    if arrpos('$ARGS', 'bite') >= 0:    pain[2] = 8
+    if arrpos('$ARGS', 'tear') >= 0:    pain[2] = 9
+    if arrpos('$ARGS', 'ache') >= 0:    pain[2] = 9
+    if arrpos('$ARGS', 'kick') >= 0:    pain[2] = 10
+    if arrpos('$ARGS', 'break') >= 0:   pain[2] = 10
+    if arrpos('$ARGS', 'cramp') >= 0:   pain[2] = 10
+    if pain[2]<1: exit
 
-killvar 'prevpain'
-killvar 'curpain'
-killvar '$painPart'
+    pain[3] = 0
+    if arrpos('$ARGS', 'hair') >= 0:      pain[3] = 1  & $painPart = 'hair'
+    if arrpos('$ARGS', 'asscheeks') >= 0: pain[3] = 2  & $painPart = 'asscheeks'
+    if arrpos('$ARGS', 'feet') >= 0:      pain[3] = 2  & $painPart = 'feet'
+    if arrpos('$ARGS', 'shoulders') >= 0: pain[3] = 2  & $painPart = 'shoulders'
+    if arrpos('$ARGS', 'wrists') >= 0:    pain[3] = 2  & $painPart = 'wrists'
+    if arrpos('$ARGS', 'ankles') >= 0:    pain[3] = 2  & $painPart = 'ankles'
+    if arrpos('$ARGS', 'armL') >= 0:      pain[3] = 2  & $painPart = 'armL'
+    if arrpos('$ARGS', 'armR') >= 0:      pain[3] = 2  & $painPart = 'armR'
+    if arrpos('$ARGS', 'cheeks') >= 0:    pain[3] = 3  & $painPart = 'cheeks'
+    if arrpos('$ARGS', 'legL') >= 0:      pain[3] = 3  & $painPart = 'legL'
+    if arrpos('$ARGS', 'legR') >= 0:      pain[3] = 3  & $painPart = 'legR'
+    if arrpos('$ARGS', 'hands') >= 0:     pain[3] = 3  & $painPart = 'hands'
+    if arrpos('$ARGS', 'mouth') >= 0:     pain[3] = 4  & $painPart = 'mouth'
+    if arrpos('$ARGS', 'jaw') >= 0:       pain[3] = 4  & $painPart = 'jaw'
+    if arrpos('$ARGS', 'thighs') >= 0:    pain[3] = 4  & $painPart = 'thighs'
+    if arrpos('$ARGS', 'toes') >= 0:      pain[3] = 4  & $painPart = 'toes'
+    if arrpos('$ARGS', 'fingers') >= 0:   pain[3] = 4  & $painPart = 'fingers'
+    if arrpos('$ARGS', 'nose') >= 0:      pain[3] = 5  & $painPart = 'nose'
+    if arrpos('$ARGS', 'back') >= 0:      pain[3] = 5  & $painPart = 'back'
+    if arrpos('$ARGS', 'ribs') >= 0:      pain[3] = 5  & $painPart = 'ribs'
+    if arrpos('$ARGS', 'hips') >= 0:      pain[3] = 5  & $painPart = 'hips'
+    if arrpos('$ARGS', 'head') >= 0:      pain[3] = 6  & $painPart = 'head'
+    if arrpos('$ARGS', 'ears') >= 0:      pain[3] = 6  & $painPart = 'ears'
+    if arrpos('$ARGS', 'eyebrows') >= 0:  pain[3] = 6  & $painPart = 'eyebrows'
+    if arrpos('$ARGS', 'lips') >= 0:      pain[3] = 6  & $painPart = 'lips'
+    if arrpos('$ARGS', 'throat') >= 0:    pain[3] = 6  & $painPart = 'throat'
+    if arrpos('$ARGS', 'tummy') >= 0:     pain[3] = 6  & $painPart = 'tummy'
+    if arrpos('$ARGS', 'pubic') >= 0:     pain[3] = 6  & $painPart = 'pubic'
+    if arrpos('$ARGS', 'urethra') >= 0:   pain[3] = 6  & $painPart = 'urethra'
+    if arrpos('$ARGS', 'tongue') >= 0:    pain[3] = 7  & $painPart = 'tongue'
+    if arrpos('$ARGS', 'neck') >= 0:      pain[3] = 7  & $painPart = 'neck'
+    if arrpos('$ARGS', 'chest') >= 0:     pain[3] = 7  & $painPart = 'chest'
+    if arrpos('$ARGS', 'eyes') >= 0:      pain[3] = 8  & $painPart = 'eyes'
+    if arrpos('$ARGS', 'breasts') >= 0:   pain[3] = 8  & $painPart = 'breasts'
+    if arrpos('$ARGS', 'vaginal') >= 0:   pain[3] = 8  & $painPart = 'vaginal'
+    if arrpos('$ARGS', 'labia') >= 0:     pain[3] = 8  & $painPart = 'labia'
+    if arrpos('$ARGS', 'cervix') >= 0:    pain[3] = 8  & $painPart = 'cervix'
+    if arrpos('$ARGS', 'asshole') >= 0:   pain[3] = 9  & $painPart = 'asshole'
+    if arrpos('$ARGS', 'nipples') >= 0:   pain[3] = 9  & $painPart = 'nipples'
+    if arrpos('$ARGS', 'clitoris') >= 0:  pain[3] = 10 & $painPart = 'clitoris'
+    if pain[3]<1: exit
 
-!arousal calculation
-!arousal += (pain[1] * pain[2]) * pain[3] * masochism['pref'] / 1000
+    curpain = (pain[1] * pain[2] * pain[3]) /10
+    prevpain = pain[$painPart]
+
+    pain[$painPart] = func( 'shortgs','modul',prevpain,curpain)
+
+    if pain[$painPart] > 100: pain[$painPart] = 100
+
+    killvar 'prevpain'
+    killvar 'curpain'
+    killvar '$painPart'
+
+    !arousal calculation
+    !arousal += (pain[1] * pain[2]) * pain[3] * masochism['pref'] / 1000
+end
 
 --- pain ---------------------------------
 

+ 1 - 11
locations/stat.qsrc

@@ -966,17 +966,7 @@ stat['cuni'] += kuni & kuni = 0
 stat['anal_strap_give'] += pegging & pegging = 0
 
 !!Pain calculation
-
-paintmp1 = func('shortgs','modul',pain['head'],pain['hair'],pain['ears'],pain['eyebrows'],pain['eyes'],pain['cheeks'],pain['nose'],pain['mouth'])
-paintmp2 = func('shortgs','modul',pain['tummy'],pain['pubic'],pain['vaginal'],pain['labia'],pain['clitoris'],pain['urethra'],pain['cervix'],pain['lips'])
-paintmp3 = func('shortgs','modul',pain['throat'],pain['asscheeks'],pain['asshole'],pain['hips'],pain['thighs'],pain['legL'],pain['legR'],pain['feet'])
-paintmp4 = func('shortgs','modul',pain['toes'],pain['shoulders'],pain['armL'],pain['armR'],pain['hands'],pain['fingers'],pain['chest'],pain['breasts'])
-paintmp5 = func('shortgs','modul',pain['tongue'],pain['neck'],pain['back'],pain['nipples'],pain['ribs'],vgape * 8, agape * 10,spanked * 24)
-
-pain['total'] = func('shortgs','modul',paintmp1,paintmp2,paintmp3,paintmp4,paintmp5)
-
-if pain['total'] > 100: pain['total'] = 100
-pain['damage'] = pain['total']
+gs 'pain', 'calc'
 pain['relief'] = 0
 
 if alko > 9: