From 6737757471f54598f5fb4dfd2a7af5b2550f4fc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ki=C3=ABd=20Llaentenn?= Date: Thu, 1 Jun 2023 21:46:56 -0400 Subject: [PATCH] Fix projectiles not damaging players (#20) * fix: projectile not damaging players * feat: allow servers to control entity/player damage * tweak: lower cannon damage numbers a bit * fix: style --- cannon.lua | 13 +++++++------ util.lua | 4 ++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/cannon.lua b/cannon.lua index df9fa7b..813956a 100644 --- a/cannon.lua +++ b/cannon.lua @@ -67,9 +67,10 @@ local register_spacecannon = function(def) local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 1) local collided = false for _, obj in pairs(objs) do - if obj:get_luaentity() ~= nil + if (obj:is_player() or (obj:get_luaentity() ~= nil and obj:get_luaentity().name ~= self.name - and obj:get_luaentity().name ~= "__builtin:item" + and obj:get_luaentity().name ~= "__builtin:item")) + and spacecannon.can_damage(obj) then collided = true obj:punch(self.object, 1.0, { @@ -243,7 +244,7 @@ register_spacecannon({ is_th = true, range = 1, storage_require_mod = 1, - damage = 2, + damage = 5, intensity = 1, timeout = 8, speed = 10, @@ -259,7 +260,7 @@ register_spacecannon({ range = 3, storage_require_mod = 3, intensity = 2, - damage = 6, + damage = 8, timeout = 8, speed = 5, penetration = 0, @@ -300,7 +301,7 @@ register_spacecannon({ range = 0, storage_require_mod = 1, intensity = 2, - damage = 5, + damage = 6, timeout = 10, speed = 9, penetration = 2, @@ -324,7 +325,7 @@ register_spacecannon({ range = 0, storage_require_mod = 1.5, intensity = 4, - damage = 10, + damage = 6, timeout = 15, speed = 10, penetration = 4, diff --git a/util.lua b/util.lua index 4fdc546..283fb82 100644 --- a/util.lua +++ b/util.lua @@ -63,6 +63,10 @@ spacecannon.can_destroy = function() return true end +spacecannon.can_damage = function(_obj) + return true +end + spacecannon.fire = function(pos, playername, color, speed, is_th, storage_require_mod) if not spacecannon.can_shoot(pos, playername) then return