Accomodate armor mods.

This commit is contained in:
Duane 2016-06-26 19:43:08 -05:00
parent dffcc72cbd
commit 02337a1187
5 changed files with 51 additions and 26 deletions

View file

@ -97,7 +97,6 @@ minetest.register_globalstep(function(dtime)
-- Spawn mobs in fortresses -- only when a player is near -- Spawn mobs in fortresses -- only when a player is near
local minetest_find_nodes_in_area = minetest.find_nodes_in_area local minetest_find_nodes_in_area = minetest.find_nodes_in_area
local armor_expire = fun_caves.armor_expire
local players = minetest.get_connected_players() local players = minetest.get_connected_players()
local do_fortress_spawns = (fun_caves.fortress_spawns and #fun_caves.fortress_spawns > 0) local do_fortress_spawns = (fun_caves.fortress_spawns and #fun_caves.fortress_spawns > 0)
for i = 1, #players do for i = 1, #players do
@ -156,14 +155,6 @@ minetest.register_globalstep(function(dtime)
player:set_hp(20) player:set_hp(20)
return return
else else
if fun_caves.elixir_armor and armor_expire and armor_expire[player_name] and armor_expire[player_name] < time then
local armor = player:get_armor_groups()
armor.fleshy = 100
player:set_armor_groups(armor)
minetest.chat_send_player(player_name, minetest.colorize('#FF0000', 'Your skin feels softer...'))
armor_expire[player_name] = nil
end
local minp = vector.subtract(pos, 0.5) local minp = vector.subtract(pos, 0.5)
local maxp = vector.add(pos, 0.5) local maxp = vector.add(pos, 0.5)
@ -185,6 +176,17 @@ minetest.register_globalstep(function(dtime)
if #counts > 1 then if #counts > 1 then
player:set_hp(player:get_hp() - 1) player:set_hp(player:get_hp() - 1)
end end
-- Check for elixirs. This doesn't have to be precise.
local armor_expire = fun_caves.db.armor_expire
if fun_caves.elixir_armor and armor_expire and armor_expire[player_name] and armor_expire[player_name].time < time then
local factor = armor_expire[player_name].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)
minetest.chat_send_player(player_name, minetest.colorize('#FF0000', 'Your skin feels softer...'))
armor_expire[player_name] = nil
end
end end
-- ... from hunger (even less often). -- ... from hunger (even less often).

View file

@ -2,18 +2,19 @@ minetest.register_chatcommand("armor", {
params = "", params = "",
description = "Display your armor values", description = "Display your armor values",
privs = {}, privs = {},
func = function(name, param) func = function(player_name, param)
local player = minetest.get_player_by_name(name) local player = minetest.get_player_by_name(player_name)
local armor = player:get_armor_groups() local armor = player:get_armor_groups()
if armor then if armor then
minetest.chat_send_player(name, "Armor:") minetest.chat_send_player(player_name, "Armor:")
for group, value in pairs(armor) do for group, value in pairs(armor) do
minetest.chat_send_player(name, " "..group.." "..value) minetest.chat_send_player(player_name, " "..group.." "..value)
end end
if fun_caves.armor_expire and fun_caves.armor_expire[name] then if fun_caves.db.armor_expire and fun_caves.db.armor_expire[player_name] then
local min = math.floor((fun_caves.armor_expire[name] - minetest.get_gametime()) / 60) local armor_time = fun_caves.db.armor_expire[player_name].time
minetest.chat_send_player(name, "Your elixir will expire in "..min..' minutes.') local min = math.floor((armor_time - minetest.get_gametime()) / 60)
minetest.chat_send_player(player_name, "Your armor elixir will expire in "..min..' minutes.')
end end
end end
end, end,

View file

@ -11,3 +11,4 @@ mobs_creeper?
kpgmobs? kpgmobs?
mobs_fish? mobs_fish?
dmobs? dmobs?
3d_armor?

View file

@ -1,27 +1,48 @@
fun_caves.armor_expire = {} local elixir_duration = 3600
minetest.register_on_joinplayer(function(player)
local player_name = player:get_player_name()
if fun_caves.db.armor_expire[player_name] then
local factor = fun_caves.db.armor_expire[player_name].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)
end
end)
if fun_caves.expire_elixir_on_death then if fun_caves.expire_elixir_on_death then
minetest.register_on_dieplayer(function(player) minetest.register_on_dieplayer(function(player)
local name = player:get_player_name() local player_name = player:get_player_name()
if fun_caves.armor_expire[name] then if fun_caves.db.armor_expire[player_name] then
player:set_armor_groups({fleshy = 100}) local factor = fun_caves.db.armor_expire[player_name].factor
fun_caves.armor_expire[name] = nil local armor = player:get_armor_groups()
armor.fleshy = math.min(100, math.max(1, math.ceil(armor.fleshy / factor)))
player:set_armor_groups(armor)
fun_caves.db.armor_expire[player_name] = nil
end end
end) end)
end end
local function armor(user, factor) local function armor(user, factor)
local player_name = user:get_player_name() local player_name = user:get_player_name()
local armor = user:get_armor_groups() local armor = user:get_armor_groups()
if fun_caves.armor_expire[player_name] then if fun_caves.db.armor_expire[player_name] then
armor.fleshy = 100 local old_factor = fun_caves.db.armor_expire[player_name].factor
armor.fleshy = math.min(100, math.max(1, math.ceil(armor.fleshy / factor)))
end end
armor.fleshy = armor.fleshy * factor armor.fleshy = math.min(100, math.max(1, math.ceil(armor.fleshy * factor)))
user:set_armor_groups(armor) user:set_armor_groups(armor)
minetest.chat_send_player(player_name, 'Your skin feels harder...') minetest.chat_send_player(player_name, 'Your skin feels harder...')
fun_caves.armor_expire[player_name] = minetest.get_gametime() + 3600 fun_caves.db.armor_expire[player_name] = {
time = minetest.get_gametime() + elixir_duration,
factor = factor,
}
end end
local descs = { local descs = {

View file

@ -38,7 +38,7 @@ end
if not fun_caves.db then if not fun_caves.db then
fun_caves.db = {} fun_caves.db = {}
end end
for _, i in pairs({'teleport_data', 'hunger'}) do for _, i in pairs({'teleport_data', 'hunger', 'armor_expire'}) do
if not fun_caves.db[i] then if not fun_caves.db[i] then
fun_caves.db[i] = {} fun_caves.db[i] = {}
end end