]> git.lizzy.rs Git - killaura.git/blob - init.lua
d3cc5fc03378b975713fb0904e589a5797717d1f
[killaura.git] / init.lua
1 local etime = 0
2
3 minetest.register_globalstep(function(dtime)
4         local player = minetest.localplayer
5         if not player then return end
6         etime = etime + dtime
7         local control = player:get_control()
8         if minetest.settings:get_bool("killaura") or minetest.settings:get_bool("forcefield") and control.dig then
9                 local interval_str = minetest.settings:get("killaura_interval") or "0"
10                 local interval
11                 if interval_str == "auto" then
12                         interval = player:get_wielded_item():get_tool_capabilities().full_punch_interval
13                 else
14                         interval = tonumber(interval_str) or 0
15                 end
16                 if etime < interval then
17                         return
18                 end
19                 local punched_anything = false
20                 local friendlist = (minetest.settings:get("friendlist") or ""):split(",")
21                 for _, obj in ipairs(minetest.get_objects_inside_radius(player:get_pos(), 5)) do
22                         local do_attack = true
23                         if obj:is_local_player() then
24                                 do_attack = false
25                         else
26                                 for _, friend in ipairs(friendlist) do
27                                         if obj:get_name() == friend or obj:get_nametag() == friend then
28                                                 do_attack = false
29                                                 break
30                                         end
31                                 end
32                         end
33                         if do_attack then
34                                 obj:punch()
35                                 punched_anything = true
36                         end
37                 end
38                 if punched_anything then
39                         etime = 0
40                 end
41         end
42 end)
43
44 minetest.register_list_command("friend", "Configure Friend List (friends dont get attacked by Killaura or Forcefield)", "friendlist")
45
46 minetest.register_cheat("Killaura", "Combat", "killaura")
47 minetest.register_cheat("ForceField", "Combat", "forcefield")