Add debug chatcommand to start events

This commit is contained in:
cora 2022-11-03 14:10:30 +01:00
parent 232f57c247
commit 9893dee1aa
2 changed files with 10 additions and 67 deletions

View file

@ -73,6 +73,7 @@ end
local etime = 0 local etime = 0
function check_events(dtime) function check_events(dtime)
--process active events
for idx,ae in pairs(active_events) do for idx,ae in pairs(active_events) do
if ae.cond_complete and ae:cond_complete() then if ae.cond_complete and ae:cond_complete() then
ae.finished = true ae.finished = true
@ -95,6 +96,7 @@ function check_events(dtime)
addbars(ae) addbars(ae)
--update_bars(ae) --update_bars(ae)
end end
-- check if a new event should be started
etime = etime - dtime etime = etime - dtime
if etime > 0 then return end if etime > 0 then return end
etime = 10 etime = 10
@ -120,71 +122,12 @@ end
minetest.register_globalstep(check_events) minetest.register_globalstep(check_events)
mcl_events.register_event("infestation",{ minetest.register_chatcommand("event_start",{
max_stage = 5,
health = 1,
health_max = 1,
cond_start = function(self)
local r = {}
for _,p in pairs(minetest.get_connected_players()) do
if p:get_meta():get_string("infestation-omen") == "yes" then
p:get_meta():set_string("infestation-omen","")
table.insert(r,p:get_pos())
end
end
if #r > 0 then return r end
end,
on_start = function(self)
self.mobs = {}
self.health_max = 1
self.health = 0
end,
cond_progress = function(self)
local m = {}
local h = 0
for k,o in pairs(self.mobs) do
if o and o:get_pos() then
local l = o:get_luaentity()
h = h + l.health
table.insert(m,o)
end
end
self.mobs = m
self.health = h
self.percent = math.max(0,(self.health / self.health_max ) * 100)
if #m < 1 then
return true end
end,
on_stage_begin = function(self)
self.health_max = 0
for i=1,15 * self.stage do
local m = mcl_mobs.spawn(vector.add(self.pos,vector.new(math.random(20)-10,0,math.random(20)-10)),"mobs_mc:silverfish")
local l = m:get_luaentity()
if l then
self.health_max = self.health_max + l.health
table.insert(self.mobs,m)
end
end
end,
cond_complete = function(self)
local m = {}
for k,o in pairs(self.mobs) do
if o and o:get_pos() then
local l = o:get_luaentity()
table.insert(m,o)
end
end
return self.stage >= self.max_stage and #m < 1
end,
on_complete = function(self)
mcl_log("INFESTATION complete")
end,
})
minetest.register_chatcommand("infest",{
privs = {debug = true}, privs = {debug = true},
func = function(n,param) func = function(pname,param)
local p = minetest.get_player_by_name(n) local p = minetest.get_player_by_name(pname)
p:get_meta():set_string("infestation-omen","yes") local evdef = mcl_events.registered_events[param]
if not evdef then return end
start_event({pos=p:get_pos(),player=pname,factor=1},evdef)
end, end,
}) })

View file

@ -129,8 +129,8 @@ mcl_events.register_event("raid",{
self.mobs = {} self.mobs = {}
self.health_max = 1 self.health_max = 1
self.health = 0 self.health = 0
local lv = mcl_potions.player_get_effect(minetest.get_player_by_name(self.player), "bad_omen").factor local lv = mcl_potions.player_get_effect(minetest.get_player_by_name(self.player), "bad_omen")
if lv and lv > 1 then self.max_stage = 6 end if lv and lv.factor and lv.factor > 1 then self.max_stage = 6 end
end, end,
cond_progress = function(self) cond_progress = function(self)
local m = {} local m = {}