The script has a decision tree, meaning that it will call a sequence depending on the result of the previous one called, finding the shortest path to solve the puzzle.
Code: Select all
//Doom puzzle: solver
//Author: Llama Vortex
//Set: LOOP ON
//Set: Do not auto-interrupt
//Copy the following password and paste in-game: lIlIlllIlIIIlIIlll
//Add all 5 players solving the puzzle in the same party
//Date: 16/11/2017
//Check if inquisitors is in range
if @findtype 0x1414 1266 'ground' 1 15 and @inlist 'journal_trigger' 'thief'
@setalias 'inquisitors' 'found'
if hits 'self' < 80
miniheal 'self'
endif
while not @findtype 0x1414 1266 'backpack'
while not @inrange 'inquisitors' 1
if dead
stop
elseif @x 'inquisitors' > x 'self' and @y 'inquisitors' > y 'self'
run 'southeast'
elseif @x 'inquisitors' < x 'self' and @y 'inquisitors' > y 'self'
run 'southwest'
elseif @x 'inquisitors' > x 'self' and @y 'inquisitors' < y 'self'
run 'northeast'
elseif @x 'inquisitors' < x 'self' and @y 'inquisitors' < y 'self'
run 'northwest'
elseif @x 'inquisitors' > x 'self' and @y 'inquisitors' == y 'self'
run 'east'
elseif @x 'inquisitors' < x 'self' and @y 'inquisitors' == y 'self'
run 'west'
elseif @x 'inquisitors' == x 'self' and @y 'inquisitors' > y 'self'
run 'south'
elseif @x 'inquisitors' == x 'self' and @y 'inquisitors' < y 'self'
run 'north'
endif
pause 200
endwhile
useskill 'stealing'
waitfortarget 2000
target! 'inquisitors'
endwhile
waitforcontext 'self' 3 5000
waitfortarget 5000
target! 'inquisitors'
canceltarget
pause 2000
//Double check if inquis is insured
waitforproperties 'inquisitors' 10000
while not @property 'insured' 'inquisitors'
waitforcontext 'self' 3 5000
waitfortarget 5000
target! 'inquisitors'
canceltarget
pause 5000
endwhile
endif
//Creating lists
////The current sequence which is being tried
if not listexists "try_number"
createlist "try_number"
pushlist 'try_number' "try1"
pushlist 'try_number' "try2"
pushlist 'try_number' "try3"
pushlist 'try_number' "try4"
endif
if not @listexists "curr_seq"
createlist "curr_seq"
@clearjournal
endif
if not @timerexists 'timedout'
createtimer 'timedout'
endif
////Every tried sequence so far
if not @listexists "tried_seq"
createlist "tried_seq"
endif
////The last tried sequence
if not @listexists "ltried_seq"
createlist "ltried_seq"
endif
////The current lever that is being tried according to the curr_seq
if not @listexists "curr_lever"
createlist "curr_lever"
endif
if not @listexists 'journal_trigger'
createlist 'journal_trigger'
endif
if not listexists 'listeners'
createlist 'listeners'
endif
if not @timerexists 'clearlisteners'
createtimer 'clearlisteners'
endif
if @injournal 'IlllIl resetall'
@clearjournal
@clearlist 'try_number'
pushlist 'try_number' "try1"
pushlist 'try_number' "try2"
pushlist 'try_number' "try3"
pushlist 'try_number' "try4"
@unsetalias 'northplayer'
@unsetalias 'eastplayer'
@unsetalias 'westplayer'
@unsetalias 'soutplayer'
@unsetalias 'thief'
@clearlist 'tried_seq'
@clearlist 'ltried_seq'
@clearlist 'curr_seq'
@clearlist 'listeners'
@clearlist 'curr_lever'
@clearlist 'journal_trigger'
replay
endif
//Stand-by mode
if not @timerexists 'timedup'
createtimer 'timedup'
endif
while not @findalias 'inqisup'
if @injournal 'lIlIlllIlIIIlIIlll'
@clearjournal
@setalias 'inqisup' 'self'
@settimer 'timedup' 0
msg 'You better have a good reason to summon me!!' 20
msg 'You have 5 minutes to proceed!!' 20
break
endif
while not @buffexists 'hiding'
if not @hidden 'self'
cast 'invisibility'
waitfortarget 3000
target 'self'
pause 1000
endif
useskill 'hiding'
endwhile
endwhile
if @injournal 'lIlIlllIlIIIlIIlll' and @findalias 'inqisup'
@clearjournal
@unsetalias 'inqisup'
msg 'My job here is done for now' 20
@clearlist 'try_number'
pushlist 'try_number' "try1"
pushlist 'try_number' "try2"
pushlist 'try_number' "try3"
pushlist 'try_number' "try4"
@unsetalias 'northplayer'
@unsetalias 'eastplayer'
@unsetalias 'westplayer'
@unsetalias 'soutplayer'
@unsetalias 'thief'
@clearlist 'tried_seq'
@clearlist 'ltried_seq'
@clearlist 'curr_seq'
@clearlist 'listeners'
@clearlist 'curr_lever'
@clearlist 'journal_trigger'
replay
endif
if timer 'timedup' > 300000
settimer 'timedup' 0
@unsetalias 'inqisup'
msg 'Time is UP!' 20
@clearlist 'try_number'
pushlist 'try_number' "try1"
pushlist 'try_number' "try2"
pushlist 'try_number' "try3"
pushlist 'try_number' "try4"
unsetalias 'northplayer'
unsetalias 'eastplayer'
unsetalias 'westplayer'
unsetalias 'soutplayer'
@clearlist 'tried_seq'
@clearlist 'ltried_seq'
@clearlist 'curr_seq'
@clearlist 'listeners'
@clearlist 'curr_lever'
@clearlist 'journal_trigger'
replay
endif
//Setting players alias
////Setting my alias according to my position
while @list 'journal_trigger' < 1
if @x 'self' == 324 and @y 'self' == 58
@setalias 'northplayer' 'self'
headmsg 'North player' 20 'self'
pushlist 'journal_trigger' 'IlllIl north'
pushlist 'listeners' 'northplayer'
elseif @x 'self' == 324 and @y 'self' == 64
@setalias 'thief' 'self'
headmsg 'Thief' 20 'self'
pushlist 'journal_trigger' 'thief'
pushlist 'listeners' 'thief'
elseif @x 'self' == 332 and @y 'self' == 64
setalias 'eastplayer' 'self'
headmsg 'East player' 20 'self'
pushlist 'journal_trigger' 'IlllIl east'
pushlist 'listeners' 'eastplayer'
elseif @x 'self' == 323 and @y 'self' == 72
@setalias 'southplayer' 'self'
headmsg 'South player' 20 'self'
pushlist 'journal_trigger' 'IlllIl south'
pushlist 'listeners' 'southplayer'
elseif @x 'self' == 316 and @y 'self' == 65
@setalias 'westplayer' 'self'
headmsg 'West player' 20 'self'
pushlist 'journal_trigger' 'IlllIl west'
pushlist 'listeners' 'westplayer'
else
headmsg 'You are not in a valid position' 20 'self'
pause 5000
endif
if @injournal 'lIlIlllIlIIIlIIlll' or @timer 'timedup' > 300000
replay
endif
endwhile
//Setting other players aliases according to their positions (only needed for the thief)
if @inlist 'journal_trigger' 'thief'
while @list 'listeners' < 5
partymsg 'Waiting for more listeners'
getfriend 'humanoid' 'friend'
if @x 'friend' == 324 and @y 'friend' == 58
@setalias 'northplayer' 'friend'
pushlist! 'listeners' 'northplayer'
elseif @x 'friend' == 332 and @y 'friend' == 64
@setalias 'eastplayer' 'friend'
pushlist! 'listeners' 'eastplayer'
elseif @x 'friend' == 323 and @y 'friend' == 72
@setalias 'southplayer' 'friend'
pushlist! 'listeners' 'southplayer'
elseif @x 'friend' == 316 and @y 'friend' == 65
@setalias 'westplayer' 'friend'
pushlist! 'listeners' 'westplayer'
endif
if @injournal 'lIlIlllIlIIIlIIlll' or @timer 'timedup' > 300000
replay
endif
pause 2000
endwhile
endif
//Finding the lever if you are not the thief
if not @inlist 'journal_trigger' 'thief'
if not @findobject 'lever'
if @findtype 0x108e 1645 'ground' 1 1
@setalias 'lever' 'found'
elseif @findtype 0x108c 1645 'ground' 1 1
@setalias 'lever' 'found'
endif
endif
endif
//Thief checks if everything is OK before a try
if @inlist 'journal_trigger' 'thief'
if @dead 'self'
partymsg 'Ress me please'
if @gumpexists 2957810225
@replygump 2957810225 1
endif
pause 5000
replay
endif
////Check if everybody still in position
if not @x 'northplayer' == 324 or not @y 'northplayer' == 58
partymsg 'North player is not in position'
pause 2000
replay
elseif not @x 'eastplayer' == 332 or not @y 'eastplayer' == 64
partymsg 'East player is not in position'
pause 2000
replay
elseif not @x 'southplayer' == 323 or not @y 'southplayer' == 72
partymsg 'South player is not in position'
pause 2000
replay
elseif not @x 'westplayer' == 316 or not @y 'westplayer' == 65
partymsg 'West player is not in position'
pause 2000
replay
elseif not @x 'thief' == 324 or not @y 'thief' == 64
partymsg 'Thief player is not in position'
pause 2000
replay
endif
for 0 to listeners
while @hits listeners[] < maxhits listeners[] and not @dead listeners[]
miniheal listeners[]
endwhile
if not @findobject listeners[]
poplist 'listeners' listeners[]
partymsg 'Could not find the current listener. Removed'
endif
if list 'listeners' < 5
partymsg 'Not enough listeners!. Macro is restarting'
pause 1000
replay
endif
while not @inparty listeners[] and @findobject listeners[]
partymsg "Some listeners are not in party"
pause 5000
endwhile
while @dead serial listeners[] and @findobject listeners[]
if @inrange listeners[] 1
cast 'resurrection'
waitfortarget 5000
target! listeners[]
pause 5000
else
partymsg 'Come closer to get ressed'
pause 5000
endif
endwhile
endfor
endif
//A "try" is a sequence of lever pulls without the need to read journal to count the right pulls
if serial 'self' == serial 'thief'
//Here is all possible combinations of lever sequences
if not listexists "sequence1"
createlist "sequence1"
pushlist! "sequence1" "IlllIl north"
pushlist! "sequence1" "IlllIl south"
pushlist! "sequence1" "IlllIl east"
pushlist! "sequence1" "IlllIl west"
endif
if not listexists "sequence2"
createlist "sequence2"
pushlist! "sequence2" "IlllIl north"
pushlist! "sequence2" "IlllIl south"
pushlist! "sequence2" "IlllIl west"
pushlist! "sequence2" "IlllIl east"
endif
if not listexists "sequence3"
createlist "sequence3"
pushlist! "sequence3" "IlllIl north"
pushlist! "sequence3" "IlllIl east"
pushlist! "sequence3" "IlllIl south"
pushlist! "sequence3" "IlllIl west"
endif
if not listexists "sequence4"
createlist "sequence4"
pushlist! "sequence4" "IlllIl north"
pushlist! "sequence4" "IlllIl east"
pushlist! "sequence4" "IlllIl west"
pushlist! "sequence4" "IlllIl south"
endif
if not listexists "sequence5"
createlist "sequence5"
pushlist! "sequence5" "IlllIl north"
pushlist! "sequence5" "IlllIl west"
pushlist! "sequence5" "IlllIl south"
pushlist! "sequence5" "IlllIl east"
endif
if not listexists "sequence6"
createlist "sequence6"
pushlist! "sequence6" "IlllIl north"
pushlist! "sequence6" "IlllIl west"
pushlist! "sequence6" "IlllIl east"
pushlist! "sequence6" "IlllIl south"
endif
if not listexists "sequence7"
createlist "sequence7"
pushlist! "sequence7" "IlllIl south"
pushlist! "sequence7" "IlllIl north"
pushlist! "sequence7" "IlllIl east"
pushlist! "sequence7" "IlllIl west"
endif
if not listexists "sequence8"
createlist "sequence8"
pushlist! "sequence8" "IlllIl south"
pushlist! "sequence8" "IlllIl north"
pushlist! "sequence8" "IlllIl west"
pushlist! "sequence8" "IlllIl east"
endif
if not listexists "sequence9"
createlist "sequence9"
pushlist! "sequence9" "IlllIl south"
pushlist! "sequence9" "IlllIl east"
pushlist! "sequence9" "IlllIl north"
pushlist! "sequence9" "IlllIl west"
endif
if not listexists "sequence10"
createlist "sequence10"
pushlist! "sequence10" "IlllIl south"
pushlist! "sequence10" "IlllIl east"
pushlist! "sequence10" "IlllIl west"
pushlist! "sequence10" "IlllIl north"
endif
if not listexists "sequence11"
createlist "sequence11"
pushlist! "sequence11" "IlllIl south"
pushlist! "sequence11" "IlllIl west"
pushlist! "sequence11" "IlllIl north"
pushlist! "sequence11" "IlllIl east"
endif
if not listexists "sequence12"
createlist "sequence12"
pushlist! "sequence12" "IlllIl south"
pushlist! "sequence12" "IlllIl west"
pushlist! "sequence12" "IlllIl east"
pushlist! "sequence12" "IlllIl north"
endif
if not listexists "sequence13"
createlist "sequence13"
pushlist! "sequence13" "IlllIl east"
pushlist! "sequence13" "IlllIl north"
pushlist! "sequence13" "IlllIl south"
pushlist! "sequence13" "IlllIl west"
endif
if not listexists "sequence14"
createlist "sequence14"
pushlist! "sequence14" "IlllIl east"
pushlist! "sequence14" "IlllIl north"
pushlist! "sequence14" "IlllIl west"
pushlist! "sequence14" "IlllIl south"
endif
if not listexists "sequence15"
createlist "sequence15"
pushlist! "sequence15" "IlllIl east"
pushlist! "sequence15" "IlllIl south"
pushlist! "sequence15" "IlllIl north"
pushlist! "sequence15" "IlllIl west"
endif
if not listexists "sequence16"
createlist "sequence16"
pushlist! "sequence16" "IlllIl east"
pushlist! "sequence16" "IlllIl south"
pushlist! "sequence16" "IlllIl west"
pushlist! "sequence16" "IlllIl north"
endif
if not listexists "sequence17"
createlist "sequence17"
pushlist! "sequence17" "IlllIl east"
pushlist! "sequence17" "IlllIl west"
pushlist! "sequence17" "IlllIl north"
pushlist! "sequence17" "IlllIl south"
endif
if not listexists "sequence18"
createlist "sequence18"
pushlist! "sequence18" "IlllIl east"
pushlist! "sequence18" "IlllIl west"
pushlist! "sequence18" "IlllIl south"
pushlist! "sequence18" "IlllIl north"
endif
if not listexists "sequence19"
createlist "sequence19"
pushlist! "sequence19" "IlllIl west"
pushlist! "sequence19" "IlllIl north"
pushlist! "sequence19" "IlllIl south"
pushlist! "sequence19" "IlllIl east"
endif
if not listexists "sequence20"
createlist "sequence20"
pushlist! "sequence20" "IlllIl west"
pushlist! "sequence20" "IlllIl north"
pushlist! "sequence20" "IlllIl east"
pushlist! "sequence20" "IlllIl south"
endif
if not listexists "sequence21"
createlist "sequence21"
pushlist! "sequence21" "IlllIl west"
pushlist! "sequence21" "IlllIl south"
pushlist! "sequence21" "IlllIl north"
pushlist! "sequence21" "IlllIl east"
endif
if not listexists "sequence22"
createlist "sequence22"
pushlist! "sequence22" "IlllIl west"
pushlist! "sequence22" "IlllIl south"
pushlist! "sequence22" "IlllIl east"
pushlist! "sequence22" "IlllIl north"
endif
if not listexists "sequence23"
createlist "sequence23"
pushlist! "sequence23" "IlllIl west"
pushlist! "sequence23" "IlllIl east"
pushlist! "sequence23" "IlllIl north"
pushlist! "sequence23" "IlllIl south"
endif
if not listexists "sequence24"
createlist "sequence24"
pushlist! "sequence24" "IlllIl west"
pushlist! "sequence24" "IlllIl east"
pushlist! "sequence24" "IlllIl south"
pushlist! "sequence24" "IlllIl north"
endif
endif
//Thief is the one calling the sequences and waiting for responses from other party members
if serial 'thief' == serial 'self'
if list 'curr_seq' == 0
headmsg 'Loading sequences...' 20 'self'
pause 1000
if @inlist 'try_number' 'try1'
//sequence1
pushlist! 'curr_seq' 'sequence1'
pushlist! 'tried_seq' 'sequence1' 'front'
pushlist 'curr_lever' sequence1[0]
pushlist 'curr_lever' sequence1[1]
pushlist 'curr_lever' sequence1[2]
pushlist 'curr_lever' sequence1[3]
elseif @inlist 'try_number' 'try2'
if @injournal 'the circle of souls has failed'
//sequence8
pushlist! 'curr_seq' 'sequence8'
pushlist! 'tried_seq' 'sequence8' 'front'
pushlist 'curr_lever' sequence8[0]
pushlist 'curr_lever' sequence8[1]
pushlist 'curr_lever' sequence8[2]
pushlist 'curr_lever' sequence8[3]
elseif @injournal 'soul has turned'
//sequence13
pushlist! 'curr_seq' 'sequence13'
pushlist! 'tried_seq' 'sequence13' 'front'
pushlist 'curr_lever' sequence13[0]
pushlist 'curr_lever' sequence13[1]
pushlist 'curr_lever' sequence13[2]
pushlist 'curr_lever' sequence13[3]
elseif @injournal 'souls have turned'
//sequence15
pushlist! 'curr_seq' 'sequence15'
pushlist! 'tried_seq' 'sequence15' 'front'
pushlist 'curr_lever' sequence15[0]
pushlist 'curr_lever' sequence15[1]
pushlist 'curr_lever' sequence15[2]
pushlist 'curr_lever' sequence15[3]
endif
elseif @inlist 'try_number' 'try3'
if @inlist 'ltried_seq' 'sequence8'
if @injournal 'the circle of souls has failed'
//sequence18
pushlist! 'curr_seq' 'sequence18'
pushlist! 'tried_seq' 'sequence18' 'front'
pushlist 'curr_lever' sequence18[0]
pushlist 'curr_lever' sequence18[1]
pushlist 'curr_lever' sequence18[2]
pushlist 'curr_lever' sequence18[3]
elseif @injournal 'souls have turned'
//sequence14
pushlist! 'curr_seq' 'sequence14'
pushlist! 'tried_seq' 'sequence14' 'front'
pushlist 'curr_lever' sequence14[0]
pushlist 'curr_lever' sequence14[1]
pushlist 'curr_lever' sequence14[2]
pushlist 'curr_lever' sequence14[3]
endif
elseif @inlist 'ltried_seq' 'sequence13'
if @injournal 'the circle of souls has failed'
//sequence4
//sequence12
//sequence21
pushlist! 'curr_seq' 'sequence4'
pushlist! 'curr_seq' 'sequence12'
pushlist! 'curr_seq' 'sequence21'
pushlist! 'tried_seq' 'sequence4' 'front'
pushlist! 'tried_seq' 'sequence12' 'front'
pushlist! 'tried_seq' 'sequence21' 'front'
pushlist 'curr_lever' sequence4[0]
pushlist 'curr_lever' sequence4[1]
pushlist 'curr_lever' sequence4[2]
pushlist 'curr_lever' sequence4[3]
pushlist 'curr_lever' sequence12[0]
pushlist 'curr_lever' sequence12[1]
pushlist 'curr_lever' sequence12[2]
pushlist 'curr_lever' sequence12[3]
pushlist 'curr_lever' sequence21[0]
pushlist 'curr_lever' sequence21[1]
pushlist 'curr_lever' sequence21[2]
pushlist 'curr_lever' sequence21[3]
elseif @injournal 'soul has turned'
//sequence5
//sequence9
//sequence16
//sequence20
pushlist! 'curr_seq' 'sequence5'
pushlist! 'curr_seq' 'sequence9'
pushlist! 'curr_seq' 'sequence16'
pushlist! 'curr_seq' 'sequence20'
pushlist! 'tried_seq' 'sequence5' 'front'
pushlist! 'tried_seq' 'sequence9' 'front'
pushlist! 'tried_seq' 'sequence16' 'front'
pushlist! 'tried_seq' 'sequence20' 'front'
pushlist 'curr_lever' sequence5[0]
pushlist 'curr_lever' sequence5[1]
pushlist 'curr_lever' sequence5[2]
pushlist 'curr_lever' sequence5[3]
pushlist 'curr_lever' sequence9[0]
pushlist 'curr_lever' sequence9[1]
pushlist 'curr_lever' sequence9[2]
pushlist 'curr_lever' sequence9[3]
pushlist 'curr_lever' sequence16[0]
pushlist 'curr_lever' sequence16[1]
pushlist 'curr_lever' sequence16[2]
pushlist 'curr_lever' sequence16[3]
pushlist 'curr_lever' sequence20[0]
pushlist 'curr_lever' sequence20[1]
pushlist 'curr_lever' sequence20[2]
pushlist 'curr_lever' sequence20[3]
endif
elseif @inlist 'ltried_seq' 'sequence15'
if @injournal 'the circle of souls has failed'
//sequence6
pushlist! 'curr_seq' 'sequence6'
pushlist! 'tried_seq' 'sequence6' 'front'
pushlist 'curr_lever' sequence6[0]
pushlist 'curr_lever' sequence6[1]
pushlist 'curr_lever' sequence6[2]
pushlist 'curr_lever' sequence6[3]
elseif @injournal 'soul has turned'
//sequence3
pushlist! 'curr_seq' 'sequence3'
pushlist! 'tried_seq' 'sequence3' 'front'
pushlist 'curr_lever' sequence3[0]
pushlist 'curr_lever' sequence3[1]
pushlist 'curr_lever' sequence3[2]
pushlist 'curr_lever' sequence3[3]
endif
endif
elseif @inlist 'try_number' 'try4'
if @inlist 'ltried_seq' 'sequence18'
if @injournal 'the circle of souls has failed'
//sequence23
pushlist! 'curr_seq' 'sequence23'
pushlist! 'tried_seq' 'sequence23' 'front'
pushlist 'curr_lever' sequence23[0]
pushlist 'curr_lever' sequence23[1]
pushlist 'curr_lever' sequence23[2]
pushlist 'curr_lever' sequence23[3]
elseif @injournal 'souls have turned'
//sequence17
//sequence24
pushlist! 'curr_seq' 'sequence17'
pushlist! 'curr_seq' 'sequence24'
pushlist! 'tried_seq' 'sequence17' 'front'
pushlist! 'tried_seq' 'sequence24' 'front'
pushlist 'curr_lever' sequence17[0]
pushlist 'curr_lever' sequence17[1]
pushlist 'curr_lever' sequence17[2]
pushlist 'curr_lever' sequence17[3]
pushlist 'curr_lever' sequence24[0]
pushlist 'curr_lever' sequence24[1]
pushlist 'curr_lever' sequence24[2]
pushlist 'curr_lever' sequence24[3]
endif
elseif @inlist 'ltried_seq' 'sequence14'
if @injournal 'the circle of souls has failed'
//sequence11
pushlist! 'curr_seq' 'sequence11'
pushlist! 'tried_seq' 'sequence11' 'front'
pushlist 'curr_lever' sequence11[0]
pushlist 'curr_lever' sequence11[1]
pushlist 'curr_lever' sequence11[2]
pushlist 'curr_lever' sequence11[3]
elseif @injournal 'soul has turned'
//sequence10
//sequence19
pushlist! 'curr_seq' 'sequence10'
pushlist! 'curr_seq' 'sequence19'
pushlist! 'tried_seq' 'sequence10' 'front'
pushlist! 'tried_seq' 'sequence19' 'front'
pushlist 'curr_lever' sequence10[0]
pushlist 'curr_lever' sequence10[1]
pushlist 'curr_lever' sequence10[2]
pushlist 'curr_lever' sequence10[3]
pushlist 'curr_lever' sequence19[0]
pushlist 'curr_lever' sequence19[1]
pushlist 'curr_lever' sequence19[2]
pushlist 'curr_lever' sequence19[3]
endif
elseif @inlist 'ltried_seq' 'sequence3'
if @injournal 'the circle of souls has failed'
//sequence22
pushlist! 'curr_seq' 'sequence22'
pushlist! 'tried_seq' 'sequence22' 'front'
pushlist 'curr_lever' sequence22[0]
pushlist 'curr_lever' sequence22[1]
pushlist 'curr_lever' sequence22[2]
pushlist 'curr_lever' sequence22[3]
elseif @injournal 'soul has turned'
//sequence2
//sequence7
pushlist! 'curr_seq' 'sequence2'
pushlist! 'curr_seq' 'sequence7'
pushlist! 'tried_seq' 'sequence2' 'front'
pushlist! 'tried_seq' 'sequence7' 'front'
pushlist 'curr_lever' sequence2[0]
pushlist 'curr_lever' sequence2[1]
pushlist 'curr_lever' sequence2[2]
pushlist 'curr_lever' sequence2[3]
pushlist 'curr_lever' sequence7[0]
pushlist 'curr_lever' sequence7[1]
pushlist 'curr_lever' sequence7[2]
pushlist 'curr_lever' sequence7[3]
endif
endif
endif
else
partymsg 'Starting a new TRY'
@clearjournal
partymsg 'Current trying the sequence:'
partymsg curr_seq[0]
partymsg curr_seq[0]
partymsg curr_seq[0]
for 0 to 3 in curr_lever
clearjournal
partymsg curr_lever[]
waitforjournal 'IlllIl lever ok' 20000
endfor
if @findtype 0x1414 1266 'ground' 1 15
replay
endif
pause 2000
settimer 'timedout' 0
if @injournal 'turned' or @injournal 'has failed'
for 4
@poplist 'curr_lever' 'front'
endfor
if @list 'curr_seq' == 1
@clearlist 'ltried_seq'
pushlist 'ltried_seq' curr_seq[0]
endif
@poplist 'curr_seq' 'front'
replay
elseif @injournal 'The circle is the key' or @injournal 'the sands of time'
replay
elseif @timer 'timedout' > 10000
replay
endif
endif
//All possible combinations that require no further journal reading have been tried.
poplist 'try_number' 'front'
//It means that you are not the thief, just another lever puller.
else
@clearjournal
partymsg 'Listening...'
while not @injournal journal_trigger[0]
if hits < maxhits
if skill 'magery' > 80
miniheal 'self'
elseif skill 'chivalry' > 55
chivalryheal 'self'
endif
endif
pause 100
endwhile
useobject! 'lever'
partymsg 'IlllIl lever ok'
pause 1000
endif