-- Smutty Smurf 2003
-- a little bit like ESPRIT #026, much more difficult


levelw = 39
levelh = 13
create_world(levelw, levelh)
oxyd_default_flavor = "b"
set_actor("ac-blackball", 8.5,6.5, {player=0})

fill_floor("fl-bumps",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-fakeoxyd", i-1,line)
      elseif c =="a" then
         set_stone("st-door_c", i-1,line,{name="doora"})      
      elseif c =="b" then
         set_stone("st-door_c", i-1,line,{name="doorb"})         
      elseif c =="c" then
         set_stone("st-door_c", i-1,line,{name="doorc"})             
      elseif c=="D" then
	 set_stone("st-death", i-1,line)    
      elseif c=="." then
	 set_item("it-seed", i-1,line) 	      
      elseif c=="1" then
         set_stone("st-coinslot", i-1,line, {action="callback", target="s1"})   	
      elseif c=="2" then
         set_stone("st-coinslot", i-1,line, {action="callback", target="s2"})   	
      elseif c=="3" then
         set_stone("st-coinslot", i-1,line, {action="callback", target="s3"})   	
      elseif c=="4" then
         set_stone("st-coinslot", i-1,line, {action="callback", target="s4"})   	
      elseif c=="5" then
         set_stone("st-coinslot", i-1,line, {action="callback", target="s5"})     
      elseif c=="6" then
         set_stone("st-coinslot", i-1,line, {action="callback", target="s6"})
      elseif c=="7" then
         set_stone("st-coinslot", i-1,line, {action="callback", target="s7"})     
      elseif c=="8" then
         set_stone("st-coinslot", i-1,line, {action="callback", target="s8"})      
      elseif c=="G" then
         set_stone("st-glass1", i-1,line)     
      elseif c=="S" then
         set_stone("st-switch_black", i-1,line, {action="callback", target="money"})              
      elseif c=="O" then                                                               
	 oxyd(i-1,line)         
        end
    end  
end
--               012345678901234567890123456789012345678
renderLine(00 , "#######################################")
renderLine(01 , "#                GS#                  #")
renderLine(02 , "#    1.2 3 4       #                  #")
renderLine(03 , "#                  #                  #")
renderLine(04 , "#                  #                  #")  
renderLine(05 , "#                  a   D              #")
renderLine(06 , "# O                b   D            O #")
renderLine(07 , "#                  c   D              #")
renderLine(08 , "#                  #                  #")
renderLine(09 , "#                  #                  #")
renderLine(10 , "#    5 6 7 8       #                  #")
renderLine(11 , "#                  #                  #")
renderLine(12 , "#######################################") 
--               012345678901234567890123456789012345678

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

local flag = {0,0,0,0,0,0,0,0}

function s(num)
%flag[num] = 1-%flag[num]
if (%flag[1]+%flag[2]+%flag[3]+%flag[4]+%flag[5]+%flag[6]+%flag[7]+%flag[8]==8) then     -- open, if all inserted  
   enigma.SendMessage(enigma.GetNamedObject("doora"), "open", nil) 
   enigma.SendMessage(enigma.GetNamedObject("doorb"), "open", nil)
   enigma.SendMessage(enigma.GetNamedObject("doorc"), "open", nil)   
elseif (%flag[1]+%flag[2]+%flag[3]+%flag[4]+%flag[5]+%flag[6]+%flag[7]+%flag[8]==0) then -- close, if money is out
   enigma.SendMessage(enigma.GetNamedObject("doora"), "close", nil) 
   enigma.SendMessage(enigma.GetNamedObject("doorb"), "close", nil)
   enigma.SendMessage(enigma.GetNamedObject("doorc"), "close", nil) 
  end
end

j = 0

function money()
j = j+1
if (j <= 8) then
   set_item("it-coin",16, 1,{value=2})
  else 
   document(16,1,"Sorry for inconvenience, the Bank-O-Mat is empty.")
  end
end




