-- Smutty Smurf 2003
-- ESPRIT #024
-- problem: how can you change the magnet strength?

levelw = 20
levelh = 13
create_world(levelw, levelh)
oxyd_default_flavor = "b"
set_actor("ac-blackball", 10,6.5, {player=0})
fill_floor( "fl-red", 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-blue-sand", i-1,line)
      elseif c=="M" then
         set_item("it-magnet",i-1,line,{name="magnet", on=1})
      elseif c=="D" then                                                                
         set_stone("st-death", i-1,  line)
      elseif c=="1" then                                                                
         set_stone("st-switch",i-1,line, {action="callback", target="s1",on=1})
	 set_item("it-magnet",i-1,line-12,{name="magnet1", on=1})
      elseif c=="2" then                                                                
         set_stone("st-switch",i-1,line, {action="callback", target="s2",on=1})    
         set_item("it-magnet",i-1,line-12,{name="magnet2", on=1})
      elseif c=="3" then                                                                
         set_stone("st-switch",i-1,line, {action="callback", target="s3",on=1})
         set_item("it-magnet",i-1,line-12,{name="magnet3", on=1})
      elseif c=="4" then                                                                
         set_stone("st-switch",i-1,line, {action="callback", target="s4",on=1})
         set_item("it-magnet",i-1,line-12,{name="magnet4", on=1})
      elseif c=="5" then                                                                
         set_stone("st-switch",i-1,line, {action="callback", target="s5",on=1})
         set_item("it-magnet",i-1,line-12,{name="magnet5", on=1})
      elseif c=="6" then                                                                
         set_stone("st-switch",i-1,line, {action="callback", target="s6",on=1})
         set_item("it-magnet",i-1,line-12,{name="magnet6", on=1})
      elseif c=="7" then                                                                
         set_stone("st-switch",i-1,line, {action="callback", target="s7",on=1})
         set_item("it-magnet",i-1,line-12,{name="magnet7", on=1})
      elseif c=="8" then                                                                
         set_stone("st-switch",i-1,line, {action="callback", target="s8",on=1})
         set_item("it-magnet",i-1,line-12,{name="magnet8", on=1})
      elseif c=="9" then                                                                
         set_stone("st-switch",i-1,line, {action="callback", target="s9",on=1})
         set_item("it-magnet",i-1,line-12,{name="magnet9", on=1})
      elseif c=="F" then                                                                
         fakeoxyd( i-1,  line)
      elseif c=="O" then
	 oxyd(i-1,line)
        end
    end  
end
--               01234567890123456789
renderLine(00 , "#DDDDDDDDDDDDDDDDDD#")
renderLine(01 , "#        M         #")
renderLine(02 , "#                  #")
renderLine(03 , "#                  #")
renderLine(04 , "#                  #")  
renderLine(05 , "#                  #")
renderLine(06 , "#                  #")
renderLine(07 , "#                  #")
renderLine(08 , "#                  #")
renderLine(09 , "#                  #")
renderLine(10 , "#                  #")
renderLine(11 , "#                  #")
renderLine(12 , "#1O2O3O4O5O6O7O8O9F#")
--               01234567890123456789

local num = {1,1,1,1,1,1,1,1,1}
power = 27

function s1() sx(1) end
function s2() sx(2) end
function s3() sx(3) end
function s4() sx(4) end
function s5() sx(5) end
function s6() sx(6) end
function s7() sx(7) end
function s8() sx(8) end
function s9() sx(9) end

function sx(x)
%num[x] = 1-%num[x]
power = 3*(%num[1] + %num[2] + %num[3] + %num[4] + %num[5] + %num[6] + %num[7] + %num[8] + %num[9])
if %num[x] == 0 then
	enigma.SendMessage(enigma.GetNamedObject("magnet"..x), "off", nil)
      else
        enigma.SendMessage(enigma.GetNamedObject("magnet"..x), "on", nil)
      end
if power == 0 then 
	enigma.SendMessage(enigma.GetNamedObject("magnet"), "off", nil)	
      else
	enigma.SendMessage(enigma.GetNamedObject("magnet"), "on", nil)
      end
enigma.SendMessage(enigma.GetNamedObject("magnet"), "strength", power)   -- does this work?
end

oxyd_shuffle()
