Generalize status effects.

This commit is contained in:
Duane 2016-06-30 17:54:33 -05:00
parent e5005dd8d6
commit b486af8627
5 changed files with 76 additions and 24 deletions

View file

@ -1,11 +1,26 @@
local elixir_duration = 3600
fun_caves.register_status({
name = 'armor_elixir',
terminate = function(player)
local player_name = player:get_player_name()
local armor_elixir = fun_caves.db.status[player_name].armor_elixir
local factor = 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)
minetest.chat_send_player(player_name, minetest.colorize('#FF0000', 'Your skin feels softer...'))
fun_caves.db.status[player_name].armor_elixir = nil
end,
})
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
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)
@ -16,12 +31,12 @@ end)
if fun_caves.expire_elixir_on_death then
minetest.register_on_dieplayer(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
if 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)
fun_caves.db.armor_expire[player_name] = nil
fun_caves.db.status[player_name].armor_elixir = nil
end
end)
end
@ -31,16 +46,16 @@ local function armor(user, factor)
local player_name = user:get_player_name()
local armor = user:get_armor_groups()
if fun_caves.db.armor_expire[player_name] then
local old_factor = fun_caves.db.armor_expire[player_name].factor
if fun_caves.db.status[player_name].armor_elixir then
local old_factor = fun_caves.db.status[player_name].armor_elixir.factor
armor.fleshy = math.min(100, math.max(1, math.ceil(armor.fleshy / factor)))
end
armor.fleshy = math.min(100, math.max(1, math.ceil(armor.fleshy * factor)))
user:set_armor_groups(armor)
minetest.chat_send_player(player_name, 'Your skin feels harder...')
fun_caves.db.armor_expire[player_name] = {
time = minetest.get_gametime() + elixir_duration,
fun_caves.db.status[player_name].armor_elixir = {
remove = minetest.get_gametime() + elixir_duration,
factor = factor,
}
end