From 9582bef11785565b9598cdf62e28c0323b77c85a Mon Sep 17 00:00:00 2001 From: Gorilla Date: Thu, 31 Oct 2013 22:01:50 +1100 Subject: [PATCH] Initial commit Added details of background and what the repository is about --- .gitignore | 1 + README.md | 15 ++++++- depends.txt | 1 + init.lua | 74 ++++++++++++++++++++++++++++++++++ sounds/Where to get sound.txt | 1 + sounds/laser.ogg | Bin 0 -> 17975 bytes textures/bullet.png | Bin 0 -> 251 bytes 7 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 depends.txt create mode 100644 init.lua create mode 100644 sounds/Where to get sound.txt create mode 100644 sounds/laser.ogg create mode 100644 textures/bullet.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7664704 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.bak \ No newline at end of file diff --git a/README.md b/README.md index 588050b..a62f8e5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,17 @@ minetest-turrent ================ -Adopted Minetest mod Simple Turret +Adopted an abandoned Minetest mod called Simple Turret + +See https://forum.minetest.net/viewtopic.php?id=3836 for details on old mod + +License: TBD (Original Unknown) + +Please note that I am not overly interested in extending this mod but I may entertain minor tweaks or changing an image or two, if provided. + +Tested: Minetest release 0.4.7 on Windows. + +Dependencies: Just Default. + +I may flesh out this file later on. I'm learning Lua so expect to see some formatting changes due to better formatting due to Style Guides. + diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..1810f69 --- /dev/null +++ b/depends.txt @@ -0,0 +1 @@ +default diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..fa5911b --- /dev/null +++ b/init.lua @@ -0,0 +1,74 @@ +ARROW_DAMAGE = 2 +ARROW_VELOCITY = 2 +minetest.register_node("gunz:turret", { + description = "WAR ROCK", + tiles = {"default_stone.png"}, + is_ground_content = true, + groups = {cracky=3, stone=1}, + drop = 'default:cobble', + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_abm({ + nodenames = {"gunz:turret"}, + interval = 5, + chance = 1, + action = function(pos, node) + --pos.y=pos.y+1 + --if minetest.env:get_node(pos).name == "default:dirt_with_grass" then + local objects = minetest.env:get_objects_inside_radius(pos, 17) + for _,obj in ipairs(objects) do + if obj:is_player() then + local obj_p = obj:getpos() + local calc = {x=obj_p.x - pos.x,y=obj_p.y+1 - pos.y,z=obj_p.z - pos.z} + local bullet=minetest.env:add_entity({x=pos.x,y=pos.y,z=pos.z}, "gunz:arrow_entity") + bullet:setvelocity({x=calc.x * ARROW_VELOCITY,y=calc.y * ARROW_VELOCITY,z=calc.z * ARROW_VELOCITY}) + music_handle=minetest.sound_play("laser", + { pos = pos, gain = 1.0, + max_hear_distance = 24, + }) + end + end + end +}) + +-- The Arrow Entity + +THROWING_ARROW_ENTITY={ + physical = false, + timer=0, + visual_size = {x=0.5, y=0.5}, + textures = {"bullet.png"}, + lastpos={}, + collisionbox = {-0.17,-0.17,-0.17,0.17,0.17,0.17}, +} +-- Arrow_entity.on_step()--> called when arrow is moving +THROWING_ARROW_ENTITY.on_step = function(self, dtime) + self.timer=self.timer+dtime + local pos = self.object:getpos() + local node = minetest.env:get_node(pos) + if self.timer > 2 then + self.object:remove() + end + -- When arrow is away from player (after 0.2 seconds): Cause damage to mobs and players + if self.timer>0.2 then + local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 1.5) + for k, obj in pairs(objs) do + if obj:is_player() then + obj:set_hp(obj:get_hp()-ARROW_DAMAGE) + self.object:remove() + end + end + end + + -- Become item when hitting a node + if self.lastpos.x~=nil then --If there is no lastpos for some reason + if node.name ~= "air" and node.name ~= "gunz:turret" then + minetest.env:add_item(self.lastpos, 'throwing:arrow') + self.object:remove() + end + end + self.lastpos={x=pos.x, y=pos.y, z=pos.z} -- Set lastpos-->Item will be added at last pos outside the node +end + +minetest.register_entity("gunz:arrow_entity", THROWING_ARROW_ENTITY) \ No newline at end of file diff --git a/sounds/Where to get sound.txt b/sounds/Where to get sound.txt new file mode 100644 index 0000000..b68d937 --- /dev/null +++ b/sounds/Where to get sound.txt @@ -0,0 +1 @@ +http://freesound.org/people/aust_paul/sounds/30935/ \ No newline at end of file diff --git a/sounds/laser.ogg b/sounds/laser.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d59bfc217866f24ba86d3dbdd973268b3095502e GIT binary patch literal 17975 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 literal 0 HcmV?d00001 diff --git a/textures/bullet.png b/textures/bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..b21af5377e53824f85baad5437a44054e38ba3a9 GIT binary patch literal 251 zcmV8OyO$kCBr}jyZ3Ai)xt6}k@?U=Tvt1&> zwUtsDyr9Jsmc8qU9kzIji0@HwL|h0R4u~5%pc}=Xfhsl=K-b!!{so)^J3%ji{WIsn z26aO}nu#@=Qqu<339v!06{}I}=UWT=#0>WZpLj^h@T(?)PFC@e$U9cNCjxiX@1SSd zmh6w6K6-aq4tH5!SqrxOa{?AUxWzLbd)Lhq@B>XWK!PD|aoqp_002ovPDHLkV1fym BWFG(k literal 0 HcmV?d00001