allow completely disabling digging and punching
This commit is contained in:
parent
4853651cdc
commit
7a4ba34be0
23
init.lua
23
init.lua
@ -39,7 +39,9 @@ toolcap_monoids.dig_speed = item_monoids.make_monoid("dig_speed", {
|
|||||||
fold = function(values, default_dig_speeds)
|
fold = function(values, default_dig_speeds)
|
||||||
local dig_speeds = table.copy(default_dig_speeds)
|
local dig_speeds = table.copy(default_dig_speeds)
|
||||||
for _, multiplier in pairs(values) do
|
for _, multiplier in pairs(values) do
|
||||||
if type(multiplier) == "number" then
|
if multiplier == "disable" then
|
||||||
|
dig_speeds = {}
|
||||||
|
elseif type(multiplier) == "number" then
|
||||||
for _, times in pairs(dig_speeds) do
|
for _, times in pairs(dig_speeds) do
|
||||||
for i = 1, #times do
|
for i = 1, #times do
|
||||||
times[i] = times[i] * multiplier
|
times[i] = times[i] * multiplier
|
||||||
@ -47,6 +49,9 @@ toolcap_monoids.dig_speed = item_monoids.make_monoid("dig_speed", {
|
|||||||
end
|
end
|
||||||
elseif type(multiplier) == "table" then
|
elseif type(multiplier) == "table" then
|
||||||
for group, group_multiplier in pairs(multiplier) do
|
for group, group_multiplier in pairs(multiplier) do
|
||||||
|
if group_multiplier == "disable" then
|
||||||
|
dig_speeds[group] = nil
|
||||||
|
else
|
||||||
local times = dig_speeds[group]
|
local times = dig_speeds[group]
|
||||||
if times then
|
if times then
|
||||||
for i = 1, #times do
|
for i = 1, #times do
|
||||||
@ -56,6 +61,7 @@ toolcap_monoids.dig_speed = item_monoids.make_monoid("dig_speed", {
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
return dig_speeds
|
return dig_speeds
|
||||||
end,
|
end,
|
||||||
apply = function(dig_speeds, toolstack)
|
apply = function(dig_speeds, toolstack)
|
||||||
@ -125,8 +131,14 @@ toolcap_monoids.damage = item_monoids.make_monoid("damage", {
|
|||||||
fold = function(values, default_damage_groups)
|
fold = function(values, default_damage_groups)
|
||||||
local damage_groups = table.copy(default_damage_groups)
|
local damage_groups = table.copy(default_damage_groups)
|
||||||
for _, additional_damage in pairs(values) do
|
for _, additional_damage in pairs(values) do
|
||||||
|
if additional_damage == "disable" then
|
||||||
|
return {}
|
||||||
|
else
|
||||||
for group, damage in pairs(additional_damage) do
|
for group, damage in pairs(additional_damage) do
|
||||||
local total_damage = damage_groups[group] + damage
|
if damage == "disable" then
|
||||||
|
damage_groups[group] = "disabled"
|
||||||
|
elseif damage_groups[group] ~= "disabled" then
|
||||||
|
local total_damage = (damage_groups[group] or 0) + damage
|
||||||
if total_damage == 0 then
|
if total_damage == 0 then
|
||||||
damage_groups[group] = nil
|
damage_groups[group] = nil
|
||||||
else
|
else
|
||||||
@ -134,6 +146,13 @@ toolcap_monoids.damage = item_monoids.make_monoid("damage", {
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
for group, value in pairs(damage_groups) do
|
||||||
|
if value == "disabled" then
|
||||||
|
damage_groups[group] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
return damage_groups
|
return damage_groups
|
||||||
end,
|
end,
|
||||||
apply = function(damage_groups, toolstack)
|
apply = function(damage_groups, toolstack)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user