From 18c133ca9d1c314eb0e82eca384f00003670ad01 Mon Sep 17 00:00:00 2001 From: "teppy@egenesis.com" Date: Wed, 16 Mar 2022 15:47:46 -0400 Subject: [PATCH] changes --- luprex/core/lua/horps.lua | 32 ++++++++++++---------- luprex/core/lua/login.lua | 3 +++ luprex/core/lua/player.lua | 55 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 14 deletions(-) diff --git a/luprex/core/lua/horps.lua b/luprex/core/lua/horps.lua index ca4274e3..2254a6ad 100644 --- a/luprex/core/lua/horps.lua +++ b/luprex/core/lua/horps.lua @@ -29,13 +29,14 @@ function player.interface(actor, place) gui.menu_item("cb_dropscissor" ,"Drop Scissor") end + function player:cb_conjurerock() self.Count['r']=self.Count['r']+1 end function player:cb_conjurepaper() self.Count['p']=self.Count['p']+1 end function player:cb_conjurescissor() self.Count['s']=self.Count['s']+1 end function army.interface(actor,place) if place.owner==actor then gui_menu_item("cb_recruit","Recruit"); - else gui.menu_item("cb_capture","Capture"); + else gui.menu_item("cb_fight" ,"Fight"); end end -- Rock dulls Scissors 3 @@ -52,9 +53,9 @@ armytypes={'r','p','s'} armynames={r="Rock Golem",p="Paper Dragon",s="Scissor Beast",l="Fire Lizzard",v="Mr. Spock"} --advantage={ r={ r=1, p=1/2, s=3, l=2, v=1/3 }, -- p={ r=2, p=1, s=1/2, l=1/3, v=3 }, --- s={ r=1/3, p=2, s=1, l=3, v=1/2 }, --- l={ r=1/2, p=3, s=1/3, l=1, v=2 }, --- v={ r=3, p=1/3, s=2, l=1/2, v=1 } } +-- s={ r=1/3, p=2, s=1, l=3, v=1/2 }, +-- l={ r=1/2, p=3, s=1/3, l=1, v=2 }, +-- v={ r=3, p=1/3, s=2, l=1/2, v=1 } } advantage={ r={ r=1, p=1/2, s=2 }, p={ r=2, p=1, s=1/2 }, s={ r=1/2, p=2, s=1 } } @@ -84,20 +85,24 @@ function army.fight0(ak,ac,dk,dc) -- returns number of attacker casualties, defe function army.cb_fight(actor,place,dialog) for ak,ac in pairs(actor.Count) do -- Should randomize the order - local enemy + local enemyk, enemyc local acas local maxcas=-1 + local Loss0,Loss1 + local whichdk, whichdc for dk,dc in pairs(place.Count) do local rem0,rem1=army.fight0(ak,ac,dk,dc) - local Loss0=ac-rem0 - local Loss1=dk-rem1 + Loss0=ac-rem0 + Loss1=dc-rem1 + print("When "..ac.." "..ak.." fight "..dc.." "..dk.." they kill "..Loss1.." and suffer "..Loss0) if Loss1>maxcas then - enemy=dk + enemyk=dk + enemyc=dc maxcas=Loss1 acas=Loss1 end end - if enemy then - print("Army "..ak.." kills "..maxcas.." "..dk.." and suffers "..Loss0) + if enemyk then + print("Army of "..ac.." "..ak.." fights "..enemyc.." "..enemyk..", killing "..Loss1.." and suffering "..Loss0) end end end @@ -188,14 +193,13 @@ function player.cb_map(actor,place,dialog) local lis=tangible.near(actor,rad,true,false) pprint("cb_map ",lis) for _,t in pairs(lis) do + if t~=actor then print(tangible.getclass(t)) end local graphic,plane,x,y,z,facing = tangible.animstate(t) local c=tangible.getclass(t) local dx,dy=tangible.xyz(t) local offset=(dy+rad)*(rad*2+1)+dx+rad local cl=tangible.getclass(t) local kind=t.kind or 'Nil' - pprint(t) - print("Offset of "..cl.." is "..offset.." kind is "..kind) if not scratch[offset] then scratch[offset]={} end if not scratch[offset].count then scratch[offset].count={} end if not scratch[offset].count[kind] then scratch[offset].count[kind]=0 end @@ -224,11 +228,11 @@ function player.cb_map(actor,place,dialog) for dx=-rad,rad do lbuf=lbuf.."----" end lbuf=lbuf.."-" print(lbuf) - print("In Player:") + print("In Player "..tangible.id(actor)..":") for k,v in pairs(actor.Count) do print(" "..k.." "..v) end local lis=tangible.near(actor,0,true,true) for k,v in pairs(lis) do - print("Army:") + print("In Army "..tangible.id(v)..":") for k2,v2 in pairs(v.Count) do print(" "..k2.." "..v2) end end end diff --git a/luprex/core/lua/login.lua b/luprex/core/lua/login.lua index b8d4eb67..e40f1956 100644 --- a/luprex/core/lua/login.lua +++ b/luprex/core/lua/login.lua @@ -6,6 +6,9 @@ function login.interface(actor, place) end function login.cb_becomeplayer(actor, place, dialog) + actor.kind='P' + actor.Count={} + setmetatable(actor.Count,{jones=5,__index=function(t,k) return 0 end,__newindex=function(t,k,v) if v~=nil and v~=0 then rawset(t,k,v) end end}) tangible.setclass(actor, player) tangible.animate(actor,{action="warp",plane="main",x=0,y=0,z=0}) end diff --git a/luprex/core/lua/player.lua b/luprex/core/lua/player.lua index e69de29b..bd264803 100644 --- a/luprex/core/lua/player.lua +++ b/luprex/core/lua/player.lua @@ -0,0 +1,55 @@ +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 +