Available on the market: TEMP1
Current mood balance: $curMoodBalance
Price per task: $pricePerTask
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 Slave Task Market 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:You are currently available 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:You are currently not available 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)
$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:$selectedNumber 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 $selectedSlaveName to do? (Enter a number or 0 to abort)
$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:$selectedNumber 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
$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 $selectedSlaveName to do the task $selectedTaskName? This would cost you $pricePerTask mood (you currently have $curMoodBalance mood)
Task description: $taskDescription choice:Yes force them to do it,No I changed my mind if: LASTASK == 1 image:taskimg/assistant_at_desk5.jpg show:Alright, $selectedSlaveName will be forced to do the task $selectedTaskName. 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 ;