56 lines
1.6 KiB
Lua
56 lines
1.6 KiB
Lua
makeclass('player')
|
|
makeclass('buff')
|
|
|
|
function player.interface(actor,place)
|
|
gui.menu_item("cb_north","Go North")
|
|
gui.menu_item("cb_south","Go South")
|
|
gui.menu_item("cb_west" ,"Go West")
|
|
gui.menu_item("cb_east" ,"Go East")
|
|
gui.menu_item("cb_emit" ,"Emit Buff")
|
|
gui.menu_item("cb_map" ,"Where Am I?")
|
|
end
|
|
|
|
function player.cb_where(actor,place)
|
|
pprint(tangible.xyz(actor))
|
|
end
|
|
|
|
function player.cb_north(actor,place) tangible.animate(actor,{action="walk",dy= 1}) end
|
|
function player.cb_south(actor,place) tangible.animate(actor,{action="walk",dy=-1}) end
|
|
function player.cb_west (actor,place) tangible.animate(actor,{action="walk",dx=-1}) end
|
|
function player.cb_east (actor,place) tangible.animate(actor,{action="walk",dx= 1}) end
|
|
|
|
function player.cb_emit(actor,place)
|
|
tangible.build{class='buff',x=0,y=0,z=0,plane='main',graphic='Ring'}
|
|
end
|
|
|
|
function seq(a,b,c) return a<=b and b<=c or false end
|
|
|
|
function player.cb_map(actor,place)
|
|
local rad=2
|
|
local map={}
|
|
local lis=tangible.near(actor,rad,true,false)
|
|
local ax,ay=tangible.xyz(actor)
|
|
for _,t in ipairs(lis) do
|
|
local x,y=tangible.xyz(t)
|
|
local dx=ax-x
|
|
local dy=ay-y
|
|
local class=tangible.getclass(t)
|
|
if seq(-rad,dx,rad) and seq(-rad,dy,rad) then
|
|
local offset=(dy+rad)*(rad*2+1)+dx+rad
|
|
if not map[offset] then map[offset]={} end
|
|
if class=='buff' then map[offset].buff=true
|
|
elseif class=='player' then map[offset].player=true
|
|
end
|
|
end
|
|
end
|
|
for dy=-rad,rad do for line=1,3 do
|
|
local str=""
|
|
for dx=-rad,rad do
|
|
local offset=(dy+rad)*(rad*2+1)+dx+rad
|
|
str=str.."---"
|
|
end
|
|
print(str)
|
|
end end
|
|
end
|
|
|