<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<el:level xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://enigma-game.org/schema/level/1 level.xsd" xmlns:el="http://enigma-game.org/schema/level/1">
  <el:protected>
    <el:info el:type="level">
      <el:identity el:title="Excruciating" el:subtitle="" el:id="duffy90"/>
      <el:version el:score="1" el:release="1" el:revision="1" el:status="released"/>
      <el:author  el:name="Jacob Scott" el:email="" el:homepage=""/>
      <el:copyright>Copyright © 2004 Jacob Scott</el:copyright>
      <el:license el:type="GPL v2.0 or above" el:open="true"/>
      <el:compatibility el:enigma="0.92">
      </el:compatibility>
      <el:modes el:easy="false" el:single="true" el:network="false"/>
      <el:comments>
        <el:code>Lua 5.1 and XML converted by Leveladministrators</el:code>
      </el:comments>
      <el:score el:easy="-" el:difficult="-"/>
    </el:info>
    <el:luamain><![CDATA[
rooms_wide=3
rooms_high=4

levelw=1+(19*rooms_wide) -6
levelh=1+(12*rooms_high)

create_world( levelw, levelh)

enigma.ElectricForce = 50

fill_floor("fl-hay", 0,0,levelw,levelh)

function renderLine( line, pattern)
    for i=1, strlen(pattern) do
        local c = strsub( pattern, i, i)
        if c =="#" then
            set_stone( "st-greenbrown", i-1, line)
        elseif c =="<" then
            set_stone( "st-greenbrown", i-1, line)
            set_floor("fl-water",i-1,line)
        elseif c =="@" then
            set_stone( "st-greenbrown", i-1, line)
            set_floor("fl-leaves",i-1,line)
        elseif c =="V" then
            set_stone( "st-glass", i-1, line)
            set_floor("fl-leaves",i-1,line)
        elseif c =="w" then
            set_stone( "st-glass", i-1, line)
        elseif c =="v" then
            set_stone( "st-death_invisible", i-1, line)
        elseif c == "o" then
            oxyd( i-1, line)
        elseif c == "*" then
            set_stone( "st-brownie", i-1, line)
        elseif c == "Y" then
            set_stone( "st-brownie", i-1, line)
            set_floor("fl-water",i-1,line)
        elseif c == "!" then
            abyss(i-1,line)
        elseif c == "~" then
            set_floor("fl-water",i-1,line)
        elseif c=="z" then
            set_actor("ac-blackball", i-1,line+.5, {player=0})
        elseif c == "g" then
            draw_stones("st-grate1",{i-1,line}, {1,1}, 1)
        elseif c == "G" then
            draw_stones("st-grate1",{i-1,line}, {1,1}, 1)
            set_floor("fl-sand",i-1,line)
        elseif c == "P" then
            draw_stones("st-grate1",{i-1,line}, {1,1}, 1)
            set_floor("fl-leaves",i-1,line)
        elseif c=="+" then
            set_stone( "st-wood", i-1, line)
        elseif c=="%" then
            set_stone( "st-wood", i-1, line)
            set_floor("fl-sand",i-1,line)
        elseif c=="=" then
            set_floor("fl-space",i-1,line)
--        elseif c == "d" then --1-d
--            set_floor("fl-gradient",  i-1,  line, {type=1})
--        elseif c == "u" then --2-u
--            set_floor("fl-gradient",  i-1,  line, {type=2})
--        elseif c == "r" then --3-r
--            set_floor("fl-gradient",  i-1,  line, {type=3})
--        elseif c == "l" then --4-l
--            set_floor("fl-gradient",  i-1,  line, {type=4})
--        elseif c == "1" then --ur
--            set_floor("fl-gradient",  i-1,  line, {type=11})
--        elseif c == "3" then --dl
--            set_floor("fl-gradient",  i-1,  line, {type=9})
--        elseif c == "7" then --dr
--            set_floor("fl-gradient",  i-1,  line, {type=12})
--        elseif c == "9" then --ul
--            set_floor("fl-gradient",  i-1,  line, {type=10})
        elseif c=="m" then
            set_floor("fl-normal",i-1,line)
        elseif c=="M" then
            fill_floor("fl-metal",i-2,line,20,12)
        elseif c=="I" then
            fill_floor("fl-ice",i-1,line,19,11)
        elseif c=="l" then
            fill_floor("fl-leaves",i-2,line-1,20,12)
        elseif c=="p" then
            set_floor("fl-leaves",i-1,line)
        elseif c=="t" then
            set_floor("fl-sand",i-1,line)
        elseif c=="i" then
            set_floor("fl-ice",i-1,line)
        elseif c=="c" then
            set_item("it-coin1", i-1,line)
        elseif c=="C" then
            set_stone("st-coinslot", i-1,line, {action="onoff", target="laser2"})
        elseif c=="E" then
            set_attrib(laser(i-1,line, FALSE, WEST), "name", "laser2")
        elseif c=="H" then
            set_stone("st-coinslot", i-1,line, {action="openclose", target="door2"})
            set_floor("fl-leaves",i-1,line)
        elseif c=="h" then
            set_stone("st-stone_break",i-1,line)
        elseif c=="S" then
            set_stone("st-switch",i-1,line,{action="openclose",target="door1"})
        elseif c=="A" then
            doorh( i-1,line, {name="door1"})
        elseif c=="B" then
            doorv( i-1,line, {name="door2"})
        elseif c==";" then
            mirrorp(i-1,line,FALSE,FALSE, 2)
        elseif c==":" then
            mirrorp(i-1,line,FALSE,TRUE, 2)
        elseif c=="/" then
            mirrorp(i-1,line,FALSE,FALSE, 4)
        elseif c=="?" then
            mirrorp(i-1,line,FALSE,TRUE, 4)
        elseif c=="F" then
            set_stone("st-laserswitch",i-1,line,{action="openclose",target="door2"})
        elseif c=="O" then
            set_item("it-extralife",i-1,line)
        elseif c=="U" then
            puzzle(i-1,line,PUZ_0010)
        elseif c=="D" then
            puzzle(i-1,line,PUZ_1000)
        elseif c=="R" then
            set_actor("ac-rotor", i-.5,line+.5, {player=1, mouseforce=0, range=7, force=20})
        elseif c=="b" then
            yy1( "black",  i-1, line)
        elseif c=="W" then
            yy1( "white",  i-1, line)
        elseif c=="n" then
            set_stone("st-knight",i-1,line)
        elseif c=="K" then
            set_item("it-vortex-open", i-1, line,{targetx="14.5",targety="30.5"})
        elseif c=="L" then
            set_item("it-vortex-open", i-1, line,{targetx="14.5",targety="30.5"})
            set_stone( "st-brownie", i-1, line)
        elseif c=="J" then
            set_item("it-vortex-open", i-1, line,{targetx="1.5",targety="23.5"})
        elseif c=="j" then
            set_item("it-vortex-open", i-1, line,{targetx="1.5",targety="23.5"})
        elseif c=="`" then
            set_item("it-vortex-open", i-1, line,{targetx="9.5",targety="16.5"})
        elseif c=="1" then
            set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc1"})
        elseif c=="2" then
            set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc2"})
        elseif c=="3" then
            set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc3"})
        elseif c=="4" then
            set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc4"})
        elseif c=="5" then
            set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc5"})
        elseif c=="6" then
             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc6"})
        elseif c=="7" then
             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc7"})
        elseif c=="8" then
             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funccx"})
        elseif c=="." then
             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funccb1"})
        elseif c=="," then
             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funccb2"})
        elseif c=="r" then
            set_item("it-wormhole", i-1, line, {strength=0,targetx="12",targety="6.5"})
            yy1( "black",  i-1, line)
        elseif c=="&" then
            set_stone("st-chargeplus",i-1,line)
        elseif c=="^" then
            set_stone("st-chargeminus",i-1,line)
        elseif c=="d" then
            set_floor("fl-gradient",  i-1,  line, {type=3})
            set_actor("ac-whiteball", i-.5,line+.5, {player=1,mouseforce=0})
        elseif c=="T" then
            set_item("it-crack3",i-1,line)
        elseif c=="N" then
            set_stone("st-bolder", i-1,line, {direction=EAST})
            set_floor("fl-water",i-1,line)
        elseif c=="a" then
            set_attrib(laser(i-1,line, FALSE, NORTH), "name", "laser3")
        elseif c=="f" then
            set_attrib(laser(i-1,line, FALSE, NORTH), "name", "laser4")
        elseif c==">" then
            set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funccc1"})
        elseif c=="q" then
            set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funccc2"})
        elseif c=="Q" then
            mirror3(i-1,line,FALSE,FALSE,2)
        end
    end
end

function yy1( color, x, y)
    stone = format( "st-%s4", color)
    set_stone( stone, x, y)
end

renderLine(00,"#########################################")
renderLine(01,"#l                 #   ============   ###")
renderLine(02,"#        oo        #   ############   ###")
renderLine(03,"#      o####o      #   #~~~~<~~~~~~~~~###")
renderLine(04,"#    o###  ###o    #   #~~~~~~~~~~~~~~###")
renderLine(05,"#  o###      ###oWW##T##~~~~~~<~~~~~~~###")
renderLine(06,"#d&##    &^    ##Wrn   #~~      ~~~~~~###")
renderLine(07,"#  o###      ###oWW# c #~~ ++++ ~~~<~~###")
renderLine(08,"#    o###  ###o    #   #~~ +  + ~~~~~~###")
renderLine(09,"#      o####o      #123#~~ +  + ~~~~~~###")
renderLine(10,"#        oo        #4L5#~~ +++g+~~~~~~###")
renderLine(11,"#                  #67X#~~      ~~~~~~###")
renderLine(12,"############################bb###########")
renderLine(13,"#~    b            #I       RR        ###")
renderLine(14,"#~    N#####       #                  ###")
renderLine(15,"#~    N#   #       #                  ###")
renderLine(16,"#~    N#*J*#       #                  ###")
renderLine(17,"#~    N# * #       #                  ###")
renderLine(18,"#~    N# * #       i                  ###")
renderLine(19,"#~    N#* *#########                  ###")
renderLine(20,"#~    N# * #       #                  ###")
renderLine(21,"#~    N# * #  O`O  #                  ###")
renderLine(22,"#a#  #f#***#   O   #                  ###")
renderLine(23,"#j, .     g#       #                  ###")
renderLine(24,"#####A###################################")
renderLine(25,"#c  > >               vhvhvhvhvhv *   ###")
renderLine(26,"#c  >>>               vhvhvhvhvhv *g  ###")
renderLine(27,"#                     vhvhvhvhvhv *Y**###")
renderLine(28,"#                     vhvhvhvhvhv U  ####")
renderLine(29,"#                     vhvhvhvhvhv D * ###")
renderLine(30,"#         z   K       vhvhvhvhvhv * *S###")
renderLine(31,"#                     vhvhvhvhvhv U * ###")
renderLine(32,"#                     vhvhvhvhvhv D  ####")
renderLine(33,"#                     vhvhvhvhvhv *Y**###")
renderLine(34,"#c                    vhvhvhvhvhv *g  ###")
renderLine(35,"#c                    vhvhvhvhvhv *   ###")
renderLine(36,"#########qq##############################")
renderLine(37,"#M    ;     w/w/ ; wppppppppppppppppppVF#")
renderLine(38,"# ;         w:w    #pppppttGtttGttpppp@##")
renderLine(39,"#           www    #ppppptG%G%G%Gtpppp@##")
renderLine(40,"#     /        /   #pppppG%~~~~~%Gpppp@##")
renderLine(41,"#;          Q    / #HpppptG~~~~~Gtpppp@##")
renderLine(42,"#                  Bpppppt%~~~~~%tpppp@##")
renderLine(43,"#            /     #HpppptG~~~~~Gtpppp@##")
renderLine(44,"#/    ;    www     #pppppG%~~~~~%Gpppp@##")
renderLine(45,"#          w;w  /  #ppppptG%G%G%Gtpppp@##")
renderLine(46,"#          www    C#pppppttGtttGttpppp@##")
renderLine(47,"# ;               E#pppppppppppppppppp@##")
renderLine(48,"####################@@@@@@@@@@@@@@@@@@@##")

oxyd_shuffle()

ffc1=0

xa=((random(11))+24)
xb=((random(11))+24)
xc=((random(11))+24)
xd=((random(11))+24)
xe=((random(11))+24)
xf=((random(11))+24)

enigma.KillStone(22,xa)
enigma.KillStone(24,xb)
enigma.KillStone(26,xc)
enigma.KillStone(28,xd)
enigma.KillStone(30,xe)
enigma.KillStone(32,xf)

ff1=0
function funcc1()
    if ff1==0 then
        ff1=1
    elseif ff1==1 then
        ff1=0
    end
    funcc8()
end

ff2=0
function funcc2()
    if ff2==0 then
        ff2=1
    elseif ff2==1 then
        ff2=0
    end
    funcc8()
end

ff3=0
function funcc3()
    if ff3==0 then
        ff3=1
    elseif ff3==1 then
        ff3=0
    end
    funcc8()
end

ff4=0
function funcc4()
    if ff4==0 then
        ff4=1
    elseif ff4==1 then
        ff4=0
    end
    funcc8()
end

ff5=0
function funcc5()
    if ff5==0 then
        ff5=1
    elseif ff5==1 then
        ff5=0
    end
    funcc8()
end

ff6=0
function funcc6()
    if ff6==0 then
        ff6=1
    elseif ff6==1 then
        ff6=0
    end
    funcc8()
end

ff7=0
function funcc7()
    if ff7==0 then
        ff7=1
    elseif ff7==1 then
        ff7=0
    end
    funcc8()
end

ffx=0
function funccx()
    if ffx==0 then
        ffx=1
    elseif ffx==1 then
        ffx=0
    end
    funcc8()
end

ff8=0
function funcc8()
    if (ff1+ff2+ff3+ff4+ff5+ff6+ff7+ffx)==2 and ff8==0 then
        enigma.KillItem(14,30)
        set_item("it-vortex-open", 14, 30,{targetx="21.5",targety="10.5"})
        ff8=1
    end
end

ffb1=0
function funccb1()
    if ffb1==0 then
        ffb1=1
    elseif ffb1==1 then
        ffb1=0
    end
    funccb3()
end

ffb2=0
function funccb2()
    if ffb2==0 then
        ffb2=1
    elseif ffb2==1 then
        ffb2=0
    end
    funccb3()
end

ffb3=0
function funccb3()
    if ffb1==1 and ffb2==1 and ffb3==0 then
        ffb3=1
    end
    if ffb1==0 and ffb2==0 and ffb3==1 then
        enigma.KillItem(9,16)
        set_item("it-vortex-open", 9, 16,{targetx="15.5",targety="21.5"})
    ffb3=2
    end
end



function funccc1()
    if ffc1==0 then
        SendMessage("laser3","on")
        SendMessage("laser4","on")
        ffc1=1
    end
end

function funccc2()
    if ffc1==1 then
        SendMessage("laser3","off")
        SendMessage("laser4","off")
    end
    ffc1=0
end

ft1=0
function timer_callback()
    if ft1==0 then
        set_floor("fl-leaves",1,6)
        enigma.KillStone(2,6)
        ft1=1
    end
end

set_stone( "st-timer", 43, 0, {target="timer_callback", action="callback", name="timer", interval=1} )
    ]]></el:luamain>
    <el:i18n>
      <el:string el:key="title">
        <el:english el:translate="false"/>
      </el:string>
    </el:i18n>
  </el:protected>
</el:level>
