User Tools

Site Tools


tasks:just_testing
Title:just_testing
Sex: Female F Male F Trans F
Require: chastity nochaste cancum restim rshock rlock buttplug candle crop dildo estim gag handcuffs humbler nippleclamps
Limits: Pain-N Sissy Info Shaving Watersport
assign:task1:'ball_busting_1;P;Pain-G;Getting the balls busted with a special device;'
assign:task2:'Bondage_showcase;PBN;Bondage;Demonstrating ones bondage equipment;'
assign:task3:'Bored;PBN;NotinChastity;Jennifer does some random things;'
assign:task4:'Bow_to_your_owner;PN;NotinChastity,Humbler,Pain-G;Bowing to their Mistress;'
assign:task5:'Brain_Train;P;;Stroking a dildo;'
assign:task6:'competitive_spanking_1;PBN;Crop,Pain-N;Trying to spank harder than the previous slave;'
assign:task7:'confession_1;PBN;;Confess something you did and get judged by the reviewer;'
assign:task8:'CornerTimeA;PBN;;Standing in a corner;'
assign:task9:'CornerTimeB;PBN;;Standing in a corner, but being able to trade time for pain;'
assign:task10:'crawlF;PBN;Bondage;Crawling while being in bondage;'
assign:task11:'crawlM;P;Bondage;Crawling while being in bondage;'
assign:task12:'deepthroat_training_1;PBN;Dildo;Practicing to deep throat a dildo;'
assign:task13:'detention;PBN;Crop,Pain-N;Being in detention with a strict teacher for some time;'
assign:task14:'Difficult_choices;PBN;;Having to choose between hard choices, at least one of them pushes the limits;'
assign:task15:'find_my_pussy_1;PBN;;Match girls to their pussies and get nipple pain for mistakes;'
assign:task16:'game_1;PBN;Nippleclamps,Pain-N;A reachtion game with nipple pain for mistakes;'
assign:task17:'hand_writing_lines_nipples_clamped;PBN;Nippleclamps,Pain-N;Hand writing lines while the nipples are clamped;'
assign:task18:'housework;PBN;;Doing some cleaning or tidying up;'
assign:task19:'ice_torture_1;PBN;Pain-G,Pain-N;Runa has some fun with ice cubes;'
assign:task20:'interrogation_1;PBN;Nippleclamps,Pain-N;Interrogation with nipple clamps by Sister Evie;'
assign:task21:'jumping_jacks_cbt;P;NotinChastity,Pain-G;Jumping jacks with a weight attached to the balls;'
assign:task22:'karada;PBN;Bondage;Doing a karada bondage;'
assign:task23:'know_your_mistress_1;P;Nippleclamps,Pain-N;Identifying JiCs dominants by theier feet;'
assign:task24:'lines;PBN;;Hand writing lines;'
assign:task25:'Measuring_up;PBN;NotinChastity;Measuring the slaves most interesting body parts;'
assign:task26:'mercy_of_the_crowd_2;PBN;Online;Begging to get a task assigned by somebody;'
assign:task27:'Nipple_clamp_torture;PBN;Nippleclamps,Pain-N;Cycles of attaching and removing nipple clamps;'
assign:task28:'nipple_torture_1;PBN;Crop,Nippleclamps,Pain-N;Runa tortures the nipples in various ways;'
assign:task29:'nipple_torture_2;PN;Nippleclamps,Pain-N;Spanking off nipple clamps with a towel;'
assign:task30:'nipple_torture_3;PBN;Nippleclamps,Pain-N;Quickly attaching and removing nipple clamps;'
assign:task31:'overstimulation_1;PBN;NotinChastity;Rubbing the cock head or clit until it gets unpleasant;'
assign:task32:'pee_inside_or_outside;PBN;Watersport;Rubbing pee on the body with a chance of having to drink it;'
assign:task33:'Position_Training;PBN;;Learning slave positions;'
assign:task34:'questions_1;PBN;NotinChastity;Testing the JiC knowledge of the slave;'
assign:task35:'quiz_1;PBN;;A trivia quiz with consequences;'
assign:task36:'running_on_spot_nipples_clamped;PBN;Nippleclamps,Fitness,Pain-N;Running on the spot with clamped nipples;'
assign:task37:'sissy_lessons_1;PBN;Sissy;Lessons to become a better sissy or slut;'
assign:task38:'slaves_custom_task;PBN;;The slave defines and later maybe does a self defined task which is close to their limits;'
assign:task39:'spanking_1;PBN;Crop,Pain-N;Runa has the slave spank a bodypart of Runas choice;'
assign:task40:'stroke_for_feet;P;;Brainwashing into liking feet by having to stroke for them'
assign:task41:'stroke_for_marked_feet;P;NotinChastity;Brainwashing into liking feet by having to look very closely at them'
assign:task42:'stroke_for_cocks;PBN;;Brainwashing into liking cocks by having to stroke for them'
assign:task43:'stroke_for_marked_cocks;PBN;;Brainwashing into liking cocks by having to look very closely at them'
assign:task44:'submission;PBN;;Showing submission on knees and head on the floor;'
assign:task45:'temp_exp_1;PBN;Online;Chance to get temp exposed;'
assign:task46:'Tethered;PBN;Bondage;Being bound by the balls to something;'
assign:task47:'Thirsty;PBN;Handcuffs,Bondage,Watersport;Drinking pee;'
assign:task48:'video_viewing;PBN;;Watching porn very closely;'
assign:task49:'virtual_pillory_1;PBN;;Define how another slave has to spend their time in a virtual pillory, or be in the pillory;'
assign:task50:'wax_on_penis;P;NotinChastity,Candle,Pain-G;Runa has some fun with wax on the slaves genitals;'
assign:task51:'waxnipples;PBN;Candle,Pain-N;Runa has some fun with wax on the slaves nipples;'
assign:task52:'whipping_with_red_lines;PBN;Pain-N;Whipping the butt and having to generate visible red lines;'
assign:task53:'workout_1;PBN;Fitness;Squats and optional nipple pain;'
assign:task54:'worship_cocks;PBN;;Brainwashing into liking cocks by having to worship them;'
assign:task55:'worship_feet;P;;Brainwashing into liking feet by having to worship them;'
assign:maxTask:55

; NOTE: If you want to add more tasks, those tasks need to include the gen library and call the init and the finish functions as follows:
; assign:taskName:'name_of_the_task'
; use:gen
; call:taskQueue2Init
; ... the actual task ...
; call:taskQueue2Finish
; 

;================================================================
;====================== defining variables ======================
;================================================================

assign:taskName:'market_1'
use:gen
; TODO: call:taskQueue2Init
peerreview:false
assign:pricePerTask:12
assign:minAllowedMood:$pricePerTask+20
assign:curMoodBalance:MOOD
assign:globalSlaveListVarNeedsUpdate:false

;================================================================
;====================== defining functions ======================
;================================================================

;----------------------------------------------------------------
function:welcomeScreen
;----------------------------------------------------------------
  assign:welcomeText1:'Welcome to the JiC Slave Task Market. '
  assign:else1:''
  call:getAvailableSlaveNames
  label:startOfWelcomeScreenLabel
  image:taskimg/assistant_at_desk2.jpg
  if: $thisSlaveIsAvailable
    settemp1:'<b>Yes (up to $thisSlaveTasksLeft tasks left)</b>'
  else:
    settemp1:'<b>No</b>'
  fi:
  show:$welcomeText1What$else1 would you like to do?<p>Available on the market&colon; TEMP1<br>Current mood balance&colon; <b>$curMoodBalance</b><br>Price per task&colon; <b>$pricePerTask</b>
  choice:Buy a task for a slave,Change my own availability,Help,Done
  assign:welcomeScreenChoice:LASTASK
  if: $welcomeScreenChoice == 1
    call:showSlaveSelection
  fi:
  if: $welcomeScreenChoice == 2
    call:changeOwnAvailability
  fi:
  if: $welcomeScreenChoice == 3
    call:showHelpScreen
  fi:  
  if: $welcomeScreenChoice != 4
    assign:welcomeText1:''
    assign:else1:' else'
    goto:startOfWelcomeScreenLabel
  fi:
end:

;----------------------------------------------------------------
function:showHelpScreen
;----------------------------------------------------------------
  show:On the <b>Slave Task Market</b> you can buy tasks for other slaves. I will message you, once I have informed them about the task (usually this happens when they run a random task). From that time on, they have 21 days to complete the task. I will message you again, once they ran it. If they don't complete the task in time, they will lose 5 mood.
  button:Ok
end:

;----------------------------------------------------------------
function:changeOwnAvailability
;----------------------------------------------------------------
; input:  $thisSlaveIsAvailable, $thisSlaveLockedSettingsUntil
; output: $thisSlaveIsAvailable, $thisSlaveLockedSettingsUntil, $thisSlaveTasksLeft
;----------------------------------------------------------------
  if: $thisSlaveIsAvailable && $thisSlaveLockedSettingsUntil != 0
    assign:timeLeftString:''
    settemp1:$thisSlaveLockedSettingsUntil
    assign:fullDaysLeft:Math.floor((TEMP1-TIMENOW)/(24*60*60*1000))
    assign:fullHoursLeft:Math.ceil((TEMP1-TIMENOW)/(60*60*1000))
    assign:fullHoursLeft:$fullHoursLeft - ($fullDaysLeft * 24)
    if: $fullHoursLeft == 24
      assign:fullDaysLeft:$fullDaysLeft+1
      assign:fullHoursLeft:0
    fi:
    if: $fullDaysLeft == 1
      assign:timeLeftString:'$fullDaysLeft day and '
    fi:
    if: $fullDaysLeft > 1
      assign:timeLeftString:'$fullDaysLeft days and '
    fi:
    assign:timeLeftString:'$timeLeftString$fullHoursLeft hours'
    image:taskimg/assistant_at_desk4.jpg
    show:I'm sorry, this setting is still locked for $timeLeftString.
    button:Gulp
    goto:endOfChangeOwnAvailabilityLabel
  fi:
;
;
  if: $thisSlaveIsAvailable && $thisSlaveLockedSettingsUntil == 0
    show:<b>You are currently available</b> on the Slave Task Market. What do you want to do?
    choice:I want to stay available,Please remove me
    if: LASTASK == 2
      assign:thisSlaveIsAvailable:false
      assign:thisSlaveLockedSettingsUntil:0
      assign:thisSlaveTasksLeft:0
      call:updateThisSlaveInGlobalSlaveList
      image:taskimg/assistant_at_desk5.jpg
      show:Ok, I have removed you from the market. Keep in mind that you still have to do any outstanding tasks, if there are any.
      button:Thank you
    fi:
    goto:endOfChangeOwnAvailabilityLabel
  fi:
;
;
  if: !$thisSlaveIsAvailable
    show:<b>You are currently not available</b> on the Slave Task Market. What do you want to do?
    choice:Please make me available,I want to stay unavailable
    if: LASTASK == 1
      assign:thisSlaveIsAvailable:true
      image:taskimg/assistant_at_desk5.jpg
      show:Ok, you are now available. How many tasks can be assigned to you at most while you are available? Remember, you have 21 days to complete each task after it is assigned.
      choice:5,10,15,20,25,30,35,40
      assign:thisSlaveTasksLeft:5*LASTASK
      asknumber:For how many days do you want to lock your availability settings ('0' for no lock)? Note that once all $thisSlaveTasksLeft tasks have been bought, the lock will also be lifted.
      image:taskimg/assistant_at_desk2.jpg
      if: LASTASK == 0
        show:No problem, I will not lock these settings.
        assign:thisSlaveLockedSettingsUntil:0
      else:
        assign:chosenDays:LASTASK
        if: $chosenDays < 1
          assign:chosenDays:1
        fi:
        assign:thisSlaveLockedSettingsUntil:(TIMENOW+($chosenDays*(24*60*60*1000)))
        show:Ok, I have locked these settings for $chosenDays days.
      fi:
      button:Thank you
      call:updateThisSlaveInGlobalSlaveList
    fi:
  fi:
  label:endOfChangeOwnAvailabilityLabel
end:

;----------------------------------------------------------------
function:showSlaveSelection
;----------------------------------------------------------------
  if: $curMoodBalance < $minAllowedMood
    show:A task costs $pricePerTask mood, but you need to have at least $minAllowedMood mood to be able to buy tasks.
    button:Ok, I understand
    goto:endOfShowSlaveSelectionLabel
  fi:
  label:startOfShowSlaveSelectionLabel
  assign:inList:'$availableSlaveNames'
  call:getFormattedList
  assign:formattedAvailableSlaveNames:'$outList'
  asknumber:For which slave should it be? (Enter a number or 0 to abort)<p>$formattedAvailableSlaveNames
  assign:selectedNumber:LASTASK
  assign:selectedNumber:Math.floor(Math.abs(selectedNumber))
  if: $selectedNumber == 0
    goto:endOfShowSlaveSelectionLabel
  fi:
  if: $selectedNumber <= '$availableSlaveNames'.split(', ').length
    assign:selectedSlaveName:'$availableSlaveNames'.split(', ')[$selectedNumber-1]
    call:showTaskSelection
  else:
    show:<b>$selectedNumber</b> is not in the list.
    button:oh
    goto:startOfShowSlaveSelectionLabel
  fi:
  label:endOfShowSlaveSelectionLabel
end:

;----------------------------------------------------------------
function:showTaskSelection
;----------------------------------------------------------------
  call:getAvailableTasksList 
  label:startOfShowTaskSelectionLabel
  assign:inList:'$availableTaskNames'
  call:getFormattedList
  assign:formattedAvailableTaskNames:'$outList'
  asknumber:Which task would you like me to force <b>$selectedSlaveName</b> to do? (Enter a number or 0 to abort)<p>$formattedAvailableTaskNames
  assign:selectedNumber:LASTASK
  assign:selectedNumber:Math.floor(Math.abs(selectedNumber))
  if: $selectedNumber == 0
    goto:endOfShowTaskSelectionLabel
  fi:
  if: $selectedNumber <= '$availableTaskNames'.split(', ').length
    assign:selectedTaskName:'$availableTaskNames'.split(', ')[$selectedNumber-1]
    call:buyTask
  else:
    show:<b>$selectedNumber</b> is not in the list.
    button:oh
    goto:startOfShowTaskSelectionLabel
  fi:
  label:endOfShowTaskSelectionLabel
end:

;----------------------------------------------------------------
function:getFormattedList
;----------------------------------------------------------------
; input: $inList
; output: $outList
;----------------------------------------------------------------
  assign:outList:''
  assign:noOfElements:'$inList'.split(', ').length
  if: $noOfElements == 0
    goto:endOfGetFormattedListLabel
  fi:
  assign:counter:0
  label:startOfGetFormattedListLabel
  assign:curElement:'$inList'.split(', ')[$counter]
  assign:counter:$counter+1
  assign:outList:'$outList<br>$counter. $curElement'
  if: $counter < $noOfElements
    goto:startOfGetFormattedListLabel
  fi:
  ;assign:outList:'$outList'.slice(4)
  label:endOfGetFormattedListLabel
end:

;----------------------------------------------------------------
function:getTaskDescription
;----------------------------------------------------------------
; $input: $selectedTaskName
; $output: $taskDescription
;----------------------------------------------------------------
  assign:curTaskNo:1    
  label:startOfGetTaskDescriptionLabel
  assign:curTaskId:'task$curTaskNo'
  settemp1:$curTaskId
  assign:curTaskName:'TEMP1'.split(';')[0]
  if: '$curTaskName' == '$selectedTaskName'
    assign:taskDescription:'TEMP1'.split(';')[3]
  fi:
  assign:curTaskNo:$curTaskNo+1
  if:$curTaskNo <= $maxTask
    goto:startOfGetTaskDescriptionLabel
  fi:
  if: '$taskDescription' == ''
    assign:taskDescription:'No description available for this task'  
  fi:
end:

;----------------------------------------------------------------
function:buyTask
;----------------------------------------------------------------
  call:getTaskDescription
  show:Do you really want me to force <b>$selectedSlaveName</b> to do the task <b>$selectedTaskName</b>? This would cost you $pricePerTask mood (you currently have $curMoodBalance mood)<p><b>Task description&colon;</b> $taskDescription
  choice:Yes force them to do it,No I changed my mind
  if: LASTASK == 1
    image:taskimg/assistant_at_desk5.jpg  
    show:Alright, <b>$selectedSlaveName</b> will be forced to do the task <b>$selectedTaskName</b>. I will message you once I have informed them about the task (usually this happens when they run a random task). From that time on, they have 21 days to run the task. I will message you again, once they ran the task.
    ;TODO setmood:(MOOD-$pricePerTask)
    assign:curMoodBalance:$curMoodBalance-$pricePerTask
    assign:dTaskName:'$selectedTaskName'
    assign:dTaskToUser:'$selectedSlaveName'
    ; TODO: call:globalScheduleTask
    call:removeOneTaskFromSelectedSlaveInGlobalSlaveList
  else:
    show:No problem, I will not assign the task to them, and you don't have to pay for it.
  fi:
  button:Thank you
end:

;----------------------------------------------------------------
function:getCurSlaveAttributes
;----------------------------------------------------------------
; input: $curSlaveName, $completeSlaveList
; output: $curSlaveIsAvailable, e.g. true
;         $curSlaveAvailableSince, e.g. 12324365324
;         $curSlaveLockedSettingsUntil, e.g. 12324365324
;         $curSlaveTasksLeft, e.g. 7
;         $curSlaveHas, e.g. 'Penis,Crop,Candle,Pain-N,Pain-G'
;         $curSlaveBody, i.e. 'P' | 'B' | 'N'
;----------------------------------------------------------------
  assign:curSlaveIsAvailable:false
  assign:curSlaveLockedSettingsUntil:0
  assign:curSlaveAvailableSince:0
  assign:curSlaveTasksLeft:0
  assign:curSlaveHas:''
  assign:curSlaveBody:''
  assign:noOfExistingSlaves:'$completeSlaveList'.split(';').length-1
  assign:curIndex:-1
  label:startOfGetCurSlaveAttributesLabel
  assign:curIndex:$curIndex+1
  if: $curIndex > $noOfExistingSlaves-1
    goto:endOfGetCurSlaveAttributesLabel
  fi:
  settemp1:'$completeSlaveList'.split(';')[$curIndex].split('!')[0]
  if: 'TEMP1' == '$curSlaveName'
    assign:curSlaveIsAvailable:true
    assign:curSlaveTasksLeft:'$completeSlaveList'.split(';')[$curIndex].split('!')[1]
    assign:curSlaveAvailableSince:'$completeSlaveList'.split(';')[$curIndex].split('!')[2]
    assign:curSlaveLockedSettingsUntil:'$completeSlaveList'.split(';')[$curIndex].split('!')[3]
    assign:curSlaveBody:'$completeSlaveList'.split(';')[$curIndex].split('!')[4]
    assign:curSlaveHas:'$completeSlaveList'.split(';')[$curIndex].split('!')[5]
    goto:endOfGetCurSlaveAttributesLabel
  fi:
  goto:startOfGetCurSlaveAttributesLabel
  label:endOfGetCurSlaveAttributesLabel
  if: $curSlaveLockedSettingsUntil < TIMENOW
    assign:curSlaveLockedSettingsUntil:0
  fi:
  if: $curSlaveTasksLeft == 0
    assign:curSlaveIsAvailable:false
    assign:curSlaveLockedSettingsUntil:0
    assign:curSlaveHas:''
    assign:curSlaveBody:''
  fi:  
end:

;----------------------------------------------------------------
function:getAvailableSlaveNames
;----------------------------------------------------------------
; input: $completeSlaveList
; output: $availableSlaveNames, e.g. 'Thomas3, JohnF, Lisa'
;         $thisSlaveIsAvailable, e.g. true
;         $thisSlaveLockedSettingsUntil, e.g. 1751253234534
;         $thisSlaveAvailableSince, e.g. 1751253234534
;         $thisSlaveTasksLeft, e.g. 10
;----------------------------------------------------------------
  assign:availableSlaveNames:''
  assign:thisSlaveIsAvailable:false
  assign:thisSlaveAvailableSince:TIMENOW
  assign:thisSlaveLockedSettingsUntil:0
  assign:thisSlaveTasksLeft:0
  assign:noOfExistingSlaves:'$completeSlaveList'.split(';').length-1
  assign:curIndex:-1
  label:startOfGetAvailableSlaveNamesLabel
  assign:curIndex:$curIndex+1
  if: $curIndex > $noOfExistingSlaves-1
    goto:endOfGetAvailableSlaveNamesLabel
  fi:
  assign:curSlaveName:'$completeSlaveList'.split(';')[$curIndex].split('!')[0]
  call:getCurSlaveAttributes
  if: '$curSlaveName' == 'SNAME'
    assign:thisSlaveIsAvailable:$curSlaveIsAvailable
    assign:thisSlaveLockedSettingsUntil:$curSlaveLockedSettingsUntil
    assign:thisSlaveAvailableSince:$curSlaveAvailableSince
    assign:thisSlaveTasksLeft:$curSlaveTasksLeft
  fi:
  if: '$curSlaveName' != 'SNAME' && $curSlaveIsAvailable
    assign:availableSlaveNames:'$availableSlaveNames, $curSlaveName'
  fi:
  goto:startOfGetAvailableSlaveNamesLabel
  label:endOfGetAvailableSlaveNamesLabel
  assign:availableSlaveNames:'$availableSlaveNames'.slice(2)
end:

;----------------------------------------------------------------
function:getAvailableTasksList
;----------------------------------------------------------------
; input: $curSlaveName
; output: $availableTaskNames, e.g. 'spanking_1, confession_1'
;----------------------------------------------------------------
  assign:curSlaveName:'$selectedSlaveName'
  call:getCurSlaveAttributes
  assign:curTaskNo:1
  assign:availableTaskNames:''
  label:startOfGetAvailableTaslsListLabel
  assign:curTaskId:'task$curTaskNo'
  settemp1:$curTaskId
  assign:curTaskName:'TEMP1'.split(';')[0]
  assign:curTaskBody:'TEMP1'.split(';')[1]  
  assign:curTaskRequires:'TEMP1'.split(';')[2]
  assign:requirementsSize:'$curTaskRequires'.split(',').length
  assign:curRequirementIndex:0
  label:startOfAnalyzeCurTaskRequirements
  settemp1:'$curTaskRequires'.split(',')[$curRequirementIndex]
  assign:curRequirementName:'TEMP1'
  if:!'$curSlaveHas'.includes('$curRequirementName')
    goto:dontAddTaskLabel
  fi:
  assign:curRequirementIndex:$curRequirementIndex+1
  if: $curRequirementIndex < $requirementsSize
    goto:startOfAnalyzeCurTaskRequirements
  fi:
  if: !'$curTaskBody'.includes('$curSlaveBody')
    goto:dontAddTaskLabel
  fi:
  assign:availableTaskNames:'$availableTaskNames, $curTaskName'
  label:dontAddTaskLabel
  assign:curTaskNo:$curTaskNo+1
  if:$curTaskNo <= $maxTask
    goto:startOfGetAvailableTaslsListLabel
  fi:
  ; make the order a bit more random: Keep alphabethical order, but with a random start (e.g. X, Y, Z, A, B, C...)
  assign:cutAtPlace:Math.floor(Math.random() * '$availableTaskNames'.length)
  assign:cutAtPlace:'$availableTaskNames'.indexOf(', ',$cutAtPlace)
  if: $cutAtPlace != -1
    assign:firstPart:'$availableTaskNames'.substring(0,$cutAtPlace)
    assign:secondPart:'$availableTaskNames'.substring($cutAtPlace)
    assign:availableTaskNames:'$secondPart$firstPart'
  fi:
  assign:availableTaskNames:'$availableTaskNames'.slice(2)
end:

;----------------------------------------------------------------
function:removeOneTaskFromSelectedSlaveInGlobalSlaveList
;----------------------------------------------------------------
  assign:indexOfStart:'$completeSlaveList'.indexOf('$selectedSlaveName!')
  assign:indexOfStart:$indexOfStart+'$selectedSlaveName'.length+1
  assign:indexOfEnd:'$completeSlaveList'.indexOf('!',$indexOfStart)
  assign:curTasksLeftOld:'$completeSlaveList'.substring($indexOfStart,$indexOfEnd)
  assign:curTasksLeftNew:$curTasksLeftOld-1
  assign:completeSlaveList:'$completeSlaveList'.replace('$selectedSlaveName!$curTasksLeftOld','$selectedSlaveName!$curTasksLeftNew')
  assign:globalSlaveListVarNeedsUpdate:true
end:

;----------------------------------------------------------------
function:updateThisSlaveInGlobalSlaveList
;----------------------------------------------------------------
  assign:indexOfStart:'$completeSlaveList'.indexOf('SNAME!')  
  if: $indexOfStart != -1
    assign:indexOfEnd:'$completeSlaveList'.indexOf(';',$indexOfStart)
	assign:substringBefore:'$completeSlaveList'.substring(0,$indexOfStart)
	assign:substringAfter:'$completeSlaveList'.substring($indexOfEnd+1,99999999)
    assign:completeSlaveList:'$substringBefore$substringAfter'
  fi:
  if: $thisSlaveIsAvailable
   assign:thisSlaveAvailableSince:TIMENOW
   call:readThisSlaveHas
   assign:completeSlaveList:'SNAME!$thisSlaveTasksLeft!$thisSlaveAvailableSince!$thisSlaveLockedSettingsUntil!$thisSlaveBody!$thisSlaveHas;$completeSlaveList'
  fi:
  assign:globalSlaveListVarNeedsUpdate:true
end:

;----------------------------------------------------------------
function:loadCompleteSlaveList
;----------------------------------------------------------------
; output: $completeSlaveList, e.g. 'Adam!4!1234!5678!P!Crop;TittyTwister!13!7654!2344!P!Crop,Candle,Pain-N,Pain-G;Thomas3!12!2345!7894!P!Crop,Pain-N,Pain-G;JohnF!4!1234!456!P!Crop,Pain-N,Pain-G,Nippleclamps;Lisa!99999!34544!68745!B!Crop,Candle,Pain-N,Pain-G;'
; format: 'SNAME!<$curSlaveTasksLeft>!<$curSlaveAvailableSince>!<$curSlaveLockedSettingsUntil>!<$curSlaveBody>!<$curSlaveHas>;...'
;----------------------------------------------------------------
  loadgtemp1:SHOP_1_COMPLETE_SLAVE_LIST
  assign:completeSlaveList:'TEMP1'
end:

;----------------------------------------------------------------
function:maybeSaveCompleteSlaveList
;----------------------------------------------------------------
  if: $globalSlaveListVarNeedsUpdate
    settemp1:'$completeSlaveList'
    savegtemp1:SHOP_1_COMPLETE_SLAVE_LIST
  fi:
end:

;----------------------------------------------------------------
function:readThisSlaveHas
;----------------------------------------------------------------
; output: $thisSlaveHas, e.g. 'NotinChastity,Candle'
;         $thisSlaveBody, i.e. 'P' | 'B' | 'N'
;----------------------------------------------------------------
  assign:thisSlaveBody:'N'
  ; ------ Body: ------
  if: HAS_PENIS
    assign:thisSlaveBody:'P'
  fi:
  if: HAS_BREASTS
    assign:thisSlaveBody:'B'
  fi:
  ;
  assign:thisSlaveHas:''
  ; ------ Chastity/Denial: ------
  if: INCHASTITY
    assign:thisSlaveHas:'$thisSlaveHas,InChastity'
  fi:
  if: !INCHASTITY
    assign:thisSlaveHas:'$thisSlaveHas,NotinChastity'
  fi:
  if: !DENIED
    assign:thisSlaveHas:'$thisSlaveHas,CanCum'
  fi:
  ; ------ Toys: ------
  ;TODO: Remoteestim
  ;TODO: Remoteshock
  ;TODO: Remotelock
  if: T_BUTTPLUG
    assign:thisSlaveHas:'$thisSlaveHas,Buttplug'
  fi:
  if: T_CANDLE
    assign:thisSlaveHas:'$thisSlaveHas,Candle'
  fi:
  if: T_CROP
    assign:thisSlaveHas:'$thisSlaveHas,Crop'
  fi:
  if: T_DILDO
    assign:thisSlaveHas:'$thisSlaveHas,Dildo'
  fi:
  if: T_ESTIM
    assign:thisSlaveHas:'$thisSlaveHas,E-Stim'
  fi:
  if: T_GAG
    assign:thisSlaveHas:'$thisSlaveHas,Gag'
  fi:
  if: T_HANDCUFFS
    assign:thisSlaveHas:'$thisSlaveHas,Handcuffs'
  fi:
  if: T_HUMBLER
    assign:thisSlaveHas:'$thisSlaveHas,Humbler'
  fi:
  if: T_NIPPLECLAMPS
    assign:thisSlaveHas:'$thisSlaveHas,Nippleclamps'
  fi:
  ; ------ Limits: ------
  if: L_ANAL > 1
    assign:thisSlaveHas:'$thisSlaveHas,Anal'
  fi:
  if: L_ATM > 1
    assign:thisSlaveHas:'$thisSlaveHas,ATM'
  fi: 
  if: L_BONDAGE > 1
    assign:thisSlaveHas:'$thisSlaveHas,Bondage'
  fi:  
  if: L_CHASTITY > 1
    assign:thisSlaveHas:'$thisSlaveHas,Chastity'
  fi:  
  if: L_CUM > 1
    assign:thisSlaveHas:'$thisSlaveHas,Cum'
  fi:  
  if: L_FACE > 1
    assign:thisSlaveHas:'$thisSlaveHas,Face'
  fi:  
  if: L_FITNESS > 1
    assign:thisSlaveHas:'$thisSlaveHas,Fitness'
  fi:  
  if: L_FINDOM > 1
    assign:thisSlaveHas:'$thisSlaveHas,Financial'
  fi:  
  if: L_ONLINE > 1
    assign:thisSlaveHas:'$thisSlaveHas,Online'
  fi:  
  if: L_OUTDOOR > 1
    assign:thisSlaveHas:'$thisSlaveHas,Outdoor'
  fi:  
  if: L_EXHIB > 1
    assign:thisSlaveHas:'$thisSlaveHas,Exhibitionism'
  fi:  
  if: L_DENIAL > 1
    assign:thisSlaveHas:'$thisSlaveHas,Orgasm'
  fi:  
  if: L_PAIN_G > 1
    assign:thisSlaveHas:'$thisSlaveHas,Pain-G'
  fi:  
  if: L_PAIN_N > 1
    assign:thisSlaveHas:'$thisSlaveHas,Pain-N'
  fi:  
  if: L_INFO > 1
    assign:thisSlaveHas:'$thisSlaveHas,PInfo'
  fi:  
  if: L_SISSY > 1
    assign:thisSlaveHas:'$thisSlaveHas,Sissy'
  fi:  
  if: L_SHAVE > 1
    assign:thisSlaveHas:'$thisSlaveHas,Shaving'
  fi:  
  if: L_WATERSPORT > 1
    assign:thisSlaveHas:'$thisSlaveHas,Watersport'
  fi:  
  assign:thisSlaveHas:'$thisSlaveHas'.slice(1)
end:

;================================================================
;======================= start of the task ======================
;================================================================
call:loadCompleteSlaveList
call:welcomeScreen
call:maybeSaveCompleteSlaveList
; TODO: call:taskQueue2Finish
;
tasks/just_testing.txt · Last modified: 2025/09/13 00:43 (external edit)