jordan4ibanez's improved grenade

master
Tai @ Flex 2016-11-11 00:24:40 +00:00
parent d7145af91b
commit 8b4a907285
1 changed files with 34 additions and 8 deletions

View File

@ -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", ""}
}
})