Macro to solve inquisitor's puzzle.

Share your guides, how-tos, FAQs, and so forth. This is not for support -- post questions in General Discussion.
Post Reply
User avatar
Llama Vortex
Posts: 149

Macro to solve inquisitor's puzzle.

Post by Llama Vortex »

The part of the code that gives the sequences to the party is working perfectly, other parts have higher chance of being improved.
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

Last edited by Llama Vortex on February 8th, 2018, 12:36 pm, edited 2 times in total.
hrs024 and Palanzane like this.
Top
hrs024
Posts: 2634

Re: Macro to solve inquisitor's puzzle.

Post by hrs024 »

wow cool beans
DISCORD NAME hrs024 #0656
User avatar
Llama Vortex
Posts: 149

Re: Macro to solve inquisitor's puzzle.

Post by Llama Vortex »

If you are looking for a simple script to send an e-mail giving you a heads up when inquisitor's spawn, just copy the following lines into a notepad, modify with your own e-mail info (must be gmail), save it as SendEmail.ps1 and put it at the same folder where EasyUO is installed.

The .ps1 extension will use a windows built-in script plataform named: Windows Power Shell.
You can then call this script from a simple EasyUO macro that checks if the inquisitor's has spawned, something like:

finditem [INQUISITOR's_TYPE] G_10
if #FINDCNT > 0 && #findcolor = [INQUISITOR's_COLOR]
{
execute SendEmail.ps1
halt
}

Code: Select all

$EmailFrom = "SomeRandomEmail@gmail.com"
$EmailTo = "YouRealEmail@gmail.com"
$Subject = "Inquisitor is UP!"
$Body = "That's right, inquisitor is UP"
$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("SomeRandomEmail", "RandomEmailPASSWORD");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
Last edited by Llama Vortex on February 8th, 2018, 12:32 pm, edited 4 times in total.
User avatar
Llama Vortex
Posts: 149

Re: Macro to solve inquisitor's puzzle.

Post by Llama Vortex »

Not saying that you should use those scripts to collect the inquistor's while AFK. NO, SIR, that would be illegal, SIR!
hrs024 likes this.
Top
hrs024
Posts: 2634

Re: Macro to solve inquisitor's puzzle.

Post by hrs024 »

Llama Vortex wrote:If you are looking for a simple script to send an e-mail, just copy the following lines to a notepad and save it as SendEmail.ps1.

It will use a windows built-in script plataform named: Windows Power Shell.
You can then call this script from a simple EasyUO macro that checks if the inquisitor's has spawned (with the line: execute SendEmail.ps1)

Code: Select all

$EmailFrom = "SomeRandomEmail@gmail.com"
$EmailTo = "YouRealEmail@gmail.com"
$Subject = "Inquisitor is UP!"
$Body = "That's right, inquisitor is UP"
$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("SomeRandomEmail", "RandomEmailPASSWORD");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
unfortunately for me you just went above my knowledge in macros and emailing lol
DISCORD NAME hrs024 #0656
Post Reply