Distillo-bot 3000 by Aphlux
Description from the author:
# Distillo-bot 3000
#
# Automatically creates new distillations when
# extracts are placed into a selected container.
# The new distillation will be returned
# to the same container.
#
# Designed for use by guilds or homeowners who
# want to run a bot that will create distillations
# for other players.
#
# Requirements:
# A container within reach used as a drop box for extracts.
# Cannot be a bag in the crafters backpack.
#
# The character running this script should have a stock
# of empty bottles and mortal and pestles in their backpack.
#
# Restock commands can be added to restock from another container.
#
# Written by: Aphlux (aka Aphra)
# Created on: September 4, 2022
# Last updated: May 22, 2023
# gump vars
@setvar! alchGumpID 949095101
@setvar! aspectPageID 108
@setvar! nextPageResponse 11
# select the drop bag where people will place extracts
if not varexist distDrop
overhead 'Select the bag to watch for extracts in.'
setvar distDrop
if find distDrop self
overhead 'INVALID: The drop bag cannot be in your own pockets!' 38
wait 1000
unsetvar distDrop
loop
endif
overhead 'Distillo-bot 3000 Initialized.'
else
dclick distDrop
endif
overhead 'Waiting for extract drop...' 920
wait 250
# pickup bottles on the floor
if counttype 'empty bottle%s%' self = 0
@setvar bottleID 0
if findtype 'empty bottle%s%' ground -1 -1 2 as bottles
@setvar bottleID bottles
elseif findtype 'empty bottle%s%' distDrop as bottles
@setvar bottleID bottles
endif
if bottleID > 0
lift bottleID 60000
drop backpack -1 -1 -1
say 'Thank you for the bottles!'
wait 1000
endif
endif
# pickup mortal and pestle on the floor
if counttype 'mortar and pestle' self = 0
@setvar! toolID 0
if findtype 'mortar and pestle' ground -1 -1 2 as tool
@setvar! toolID tool
elseif findtype 'mortar and pestle' distDrop as tool
@setvar! toolID tool
endif
if toolID > 0
lift toolID 60000
drop backpack -1 -1 -1
say 'Thank you for the tools!'
wait 1000
endif
endif
# check for an extract in the drop bag
@setvar! foundExtract 0
@setvar! shouldSpeak 1
while findtype 'bottle' distDrop as extract
@setvar! foundExtract 1
overhead 'Found an extract! Creating a new distill...'
getlabel extract extractName
if shouldSpeak = 1
@setvar! shouldSpeak 0
say 'Ah, an extract. Let me distill that for you...'
wait 250
endif
# check for empty bottles
if not findtype 'empty bottle%s%' self
overhead 'Need more empty bottles!' 38
say "I am out of empty bottles! Please drop some on the floor for me."
wait 3000
loop
endif
# open the alch gump, and go to page 2
# of the aspect section where distills begin
if findtype 'mortar and pestle' self as tool
gumpclose alchGumpID
dclick tool
waitforgump alchGumpID
# goto 'Aspect Items'
gumpresponse aspectPageID
waitforgump alchGumpID
wait 650
# goto page 3
gumpresponse nextPageResponse
waitforgump alchGumpID
wait 650
else
overhead 'Need more mortal and pestles!' 38
say "I am out of mortar and pestles! Please drop some on the floor for me."
wait 3000
loop
endif
# move the extract once we know we can make a distill
lift extract 1
drop backpack -1 -1 -1
wait 650
# go to the page for this extract,
# then create it
// page 3
if 'Air' in extractName
overhead 'Air' 1001
gumpresponse 200 alchGumpID
elseif 'Artisan' in extractName
overhead 'Artisan' 544
gumpresponse 201 alchGumpID
elseif 'Blood' in extractName
overhead 'Blood' 38
gumpresponse 202 alchGumpID
elseif 'Command' in extractName
overhead 'Command' 68
gumpresponse 203 alchGumpID
elseif 'Death' in extractName
overhead 'Death' 923
gumpresponse 204 alchGumpID
elseif 'Discipline' in extractName
overhead 'Discipline' 442
gumpresponse 205 alchGumpID
elseif 'Earth' in extractName
overhead 'Earth' 544
gumpresponse 206 alchGumpID
elseif 'Eldritch' in extractName
overhead 'Eldritch' 24
gumpresponse 207 alchGumpID
elseif 'Fire' in extractName
overhead 'Fire' 38
gumpresponse 208 alchGumpID
elseif 'Fortune' in extractName
overhead 'Fortune' 53
gumpresponse 209 alchGumpID
// page 4
elseif 'Gadget' in extractName
overhead 'Gadget' 53
gumpresponse nextPageResponse alchGumpID
waitforgump alchGumpID
gumpresponse 200 alchGumpID
elseif 'Harvest' in extractName
overhead 'Harvest' 53
gumpresponse nextPageResponse alchGumpID
waitforgump alchGumpID
gumpresponse 201 alchGumpID
elseif 'Holy' in extractName
overhead 'Holy' 53
gumpresponse nextPageResponse alchGumpID
waitforgump alchGumpID
gumpresponse 202 alchGumpID
elseif 'Lyric' in extractName
overhead 'Lyric' 38
gumpresponse nextPageResponse alchGumpID
waitforgump alchGumpID
gumpresponse 203 alchGumpID
elseif 'Poison' in extractName
overhead 'Poison' 68
gumpresponse nextPageResponse alchGumpID
waitforgump alchGumpID
gumpresponse 204 alchGumpID
elseif 'Shadow' in extractName
overhead 'Shadow' 923
gumpresponse nextPageResponse
waitforgump alchGumpID
gumpresponse 205 alchGumpID
elseif 'Void' in extractName
overhead 'Void' 14
gumpresponse nextPageResponse alchGumpID
waitforgump alchGumpID
gumpresponse 206 alchGumpID
elseif 'War' in extractName
overhead 'War' 44
gumpresponse nextPageResponse alchGumpID
waitforgump alchGumpID
gumpresponse 207 alchGumpID
elseif 'Water' in extractName
overhead 'Water' 8
gumpresponse nextPageResponse alchGumpID
waitforgump alchGumpID
gumpresponse 208 alchGumpID
else
overhead 'Unknown extract type! {{extractName}}' 38
say 'DISTILLO-BOT FATAL ERROR! CANNOT COMPUTE! CANNOT COMPUTE!'
endif
waitforgump alchGumpID 1000
gumpclose alchGumpID
wait 3000
endwhile
# move the new distillations back into the drop bag
while findtype 'flask' self as distillation
lift distillation 99
drop distDrop -1 -1 -1
wait 1500
endwhile
if foundExtract == 1
say 'There you go! Thank you for using Distillo-bot 3000 and have a nice day.'
endif
loopDistillo-bot 3000 will watch a selected container and create distillations from extracts placed within.