From 6255c81015e5269f7fdb8bee8faa458bfeac8ad1 Mon Sep 17 00:00:00 2001 From: stujones11 Date: Tue, 26 Nov 2013 21:22:21 +0000 Subject: [PATCH] Initial commit --- .gitignore | 7 +++++ LICENSE.txt | 12 ++++++++ README.txt | 54 ++++++++++++++++++++++++++++++++++++ depends.txt | 2 ++ init.lua | 47 +++++++++++++++++++++++++++++++ shooter.lua | 52 ++++++++++++++++++++++++++++++++++ sounds/shooter_pistol.ogg | Bin 0 -> 28506 bytes sounds/shooter_riffle.ogg | Bin 0 -> 4627 bytes textures/crosshair.png | Bin 0 -> 364 bytes textures/shooter_pistol.png | Bin 0 -> 274 bytes textures/shooter_riffle.png | Bin 0 -> 420 bytes 11 files changed, 174 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE.txt create mode 100644 README.txt create mode 100644 depends.txt create mode 100644 init.lua create mode 100644 shooter.lua create mode 100644 sounds/shooter_pistol.ogg create mode 100644 sounds/shooter_riffle.ogg create mode 100644 textures/crosshair.png create mode 100644 textures/shooter_pistol.png create mode 100644 textures/shooter_riffle.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a57dbc9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +## Generic ignorable patterns and files +*~ +.*.swp +*bak* +tags +*.vim + diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..412765a --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,12 @@ +Minetest Mod - Simple Shooter [shooter] +======================================= + +License Source: 2013 Stuart Jones - LGPL + +License Textures: Stuart Jones - WTFPL + +License Sounds: freesound.org + + flobert1_20070728.wav by Nonoo - Attribution 3.0 Unported (CC BY 3.0) + GUNSHOT.WAV by erkanozan - CC0 1.0 Universal (CC0 1.0) + diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..139cbfe --- /dev/null +++ b/README.txt @@ -0,0 +1,54 @@ +Minetest Mod - Simple Shooter [shooter] +======================================= + +Mod Version: 0.1.0 + +Minetest Version: 0.4.8 + +Depends: default + +An experimental first person shooter mod using vector mathematics instead of +physical projectile entities. This has a number of advantages along with a +number disadvantages. + +Pros: + +Fast and responsive +Fairly light weight +Not affected by chunk boundaries + +Cons: + +Only works against other players +Slightly less realistic + +This is still very much a work in progress and currently not much use in a +singleplayer game. I plan to eventually use this as a base for a 'Spades' style +FPS game using the minetest engine, however, I decided to add a couple of craft +recipes and release this simple version for minetest_game. + +Crafting +======== + +S = Steel Ingot [default:steel_ingot] +B = Bronze Ingot [default:bronze_ingot] +M = Mese Crystal [default:mese_crysytal] + +Pistol: [shooter:pistol] + ++---+---+ +| S | B | ++---+---+ +| | M | ++---+---+ + +Riffle: [shooter:riffle] + ++---+---+---+ +| S | | | ++---+---+---+ +| | B | | ++---+---+---+ +| | M | B | ++---+---+---+ + diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..3a7daa1 --- /dev/null +++ b/depends.txt @@ -0,0 +1,2 @@ +default + diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..54f5cf4 --- /dev/null +++ b/init.lua @@ -0,0 +1,47 @@ +dofile(minetest.get_modpath(minetest.get_current_modname()).."/shooter.lua") + +minetest.register_tool("shooter:pistol", { + description = "Pistol", + inventory_image = "shooter_pistol.png", + on_use = function(itemstack, user, pointed_thing) + shooter:fire_weapon(user, { + range_func = {a=-0.1, b=-1.5, c=100}, + tool_caps = {full_punch_interval=1.0, damage_groups={fleshy=3}}, + sound = "shooter_pistol", + }) + itemstack:add_wear(328) -- 200 Rounds + return itemstack + end, +}) + +minetest.register_tool("shooter:riffle", { + description = "Riffle", + inventory_image = "shooter_riffle.png", + on_use = function(itemstack, user, pointed_thing) + shooter:fire_weapon(user, { + range_func = {a=-0.02, b=-0.6, c=100}, + tool_caps = {full_punch_interval=1.0, damage_groups={fleshy=5}}, + sound = "shooter_riffle", + }) + itemstack:add_wear(656) -- 100 Rounds + return itemstack + end, +}) + +minetest.register_craft({ + output = "shooter:pistol", + recipe = { + {"default:steel_ingot", "default:bronze_ingot"}, + {"", "default:mese_crystal"}, + }, +}) + +minetest.register_craft({ + output = "shooter:riffle", + recipe = { + {"default:steel_ingot", "", ""}, + {"", "default:bronze_ingot", ""}, + {"", "default:mese_crystal", "default:bronze_ingot"}, + }, +}) + diff --git a/shooter.lua b/shooter.lua new file mode 100644 index 0000000..7d4218c --- /dev/null +++ b/shooter.lua @@ -0,0 +1,52 @@ +shooter = {} + +local function in_range(r, x) + local chance = r.a * (x * x) + r.b * x + r.c + if math.random(100) < chance then + return true + end + return false +end + +function shooter:fire_weapon(user, def) + minetest.sound_play(def.sound, {object=user}) + local target = {player=nil, distance=50} + local p1 = user:getpos() + for _,player in ipairs(minetest.get_connected_players()) do + local p2 = player:getpos() + if p1 and p2 then + local x = vector.distance(p1, p2) + p2.y = p2.y - 0.75 + if x > 0 and x < target.distance and x < 50 then + if in_range(def.range_func, x) == true then + local v1 = user:get_look_dir() + local v2 = vector.normalize(vector.direction(p1, p2)) + local vd = vector.subtract(v1, v2) + local yx = 0.00002 * (x * x) - 0.002 * x + 0.05 + local yy = yx * 3 + if math.abs(vd.x) < yx and + math.abs(vd.z) < yx and + math.abs(vd.y) < yy then + target = { + player = player, + distance = x, + direction = v1, + pos1 = {x=p1.x, z=p1.z, y=p1.y+1}, + pos2 = {x=p2.x, z=p2.z, y=p2.y+1.75}, + } + end + end + end + end + end + if target.player then + if minetest.line_of_sight(target.pos1, target.pos2, 1) then + target.player:punch(user, nil, def.tool_caps, target.direction) + end + end +end + +minetest.register_on_joinplayer(function(player) + player:hud_set_flags({crosshair = true}) +end) + diff --git a/sounds/shooter_pistol.ogg b/sounds/shooter_pistol.ogg new file mode 100644 index 0000000000000000000000000000000000000000..14fc786adf0a9f4d84b463722e489d29c4b7b8fa GIT binary patch literal 28506 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 literal 0 HcmV?d00001 diff --git a/sounds/shooter_riffle.ogg b/sounds/shooter_riffle.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1ea68bf4ab2aae3834fde3f0e9f632025c8c7aba GIT binary patch literal 4627 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 E0Ohok?EnA( literal 0 HcmV?d00001 diff --git a/textures/shooter_pistol.png b/textures/shooter_pistol.png new file mode 100644 index 0000000000000000000000000000000000000000..56c821f213ee19bea257fe0278ebc42cd4dceda4 GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sBugD~Uq{1qucLG}_)Usv|K+`Pg%VkX}G-aw&Ao-U3d7N@sP zy2yJ(fydeRYHx(X;#3p;2{ViAuXnXAS$b*iet{Y8j~M<$?foA9FL%cahCgqcb0exZ z@(b>aQL+p#V768i6k!yYDB>ivs%rj0#n4^>`E&CaIa5}pu|7B%u{UQS#|p-VnM)@e z-k+*jA8m0qt*o&x@{Pal5y9gM-zE4?elqVmA(EuMXWxU!NssUUV%QyMdE7Ka!U5QL70(Y)*K0-AbW|YuPggqZb=a#<)55w5kMiy64!_l=ltB< z)VvY~=c3falGGH1^30M91$R&1fbd2>aiF6Ao-U3d7N?g^cJw~%Akey>*Y#5O4j;jj zOGUblv+n(>^yJ<7v-%$%8E!hR!zqz2Dg|Riv50m7tdR#C*eHli+t$olOY5$gy$%f7y2m8eY-RVlqIp1Z5;M1; z!0D*lXOrzS7QVk~x!gs?Mn}zNZ!KfN>iv~y=UG({|qup7nA|@QP#qX8z2P`epu^*|V!&>(Dy;^}wKD@O1Ta JS?83{1OWPorVRi9 literal 0 HcmV?d00001