Title:Runa_estim
Sex: Female T Male T Trans T
Require: estim
Limits: LPain-G
;E-Stim fun with Runa
;
;The slave will experience varying levels of electric shocks.
;A question will be asked at the end, which the slave must answer after completing the last set blindfolded.
;
;peerreview off for now
peerreview:false
;-------------- Variables ----------------
;
;sound files
assign:S_Low:'whip_low.wav'
assign:S_Med:'whip_mid.wav'
assign:S_High:'whip_high.wav'
;repeat sound for calibrating
assign:Calibrate:'yes'
;current sound to play
assign:PlaySound: '$S_Low'
;naming the current sound
assign:S_Current:'low'
;How many shocks
assign:S_amount:0
;Wich sound is selected
assign:S_Choice:1
;runa speaking
assign:runa_talks:'nothing'
;what runa says depends on the phase the task is in
assign:runa_phase: 'cali'
;countdown, later 30
assign:CountDown:30
;time the mercy button is visible, standard 5
assign:Mercy:0
;random phase counter
assign:P_Random:5
;
;------------ Preparation -----------------
;
;intro
log:Task description. The slave will receive electrical stimulation while kneeling, with electrodes attached either to his genitals or thighs.
;
image:taskimg/sets/runa/runa_black_chair_b66.jpg
show:Hello, it seems DTITLE DNAME has lent you out to me again. We're going to have so much fun.
button:Yes Runa
show:Why are you still wearing clothes? You know you must be naked when you're around me, SNAME.
button:Naked
show:Today, I want to shock you, so get your estim device.<br> Also, grab a blindfold or something similar to cover your eyes, it's for a little surprise at the end.
button:Got it Runa
show:First, you must attach the electrodes. Follow my instructions carefully.
button:Yes Runa
;
;attaching electro
if:(INCHASTITY)
  ;slave is in chastity, electrodes positioned on the thighs
  show:I hope you didn't assume you'd be exempt from this task just because you're currently in chastity. You guessed wrong.
  button:No Runa
  show:Place the electro pads on both sides of your thighs. This will create the right shocks.
  button:Done
  log: The image below shows electrodes placed on each side of the slave's thighs.
else:
  if:(HAS_PENIS)
    ;normal placing of the electrodes for males
    show: Place a set of electro loops around the penis, positioning one just under the head and another at the base of the shaft or around the testicles.
    button:Done
    log: The image below shows a set of electro loops positioned around the penis, with one loop just beneath the head and another at the base of the shaft or around the testicles.
  else:
    ;placing the electrodes for females
    show:Place the electro pads on both sides of your thighs. This will create the right shocks.
    button:Done
    log: The image below shows electrodes placed on each side of the slave's thighs.
  fi:
fi:
show:Move closer to the cam so I can capture a picture of the electros in place.
button:Picture (10 seconds)
wait:10
cam:temp
;
;-------------------Calibrating -------------------
;Repeat until all sounds are prepared
;
show:Connect the electrodes to your estim device and activate it. It’s time to calibrate. Repeat the process until you can distinctly differentiate all three shock levels.
button:Ok
;
while:('$Calibrate' == 'yes')
  show:Which sound do you want to calibrate? Each calibration will give two shocks.
  assign:S_amount:2
  choice:Low, Med, High, Done
  if:(LASTASK == 1)
    assign:S_Choice:1
    call:PlaySound
  fi:
  if:(LASTASK == 2)
    assign:S_Choice:2
    call:PlaySound
  fi:
  if:(LASTASK == 3)
    assign:S_Choice:3
    call:PlaySound
  fi:
  if:(LASTASK == 4)
    assign:Calibrate:'no'
  fi:
endwhile:
;
image:taskimg/sets/runa/runa_black_chair_b66.jpg
show:I trust you haven't considered cheating, as there will be a question awaiting you at the end.
button:No Runa
show:You shouldn't press any buttons unless I decide to stop shocking you. <br>The only time I anticipate you moving is when you're being shocked.
button:Understood
show:The only visible button later on will be the mercy button.<br>However, clicking it will result in failing the task.
button:Gulp
;
if:(!INCHASTITY) && (HAS_PENIS)
  show:Get a hard cock SNAME
  button:Hard
  log:Slave must have a hard cock on the picture below
fi:
;
show:Kneel with your hands either behind your back or on your neck. <br>Keep the blindfold within reach and be ready to put it on within 30 seconds when instructed. Make sure I can see you wearing it.<br><br>Ready for shocks?
button:Ready (10 seconds)
log:In all pictures below, the slave must be kneeling with hands behind their back or neck, with electrodes attached.
wait:10
cam:temp
;
;--------- First sets ----------
;
;
image:taskimg/sets/runa/runa_black_chair_b028.jpg
show:This set I will explain how I'll shock. <br>I will start with 1 shock and increase with 1 until you've received 5 shocks.
wait:6
assign:S_amount:1
assign:runa_phase: 'first'
assign:Mercy:5
;
;Shocking from 1 through 5 with warning
while:($S_amount < 6)
  assign:S_Choice:Math.floor((Math.random() * 3) + 1)
  assign:runa_talks:'Expect $S_amount $S_Current shocks'
  call:PlaySound
  assign:S_amount:$S_amount +1
  image:taskimg/sets/runa/runa_black_chair_b028.jpg
  show:Hold on a moment, let me adjust.
  wait:4
endwhile:
;
;Shocking from 5 to 1 with warning
show:That was quite enjoyable. Now, let's reduce the shocks from 5 down to just 1.
wait:5
;
while:($S_amount > 1)
  assign:S_amount:$S_amount -1
  assign:S_Choice:Math.floor((Math.random() * 3) + 1)
  ;
  call:PlaySound
  image:taskimg/sets/runa/runa_black_chair_b028.jpg
  show:Hold on a moment, let me adjust.
  wait:4
endwhile:
;
;------------ Second set -------------------
;
;Shocking from 1 to 5 without warning
show:Counting from 1 to 5, but I won't reveal how I'll shock you.
wait:5
cam:temp
assign:runa_phase: 'second'
;
while:($S_amount < 6)
  assign:S_Choice:Math.floor((Math.random() * 3) + 1)
  call:PlaySound
  show:That were $S_amount $S_Current shocks.
  wait:4
  assign:S_amount:$S_amount +1
endwhile:
;
;-------------- Random set -----------------
;
;Shocks and amount are all random
show:I find this too predictable. Let's introduce some randomness into everything now.
wait:5
cam:temp
assign:runa_phase: 'random'
;
while:($P_Random > 0)
  assign:S_Choice:Math.floor((Math.random() * 3) + 1)
  assign:S_amount:Math.floor((Math.random() * 5) + 1)
  call:PlaySound
  assign:P_Random:$P_Random -1
  show:Ready for the next shocks?
  wait:4
endwhile:
;
;-------------------- Final set -----------------
;
;1 cycle with 5 shocks. Slaves wears a blindfold. ( final part)
show:Almost done, SNAME.
wait:5
show:I will deliver 5 shocks, and afterwards, you need to inform me about the intensity.
wait:10
show:To maintain the element of surprise with the shocks, I might intentionally delay them for a few minutes.
wait:10
show:How about we add something extra to your ordeal? <br>What do you think about using a blindfold to increase the anticipation and surprise?
wait:10
;
assign:S_amount: 5
assign:S_Choice:Math.floor((Math.random() * 3) + 1)
;
while:$CountDown > 0
  show:Blindfold yourself within the next 30 seconds and return your position. <br>Once you've received 5 shocks, you may remove the blindfold.<br>And while you wait, repeatedly say <b>'Please Runa, shock me'</b> <br>... until I do.<br><br>$CountDown seconds left.
  assign:CountDown:$CountDown -1
  wait:1
endwhile:
;
show:If you're able to read this, it means you're not wearing a blindfold, SNAME
log:Picture below the slave must be kneeling with hands behind their back or neck, with electrodes attached and wearing a blindfold (or something similar)
;Waiting for shock, min20 max60
wait:Math.floor((Math.random() * 60) + 20)
cam:temp
;
call:PlaySound
;
show:Quite an unexpected shock, wasn't it? I imagine the anticipation must have set your heart racing!
;
button:Yes Runa
;
;------------ Ending conversation ----------------
;
;Asking the slave wich level the sound was. Procedure to check for possible cheating.
;
image:taskimg/sets/runa/runa_black_chair_b66.jpg
show:How would you rate the intensity of the last set of shocks?
choice:Low,Medium,High
log:If the sound doesn't match the choice the slave made, it's possible the slave adjusted the settings or they weren't activated.<br> Mark the task as failed if the slave does not provide an explanation.
if:(LASTASK == 1)
  log:Sound was nr. $S_Choice, slave choice was nr.1
fi:
if:(LASTASK == 2)
  log:Sound was nr. $S_Choice, slave choice was nr.2
fi:
if:(LASTASK == 3)
  log:Sound was nr. $S_Choice, slave choice was nr.3
fi:
;
show:I trust you've made the correct decision.
button:Euh, yes Runa.
;
label:mercy_ending
show:I will request DTITLE DNAME to permit me to play with you again in the future. For now, you may leave, SNAME.
button:Bye Runa.
;
;----------------------------- End task ----------------------------------
;
;---------------------------- Functions ----------------------------------
;
;-------------------Function PlaySound -------------------------------------
;Which sound is played
;
function:PlaySound
  ;
  image:taskimg/sets/runa/runa_black_chair_b024.jpg
  ;
  if:$S_Choice == 1
    assign:S_Current:'low'
    call:Taunting
    wbutton:$Mercy:Mercy Runa
    if:(LASTASK == 0)
      call:Mercy
    fi:
    loop:$S_amount
      sound:$S_Low
      wait:1
    endloop:
  fi:
  if:$S_Choice == 2
    assign:S_Current:'medium'
    call:Taunting
    wbutton:$Mercy:Mercy Runa
    if:(LASTASK == 0)
      call:Mercy
    fi:
    loop:$S_amount
      sound:$S_Med
      wait:1
    endloop:
  fi:
  if:$S_Choice == 3
    assign:S_Current:'high'
    call:Taunting
    wbutton:$Mercy:Mercy Runa
    if:(LASTASK == 0)
      call:Mercy
    fi:
    loop:$S_amount
      sound:$S_High
      wait:1
    endloop:
  fi:
  image:taskimg/sets/runa/runa_black_chair_b028.jpg
end:
;
;---------------- Extra sentences ----------------
;Different sentences from Runa
;
function:Taunting
  ;
  if:('$runa_phase' == 'cali')
    assign:runa_talks:'Calibrating with $S_amount $S_Current shocks.'
    show:$runa_talks
    wait:4
  fi:
  if:('$runa_phase' == 'first')
    assign:runa_talks:'Expect $S_amount $S_Current shocks.'
    show:$runa_talks
    wait:4
  fi:
  if:('$runa_phase' == 'second')
    assign:runa_talks:'How will I shock you next?'
    show:$runa_talks
    wait:4
  fi:
  if:('$runa_phase' == 'random')
    assign:runa_talks:'Random is so much fun for me, and I hope it is pain for you.'
    show:$runa_talks
    wait:4
  fi:
  ;
end:
;
;--------------- Mercy ---------------
;The slave asked for mercy and failed the task
;
function:Mercy
  ;
  image:taskimg/sets/runa/runa_black_chair_b66.jpg
  show:You are no fun, SNAME, asking for mercy.
  button:Sorry Runa
  log:The slave activated the mercy button, resulting in the failure to complete the task.
  ;
  goto:mercy_ending
  ;
end:
;