Improve config loading and other fixes
This commit is contained in:
parent
cb922eaafd
commit
cf6122ca0c
5 changed files with 36 additions and 17 deletions
|
@ -103,6 +103,7 @@ API Documentation
|
|||
### Methods
|
||||
|
||||
* `shooter.register_weapon(name, definition)`: Register a shooting weapon. -- See "Weapon Definition"
|
||||
* `shooter.get_configuration(config)`: Loads matching config settings into a table ref `config`
|
||||
* `shooter.spawn_particles(pos, particles)`: Adds particles at the specified position
|
||||
* `particles` is an optional table of overrides for `shooter.default_particles`
|
||||
* `shooter.play_node_sound(node, pos)`: Plays the registered 'dug' sound for the node at `pos`
|
||||
|
|
|
@ -79,7 +79,7 @@ shooter.register_weapon = function(name, def)
|
|||
inventory_image = def.inventory_image,
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
if type(def.on_use) == "function" then
|
||||
itemstack = def.on_use, pointed_thing)
|
||||
itemstack = def.on_use(itemstack, user, pointed_thing)
|
||||
end
|
||||
local spec = table.copy(def.spec)
|
||||
if shooter.fire_weapon(user, itemstack, spec) then
|
||||
|
@ -115,6 +115,21 @@ shooter.register_weapon = function(name, def)
|
|||
})
|
||||
end
|
||||
|
||||
shooter.get_configuration = function(conf)
|
||||
for k, v in pairs(conf) do
|
||||
local setting = minetest.settings:get("shooter_"..k)
|
||||
if type(v) == "number" then
|
||||
setting = tonumber(setting)
|
||||
elseif type(v) == "boolean" then
|
||||
setting = minetest.settings:get_bool("shooter_"..k)
|
||||
end
|
||||
if setting ~= nil then
|
||||
conf[k] = setting
|
||||
end
|
||||
end
|
||||
return conf
|
||||
end
|
||||
|
||||
shooter.spawn_particles = function(pos, particles)
|
||||
particles = particles or {}
|
||||
if not config.enable_particle_fx == true or particles.amount == 0 then
|
||||
|
|
|
@ -50,17 +50,7 @@ end
|
|||
|
||||
-- Load Configuration
|
||||
|
||||
for name, config in pairs(shooter.config) do
|
||||
local setting = minetest.settings:get("shooter_"..name)
|
||||
if type(config) == "number" then
|
||||
setting = tonumber(setting)
|
||||
elseif type(config) == "boolean" then
|
||||
setting = minetest.settings:get_bool("shooter_"..name)
|
||||
end
|
||||
if setting ~= nil then
|
||||
shooter.config[name] = setting
|
||||
end
|
||||
end
|
||||
shooter.config = shooter.get_configuration(shooter.config)
|
||||
shooter.default_particles.texture = shooter.config.explosion_texture
|
||||
|
||||
-- Legacy Entity Support
|
||||
|
|
|
@ -5,6 +5,18 @@ Depends: shooter, wool, dye
|
|||
|
||||
Adds a crossbow with colored arrows.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Override the following default settings by adding them to your minetest.conf file
|
||||
|
||||
* `shooter_crossbow_uses = 50`: Number of crossbow uses
|
||||
* `shooter_arrow_lifetime = 180`: Arrow exipiry time in seconds
|
||||
* `shooter_arrow_fleshy = 2`: Arrow 'fleshy' damage level
|
||||
* `shooter_arrow_object_attach = false`: Attach arrows to objects when hit
|
||||
* Experimental, currently does not work well with oversized selection boxes!
|
||||
|
||||
|
||||
Crafting
|
||||
========
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
local config = {
|
||||
crossbow_uses = 50,
|
||||
arrow_lifetime = 180,
|
||||
arrow_fleshy = 2,
|
||||
arrow_object_attach = false,
|
||||
}
|
||||
|
||||
|
@ -30,13 +31,13 @@ for name, _ in pairs(config) do
|
|||
if minetest.global_exists(global) then
|
||||
config[name] = _G[global]
|
||||
end
|
||||
local setting = minetest.settings:get("shooter_"..name)
|
||||
if type(setting) == "string" then
|
||||
config[name] = tonumber(setting)
|
||||
end
|
||||
end
|
||||
|
||||
local arrow_tool_caps = {damage_groups={fleshy=2}}
|
||||
-- Load configuration
|
||||
|
||||
config = shooter.get_configuration(config)
|
||||
|
||||
local arrow_tool_caps = {damage_groups={fleshy=config.arrow_fleshy}}
|
||||
if minetest.global_exists("SHOOTER_ARROW_TOOL_CAPS") then
|
||||
arrow_tool_caps = table.copy(SHOOTER_ARROW_TOOL_CAPS)
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue