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
lua:scripting:firetemple [2015/01/01 09:50] – vodurlua:scripting:firetemple [2026/10/13 19:19] (current) – removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-Build 5x5 grid. 
-<code lua> 
-do 
  
-local cols=5 
-local rows=5 
-local basevnum=501 
- 
-local function getvnum( col, row) 
-    return basevnum-1 + (row-1)*cols + col 
-end 
- 
-local function setexflag( dir, flg) 
-    if not(mob.room[dir]:flag(flg)) then 
-        olc(dir.." "..flg) 
-    end 
-end 
- 
-for col=1,cols do 
-    for row=1,rows do 
-        mdo("redit create "..getvnum(col,row) ) 
-    end 
-end 
- 
-for col=1,cols do 
-    for row=1,rows do 
-        local vnum=getvnum(col,row) 
-        mdo("goto "..vnum) 
-        if not(row==1) then -- do north stuff 
-            olc("north dig "..getvnum(col,row-1)) 
-            setexflag( "north", "door") 
-            setexflag( "north", "dormant") 
-        end 
-        if not(row==rows) then -- do south stuff 
-            olc("south dig "..getvnum(col,row+1)) 
-            setexflag( "south", "door") 
-            setexflag( "south", "dormant") 
-        end 
-        if not(col==1) then -- do west stuff 
-            olc("west dig "..getvnum(col-1,row)) 
-            setexflag( "west", "door") 
-            setexflag( "west", "dormant") 
-        end 
-        if not(col==cols) then -- do east stuff 
-            olc("east dig "..getvnum(col+1,row)) 
-            setexflag( "east", "door") 
-            setexflag( "east", "dormant") 
-        end 
-    end 
-end 
- 
-end 
-</code> 
- 
-Print map 
-<code lua> 
-do 
- 
-local cols=5 
-local rows=5 
-local basevnum=501 
- 
-local function getvnum( col, row) 
-    return basevnum-1 + (row-1)*cols + col 
-end 
- 
-local function setexflag( dir, flg) 
-    if not(mob.room[dir]:flag(flg)) then 
-        olc(dir.." "..flg) 
-    end 
-end 
- 
-local out={} 
- 
-for row=1,rows do 
-    local second={} 
-    for col=1,cols do 
-        table.insert(out, "#") 
-        local room=getroom(getvnum(col,row)) 
-         
-        if room.east then 
-            table.insert(out, room.east:flag("dormant") and " " or "-") 
-        end 
-         
-        if room.south then 
-            table.insert(second, room.south:flag("dormant") and " " or  "| ") 
-        end 
-    end 
-    table.insert(out,"\n\r"..table.concat(second).."\n\r") 
-end 
- 
-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 
-</code>