I've attached a fixed version of "Kaleidoscope" -- now the starting
square will never be space initially.  Adding a st-black<number> could
make it too easy, and asymmetrical.

Jacob


@Andreas: please note the new score version. You should probably rerate.
> Also, another level that can be impossible to complete is Kaleidoscope
> (Enigma 2, #22), if the floor beneath you at the start turns out to be
> space.
Your job ;-)

Do simply disallow fl-space on the startposition?
Maybe together with a st-black to give you a chance when the top is near?


-- Raoul


_______________________________________________
Enigma-devel mailing list
Enigma-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/enigma-devel

<?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="Kaleidoscope" el:subtitle="" el:id="duffy118"/>
      <el:version el:score="1" el:release="1" el:revision="0" 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=1
rooms_high=1

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

create_world( levelw, levelh)

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 =="X" then
            set_stone( "st-death", i-1, line)
        elseif c == "o" then
            oxyd( i-1, line)
        elseif c == "*" then
            set_stone( "st-brownie", 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-.5,line+.5, {player=0})
        elseif c=="y" then
           set_actor("ac-whiteball", i-1,line+.5, {player=1})
        elseif c=="S" then
           set_actor("ac-top", i-.5,line+.5, {range=100,force=5,player=1})
        elseif c == "g" then
            draw_stones("st-grate1",{i-1,line}, {1,1}, 1)
        elseif c=="+" then
            set_stone( "st-wood", i-1, line)
        elseif c=="=" then
           set_floor("fl-space",i-1,line)
        elseif c=="T" then
           set_stone("st-timer",i-1,line,{interval=1,loop=1,action="callback",target="funcctimer"})
        end
         end    
      end

renderLine(00,"XXXXXXXXXXXXXXXXXXXXT")
renderLine(01,"X     o      o     X ")
renderLine(02,"X o      XX      o X ")
renderLine(03,"X                  X ")
renderLine(04,"X   X  o    o  X   X ")
renderLine(05,"X                  X ")
renderLine(06,"XoX  S        z  XoX ")
renderLine(07,"X                  X ")
renderLine(08,"X   X  o    o  X   X ")
renderLine(09,"X                  X ")
renderLine(10,"X o      XX      o X ")
renderLine(11,"X     o      o     X ")
renderLine(12,"XXXXXXXXXXXXXXXXXXXX ")

oxyd_shuffle()

starting=1


sandp=3
bluegreenp=6
spacep=12
inversep=18
leavesp=21
woodp=25
tigrisp=27
ice_001p=31
metalp=34
normalp=37
bumpsp=40
marblep=42
saharap=44
inverse2p=48
concretep=50
rough_redp=53
rough_bluep=56
swampp=60
rockp=63
gravelp=66
lightp=69
redp=72
roughp=75
hayp=78
plankp=82
grayp=85
brickp=89
dunesp=92
springboardp=93
himalayap=95
mortarp=97
blackp=98
whitep=99
floor_001p=100
bluegrayp=103
wovenp=104
lightgrayp=105
darkgrayp=106
stonep=108

fftimer=0
skiprandom=0

function funcctimer()
tryagain=0
if fftimer==0 then
skiprandom=1
fftimer=1
else
skiprandom=0
end
    for i=0,levelw do
       for j=0,levelh do
if skiprandom==0 then
         changefloor=random(8)
      else
changefloor=1
end
change(i,j)
end
end
starting=0
end

function change(i,j)
      if changefloor==1 then
         donefloor=0
if starting==1 and i==14 and j==6 then
floornum=random(102)-1
	 if floornum>5 then
	 floornum=floornum+6
end
else
floornum=random(108)-1
end
         if floornum<sandp and donefloor==0 then
            set_floor("fl-sand",i,j)
            donefloor=1
         end
         if floornum<bluegreenp and donefloor==0 then
            set_floor("fl-bluegreen",i,j)
            donefloor=1
         end
         if floornum<spacep and donefloor==0 then
               set_floor("fl-space",i,j)
               donefloor=1
         end
         if floornum<inversep and donefloor==0 then
            set_floor("fl-inverse",i,j)
            donefloor=1
         end
         if floornum<leavesp and donefloor==0 then
            set_floor("fl-leaves",i,j)
            donefloor=1
         end
         if floornum<woodp and donefloor==0 then
            set_floor("fl-wood",i,j)
            donefloor=1
         end
         if floornum<tigrisp and donefloor==0 then
            set_floor("fl-tigris",i,j)
            donefloor=1
         end
         if floornum<ice_001p and donefloor==0 then
            set_floor("fl-ice",i,j)
            donefloor=1
         end
         if floornum<metalp and donefloor==0 then
            set_floor("fl-metal",i,j)
            donefloor=1
         end
         if floornum<normalp and donefloor==0 then
            set_floor("fl-normal",i,j)
            donefloor=1
         end
         if floornum<bumpsp and donefloor==0 then
            set_floor("fl-bumps",i,j)
            donefloor=1
         end
         if floornum<marblep and donefloor==0 then
            set_floor("fl-marble",i,j)
            donefloor=1
         end


         if floornum<saharap and donefloor==0 then
            set_floor("fl-sahara",i,j)
            donefloor=1
         end

         if floornum<inverse2p and donefloor==0 then
            set_floor("fl-inverse2",i,j)
            donefloor=1
         end


         if floornum<concretep and donefloor==0 then
            set_floor("fl-concrete",i,j)
            donefloor=1
         end


         if floornum<rough_redp and donefloor==0 then
            set_floor("fl-rough-red",i,j)
            donefloor=1
         end


         if floornum<rough_bluep and donefloor==0 then
            set_floor("fl-rough-blue",i,j)
            donefloor=1
         end

         if floornum<swampp and donefloor==0 then
            set_floor("fl-swamp",i,j)
            donefloor=1
         end

         if floornum<rockp and donefloor==0 then
            set_floor("fl-rock",i,j)
            donefloor=1
         end

         if floornum<gravelp and donefloor==0 then
            set_floor("fl-gravel",i,j)
            donefloor=1
         end

         if floornum<lightp and donefloor==0 then
            set_floor("fl-light",i,j)
            donefloor=1
         end

         if floornum<redp and donefloor==0 then
            set_floor("fl-red",i,j)
            donefloor=1
         end

         if floornum<roughp and donefloor==0 then
            set_floor("fl-rough",i,j)
            donefloor=1
         end

         if floornum<hayp and donefloor==0 then
            set_floor("fl-hay",i,j)
            donefloor=1
         end

         if floornum<plankp and donefloor==0 then
            set_floor("fl-plank",i,j)
            donefloor=1
         end

         if floornum<grayp and donefloor==0 then
            set_floor("fl-gray",i,j)
            donefloor=1
         end

         if floornum<brickp and donefloor==0 then
            set_floor("fl-brick",i,j)
            donefloor=1
         end

         if floornum<dunesp and donefloor==0 then
            set_floor("fl-dunes",i,j)
            donefloor=1
         end

         if floornum<springboardp and donefloor==0 then
            set_floor("fl-springboard",i,j)
            donefloor=1
         end

         if floornum<himalayap and donefloor==0 then
            set_floor("fl-himalaya",i,j)
            donefloor=1
         end

         if floornum<mortarp and donefloor==0 then
            set_floor("fl-mortar",i,j)
            donefloor=1
         end

         if floornum<blackp and donefloor==0 then
            set_floor("fl-black",i,j)
            donefloor=1
         end

         if floornum<whitep and donefloor==0 then
            set_floor("fl-white",i,j)
            donefloor=1
         end

         if floornum<floor_001p and donefloor==0 then
            set_floor("fl-floor_001",i,j)
            donefloor=1
         end

         if floornum<bluegrayp and donefloor==0 then
            set_floor("fl-bluegray",i,j)
            donefloor=1
         end

         if floornum<wovenp and donefloor==0 then
            set_floor("fl-woven",i,j)
            donefloor=1
         end

         if floornum<lightgrayp and donefloor==0 then
            set_floor("fl-lightgray",i,j)
            donefloor=1
         end

         if floornum<darkgrayp and donefloor==0 then
            set_floor("fl-darkgray",i,j)
            donefloor=1
         end

         if floornum<stonep and donefloor==0 then
            set_floor("fl-stone",i,j)
            donefloor=1
         end

-- saharap=44
-- inverse2p=48
-- concretep=50
-- rough-redp=53
-- rough-bluep=56
-- swampp=60
-- rockp=63
-- gravelp=66
-- lightp=69
-- redp=72
-- roughp=75
-- hayp=78
-- plankp=82
-- grayp=85
-- brickp=89
-- dunesp=92
-- springboardp=94

      end
end

funcctimer()

    ]]></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

Reply via email to