-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ammo.lua
59 lines (50 loc) · 1.75 KB
/
ammo.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
local f = string.format
local S = y_bows.S
function y_bows.register_ammo(name, ammo_group, def)
local parameters = table.copy(def.parameters or {})
parameters.pickup_item = { item = name }
local damage = 0
for _, value in pairs(((parameters.punch or {}).tool_capabilities or {}).damage_groups or {}) do
damage = damage + value
end
local drag = (parameters.drag or {}).coefficient or 0
minetest.register_craftitem(name, {
description = f(
"%s\n%s\n%s",
def.description,
minetest.colorize("green", S("damage: @1", damage)),
minetest.colorize("cyan", S("drag: @1", drag))
),
short_description = def.description,
inventory_image = def.inventory_image,
groups = { [ammo_group] = 1 },
light_source = def.light_source,
_y_bows_parameters = parameters,
_y_bows_properties = def.properties,
})
y_bows.util.register_craft_if_valid(name, def.recipe)
end
function y_bows.register_item_as_ammo(name, ammo_group, def)
local existing_def = assert(minetest.registered_items[name], f("item %s doesn't exist", name))
local parameters = table.copy(def.parameters or {})
parameters.pickup_item = { item = name }
local damage = 0
for _, value in pairs(((parameters.punch or {}).tool_capabilities or {}).damage_groups or {}) do
damage = damage + value
end
local drag = (parameters.drag or {}).coefficient or 0
local groups = table.copy(existing_def.groups)
groups[ammo_group] = 1
minetest.override_item(name, {
description = f(
"%s\n%s\n%s",
existing_def.description,
minetest.colorize("green", S("damage: @1", damage)),
minetest.colorize("cyan", S("drag: @1", drag))
),
short_description = futil.get_safe_short_description(name),
groups = groups,
_y_bows_parameters = parameters,
_y_bows_properties = def.properties,
})
end