Skip to content

Commit

Permalink
Fix api inconsistencies
Browse files Browse the repository at this point in the history
  • Loading branch information
stujones11 committed Apr 2, 2019
1 parent 886e580 commit 6b4ea38
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 16 deletions.
32 changes: 21 additions & 11 deletions shooter/api.lua
Original file line number Diff line number Diff line change
Expand Up @@ -66,20 +66,23 @@ local sqrt = math.sqrt
local phi = (math.sqrt(5) + 1) / 2 -- Golden ratio

shooter.register_weapon = function(name, def)
-- Backwards compatibility
if not def.spec.sounds then
def.spec.sounds = def.sounds or {}
end
if not def.spec.sounds.shot and def.spec.sound then
def.spec.sounds.shot = def.spec.sound
end
-- Fix definition table
def.sounds = def.sounds or {}
def.sounds.reload = def.sounds.reload or "shooter_reload"
def.sounds.fail_shot = def.sounds.fail_shot or "shooter_click"
def.reload_item = def.reload_item or "shooter:ammo"
def.spec.reload_item = def.reload_item or "shooter:ammo"
def.spec.tool_caps.full_punch_interval = math.max(server_step,
def.spec.tool_caps.full_punch_interval)
def.spec.wear = math.ceil(65535 / def.spec.rounds)
def.spec.unloaded_item = name
def.unloaded_item = def.unloaded_item or {
name = name,
description = def.description.." (unloaded)",
inventory_image = def.inventory_image,
}
def.unloaded_item.name = name
shooter.registered_weapons[name] = table.copy(def)
-- Register loaded item tool
minetest.register_tool(name.."_loaded", {
Expand All @@ -101,6 +104,7 @@ shooter.register_weapon = function(name, def)
end
return itemstack
end,
unloaded_item = def.unloaded_item,
on_hit = def.on_hit,
groups = {not_in_creative_inventory=1},
})
Expand All @@ -114,11 +118,13 @@ shooter.register_weapon = function(name, def)
if inv then
local stack = def.reload_item
if inv:contains_item("main", stack) then
minetest.sound_play(def.sounds.reload, {object=user})
local sound = def.spec.sounds.reload or "shooter_reload"
minetest.sound_play(sound, {object=user})
inv:remove_item("main", stack)
itemstack:replace(name.."_loaded 1 1")
else
minetest.sound_play(def.sounds.fail_shot, {object=user})
local sound = def.spec.sounds.fail_shot or "shooter_click"
minetest.sound_play(sound, {object=user})
end
end
return itemstack
Expand Down Expand Up @@ -373,8 +379,9 @@ local function fire_weapon(player, itemstack, spec, extended)
spec.origin = v3d.add(pos, dir)
local interval = spec.tool_caps.full_punch_interval
shots[spec.user] = minetest.get_us_time() / 1000000 + interval
minetest.sound_play(spec.sound, {object=player})
local speed = spec.step / shooter.config.rounds_update_time
local sound = spec.sounds.shot or "shooter_pistol"
minetest.sound_play(sound, {object=player})
local speed = spec.step / (config.rounds_update_time * 2)
local time = spec.range / speed
local directions = get_directions(dir, spec)
for _, d in pairs(directions) do
Expand All @@ -398,7 +405,10 @@ local function fire_weapon(player, itemstack, spec, extended)
if extended then
itemstack:add_wear(spec.wear)
if itemstack:get_count() == 0 then
itemstack = spec.unloaded_item
local def = shooter.registered_weapons[spec.name] or {}
if def.unloaded_item then
itemstack = def.unloaded_item.name or ""
end
player:set_wielded_item(itemstack)
return
end
Expand Down
18 changes: 13 additions & 5 deletions shooter_guns/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ shooter.register_weapon("shooter_guns:pistol", {
step = 20,
tool_caps = {full_punch_interval=0.5, damage_groups={fleshy=2}},
groups = {snappy=3, fleshy=3, oddly_breakable_by_hand=3},
sound = "shooter_pistol",
sounds = {
shot = "shooter_pistol",
},
bullet_image = "shooter_cap.png",
particles = {
amount = 8,
Expand All @@ -45,7 +47,9 @@ shooter.register_weapon("shooter_guns:rifle", {
step = 30,
tool_caps = {full_punch_interval=1.0, damage_groups={fleshy=3}},
groups = {snappy=3, crumbly=3, choppy=3, fleshy=2, oddly_breakable_by_hand=2},
sound = "shooter_rifle",
sounds = {
shot = "shooter_rifle",
},
bullet_image = "shooter_bullet.png",
particles = {
amount = 12,
Expand All @@ -66,7 +70,9 @@ shooter.register_weapon("shooter_guns:shotgun", {
spread = 10,
tool_caps = {full_punch_interval=0.5, damage_groups={fleshy=2}},
groups = {snappy=3, fleshy=3, oddly_breakable_by_hand=3},
sound = "shooter_shotgun",
sounds = {
shot = "shooter_shotgun",
},
bullet_image = "shooter_cap.png",
particles = {
amount = 8,
Expand All @@ -81,12 +87,14 @@ shooter.register_weapon("shooter_guns:machine_gun", {
inventory_image = "shooter_smgun.png",
spec = {
automatic = true,
rounds = 100,
rounds = 10,
range = 160,
step = 20,
tool_caps = {full_punch_interval=0.1, damage_groups={fleshy=2}},
groups = {snappy=3, fleshy=3, oddly_breakable_by_hand=3},
sound = "shooter_pistol",
sounds = {
shot = "shooter_pistol",
},
bullet_image = "shooter_cap.png",
particles = {
amount = 4,
Expand Down

0 comments on commit 6b4ea38

Please sign in to comment.