]> git.lizzy.rs Git - killaura.git/blob - init.lua
Add only_players
[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 "auto"
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                 local only_players = minetest.settings:get_bool("killaura_only_players")
22                 for _, obj in ipairs(minetest.get_objects_inside_radius(player:get_pos(), 5)) do
23                         local do_attack = true
24                         if obj:is_local_player() or only_players and not obj:is_player() then
25                                 do_attack = false
26                         else
27                                 for _, friend in ipairs(friendlist) do
28                                         if obj:get_name() == friend or obj:get_nametag() == friend then
29                                                 do_attack = false
30                                                 break
31                                         end
32                                 end
33                         end
34                         if do_attack then
35                                 obj:punch()
36                                 punched_anything = true
37                         end
38                 end
39                 if punched_anything then
40                         etime = 0
41                 end
42         end
43 end)
44
45 minetest.register_list_command("friend", "Configure Friend List (friends dont get attacked by Killaura or Forcefield)", "friendlist")
46
47 minetest.register_cheat("Killaura", "Combat", "killaura")
48 minetest.register_cheat("ForceField", "Combat", "forcefield")