From 63710a57c6ab596f9068dde7344391f45d41bcd0 Mon Sep 17 00:00:00 2001 From: cora Date: Sat, 13 Feb 2021 04:00:34 +0100 Subject: [PATCH] kamikaze: cleanup --- clientmods/kamikaze/init.lua | 84 +++++++++++++++++++++++--------------------- 1 file changed, 43 insertions(+), 41 deletions(-) diff --git a/clientmods/kamikaze/init.lua b/clientmods/kamikaze/init.lua index 30bd3e9c5..12d3e1299 100644 --- a/clientmods/kamikaze/init.lua +++ b/clientmods/kamikaze/init.lua @@ -3,8 +3,7 @@ local cpos={x=0,y=0,z=0} local crange=500 local hud_wp=nil local zz={x=0,y=64,z=0} -local badnodes={'mcl_tnt:tnt','mcl_fire:basic_flame','mcl_fire:eternal_fire','mcl_fire:fire','mcl_fire:fire_charge'} ---'mcl_sponges:sponge','mcl_sponges:sponge_wet' +local badnodes={'mcl_tnt:tnt','mcl_fire:basic_flame','mcl_fire:eternal_fire','mcl_fire:fire','mcl_fire:fire_charge','mcl_sponges:sponge','mcl_sponges:sponge_wet'} local searchheight=64 local function set_kwp(name,pos) @@ -31,34 +30,40 @@ local function randomzz() nextzz=os.clock()+ 15 end + local function find_bad_things() if fnd then return true end local obs=minetest.localplayer.get_nearby_objects(crange) local lp=minetest.localplayer:get_pos() - + local odst=500; for k, v in ipairs(obs) do -- look for crystals first if ( v:get_item_textures():find("mcl_end_crystal") ) then - cpos=v:get_pos() - set_kwp(v:get_item_textures(),v:get_pos()) - fnd=true - return true + local npos=v:get_pos() + local dst=vector.distance(npos,minetest.localplayer:get_pos()) + if odst > dst then cpos=npos + set_kwp(v:get_item_textures(),v:get_pos()) + fnd=true + return true + end end end - + odst=500 for k, v in ipairs(obs) do if ( v:get_item_textures():find("arrow_box") ) then - cpos=v:get_pos() - set_kwp(v:get_item_textures(),v:get_pos()) - fnd=true - return true + local npos=v:get_pos() + local dst=vector.distance(npos,minetest.localplayer:get_pos()) + if odst > dst then cpos=npos + set_kwp(v:get_item_textures(),v:get_pos()) + fnd=true + return true + end end end - + odst=500 local epos=minetest.find_nodes_in_area(vector.add(lp,{x=79,y=79,z=79}), vector.add(lp,{x=-79,y=-79,z=-79}), badnodes, true) - local odst=500 if epos then for k,v in pairs(epos) do for kk,vv in pairs(v) do - lp=minetest.localplayer:get_pos() + local lp=minetest.localplayer:get_pos() local dst=vector.distance(lp,vv) if odst > dst then odst=dst cpos=vv fnd=true end end end @@ -74,38 +79,24 @@ end local function flythere() - minetest.settings:set_bool('noclip',true) - minetest.settings:set_bool("pitch_move",true) minetest.settings:set_bool("continuous_forward",true) autofly.aim(cpos) - core.set_keypress("special1", true) end local function stopflight() - minetest.settings:set_bool("continuous_forward",false) - minetest.settings:set_bool("noclip",false) - minetest.settings:set_bool("pitch_move",false) - core.set_keypress("special1", false) - minetest.after("0",function() - minetest.interact("start_digging") - minetest.dig_node(cpos) - fnd=false - end) + minetest.settings:set_bool("continuous_forward",false) + minetest.after("0",function() + minetest.interact("start_digging") + minetest.dig_node(cpos) + fnd=false + end) end + minetest.register_globalstep(function() if not minetest.settings:get_bool("kamikaze") and not(minetest.localplayer and minetest.localplayer:get_name():find("kamikaze")) then - if hud_wp then - minetest.localplayer:hud_remove(hud_wp) hud_wp=nil - minetest.settings:set_bool("continuous_forward",false) - minetest.settings:set_bool("noclip",false) - minetest.settings:set_bool("pitch_move",false) - core.set_keypress("special1", false) - fnd=false - end - return - end +ws.rg('Kamikaze','Bots','kamikaze', function() local lp = minetest.localplayer:get_pos() if not find_bad_things() then if vector.distance(lp,zz) < 1 then @@ -119,11 +110,22 @@ minetest.register_globalstep(function() return end flythere() -end) + +end,function() + core.set_keypress("special1", true) +end, function() + core.set_keypress("special1", false) + fnd=false + if hud_wp then + minetest.localplayer:hud_remove(hud_wp) + end +end,{"noclip","pitch_move"}) + + minetest.register_on_death(function() if not minetest.settings:get_bool("kamikaze") then return end - fnd=false + minetest.after("5.0",function() + fnd=false + end) end) - -minetest.register_cheat("Kamikaze", "Combat", "kamikaze") -- 2.11.4.GIT