User Tools

Site Tools


lua:scripting:firetemple

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
lua:scripting:firetemple [2015/01/01 09:10] vodurlua:scripting:firetemple [2015/01/01 09:50] (current) vodur
Line 91: Line 91:
  
 sendtochar(mob, table.concat(out)) sendtochar(mob, table.concat(out))
 +
 +end
 +</code>
 +
 +Generate maze
 +<code lua>
 +do
 +
 +local function revdir( dir )
 +    if dir == "north" then return "south"
 +    elseif dir == "south" then return "north"
 +    elseif dir == "east" then return "west"
 +    elseif dir == "west" then return "east"
 +    end
 +end
 +
 +--Randomized Prim's algorithm http://en.wikipedia.org/wiki/Maze_generation_algorithm
 +local walls={}
 +local maze={}
 +
 +for k,v in pairs(getroom(501).exits) do
 +    table.insert(walls, { dir=v, exit=getroom(501)[v]} )
 +end
 +
 +while #walls>0 do
 +    local wallind=randnum(1,#walls)
 +    local wall=walls[wallind]
 +    table.remove(walls, wallind)
 +    
 +    if not maze[wall.exit.toroom] then
 +        wall.exit:setflag("dormant", false)
 +        wall.exit:setflag("door", false)
 +        wall.exit.toroom[revdir(wall.dir)]:setflag("dormant", false)
 +        wall.exit.toroom[revdir(wall.dir)]:setflag("door", false)
 +        maze[wall.exit.toroom]=true
 +        for k,v in pairs(wall.exit.toroom.exits) do
 +            table.insert(walls, { dir=v, exit=wall.exit.toroom[v]} )
 +        end
 +    end
 +    
 +    
 +                   
 +end
 +
  
 end end
 </code> </code>
lua/scripting/firetemple.1420103406.txt.gz · Last modified: 2015/01/01 09:10 by vodur