changes to accomodate 3d_armor

This commit is contained in:
Duane 2016-07-16 05:26:12 -05:00
parent 39a38703a8
commit 89627afc78
4 changed files with 241 additions and 185 deletions

102
init.lua
View file

@ -5,6 +5,8 @@ fun_caves.light_max = 8 -- light intensity for mushroom growth
fun_caves.path = minetest.get_modpath(minetest.get_current_modname())
fun_caves.world = minetest.get_worldpath()
local armor_mod = minetest.get_modpath("3d_armor") and armor and armor.set_player_armor
fun_caves.elixir_armor = minetest.setting_getbool('fun_caves_use_armor_elixirs')
if fun_caves.elixir_armor == nil then
fun_caves.elixir_armor = true
@ -188,7 +190,7 @@ dofile(fun_caves.path .. "/spec_bomb.lua")
dofile(fun_caves.path .. "/elixir.lua") -- must go after all items are registered
dofile(fun_caves.path .. "/chat.lua")
if mobs and mobs.mod == "redo" then
if minetest.get_modpath("mobs_redo") and mobs and mobs.mod == "redo" then
dofile(fun_caves.path .. "/mobs.lua")
end
@ -276,35 +278,41 @@ if not hunger_mod then
fun_caves.hunger_change(user, hp_change)
end
end)
minetest.register_on_dieplayer(function(player)
if not (player and fun_caves.db.hunger and fun_caves.hunger_id) then
return
end
local player_name = player:get_player_name()
local pos = vector.round(player:getpos())
if not (player_name and pos) then
return
end
if not hunger_mod then
fun_caves.db.hunger[player_name] = 20
player:hud_change(fun_caves.hunger_id[player_name], 'number', 20)
end
minetest.chat_send_player(player_name, 'Your bones will lie at ('..pos.x..','..pos.y..','..pos.z..'), in ignominy, unless you collect them.')
end)
end
local armor_mod = minetest.get_modpath("3d_armor")
minetest.register_on_dieplayer(function(player)
if fun_caves.db.status and not player then
return
end
local player_name = player:get_player_name()
if not (player_name and type(player_name) == 'string' and player_name ~= '') then
return
end
if fun_caves.db.status[player_name] then
for status in pairs(fun_caves.db.status[player_name]) do
local def = fun_caves.registered_status[status]
if not def.remain_after_death then
fun_caves.remove_status(player_name, status)
end
end
end
if fun_caves.db.hunger and fun_caves.hunger_id and not hunger_mod then
fun_caves.db.hunger[player_name] = 20
player:hud_change(fun_caves.hunger_id[player_name], 'number', 20)
end
local pos = vector.round(player:getpos())
if pos then
minetest.chat_send_player(player_name, 'Your bones will lie at ('..pos.x..','..pos.y..','..pos.z..'), in ignominy, unless you collect them.')
end
end)
fun_caves.armor_id = {}
local armor_hud
if armor_mod then
fun_caves.display_armor = function()
end
else
if not armor_mod then
armor_hud = function(player)
if not (player and fun_caves.armor_id) then
return
@ -361,7 +369,7 @@ minetest.register_on_joinplayer(function(player)
local player_name = player:get_player_name()
if not player_name then
if not (player_name and type(player_name) == 'string' and player_name ~= '') then
return
end
@ -377,15 +385,35 @@ minetest.register_on_joinplayer(function(player)
hunger_hud(player)
end
if fun_caves.db.status[player_name] and fun_caves.db.status[player_name].armor_elixir then
local factor = fun_caves.db.status[player_name].armor_elixir.factor
local armor = player:get_armor_groups()
armor.fleshy = math.min(100, math.max(1, math.ceil(armor.fleshy * factor)))
player:set_armor_groups(armor)
if fun_caves.display_armor then
minetest.after(3, function()
fun_caves.display_armor(player)
end)
end
-- If there's an armor mod, we wait for it to load armor.
if fun_caves.load_armor_elixir and not armor_mod then
fun_caves.load_armor_elixir(player)
end
end)
-- support for 3d_armor
-- This may or may not work with all versions.
if armor_mod then
local old_set_player_armor = armor.set_player_armor
armor.set_player_armor = function(self, player)
old_set_player_armor(self, player)
if fun_caves.load_armor_elixir then
fun_caves.load_armor_elixir(player)
end
end
end
----------------------------------------------------------------------
-- Change old factor to current value.
if fun_caves.db.status then
for player_name, status in pairs(fun_caves.db.status) do
if status.armor_elixir and status.armor_elixir.factor then
status.armor_elixir.value = status.armor_elixir.factor * 100
status.armor_elixir.factor = nil
end
end
end
----------------------------------------------------------------------