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:
;
;
;