Difference between revisions of "Proposals/Damage system"
Jump to navigation
Jump to search
Rubenwardy (talk | contribs) m (Rubenwardy moved page Proposals / Damage system to Proposals/Damage system without leaving a redirect) |
|||
(9 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | + | == Old == | |
<pre> | <pre> | ||
− | |||
minetest.register_tool("default:sword_steel", { | minetest.register_tool("default:sword_steel", { | ||
description = "Steel Sword", | description = "Steel Sword", | ||
Line 15: | Line 14: | ||
} | } | ||
}) | }) | ||
− | New | + | </pre> |
+ | <pre> | ||
+ | self.object:set_armor_groups({fleshy=3}) | ||
+ | </pre> | ||
+ | |||
+ | === Damage calculation === | ||
+ | |||
+ | Ehm, you don't want to know. | ||
+ | |||
+ | == New == | ||
+ | <pre> | ||
minetest.register_tool("default:sword_steel", { | minetest.register_tool("default:sword_steel", { | ||
description = "Steel Sword", | description = "Steel Sword", | ||
Line 32: | Line 41: | ||
} | } | ||
}) | }) | ||
+ | </pre> | ||
+ | <pre> | ||
+ | self.object:set_armor_groups({fleshy=100}) | ||
</pre> | </pre> | ||
− | + | === Damage calculation === | |
+ | |||
<pre> | <pre> | ||
− | + | damage = 0 | |
− | + | foreach group in cap.damage_groups: | |
− | + | damage += cap.damage_groups[group] * limit(actual_interval / cap.full_punch_interval, 0.0, 1.0) | |
− | + | * (object.armor_groups[group] / 100.0) | |
+ | -- Where object.armor_groups[group] is 0 for inexisting values | ||
+ | return damage | ||
</pre> | </pre> | ||
+ | [[Category:Modding API]] |
Latest revision as of 21:15, 15 August 2022
Old
minetest.register_tool("default:sword_steel", { description = "Steel Sword", inventory_image = "default_tool_steelsword.png", tool_capabilities = { full_punch_interval = 0.8, max_drop_level=1, groupcaps={ fleshy={times={[1]=2.00, [2]=0.80, [3]=0.40}, uses=10, maxlevel=2}, snappy={times={[2]=0.70, [3]=0.30}, uses=40, maxlevel=1}, choppy={times={[3]=0.65}, uses=40, maxlevel=0} } } })
self.object:set_armor_groups({fleshy=3})
Damage calculation
Ehm, you don't want to know.
New
minetest.register_tool("default:sword_steel", { description = "Steel Sword", inventory_image = "default_tool_steelsword.png", tool_capabilities = { -- Digging capabilities max_drop_level = 1, groupcaps = { fleshy={times={[1]=2.00, [2]=0.80, [3]=0.40}, uses=10, maxlevel=2}, snappy={times={[2]=0.70, [3]=0.30}, uses=40, maxlevel=1}, choppy={times={[3]=0.65}, uses=40, maxlevel=0} }, -- Damage capabilities full_punch_interval = 0.8, damage_groups = {fleshy=8, snappy=4, choppy=2}, } })
self.object:set_armor_groups({fleshy=100})
Damage calculation
damage = 0 foreach group in cap.damage_groups: damage += cap.damage_groups[group] * limit(actual_interval / cap.full_punch_interval, 0.0, 1.0) * (object.armor_groups[group] / 100.0) -- Where object.armor_groups[group] is 0 for inexisting values return damage