initial_properties update

This commit is contained in:
tenplus1 2023-09-23 13:29:44 +01:00
parent a9c0bfda01
commit 7fe8aabb2c
2 changed files with 29 additions and 15 deletions

View File

@ -27,7 +27,7 @@ local function spears_shot(itemstack, player)
end end
local drag = .3 local drag = .3
local playerpos = player:getpos() local playerpos = player:get_pos()
local dir = player:get_look_dir() local dir = player:get_look_dir()
local obj = minetest.add_entity({ local obj = minetest.add_entity({
x = playerpos.x, x = playerpos.x,
@ -55,13 +55,18 @@ local function spears_set_entity(kind, eq, toughness, breadth)
breadth = breadth or 1 breadth = breadth or 1
local SPEAR_ENTITY = { local SPEAR_ENTITY = {
physical = false,
initial_properties = {
physical = false,
visual = "wielditem",
visual_size = {x = 0.15, y = 0.1},
textures = {spearname},
collisionbox = {0,0,0,0,0,0},
},
timer = 0, timer = 0,
visual = "wielditem",
visual_size = {x = 0.15, y = 0.1},
textures = {spearname},
lastpos = {}, lastpos = {},
collisionbox = {0,0,0,0,0,0},
on_punch = function(self, puncher) on_punch = function(self, puncher)
@ -88,7 +93,7 @@ local function spears_set_entity(kind, eq, toughness, breadth)
self.timer = self.timer + dtime self.timer = self.timer + dtime
local pos = self.object:getpos() local pos = self.object:get_pos()
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
if not self.wear then if not self.wear then
@ -134,7 +139,7 @@ local function spears_set_entity(kind, eq, toughness, breadth)
and obj:get_luaentity().shooter:get_player_name() and obj:get_luaentity().shooter:get_player_name()
== obj:get_player_name() ) then == obj:get_player_name() ) then
local speed = vector.length(self.object:getvelocity()) local speed = vector.length(self.object:get_velocity())
local damage = (speed + eq) ^ 1.12 - 20 local damage = (speed + eq) ^ 1.12 - 20
obj:punch(self.object, 1.0, { obj:punch(self.object, 1.0, {

View File

@ -384,7 +384,10 @@ Function to register new weapons: parameters:
local function nssm_register_weapon(name, def) local function nssm_register_weapon(name, def)
minetest.register_entity("nssm:"..name, { minetest.register_entity("nssm:"..name, {
textures = {name..".png"},
initial_properties = {
textures = {name..".png"},
},
on_step = function(self, dtime) on_step = function(self, dtime)
def.on_step(self, dtime) def.on_step(self, dtime)
@ -506,8 +509,6 @@ local function nssm_register_throwitem(name, descr, def)
local dir = placer:get_look_dir() local dir = placer:get_look_dir()
local playerpos = placer:get_pos() local playerpos = placer:get_pos()
posthrow = playerpos
local obj = minetest.add_entity({ local obj = minetest.add_entity({
x = playerpos.x + dir.x, x = playerpos.x + dir.x,
y = playerpos.y + 2 + dir.y, y = playerpos.y + 2 + dir.y,
@ -520,6 +521,8 @@ local function nssm_register_throwitem(name, descr, def)
obj:set_velocity(vec) obj:set_velocity(vec)
obj:set_acceleration(acc) obj:set_acceleration(acc)
local ent = obj:get_luaentity() ; ent.posthrow = playerpos
itemstack:take_item() itemstack:take_item()
return itemstack return itemstack
@ -527,9 +530,13 @@ local function nssm_register_throwitem(name, descr, def)
}) })
minetest.register_entity("nssm:" .. name .. "_bomb_flying", { minetest.register_entity("nssm:" .. name .. "_bomb_flying", {
textures = {name .. "_bomb.png"},
hp_max = 20, initial_properties = {
collisionbox = {-0.1,-0.1,-0.1, 0.1,0.1,0.1},
textures = {name .. "_bomb.png"},
hp_max = 20,
collisionbox = {-0.1,-0.1,-0.1, 0.1,0.1,0.1}
},
on_step = function(self, dtime) on_step = function(self, dtime)
@ -898,7 +905,7 @@ minetest.register_craft({
nssm_register_throwitem("teleport", "Teleport Bomb", { nssm_register_throwitem("teleport", "Teleport Bomb", {
hit_node = function(self,pos,placer) hit_node = function(self, pos, placer)
local pos1 = {x = pos.x, y = pos.y + 1, z = pos.z} local pos1 = {x = pos.x, y = pos.y + 1, z = pos.z}
local pos2 = {x = pos.x, y = pos.y + 2, z = pos.z} local pos2 = {x = pos.x, y = pos.y + 2, z = pos.z}
@ -907,6 +914,8 @@ nssm_register_throwitem("teleport", "Teleport Bomb", {
or not minetest.get_item_group( or not minetest.get_item_group(
minetest.get_node(pos1).name, "unbreakable") == 1 then minetest.get_node(pos1).name, "unbreakable") == 1 then
local posthrow = self.posthrow ; if not posthrow then return end
for _,obj in ipairs(minetest.get_objects_inside_radius(posthrow, 2)) do for _,obj in ipairs(minetest.get_objects_inside_radius(posthrow, 2)) do
if obj:is_player() then if obj:is_player() then