home *** CD-ROM | disk | FTP | other *** search
/ GameStar Special 2004 August / GSSH0804.iso / Geschicklichkeit / Enigma / Enigma-081.exe / data / levels / duffy29.lua < prev    next >
Text File  |  2003-08-27  |  9KB  |  431 lines

  1. levelw=25
  2. levelh=15
  3.  
  4. create_world( levelw, levelh)
  5.  
  6. fill_floor("fl-leaves",0,0,levelw,levelh)
  7.  
  8. function renderLine( line, pattern)
  9.     for i=1, strlen(pattern) do
  10.         local c = strsub( pattern, i, i)
  11.         if c =="#" then
  12.                 set_stone( "st-glass", i-1, line)
  13.         elseif c == "o" then
  14.                 oxyd( i-1, line)
  15.         elseif c=="z" then
  16. local     ball=            set_actor("ac-blackball", i-.5,line+.5, {player=0, mouseforce=1})
  17.         elseif c == "*" then
  18.             set_stone( "st-brownie", i-1, line)
  19.         elseif c == "g" then
  20.             set_stone( "st-grate1", i-1, line)
  21.                 elseif c == "!" then
  22.             abyss(i-1,line)
  23. --            fill_floor("fl-water", i-1,line, 1,1)
  24.              elseif c == "~" then
  25. --            abyss(i-1,line)
  26.             fill_floor("fl-water", i-1,line, 1,1)
  27.         elseif c=="+" then
  28.                 set_stone( "st-wood", i-1, line)
  29.         elseif c=="L" then
  30.         set_stone("st-oneway", i-1,line, {orientation=enigma.WEST})
  31.         elseif c=="R" then
  32.             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc10"})
  33.         elseif c=="J" then
  34.             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc11"})
  35.         elseif c=="1" then
  36.             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc1"})
  37.         elseif c=="2" then
  38.             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc2"})
  39.         elseif c=="3" then
  40.             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc3"})
  41.         elseif c=="4" then
  42.             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc4"})
  43.         elseif c=="5" then
  44.             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc5"})
  45.         elseif c=="6" then
  46.             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc6"})
  47.         elseif c=="7" then
  48.             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc7"})
  49.         elseif c=="8" then
  50.             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc8"})
  51.         elseif c=="9" then
  52.             set_item("it-trigger", i-1,line, {invisible=1,action="callback", target="funcc9"})
  53.         end
  54.     end    
  55. end
  56.  
  57. -- Floor:  " "
  58. -- Border: "#"
  59. -- Oxyd:   "o"
  60.  
  61. renderLine(00,"####################")
  62. renderLine(01,"#897897897897897897#")
  63. renderLine(02,"#5 4 6 5 4 6 5 4 6 #")
  64. renderLine(03,"#231231231231231231#")
  65. renderLine(04,"# 9 8 7 9 8 7 9 8 7#")
  66. renderLine(05,"#564564564564564564#")
  67. renderLine(06,"#2 1 3 2 1 3 2 1 3 #")
  68. renderLine(07,"#897897897897897897#")
  69. renderLine(08,"# 6 5 4 6 5 4 6 5 4#")
  70. renderLine(09,"#231231231231231231#")
  71. renderLine(10,"#8 7 9 8 7 9 8 7####")
  72. renderLine(11,"#56456456456456RJLz#")
  73. renderLine(12,"####################")
  74.  
  75. function renderLine( line, pattern)
  76.    for i=1, strlen(pattern) do
  77.       local c = strsub( pattern, i, i)
  78.       if c =="#" then
  79.      set_stone( "st-glass", i-1, line)
  80.       elseif c == "o" then
  81.      oxyd( i-1, line)
  82.       end
  83.    end
  84. end
  85.  
  86. renderLine(00,"####o###o##o###o####")
  87. renderLine(01,"#                  #")
  88. renderLine(02,"# # # # # # # # # ##")
  89. renderLine(03,"o                  o")
  90. renderLine(04,"## # # # # # # # # #")
  91. renderLine(05,"o                  o")
  92. renderLine(06,"# # # # # # # # # ##")
  93. renderLine(07,"o                  o")
  94. renderLine(08,"## # # # # # # # # #")
  95. renderLine(09,"o                  o")
  96. renderLine(10,"# # # # # # # # # ##")
  97. renderLine(11,"#                  #")
  98. renderLine(12,"####o###o##o###o####")
  99.  
  100. oxyd_shuffle()
  101.  
  102. fill_floor("fl-abyss",1,1,3,3)
  103.  
  104. direc=0
  105.  
  106. tt=0
  107.  
  108. ax=2
  109. ay=2
  110.  
  111. bx=16
  112. by=11
  113.  
  114. prev=0
  115.  
  116. f1=0
  117. f2=0
  118. f3=0
  119. f4=0
  120. f5=0
  121. f6=0
  122. f7=0
  123. f8=0
  124. f9=0
  125. f10=0
  126. f11=0
  127.  
  128. cur=4
  129.  
  130. function funcc1()
  131.    if f1==0 then
  132.       cur=1
  133.       f1=1
  134.       dcheck()
  135.    else
  136.       f1=0
  137.    end
  138. end
  139.  
  140. function funcc2()
  141.    if f2==0 then
  142.       cur=2
  143.       f2=1
  144.       dcheck()
  145.    else
  146.       f2=0
  147.    end
  148. end
  149.  
  150. function funcc3()
  151.    if f3==0 then
  152.       cur=3
  153.       f3=1
  154.       dcheck()
  155.    else
  156.       f3=0
  157.    end
  158. end
  159.  
  160. function funcc4()
  161.    if f4==0 then
  162.       cur=4
  163.       f4=1
  164.       dcheck()
  165.    else
  166.       f4=0
  167.    end
  168. end
  169.  
  170. function funcc5()
  171.    if f5==0 then
  172.       cur=5
  173.       f5=1
  174.       dcheck()
  175.    else
  176.       f5=0
  177.    end
  178. end
  179.  
  180. function funcc6()
  181.    if f6==0 then
  182.       cur=6
  183.       f6=1
  184.       dcheck()
  185.    else
  186.       f6=0
  187.    end
  188. end
  189.  
  190. function funcc7()
  191.    if f7==0 then
  192.       cur=7
  193.       f7=1
  194.       dcheck()
  195.    else
  196.       f7=0
  197.    end
  198. end
  199.  
  200. function funcc8()
  201.    if f8==0 then
  202.       cur=8
  203.       f8=1
  204.       dcheck()
  205.    else
  206.       f8=0
  207.    end
  208. end
  209.  
  210. function funcc9()
  211.    if f9==0 then
  212.       cur=9
  213.       f9=1
  214.       dcheck()
  215.    else
  216.       f9=0
  217.    end
  218. end
  219.  
  220. function funcc10()
  221.    if f10==0 then
  222.       bx=15
  223.       by=11
  224.       cur=4
  225.       f10=1
  226.       if prev==6 then
  227.      bx=14
  228.      by=11
  229.      dcheck()
  230.       end
  231.       if prev==7 then
  232.      bx=15
  233.      by=10
  234.      dcheck()
  235.       end
  236.    else
  237.       f10=0
  238.    end
  239. end
  240.  
  241.  
  242. function funcc11()
  243.    if f11==0 then
  244.       cur=5
  245.       prev=4
  246.    else
  247.       f11=1
  248.    end
  249. end
  250.  
  251. function dcheck()
  252. tt=1
  253. if cur==2 and prev==1 then
  254. direc=2
  255. elseif cur==3 and prev==2 then
  256. direc=2
  257. elseif cur==1 and prev==3 then
  258. direc=2
  259. elseif cur==5 and prev==4 then
  260. direc=2
  261. elseif cur==6 and prev==5 then
  262. direc=2
  263. elseif cur==4 and prev==6 then
  264. direc=2
  265. elseif cur==8 and prev==7 then
  266. direc=2
  267. elseif cur==9 and prev==8 then
  268. direc=2
  269. elseif cur==7 and prev==9 then
  270. direc=2
  271.  
  272. elseif cur==1 and prev==2 then
  273. direc=4
  274. elseif cur==2 and prev==3 then
  275. direc=4
  276. elseif cur==3 and prev==1 then
  277. direc=4
  278. elseif cur==4 and prev==5 then
  279. direc=4
  280. elseif cur==5 and prev==6 then
  281. direc=4
  282. elseif cur==6 and prev==4 then
  283. direc=4
  284. elseif cur==7 and prev==8 then
  285. direc=4
  286. elseif cur==8 and prev==9 then
  287. direc=4
  288. elseif cur==9 and prev==7 then
  289. direc=4
  290.  
  291. elseif cur==4 and prev==1 then
  292. direc=1
  293. elseif cur==5 and prev==2 then
  294. direc=1
  295. elseif cur==6 and prev==3 then
  296. direc=1
  297. elseif cur==7 and prev==4 then
  298. direc=1
  299. elseif cur==8 and prev==5 then
  300. direc=1
  301. elseif cur==9 and prev==6 then
  302. direc=1
  303. elseif cur==1 and prev==7 then
  304. direc=1
  305. elseif cur==2 and prev==8 then
  306. direc=1
  307. elseif cur==3 and prev==9 then
  308. direc=1
  309.  
  310. elseif cur==1 and prev==4 then
  311. direc=3
  312. elseif cur==2 and prev==5 then
  313. direc=3
  314. elseif cur==3 and prev==6 then
  315. direc=3
  316. elseif cur==4 and prev==7 then
  317. direc=3
  318. elseif cur==5 and prev==8 then
  319. direc=3
  320. elseif cur==6 and prev==9 then
  321. direc=3
  322. elseif cur==7 and prev==1 then
  323. direc=3
  324. elseif cur==8 and prev==2 then
  325. direc=3
  326. elseif cur==9 and prev==3 then
  327. direc=3
  328. end
  329.  
  330.    if direc==1 then
  331.       by=by-1
  332.    elseif direc==2 then
  333.       bx=bx+1
  334.    elseif direc==3 then
  335.       by=by+1
  336.    elseif direc==4 then
  337.       bx=bx-1
  338.    end
  339.  
  340. prev=cur
  341. end
  342.  
  343. function timer_callback()
  344.    xdist=(((ax-bx)^2)^(1/2))
  345.    ydist=(((ay-by)^2)^(1/2))
  346.    if xdist>ydist and (ax-bx)<0 then
  347.       direc2=2
  348.    elseif xdist>ydist and (ax-bx)>0 then
  349.       direc2=4
  350.    elseif ydist>xdist and (ay-by)<0 then
  351.       direc2=3
  352.    elseif ydist>xdist and (ay-by)>0 then
  353.       direc2=1
  354.    elseif xdist==ydist then
  355.       direc2=random(2)
  356.       if (ax-bx)>0 then
  357.      if (ay-by)>0 then
  358.         if direc2==1 then
  359.            direc2=1
  360.         elseif direc2==2 then
  361.            direc2=4
  362.         end
  363.      elseif (ay-by)<0 then
  364.         if direc2==1 then
  365.            direc2=3
  366.         elseif direc2==2 then
  367.            direc2=4
  368.         end
  369.      end
  370.       elseif (ax-bx)<0 then
  371.      if (ay-by)>0 then
  372.         if direc2==1 then
  373.            direc2=1
  374.         elseif direc2==2 then
  375.            direc2=2
  376.         end
  377.      elseif (ay-by)<0 then
  378.         if direc2==1 then
  379.            direc2=2
  380.         elseif direc2==2 then
  381.            direc2=3
  382.         end
  383.      end
  384.       end           
  385.    end
  386.    if direc2==1 then
  387.       ay=ay-1
  388.    elseif direc2==2 then
  389.       ax=ax+1
  390.    elseif direc2==3 then
  391.       ay=ay+1
  392.    elseif direc2==4 then
  393.       ax=ax-1
  394.    end
  395. set_floor("fl-abyss", (ax-1), (ay-1))
  396. set_floor("fl-abyss", (ax-1), (ay))
  397. set_floor("fl-abyss", (ax-1), (ay+1))
  398. set_floor("fl-abyss", (ax), (ay-1))
  399. set_floor("fl-abyss", (ax), (ay))
  400. set_floor("fl-abyss", (ax), (ay+1))
  401. set_floor("fl-abyss", (ax+1), (ay-1))
  402. set_floor("fl-abyss", (ax+1), (ay))
  403. set_floor("fl-abyss", (ax+1), (ay+1))
  404.  
  405. if direc2==4 then
  406. set_floor("fl-leaves", (ax+2), (ay+1))
  407. set_floor("fl-leaves", (ax+2), (ay))
  408. set_floor("fl-leaves", (ax+2), (ay-1))
  409. end
  410.  
  411. if direc2==2 then
  412. set_floor("fl-leaves", (ax-2), (ay+1))
  413. set_floor("fl-leaves", (ax-2), (ay))
  414. set_floor("fl-leaves", (ax-2), (ay-1))
  415. end
  416.  
  417. if direc2==1 then
  418. set_floor("fl-leaves", (ax-1), (ay+2))
  419. set_floor("fl-leaves", (ax), (ay+2))
  420. set_floor("fl-leaves", (ax+1), (ay+2))
  421. end
  422.  
  423. if direc2==3 then
  424. set_floor("fl-leaves", (ax-1), (ay-2))
  425. set_floor("fl-leaves", (ax), (ay-2))
  426. set_floor("fl-leaves", (ax+1), (ay-2))
  427. end
  428. end
  429.  
  430.  
  431. set_stone("st-timer", 21,0, {loop=1, action="callback", target="timer_callback", interval=.35})