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
This commit is contained in:
Kiëd Llaentenn 2023-06-01 21:46:56 -04:00 committed by GitHub
parent 9f1a526dc6
commit 6737757471
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 6 deletions

@ -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 objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 1)
local collided = false local collided = false
for _, obj in pairs(objs) do 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 ~= self.name
and obj:get_luaentity().name ~= "__builtin:item" and obj:get_luaentity().name ~= "__builtin:item"))
and spacecannon.can_damage(obj)
then then
collided = true collided = true
obj:punch(self.object, 1.0, { obj:punch(self.object, 1.0, {
@ -243,7 +244,7 @@ register_spacecannon({
is_th = true, is_th = true,
range = 1, range = 1,
storage_require_mod = 1, storage_require_mod = 1,
damage = 2, damage = 5,
intensity = 1, intensity = 1,
timeout = 8, timeout = 8,
speed = 10, speed = 10,
@ -259,7 +260,7 @@ register_spacecannon({
range = 3, range = 3,
storage_require_mod = 3, storage_require_mod = 3,
intensity = 2, intensity = 2,
damage = 6, damage = 8,
timeout = 8, timeout = 8,
speed = 5, speed = 5,
penetration = 0, penetration = 0,
@ -300,7 +301,7 @@ register_spacecannon({
range = 0, range = 0,
storage_require_mod = 1, storage_require_mod = 1,
intensity = 2, intensity = 2,
damage = 5, damage = 6,
timeout = 10, timeout = 10,
speed = 9, speed = 9,
penetration = 2, penetration = 2,
@ -324,7 +325,7 @@ register_spacecannon({
range = 0, range = 0,
storage_require_mod = 1.5, storage_require_mod = 1.5,
intensity = 4, intensity = 4,
damage = 10, damage = 6,
timeout = 15, timeout = 15,
speed = 10, speed = 10,
penetration = 4, penetration = 4,

@ -63,6 +63,10 @@ spacecannon.can_destroy = function()
return true return true
end end
spacecannon.can_damage = function(_obj)
return true
end
spacecannon.fire = function(pos, playername, color, speed, is_th, storage_require_mod) spacecannon.fire = function(pos, playername, color, speed, is_th, storage_require_mod)
if not spacecannon.can_shoot(pos, playername) then if not spacecannon.can_shoot(pos, playername) then
return return