Accomodate armor mods.
This commit is contained in:
parent
dffcc72cbd
commit
02337a1187
5 changed files with 51 additions and 26 deletions
20
abms.lua
20
abms.lua
|
@ -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).
|
||||||
|
|
15
chat.lua
15
chat.lua
|
@ -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,
|
||||||
|
|
|
@ -11,3 +11,4 @@ mobs_creeper?
|
||||||
kpgmobs?
|
kpgmobs?
|
||||||
mobs_fish?
|
mobs_fish?
|
||||||
dmobs?
|
dmobs?
|
||||||
|
3d_armor?
|
||||||
|
|
39
elixir.lua
39
elixir.lua
|
@ -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 = {
|
||||||
|
|
2
init.lua
2
init.lua
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue