Title:thomas_test Sex: Female T Male T Trans T Require: Limits: use:chastity use:gen ; label:StartTask show:Select an option choice:test code, delete review array elements, clear chastity, show review queue, show Task Log, delete Task log, show to-do list, next assign:TestChoice:LASTASK if:(TestChoice == 1) button:testing code ; ************************** test code start image:taskimg/tasks/chastity_edging/edging-instructions-1.jpg show: Let me explain to you how proper edging is done.

1. Each edge needs to end with your cock showing visible excitement (e.g. very stiff, twitching, etc)
2. After each edge, once you take your figers off your cock, you have to pause for at least 5 seconds
3. You are not allowed to wipe off anything while you are eding wait:2 button:Go to next page image:taskimg/tasks/chastity_edging/edging-instructions-2.jpg show: 4. When you are done with all edges, you need to show your cock and the surrounding area from several angles wait:2 button:All understood log: Slave has been instructed to edge in a certain way. Please validate that the slave has followed these rules, and report if otherwise. log: 1. Each edge needs to end with your cock showing visible excitement (e.g. very stiff, twitching, etc)
2. After each edge, once you take your figers off your cock, you have to pause for at least 5 seconds
3. You are not allowed to wipe off anything while you are eding
4. When you are done with all edges, you need to show your cock and the surrounding area from several angles ilog:taskimg/tasks/chastity_edging/stay-hard.jpeg ilog:taskimg/tasks/chastity_edging/no-wipe.jpeg ilog:taskimg/tasks/chastity_edging/no-drip.jpeg ; ************************** test code end button:done testing code fi: if:(TestChoice == 2) show:WARNING. You will delete some entries in the club review queue. Do you want this button:yes loadglist:chastityClubReviews asknumber:Entry number (starting count with 1) settemp3:(LASTASK - 1) listdelete:TEMP3 saveglist:chastityClubReviews ; ********** Update number of pending reviews assign:numberOfReviews:(List.length) if:(($numberOfReviews == 0)) goto:exitTask fi: settemp1:0 loop:$numberOfReviews settemp2:List[(LOOPVAR - 1)] split:'TEMP2' if:(SPLIT5 == false) settemp1:TEMP1 + 1 fi: endloop: savegtemp1:chastityClubNewVideos fi: if:(TestChoice == 3) settemp1:'' savetemp1:chastityTagNumber savetemp1:chastityLock savetemp1:chastityStartTime savetemp1:chastityStartTimeP savetemp1:unlock_pending savetemp1:pending-unlock-time savetemp1:chastityLockPic savetemp1:chastityLastValidation savetemp1:chastityMustCumFast fi: if:(TestChoice == 4) loadglist:chastityClubReviews assign:numberOfReviews:(List.length) if:(($numberOfReviews == 0)) show:There are no reviews to see button:ok goto:exitTask fi: loop:$numberOfReviews settemp2:List[(LOOPVAR - 1)] split:'TEMP2' show:Entry LOOPVAR TEMP2 button:ok endloop: loadgtemp1:chastityClubNewVideos show:Number of pending reviews:TEMP1 button:ok fi: if:(TestChoice == 5) show:Filter? choice:No, CC-Members, Other loadglist:logTaskList assign:numberOfLogs:(List.length) if:(($numberOfLogs == 0)) show:There are no logs to see button:ok goto:exitTask fi: loop:$numberOfLogs settemp2:List[(LOOPVAR - 1)] split:'TEMP2' if:('TEMP2' != '') ; && (SPLIT2 > (STIME - 432000)) if:(LASTASK == 1) call:showLogEntry fi: if:((LASTASK == 2) && (('SPLIT3' == 'Thomas3') || ('SPLIT3' == 'Chissoku') ||('SPLIT3' == 'JohnF') || ('SPLIT3' == 'lisa') || ('SPLIT3' == 'Loser1') || ('SPLIT3' == 'TittyTwister'))) call:showLogEntry fi: if:((LASTASK == 3) && !SPLIT5) call:showLogEntry fi: fi: iframe:CLEAR endloop: fi: if:(TestChoice == 6) show:WARNING. You will delete all task log button:yes loadglist:logTaskList setlist:'EMPTY,STIME,SNAME,TID,HAS_PENIS' saveglist:logTaskList ; loadlist:toDoTasks ; setlist:'EMPTY,0,0,9000000000' ; savelist:toDoTasks fi: if:(TestChoice == 7) loadlist:toDoTasks assign:numberOfTasks:(List.length) loop:$numberOfTasks settemp1:List[(LOOPVAR - 1)] split:'TEMP1' show:SPLIT1 SPLIT2 SPLIT3 SPLIT4 button:next endloop: fi: if:(TestChoice != 8) goto:StartTask fi: choice:run task, delete to-do list, exit, back assign:TestChoice:LASTASK if:(TestChoice == 1) show:about to schedule a task button:ok dmsg:0:Jennifer:Time for your task dtask:0:Jennifer:chastity_edging:1 fi: if:(TestChoice == 2) show:removing to-do list items loadlist:toDoTasks settemp1:'Empty, 100, 100, 5000000000' setlist:'TEMP1' savelist:toDoTasks button:ok fi: if:(TestChoice != 3) goto:StartTask fi: ; label:exitTask ; ;-------------------------------------------------------------------------------------------------------- function:scheduleToDoTask ;** Schedules a task as standard JIC delayed task AND stores the need to run the task in a list ;** accessible by tasks. This function will become obsolete once the standard JIC delayed task ;** system will be able to punish slaves for ignoring to-do tasks ;** Expected arguments:$taskName, $taskDelay, $taskGrace ;** Return values: none ;** Modifies TEMP1 variable. dtask:$taskDelay:Jennifer:$taskName:$taskGrace loadlist:toDoTasks settemp1:'$taskName, $taskDelay, $taskGrace, STIME' listadd:'TEMP1' savelist:toDoTasks end: ;-------------------------------------------------------------------------------------------------------- function:validateToDoTasks ;** Validates whether any to-do tasks of the slave are overdue. ;** Assigns a punishment in case one or more are overdue ;** Expected arguments: none. Returned value: none ;** Modifies TEMP1 variable. loadlist:toDoTasks assign:numberOfTasks:(List.length) assign:punishmentDue:false loop:$numberOfTasks settemp1:List[(LOOPVAR - 1)] split:'TEMP1' if:(SPLIT4 + ((SPLIT2 + SPLIT3) * 3600) < STIME) show:You are lated doing SPLIT1 task. A punishment will be assigned log:Slave is late doing SPLIT1 task. A punishment will be assigned button:Yes DTITLE assign:punishmentDue:true fi: endloop: if:punishmentDue show:Punishment logic will be inserted here button:ok fi: end: ;-------------------------------------------------------------------------------------------------------- function:t_logTaskRun ;** Maintains a log of how often a task has been run. ;** Removes the task from the task toDo list in case it is on there ;** Modifies TEMP1 variables ;** Expected arguments: logTaskName. Returned values: none ; ; log task run loadglist:logTaskList settemp1:'$logTaskName,STIME,SNAME,TID,HAS_PENIS' listadd:'TEMP1' saveglist:logTaskList ; ; remove task from to-do list in case its on there loadlist:toDoTasks assign:numberOfTasks:(List.length) assign:taskPosition:0 assign:taskTime:0 loop:$numberOfTasks settemp1:List[(LOOPVAR - 1)] split:'TEMP1' if:(('SPLIT1' == '$logTaskName') && (($taskTime == 0) || (SPLIT4 < $taskTime))) assign:taskPosition: (LOOPVAR - 1) assign:taskTime:SPLIT4 fi: endloop: if: ($taskTime != 0) listdelete:$taskPosition savelist:toDoTasks fi: end: ; function:showLogEntry show:Entry LOOPVAR
Task SPLIT1
Time SPLIT2
Slave SPLIT3
SPLIT4 SPLIT5 iframe:https://play-link.com/jennifer/rtask.php?task=SPLIT4 button:ok end: ; function:reviewCCslavesInstructions if:'SNAME' == 'Thomas3' image:taskimg/chastity/Thomas3 Instructions.jpg show:Please verify that the slave has done the following in the video

1 Did he strongly pull on the tag
2 Is the wire threaded through tube AND piercing
3 Did he show the cut tag with all wires visible
4 Did he use his long tube button:Yes I have verified this fi: end: ; ;-------------------------------------------------------------------------------------------------------- function:calculateDayOfMonth ; assigns dayOfMonth variable. For example if called on January 10th, it will return 10 ; start with January 1 2025, 00 00 01 GMT assign:epochReference:1735689601 assign:secondsToDays:(24 * 60 * 60) loop:100 if: (STIME < epochReference + (31 * secondsToDays)) assign:dayOfMonth:Math.trunc((STIME-epochReference) / secondsToDays) + 1 goto: exitCalculateDayOfMonth else: assign:epochReference:epochReference + (31 * secondsToDays) fi: if: (STIME < epochReference + (28 * secondsToDays)) assign:dayOfMonth:Math.trunc((STIME-epochReference) / secondsToDays) + 1 goto: exitCalculateDayOfMonth else: assign:epochReference:epochReference + (28 * secondsToDays) fi: if: (STIME < epochReference + (31 * secondsToDays)) assign:dayOfMonth:Math.trunc((STIME-epochReference) / secondsToDays) + 1 goto: exitCalculateDayOfMonth else: assign:epochReference:epochReference + (31 * secondsToDays) fi: if: (STIME < epochReference + (30 * secondsToDays)) assign:dayOfMonth:Math.trunc((STIME-epochReference) / secondsToDays) + 1 goto: exitCalculateDayOfMonth else: assign:epochReference:epochReference + (30 * secondsToDays) fi: if: (STIME < epochReference + (31 * secondsToDays)) assign:dayOfMonth:Math.trunc((STIME-epochReference) / secondsToDays) + 1 goto: exitCalculateDayOfMonth else: assign:epochReference:epochReference + (31 * secondsToDays) fi: if: (STIME < epochReference + (30 * secondsToDays)) assign:dayOfMonth:Math.trunc((STIME-epochReference) / secondsToDays) + 1 goto: exitCalculateDayOfMonth else: assign:epochReference:epochReference + (30 * secondsToDays) fi: if: (STIME < epochReference + (31 * secondsToDays)) assign:dayOfMonth:Math.trunc((STIME-epochReference) / secondsToDays) + 1 goto: exitCalculateDayOfMonth else: assign:epochReference:epochReference + (31 * secondsToDays) fi: if: (STIME < epochReference + (31 * secondsToDays)) assign:dayOfMonth:Math.trunc((STIME-epochReference) / secondsToDays) + 1 goto: exitCalculateDayOfMonth else: assign:epochReference:epochReference + (31 * secondsToDays) fi: if: (STIME < epochReference + (30 * secondsToDays)) ;sept assign:dayOfMonth:Math.trunc((STIME-epochReference) / secondsToDays) + 1 goto: exitCalculateDayOfMonth else: assign:epochReference:epochReference + (30 * secondsToDays) fi: if: (STIME < epochReference + (31 * secondsToDays)) assign:dayOfMonth:Math.trunc((STIME-epochReference) / secondsToDays) + 1 goto: exitCalculateDayOfMonth else: assign:epochReference:epochReference + (31 * secondsToDays) fi: if: (STIME < epochReference + (30 * secondsToDays)) assign:dayOfMonth:Math.trunc((STIME-epochReference) / secondsToDays) + 1 goto: exitCalculateDayOfMonth else: assign:epochReference:epochReference + (30 * secondsToDays) fi: if: (STIME < epochReference + (31 * secondsToDays)) assign:dayOfMonth:Math.trunc((STIME-epochReference) / secondsToDays) + 1 goto: exitCalculateDayOfMonth else: assign:epochReference:epochReference + (31 * secondsToDays) fi: endloop: label:exitCalculateDayOfMonth end: ; ; ;