diff --git a/init.lua b/init.lua index c73f7a9..9c3c68e 100644 --- a/init.lua +++ b/init.lua @@ -16,37 +16,63 @@ tnt.register_tnt(def) minetest.register_craftitem("grenade:grenade", { description = "Grenade", - inventory_image = "default_coal_lump.png", + inventory_image = "grenade_grenade.png", on_use = function(itemstack, user, pointed_thing) local v = user:get_look_dir() local pos = user:getpos() pos.y = pos.y + 1.2 local obj = minetest.add_entity(pos, "grenade:grenade") - obj:setvelocity({x = v.x * 4, y = v.y * 2 + 4, z = v.z * 4}) - obj:setacceleration({x = v.x / 4, y = v.y / 2 - 4, z = v.z / 4}) + --play sound when throwing + minetest.sound_play("tnt_ignite", { + max_hear_distance = 20, + gain = 10.0, + object = obj, + }) + obj:setvelocity({x = v.x * 7, y = v.y * 7 + 4, z = v.z * 7}) + obj:setacceleration({x = 0, y = -10, z = 0}) itemstack:take_item() return itemstack end, }) + minetest.register_entity("grenade:grenade", { physical = true, collide_with_objects = true, weight = 5, collisionbox = {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25}, - textures = {"default_coal_lump.png"}, + textures = {"grenade_grenade.png"}, on_activate = function(self, staticdata) self.timer = 0 end, on_step = function(self, dtime) - local acc = self.object:getacceleration() - self.object:setacceleration({x = acc.x * 2 / 4, y = acc.y, z = acc.z * 2 / 4}) - + local vel = self.object:getvelocity() + --standard blow up on timer self.timer = self.timer + dtime - if self.timer > 4 then + if self.timer > 4 or vel.y == 0 then tnt.boom(self.object:getpos(), def) + return -- to not crash end + --Make grenades blow up when they hit something + if self.oldvel then + if (math.abs(self.oldvel.x) ~= 0 and vel.x == 0) or + (math.abs(self.oldvel.y) ~= 0 and vel.y == 0) or + (math.abs(self.oldvel.z) ~= 0 and vel.z == 0) then + tnt.boom(self.object:getpos(), def) + return -- to not crash + end + end + + self.oldvel = vel end, }) +minetest.register_craft({ + output = "grenade:grenade", + recipe = { + {"default:stick", "default:steel_ingot", ""}, + {"default:steel_ingot", "default:coal_lump", "default:steel_ingot"}, + {"", "default:steel_ingot", ""} + } +})