Hi, Here is a new, not too easy, level from Ronald and me. Please report any security holes (shortcuts).
Have fun -- Raoul
<?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="Puzzle Puzzles" el:subtitle="look forward!" el:id="raoul26"/> <el:version el:score="1" el:release="1" el:revision="22" el:status="released"/> <el:author el:name="Raoul Bourquin" el:email="" el:homepage=""/> <el:copyright>Copyright © 2006 Raoul Bourquin</el:copyright> <el:license el:type="GPL v2.0 or above" el:open="true"/> <el:compatibility el:enigma="1.0"> <el:dependency el:path="lib/libpuzzle" el:id="lib/libpuzzle" el:release="1" el:preload="true"/> </el:compatibility> <el:modes el:easy="true" el:single="true" el:network="false"/> <el:comments> <el:credits el:showinfo="true " el:showstart="false ">Thanks to Ronald for developing and debugging this level.</el:credits> </el:comments> <el:score el:easy="-" el:difficult="-"/> </el:info> <el:luamain><![CDATA[ -- GENERAL -- levelw = 40 levelh = 37 create_world(levelw, levelh) oxyd_default_flavor="d" fill_floor("fl-rough") function renderLine( line, pattern) for i=1, strlen(pattern) do local c = strsub( pattern, i, i) if c=="O" then oxyd(i-1,line) elseif c=="#" then set_stone("st-rock1",i-1,line) set_floor("fl-black",i-1,line,{friction="7.0", mousefactor="2.0"}) elseif c=="G" then set_stone("st-glass",i-1,line) elseif c=="H" then set_stone("st-glass",i-1,line) set_floor("fl-water",i-1,line) elseif c=="J" then set_stone("st-glass",i-1,line) set_floor("fl-black",i-1,line,{friction="7.0", mousefactor="2.0"}) elseif c=="D" then set_stone("st-death",i-1,line) elseif c=="S" then set_stone("st-blue-sand",i-1,line) elseif c=="P" then set_stone("st-polarswitch",i-1,line) elseif c=="L" then set_stone("st-laser",i-1,line,{dir=SOUTH,on=true}) elseif c=="." then set_stone("st-stoneimpulse-hollow",i-1,line) set_floor("fl-water",i-1,line) elseif c=="o" then set_stone("st-stoneimpulse",i-1,line) set_floor("fl-water",i-1,line) elseif c=="E" then set_stone("st-oneway_black-e",i-1,line) set_floor("fl-thief",i-1,line,{friction="7.0", mousefactor="2.0"}) elseif c=="B" then set_stone("st-black1",i-1,line) elseif c=="X" then set_stone("st-grate1",i-1,line) elseif c=="x" then set_stone("st-grate1",i-1,line) set_floor("fl-water",i-1,line) elseif c=="Y" then set_stone("st-grate1",i-1,line) set_floor("fl-black",i-1,line,{friction="7.0", mousefactor="2.0"}) elseif c=="W" then set_stone("st-wood",i-1,line) elseif c=="K" then set_stone("st-door_b",i-1,line,{name="door1"}) elseif c=="k" then set_stone("st-coinslot",i-1,line,{action="openclose", target="door1"}) elseif c=="F" then set_stone("st-stone_break",i-1,line) set_floor("fl-rough",i-1,line) elseif c=="f" then set_stone("st-stone_break",i-1,line) set_floor("fl-water",i-1,line) elseif c=="-" then set_floor("fl-rough",i-1,line) elseif c=="+" then set_floor("fl-rough_slow",i-1,line) elseif c=="~" then set_floor("fl-water",i-1,line) elseif c=="l" then set_floor("fl-rough",i-1,line) set_item("it-extralife",i-1,line) elseif c=="t" then set_floor("fl-thief",i-1,line,{friction="7.0", mousefactor="2.0"}) elseif c=="=" then set_floor("fl-black",i-1,line,{friction="7.0", mousefactor="2.0"}) elseif c=="@" then set_floor("fl-water",i-1,line) set_item("it-booze-broken",i-1,line) elseif c=="8" then set_floor("fl-water",i-1,line) set_item("it-booze",i-1,line) elseif c=="&" then set_floor("fl-rough",i-1,line) set_item("it-coin2",i-1,line) elseif c=="U" then set_stone("st-glass",i-1,line) set_floor("fl-rough",i-1,line) set_item("it-coin2",i-1,line) elseif c=="u" then set_stone("st-glass_move",i-1,line) set_floor("fl-rough",i-1,line) set_item("it-coin2",i-1,line) elseif c=="^" then set_floor("fl-gradient2",i-1,line) elseif c==">" then set_floor("fl-gradient3",i-1,line) elseif c=="v" then set_floor("fl-gradient1",i-1,line) elseif c=="<" then set_floor("fl-gradient4",i-1,line) elseif c=="!" then set_floor("fl-gradient2",i-1,line) set_stone("st-glass",i-1,line) elseif c=="1" then set_floor("fl-gradient6",i-1,line) elseif c=="2" then set_floor("fl-gradient8",i-1,line) elseif c=="3" then set_floor("fl-gradient7",i-1,line) elseif c=="4" then set_floor("fl-gradient5",i-1,line) elseif c=="a" then set_floor("fl-gradient10",i-1,line) elseif c=="b" then set_floor("fl-gradient9",i-1,line) elseif c=="c" then set_floor("fl-gradient11",i-1,line) elseif c=="d" then set_floor("fl-gradient12",i-1,line) end end end if not difficult then renderLine(00 , "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") renderLine(01 , "~~~~~~~~~~~~~~~~~~~~GG~~~~~~GG~~~~L~~~~~") renderLine(02 , "~~~~~~~~~~~~~~~~~~~~G-------lG~~M-GGM~~~") renderLine(03 , "~~#####~~~~~~~~~~~~~~-SSSXSS-~~~G----~~~") renderLine(04 , "~##OvO##~~~~~###^a~~~-S----S-~~~G-P-X~~~") renderLine(05 , "~#O4v1O##DDD##===3a~~-S------~~~G-G-M.o.") renderLine(06 , "~#>>~<<======Y====>--------S-~~~MGM-G~H.") renderLine(07 , "~#O3^2O##DDD##===4b~~~S----S-~~~~~~-~~~.") renderLine(08 , "~##O^O##~~~~~#HJvb~~~~S-S-SS-~~~-------.") renderLine(09 , "~~#####~~~~~~~~~~~~~~~~~~----G~~-~~~~~~.") renderLine(10 , "~~~~~~~~~~~~~~~~~~~~~~~~~-~~GG~~-~~~~...") renderLine(11 , "~~~~~~~~~~~~~~~~~~~~~H~~~-~~~~~~-~~~H~~~") renderLine(12 , "~~~~~~~~~~~~~~~~~~~~HMH~P-------l~~HMH~~") renderLine(13 , "~~~~~~~~~~~~~~~~~~~~~H~~~-~~~~~~S~~~H~~~") renderLine(14 , "~~G~~~~~~~~~~~H~~~~~~~~~~-~~SSSSS~~~SS~~") renderLine(15 , "~U------------PH~~~~~~~~~-~~S--------S~~") renderLine(16 , "~~-G~~~~~~~~~--~~~~~~~~~~-~~S-SSXSSS-S~~") renderLine(17 , "~~-~~~~~~~~~~~-~~~~~~~~~S-S~S-SX---X-S~~") renderLine(18 , "~~-G~~~~G~~~~~-~~~~~~H~SS-SSS-X----SSS~~") renderLine(19 , "~G-------u~~~~-~~~~~HMHGG----------S~~~~") renderLine(20 , "~~G~~~~G-~~~~~-~~~~~~~~l-X-GSSS---GS~~~~") renderLine(21 , "~~~~~~~~-~~~~~-~~~~~~~~SS-SSS~SSS-SS~~~~") renderLine(22 , "~~~~~~~~-~~~~~--~~~~~-~~~&--KSS~~-~--S~~") renderLine(23 , "~~~~~~~~-~~~~HM-----------fm--------SS~~") renderLine(24 , "~~~~~~~~-~~~~~H~~~~~HGH~~---k~~~~-~~H~~~") renderLine(25 , "~~~~~~~~-~~~~~~~~~~~~G~~~-~~HHHHHtHHH~~~") renderLine(26 , "[EMAIL PROTECTED]@HtH~~~~~") renderLine(27 , "[EMAIL PROTECTED]") renderLine(28 , "[EMAIL PROTECTED]") renderLine(29 , "[EMAIL PROTECTED]") renderLine(30 , "[EMAIL PROTECTED]<==ttt==>~~") renderLine(31 , "[EMAIL PROTECTED]<==t=t==>~~") renderLine(32 , "~~~~~~~~~~~~~~~~-~~~~~~~H-HtH<==ttt==>~~") renderLine(33 , "GGGG~~~~~~~~~~~G-~~~~~~~H-EtHc1Y===Y4b~~") renderLine(34 , "G41--------------G~~~~~~HHHHH~c1===4b~~~") renderLine(35 , "G32G~~~~~~~~~~~~G~~~~~~~~~H~~~~cvvvb~~~~") renderLine(36 , "GGGG~~~~~~~~~~~~~~~~~~~~~~H~~~~~~~~~~~~~") else renderLine(00 , "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") renderLine(01 , "~~~~~~~~~~~~~~~~~~~~GG~~~~~~GG~~~~L~~~~~") renderLine(02 , "~~~~~~~~~~~~~~~~~~~~G--------G~~M-GGM~~~") renderLine(03 , "~~#####~~~~~~~~~~~~~~-SSSXSS-~~~G----~~~") renderLine(04 , "~##OvO##~~~~~###^a~~~-S----S-~~~G-P-X~~~") renderLine(05 , "~#O4v1O##DDD##===3a~~-S------~~~G-G-Mo..") renderLine(06 , "~#>>~<<======Y====>-l------S-~~~MGM-G~H.") renderLine(07 , "~#O3^2O##DDD##===4b~~~S----S-~~~~~~-~~~.") renderLine(08 , "~##O^O##~~~~~#HGvb~~~~S-S-SS-~~~-------.") renderLine(09 , "~~#####~~~~~~~~~~~~~~~~~~----G~~-~~~~~~.") renderLine(10 , "~~~~~~~~~~~~~~~~~~~~~~~~~-~~GG~~-~~~~...") renderLine(11 , "~~~~~~~~~~~~~~~~~~~~~H~~~-~~~~~~-~~~H~~~") renderLine(12 , "~~~~~~~~~~~~~~~~~~~~HMH~P--------~~HMH~~") renderLine(13 , "~~~~~~~~~~~~~~~~~~~~~H~~~-~~~~~~S~~~H~~~") renderLine(14 , "~~G~~~~~~~~~~~H~~~~~~~~~~-~~SSSSS~~~SS~~") renderLine(15 , "~U------------PH~~~~~~~~~-~~S--------S~~") renderLine(16 , "~~-G~~~~~~~~~--~~~~~~~~~~-~~S-SSXSSS-S~~") renderLine(17 , "~~-~~~~~~~~~~~-~~~~~~~~~S-S~S-SX---X-S~~") renderLine(18 , "~~-G~~~~G~~~~~-~~~~~~H~SS-SSS-X----SSS~~") renderLine(19 , "~G-------u~~~~-~~~~~HMHGG--FF------S~~~~") renderLine(20 , "~~G~~~~G-~~~~~-~~~~~~~~l-X-GSSS---GS~~~~") renderLine(21 , "~~~~~~~~-~~~~~-~~~~~~~~SS-SSS~SSS-SS~~~~") renderLine(22 , "~~~~~~~~-~~~~~--~~~~~-~~~&--KSS~~-S~~~~~") renderLine(23 , "~~~~~~~~-~~~~HM-----------~m------SS~~~~") renderLine(24 , "~~~~~~~~-~~~~~H~~~~~HGH~~---kSSS---SSSSS") renderLine(25 , "[EMAIL PROTECTED]") renderLine(26 , "[EMAIL PROTECTED]") renderLine(27 , "[EMAIL PROTECTED]") renderLine(28 , "~~~~~~~G---------G~~---~~~-@@xd2===3a~~~") renderLine(29 , "~~~~~~~~G~~~~~~G-~~~---~~~-@@d2=====3a~~") renderLine(30 , "~~~~~~~~~~~~~~~~-~~~---~~~t@@<=======>~~") renderLine(31 , "~~~~~~~~~~~~~~~~-~~~~~~~~~t@@<=======>~~") renderLine(32 , "~~~~~~~~~~~~~~~~-~~~~~~~~~EBE<=======>~~") renderLine(33 , "GGGG~~~~~~~~~~~G-~~~~~~~~~HHHc1=====4b~~") renderLine(34 , "G41--------------G~~~~~~~~H~~~c1===4b~~~") renderLine(35 , "G32G~~~~~~~~~~~~G~~~~~~~~~H~~~~cvvvb~~~~") renderLine(36 , "GGGG~~~~~~~~~~~~~~~~~~~~HHH~~~~~~~~~~~~~") end ---- FUNCTIONS ---- function set_random_mirror(x,y,m) r=random(1,3) strg={"|","/","-"} kind=strg[r] set_stone("st-mirror-p"..kind..m,x,y) end function set_lock() kind=random(1,2) if kind==1 then -- upper part missing set_stone("st-puzzle2-s",33,31) set_stone("st-puzzle2-n",14,6) set_stone("st-puzzle2-ns",14,5) set_stone("st-rock1",15,6) set_stone("st-rock1",15,5) set_item("it-seed",14,7) else -- lower part missing set_stone("st-puzzle2-s",14,6) set_stone("st-puzzle2-n",33,31) set_stone("st-puzzle2-ns",14,7) set_stone("st-glass",15,6) set_stone("st-glass",15,7) set_item("it-seed",14,5) end end function set_water_1() -- close way from the north set_stone("st-oneway_black-n",33,27) enigma.NameObject(enigma.GetStone(26,33), "a1") SendMessage("a1","flip") SendMessage("b3","close") SendMessage("b4","close") enigma.KillItem(33,24) end function set_water_2() -- close way from the north set_stone("st-oneway_black-n",33,27) enigma.NameObject(enigma.GetStone(28,32), "a1") SendMessage("a1","flip") set_floor("fl-rough",26,30) set_floor("fl-rough",26,31) set_floor("fl-rough",26,32) enigma.KillItem(33,24) end ---- PUZZLES ---- -- W puzzle({{0,1,1},{1,1,0},{1,0,0}},23,6,"blue","no") -- Z puzzle({{0,1,1},{0,2,0},{1,1,0}},32,18,"blue","no") set_stone("st-puzzle-hollow",33,19) -- shell_lower_part shuffle_method="permutation" puzzle({{1,1,0,1,1},{0,1,1,1,0},{0,0,1,0,0}},31,31,"blue","yes") -- shell_upper_part puzzle({{0,1,0},{1,1,1}},32,29,"blue","yes") -- - puzzle({{1,2,1}},34,3,"blue","no") set_stone("st-puzzle-hollow",35,3) -- | puzzle({{1},{2},{1}},33,2,"blue","no") set_stone("st-puzzle-hollow",33,3) -- T puzzle({{0,0,1},{1,2,1},{0,0,1}},33,7,"blue","no") set_stone("st-puzzle-hollow",34,8) ---- ITEMS ---- set_item("it-magicwand",33,28) set_item("it-banana",33,5) set_item("it-cherry",25,20) set_item("it-cherry",33,3) set_item("it-cherry",21,29) set_item("it-cross",14,6) set_item("it-seed",13,6) set_item("it-cross",25,21) set_item("it-spoon",33,34) if not difficult then set_item("it-puller-n",35,8) set_item("it-hammer",36,22) set_item("it-booze",26,32) else set_item("it-hammer",34, 24) end ---- MIRRORS ---- set_stone("st-mirror-p/",21,12) set_stone("st-mirror-p/",36,12) set_stone("st-mirror-p/",21,19) set_stone("st-mirror-p/",32,2) set_random_mirror(36,2,"") set_random_mirror(32,6,"") set_random_mirror(34,6,"") set_random_mirror(14,23,"") set_stone("st-mirror-p-tm",36,5) set_random_mirror(25,22,"m") set_random_mirror(27,23,"m") set_lock() ---- BRIDGES ---- if not difficult then set_floor("fl-bridge-open",27,19,{name="b3", type="a"}) set_floor("fl-bridge-open",28,19,{name="b4", type="a"}) set_item("it-trigger",33,24,{action="callback", target="set_water_1"}) else set_item("it-trigger", 33, 24, {action="callback", target="set_water_2"}) end ------ ACTOR ---- set_actor("ac-blackball", 2,35, {player=0}) oxyd_shuffle() ]]></el:luamain> <el:i18n> <el:string el:key="title"> <el:english el:translate="false"/> </el:string> </el:i18n> </el:protected> </el:level>
_______________________________________________ Enigma-devel mailing list Enigma-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/enigma-devel