home *** CD-ROM | disk | FTP | other *** search
/ GameStar Special 2004 August / GSSH0804.iso / Geschicklichkeit / Enigma / Enigma-081.exe / data / levels / ant18.lua < prev    next >
Text File  |  2003-02-21  |  2KB  |  83 lines

  1. -- Ingrowing -- the Enigma Level
  2. -- (c) 2003 Petr Machata/ant_39
  3. -- Licensed under GPL v2.0 or above
  4. -- 2003-01-13
  5.  
  6. dofile(enigma.FindDataFile("levels/ant.lua"))
  7.  
  8. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  9.  
  10. blockmap={
  11.    "~+~",
  12.    "+0+",
  13.    "~+~",
  14. }
  15.  
  16. blocksx = 9
  17. blocksy = 5
  18. blockw, blockh = get_map_size(blockmap)
  19.  
  20. sahara=     cell{floor="fl-sahara"}
  21. tigris=     cell{floor="fl-tigris"}
  22. metal=      cell{floor="fl-metal"}
  23. solidfloor= cell{{{checkerfloor,{sahara,tigris; sidex=blockw, sidey=blockh, offset=1}}}}
  24. borderstone=cell{{{randomfloor,{cell{stone={face="st-rock2"}},cell{stone={face="st-rock5"}},0.15}}}}
  25. marble=     cell{actor={"ac-blackball", {player=0}}}
  26.  
  27. oxydstones = {n=0}
  28.  
  29. cells={}
  30. cells["~"]=abyss
  31. cells["0"]=cell{{{solidfloor},{oxyd}}}
  32. cells[" "]=solidfloor
  33.  
  34. function place_new_oxyd_stone(count)
  35.    count = count or 1
  36.  
  37.    for _=1,count do
  38.       --pick place for new oxyd
  39.       local mox,moy,ox,oy = 0
  40.       local key = ""
  41.       local num = oxydstones.n+1
  42.  
  43.       if num>14 then
  44.      return
  45.       end
  46.  
  47.       repeat
  48.      mox, moy=random(0,blocksx-1),random(0,blocksy-1)
  49.      key = getkey(mox, moy)
  50.      ox, oy=mox*blockw+1, moy*blockh+1
  51.       until (not(oxydstones[key]))and(((mod(mox,2)==0)and(mod(moy,2)==0)))
  52.  
  53.       --well, place found. Now construct triggering function
  54.       local funcn = "trigger_"..num
  55.       func0 = "function() "..
  56.           "  if (oxydstones[\""..key.."\"] == 0) then "..
  57.           "    oxydstones[\""..key.."\"] = 1 "..
  58.           "    place_new_oxyd_stone(2) "..
  59.           "  end "..
  60.           "end "
  61.  
  62.       dostring(funcn.." = "..func0)
  63.  
  64.       --add oxyd and triggers
  65.       cells["+"]=%cell{parent=metal,item={face="it-trigger",attr={action="callback", target=funcn, invisible=1}}}
  66.       draw_map(ox, oy, blockmap)
  67.  
  68.       oxydstones[key] = 0
  69.       oxydstones.n = oxydstones.n+1
  70.    end
  71. end
  72.  
  73. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  74.  
  75. create_world(blocksx*blockw+2, blocksy*blockh+2)
  76. fill_world_func(solidfloor)
  77. draw_border_func(borderstone)
  78. marble(blockw+1,1)
  79.  
  80. place_new_oxyd_stone(1)
  81. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  82. display.SetFollowMode(display.FOLLOW_SCROLLING)
  83.