Title:slave_mathematics
Sex: Female T Male T Trans T
Require:
Limits:
;mathematics examination for a slave
;
;a slave has a mathematics examination, the slave is asked 10 mathematical questions it must answer correctly and within time
;
;turn peerreview off for the moment
peerreview:false
;
use:gen
;
;----------------------- Variables --------------------------
;
;Selected Mistress/Master
if:('DNAME'=='Jennifer')
  assign:domme:'Jennifer'
fi:
if:('DNAME'=='Natasha')
  assign:domme:'Natasha'
fi:
if:('DNAME'=='James')
  assign:domme:'James'
fi:
;
;Question was already asked, reroll choice question
assign:Q_selected:false
;The number of the active question
assign:Q_number:0
;How many questions have already been asked
assign:Q_Answered:0
;Correctly answered questions
assign:Score:0
;What is the maximum number of asked questions
assign:Q_Maximum:10
;How many questions must be answered correcty
assign:Required_Score:0
;The total amount of available questions
assign:Q_Total:30
;Current time
assign:T_now:TIMENOW
;The end time
assign:T_end:0
;How much time is available
assign:T_minutes:0
;Is there still time left
assign:T_OK:true
;
;--------------- start task --------------------------
;------------------ intro --------------------
;
log:Task description. The slave has a mathematics examination where it must answer 10 mathematical questions within a set time limit.
;
;
image:taskimg/backgrounds/Bedroom_1.jpg
image2:taskimg//Default/$domme_Whip.png
;
show:Listen up, sissy. I have a new task for you, and it’s going to be a real test of your pathetic little brain.
wait:5
show:I’m going to ask you a series of math questions to see if you can handle even the most basic skills.
wait:5
show:Fail to impress me, and there will be consequences.
button:Gulp
show:Before we begin your pathetic little math test, there are some preparations you need to make.
button:Yes DTITLE
;
;Chastity
if:(INCHASTITY)
  log:Slave is in chastity
else:
  call:PrepRoll
  if:(L_CHASTITY> 2 && PrepRoll > 50)
    log:Slave is in chastity.
    show:First, put on your chastity cage. <br>I want to ensure that your worthless cock is locked up tightly, completely out of reach and control, to remind you of your place.
    button:Caged
  fi:
fi:
;
;Nipple clamps
call:PrepRoll
if:(T_NIPPLECLAMPS && PrepRoll > 50)
  log:Slave wears nippleclamps.
  show:Attach nipple clamps to those tender nipples of yours.<br> I want you to feel a constant, biting reminder of your servitude as you try to concentrate on the test.
  button:Nipple clamps on
fi:
;
;Sissy
call:PrepRoll
if:(L_SISSY >3 && PrepRoll > 50)
  log:Slave is wearing something sissy. (garter belt, bra, stockings, ...)
  show:Dressing in sissy clothing might incentivize me to ask easier questions, but then again, maybe not. <br>Put on your sissy clothing.
  button:Dressed sissy
fi:
;
;Gag
call:PrepRoll
if:(T_GAG && PrepRoll > 50)
  log:Slave is wearing a gag.
  show:Slave, you will remain silent during the test. Wear a gag.
  button:Gagged
fi:
;
;Picture before start
show:Slave, before we begin, I'm going to take a picture of you in your current outfit.<br>Present yourself kneeling with legs spread, hands on knees and back straight.
button:Picture (wait 10)
log:Picture before start of the test. Slave is kneeling with legs spread, hands on knees and back straight in picture below with items described above.
wait:1
;cam
sound:cam.mp3
;Difficulty choice for the questions
show:You will have a set amount of time to answer 10 questions. <br>If you take 5 minutes, you must get at least 7 questions correct. <br>If you take 6 minutes, you must answer at least 9 questions correctly. <br>So, what will it be, slave?
choice:5 min, 6 min
if:(LASTASK == 1)
  assign:T_minutes:5
  assign:Required_Score:7
  assign:timebar:15
  assign:time_procent:7
fi:
if:(LASTASK == 2)
  assign:T_minutes:6
  assign:Required_Score:9
  assign:timebar:20
  assign:time_procent:5
fi:
;
show:Everything is set for the test. Don't disappoint me. Are you ready for the first question? <br>And don't slack, slave, time is ticking.
button:Ready DTITLE
;Chosen amount of minutes after start of the questions, this is the endtime
assign:T_end:TIMENOW + (60000 * $T_minutes)
;
;loop until 10 questions are asked and time is not finished
while:($Q_Answered < $Q_Maximum) && (T_OK)
  ;Select the question
  call:Select_Question
  ;Check if the question is not asked before
  if:(Q_Asked)
    ;Question is asked, reset
    assign:Q_Asked:false
    ;A question has been succesfully asked
    assign:Q_Answered:$Q_Answered +1
    ;Check remaining time
    call:Time
  fi:
endwhile:
;
;All questions are asked or time ended
if:($Q_Maximum == 10)
  ;10 questions answered
  show:You've managed to stumble through 10 questions. <br>Now, are you just dying to know your score?
  button:Yes DTITLE
  show:Well, slave, let's see how many you got right. Try not to squirm too much while I count.
  wait:5
  show:Still counting ...
  wait:5
  show:Your score isn't looking very promising, I must say.
  button:Gulp
  call:Score
else:
  ;less then 10 questions answered, out of time
  show:Slave, your slow response to those questions was disappointing. You failed to perform within the given time frame. <br>You absolutely suck at mathematics.'
  button:Sorry DTITLE
  show:Perhaps you're better suited for sucking at something else entirely.
  button:Yes DTITLE
  ;punishment for failing
  call:Failed
fi:
;
;Ending task
show:You may leave now SNAME
button:Bye DTITLE
;
;--------------------- End of task -----------------------------
;
;----------------- Functions ------------------------
;
function:Select_Question
  ;Select the possible question
  assign:Q_number:Math.floor((Math.random() * $Q_Total) + 1)
  ;Going to the selected question
  call:Question_$Q_number
end:
;
;------------------------ Asking question ---------------------
;The actual asking of the question and checking the answer
;
function:Asking_Question
  ;
  show:$question
  ;TimeBar
  loop:$timebar
    showbar:(LOOPVAR * $time_procent)
    wait:1
  endloop:
  hidebar:
  ;Answer from the slave
  asknumber:What is your answer slave?
  ;Check if the answer is correct
  if:(LASTASK == $Q_Answer)
    show:<h2>Correct
    ;Answer correct and score adjusted
    assign:Score:$Score +1
    wait:3
  else:
    ;Answer wrong
    show:<h2>Wrong
    wait:3
  fi:
end:
;
;--------------------------- PrepRoll -------------------------------
;Decoration of the slave before the actual math
;
function:PrepRoll
  ;Different rolls for decoration
  assign:PrepRoll:Math.floor((Math.random() * 100) + 1)
end:
;
;----------------------------------Failed --------------------------------
;Slave didn't score enough points or out of time and is punished
;
function:Failed
  ;
  show:Slave, get a piece of paper and a pen. <br>Write on it, 'May I suck you?'.
  button:Yes DTITLE
  show:Get on your knees, now. Present yourself with the piece of paper, displaying it for everybody to see. Ready for the picture?
  log:Slave kneeling holding a piece of paper that reads 'May I suck you?'
  ;Take picture until satisfied and then publish
  call:genTakePictureUntilSatisfied
  ;expose:chosenPicture
  wait:2
  exptext:This slave sucks at math, perhaps it can find something else to suck.
  ;
end:
;
;------------------- Time -------------------------
;
function:Time
  ;
  ;Check remaining time
  if:($T_end > TIMENOW)
    ;Calculate remaining time
    assign:T_remain: ($T_end - TIMENOW)/ 1000
    if:($T_remain < 60)
      ;Less then 60 seconds left
      speak:Less then 1 minute
    fi:
  else:
    ;Time is up
    speak:Times up
    assign:T_OK:false
  fi:
  ;
end:
;
;------------------------ Score ----------------------------
;
function:Score
  ;
  ;Checking the score
  if:($Score < $Required_Score)
    ;Bad score and slave is punished
    show:Well, slave, congratulations on managing to fail such a simple mathematics test with only $Score correct answers.
    button:Sorry DTITLE
    show:Slave, you absolutely suck at mathematics.<br> Perhaps you're better suited for sucking at something else entirely.
    button:Yes DTITLE
    ;punishment for failing
    call:Failed
  else:
    ;Good score
    show:I'm actually impressed, slave. You managed to score $Score points.
    button:Thank you DTITLE
  fi:
end:
;
;----------------- The questions ------------------
;
;Assign question: The actual question
;Assign Q_Answer: The answer of the question
;Assign Q_xx: The selected question is marked as asked to prevent asking the same question again
;Assign Q_Asked: A question has been asked this task
;
;-------------------------------------------------------
;
function:Question_1
  if:('$Q_01' != 'ASKED')
    ;New question, not asked before
    assign:question:'If you dare to do that again, you can forget about getting out of your chastity cage for five weeks! DTITLE DNAME snaps angrily. <br>How many days will SNAME remain in chastity if he disappoints his DTITLE?'
    assign:Q_Answer:35
    call:Asking_Question
    assign:Q_01:'ASKED'
    assign:Q_Asked:true
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;---------------------------------------------
;
function:Question_2
  if:('$Q_02' != 'ASKED')
    ;New question, not asked before
    assign:question:'DTITLE DNAME has decreed that SNAME will remain in chastity for a total of fourteen days after his last climax. <br>Since it is only been six days so far, how many more days must SNAME endure before he can enjoy an erection?'
    assign:Q_Answer:8
    call:Asking_Question
    assign:Q_02:'ASKED'
    assign:Q_Asked:true
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;---------------------------------------------
;
function:Question_3
  if:('$Q_03' != 'ASKED')
    ;New question, not asked before
    assign:question:'A submissive man knows his DTITLE is in charge, especially when he is made to wear a longline brassière. <br>How many letters are in <h3>longline brassière</h3>?'
    assign:Q_Answer:17
    call:Asking_Question
    assign:Q_03:'ASKED'
    assign:Q_Asked:true
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;------------------------------------------
;
function:Question_4
  if:('$Q_04' != 'ASKED')
    ;New question, not asked before
    assign:question:'When DTITLE DNAME finally releases SNAME, from his chastity belt, it takes him only one minute and forty-three seconds to make a mess. <br>Can you count how many humiliating seconds that is?'
    assign:Q_Answer:103
    assign:Q_04:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;------------------------------------------
;
function:Question_5
  if:('$Q_05' != 'ASKED')
    ;New question, not asked before
    assign:question:'Instead of boxer shorts or briefs, SNAME has seven pairs of delicate white cotton panties and five pairs of pretty pink cotton panties. <br>How many pairs of degrading cotton panties does this sissy have in total?'
    assign:Q_Answer:12
    assign:Q_05:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
;
function:Question_6
  if:('$Q_06' != 'ASKED')
    ;New question, not asked before
    assign:question:'While SNAME amuses his DTITLE by sucking her dildo, he flaunts his collection of lipsticks! He has three different shades of pink and seven different shades of red. <br>How many sinful colors can his lips adorn?'
    assign:Q_Answer:10
    assign:Q_06:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------;
;
function:Question_7
  if:('$Q_07' != 'ASKED')
    ;New question, not asked before
    assign:question:'If a bottle of dishwashing liquid contains five hundred millilitres of liquid, and SNAME buys three bottles at the supermarket. <br>How many millilitres does he take home? '
    assign:Q_Answer:1500
    assign:Q_07:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
;
function:Question_8
  if:('$Q_08' != 'ASKED')
    ;New question, not asked before
    assign:question:'Naughty sissy SNAME deserves a proper spanking. If his DTITLE decides to administer twelve sets of six strokes each with her paddle while he bends over the chair. <br>How many times will it strike his bare bottom?'
    assign:Q_Answer:72
    assign:Q_08:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_9
  if:('$Q_09' != 'ASKED')
    ;New question, not asked before
    assign:question:'When DTITLE DNAME finally grants him release from his chastity belt, it takes SNAME just one minute and thirty two seconds to make a mess onto the licking-up plate. <br>How many seconds is that?'
    assign:Q_Answer:92
    assign:Q_09:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_10
  if:('$Q_10' != 'ASKED')
    ;New question, not asked before
    assign:question:'Handling the laundry, SNAME uses two pegs for each of his DTITLE delicate blouses. With seven blouses washed this morning. <br>How many pegs are dedicated solely to this part of the chore?'
    assign:Q_Answer:14
    assign:Q_10:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_11
  if:('$Q_11' != 'ASKED')
    ;New question, not asked before
    assign:question:'SNAME DTITLE is freezing SNAME his cum because she wants to see him with ten loads in his mouth like a whore. <br>If he produces an unimpressive 4.8ml each time, how many millilitres will he have to gulp down in total?'
    assign:Q_Answer:48
    assign:Q_11:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_12
  if:('$Q_12' != 'ASKED')
    ;New question, not asked before
    assign:question:'Hand-washing last weeks lingerie, SNAME carefully rinses a total of nine white brassières, worn by both him and his DTITLE.<br> If six of these brassières belong to SNAME, how many belong to his DTITLE?'
    assign:Q_Answer:3
    assign:Q_12:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_13
  if:('$Q_13' != 'ASKED')
    ;New question, not asked before
    assign:question:'Slave SNAME can only manage the first eight inches of his DTITLE ten-inch dildo in his mouth. <br>How many inches stick out from his lips before he begins to choke?'
    assign:Q_Answer:2
    assign:Q_13:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_14
  if:('$Q_14' != 'ASKED')
    ;New question, not asked before
    assign:question:'Making her slave beg for mercy, SNAME his DTITLE slides her hand up and down his throbbing manhood twenty times in a minute. <br>How many seconds does she pause between each stroke?'
    assign:Q_Answer:3
    assign:Q_14:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
;
function:Question_15
  if:('$Q_15' != 'ASKED')
    ;New question, not asked before
    assign:question:'Despite the weather forecast suggesting a thirty percent chance of rain in the morning, SNAME must still hang out the laundry.<br>What is the percentage probability that it will stay dry?'
    assign:Q_Answer:70
    assign:Q_15:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_16
  if:('$Q_16' != 'ASKED')
    ;New question, not asked before
    assign:question:'SNAME his humiliation peaks as he lifts his skirt, revealing his panties to his DTITLE her friends, a task he finds utterly embarrassing. <br>How many letters are there in the word <h3>embarrassing?</h3>'
    assign:Q_Answer:12
    assign:Q_16:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_17
  if:('$Q_17' != 'ASKED')
    ;New question, not asked before
    assign:question:'If SNAME purchases five boxes of pantyliners, each containing fifty-four pantyliners. <br>How many pantyliners will he bring back to his DTITLE?'
    assign:Q_Answer:270
    assign:Q_17:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_18
  if:('$Q_18' != 'ASKED')
    ;New question, not asked before
    assign:question:'SNAME has earned himself forty-eight hours in a tight punishment corset. <br>If he must endure wearing it for twelve agonizing hours each day, how many days of suffering will it take for him to complete his punishment?'
    assign:Q_Answer:4
    assign:Q_18:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_19
  if:('$Q_19' != 'ASKED')
    ;New question, not asked before
    assign:question:'Whenever SNAME his DTITLE discovers even the slightest flaw in his cleaning, she adds twenty minutes to his cornertime. <br>If she finds eight faults, how many minutes will SNAME be forced to face the wall?'
    assign:Q_Answer:160
    assign:Q_19:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_20
  if:('$Q_20' != 'ASKED')
    ;New question, not asked before
    assign:question:'SNAME his DTITLE has brought out two vibrators to enjoy herself while SNAME kneels in front of her. The smaller one measures five inches in length, while the larger of the two is three inches longer. <br>How long is the second vibrator?'
    assign:Q_Answer:8
    assign:Q_20:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_21
  if:('$Q_21' != 'ASKED')
    ;New question, not asked before
    assign:question:'Sissy maid SNAME has been ordered to clean the house. <br>If there are eleven rooms in total, but SNAME has only cleaned seven of them so far, how many more rooms does he still need to clean?'
    assign:Q_Answer:4
    assign:Q_21:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
;
function:Question_22
  if:('$Q_22' != 'ASKED')
    ;New question, not asked before
    assign:question:'Each slice of the cake SNAME baked for his DTITLE her friends contains two hundred and fifty calories. <br>How many calories are in the half-slice that his DTITLE allows him to eat?'
    assign:Q_Answer:125
    assign:Q_22:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
;
function:Question_23
  if:('$Q_23' != 'ASKED')
    ;New question, not asked before
    assign:question:'As part of his punishment, SNAME must walk up and down the apartment five times. <br>If the hallway measures one hundred feet to the end and back, how many feet must he stagger in his stilettos?'
    assign:Q_Answer:500
    assign:Q_23:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_24
  if:('$Q_24' != 'ASKED')
    ;New question, not asked before
    assign:question:'SNAME his current chore is to vacuum a carpet that is six feet wide and seven feet long. <br>How many square feet does SNAME need to vacuum before he can move on to his next task?'
    assign:Q_Answer:42
    assign:Q_24:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_25
  if:('$Q_25' != 'ASKED')
    ;New question, not asked before
    assign:question:'Dressed as a girl, SNAME is being punished by writing lines. If DTITLE DNAME has ordered him to write <br><h3> I must not answer back </h3> <br>one hundred times, how many words will he write in total?'
    assign:Q_Answer:500
    assign:Q_25:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_26
  if:('$Q_26' != 'ASKED')
    ;New question, not asked before
    assign:question:'Dressed in a girly uniform, SNAME struggles to finish his mathematics examination. If the examination has one hundred questions and SNAME is only able to answer eighty-four of them, how many does he miss?'
    assign:Q_Answer:16
    assign:Q_26:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_27
  if:('$Q_27' != 'ASKED')
    ;New question, not asked before
    assign:question:'How many times can the feminized maid SNAME afford to snag his sheer nylons if he wants his legs to look flawless?'
    assign:Q_Answer:0
    assign:Q_27:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_28
  if:('$Q_28' != 'ASKED')
    ;New question, not asked before
    assign:question:'Last month, SNAME his DTITLE experienced eighteen orgasms, while SNAME was only allowed three. <br>How many orgasms did his DTITLE enjoy for each one of his?'
    assign:Q_Answer:6
    assign:Q_28:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_29
  if:('$Q_29' != 'ASKED')
    ;New question, not asked before
    assign:question:'Twenty-one days might feel like an eternity to be locked in chastity, but it is only a few weeks. <br>How many weeks has DTITLE DNAME kept SNAME denied?'
    assign:Q_Answer:3
    assign:Q_29:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
function:Question_30
  if:('$Q_30' != 'ASKED')
    ;New question, not asked before
    assign:question:'SNAME his DTITLE cruelly teases him for precisely seven minutes before granting him the humiliating release of squirting onto the lick-up plate. <br>How many agonizing seconds of her wicked stroking must SNAME endure before he can finally ejaculate?'
    assign:Q_Answer:420
    assign:Q_30:'ASKED'
    assign:Q_Asked:true
    call:Asking_Question
  else:
    ;Question is already asked
    assign:Q_Asked:false
  fi:
end:
;
;--------------------------------------------
;
;