Files
integration/luprex/core/lua/player.lua

56 lines
1.6 KiB
Lua
Raw Normal View History

2022-03-16 15:47:46 -04:00
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