pvp_revamped/override_3darmor.lua

73 lines
2.6 KiB
Lua

-- See if the mod armor_3d is a thing here.
if not minetest.global_exists("armor") then
return
end
local hasty_guard_duration = pvp_revamped.config.hasty_guard_duration
local get_player_data = pvp_revamped.get_player_data
local player_data = pvp_revamped.player_data
local player_persistent_data = pvp_revamped.player_persistent_data
local remove_text_center = pvp_revamped.remove_text_center
local get_item_group = minetest.get_item_group
local old_save_armor_inventory = armor.save_armor_inventory
local old_load_armor_inventory = armor.load_armor_inventory
local function get_inventory_armor_shield(player, inv)
local playername = player:get_player_name()
-- Create new shield inv data.
if inv then
for i, stack in pairs(inv:get_list("armor")) do
if stack:get_count() == 1 then
local name = stack:get_name()
local armor_shield = get_item_group(name, "armor_shield") or 0
if armor_shield > 0 then
local def = stack:get_definition()
local groups = def.groups
player_persistent_data[playername].inventory_armor_shield = {
name = name,
index = i,
block_pool = groups.block_pool,
duration = groups.duration,
block_cooldown = groups.block_cooldown,
hasty_guard_duration = groups.hasty_guard_duration,
groups = groups,
on_block_activate = def.on_block_activate,
on_block_deactivated = def.on_block_deactivated,
on_block_damage = def.on_block_damage,
on_guard_break = def.on_guard_break,
on_hasty_guard = def.on_hasty_guard
}
return
end
end
end
end
local data = get_player_data(playername)
data.shield = nil
player_data[playername] = data
player_persistent_data[playername].inventory_armor_shield = nil
-- Remove un-used hud element.
remove_text_center(player, "pvp_revamped:shield_pool")
end
armor.save_armor_inventory = function(self, player)
local _, inv = self:get_valid_player(player)
get_inventory_armor_shield(player, inv)
return old_save_armor_inventory(self, player)
end
armor.load_armor_inventory = function(self, player)
local _, inv = self:get_valid_player(player)
get_inventory_armor_shield(player, inv)
return old_load_armor_inventory(self, player)
end