Extra error checking.
This commit is contained in:
parent
aa999e2ed5
commit
bf26b8bee1
25 changed files with 897 additions and 314 deletions
81
elixir.lua
81
elixir.lua
|
@ -74,6 +74,7 @@ local elixir_ingredients = {
|
|||
'fun_caves:orchid',
|
||||
'fun_caves:petrified_wood',
|
||||
'fun_caves:pillar_coral',
|
||||
'fun_caves:silver_lump',
|
||||
'fun_caves:small_rocks',
|
||||
'fun_caves:staghorn_coral',
|
||||
'fun_caves:stalactite',
|
||||
|
@ -148,16 +149,20 @@ if count > 15 then
|
|||
})
|
||||
|
||||
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
|
||||
if itemstack:get_name() ~= "fun_caves:elixir" then
|
||||
if not (player and itemstack and old_craft_grid and itemstack:get_name() == "fun_caves:elixir") then
|
||||
return
|
||||
end
|
||||
|
||||
local ingredients = {}
|
||||
for i = 1, player:get_inventory():get_size("craft") do
|
||||
local inv = player:get_inventory()
|
||||
if not inv then
|
||||
return
|
||||
end
|
||||
|
||||
for i = 1, inv:get_size("craft") do
|
||||
local name = old_craft_grid[i]:get_name()
|
||||
if name ~= '' and name ~= 'fun_caves:syrup' and not name:find('green_slimeball$') then
|
||||
if name ~= '' and name ~= 'fun_caves:syrup' and type(name) == 'string' and not name:find('green_slimeball$') then
|
||||
ingredients[#ingredients+1] = name
|
||||
--print(name)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
@ -167,6 +172,10 @@ end
|
|||
fun_caves.register_status({
|
||||
name = 'breathe',
|
||||
terminate = function(player)
|
||||
if not player then
|
||||
return
|
||||
end
|
||||
|
||||
local player_name = player:get_player_name()
|
||||
minetest.chat_send_player(player_name, minetest.colorize('#FF0000', 'Your breathing becomes more difficult...'))
|
||||
end,
|
||||
|
@ -176,8 +185,16 @@ minetest.register_craftitem("fun_caves:elixir_breathe", {
|
|||
description = 'Dr Robertson\'s Patented Easy Breathing Elixir',
|
||||
inventory_image = "fun_caves_elixir_breathe.png",
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
if not (itemstack and user) then
|
||||
return
|
||||
end
|
||||
|
||||
local player_name = user:get_player_name()
|
||||
fun_caves.set_status(user:get_player_name(), 'breathe', elixir_duration)
|
||||
if not (player_name and type(player_name) == 'string' and player_name ~= '') then
|
||||
return
|
||||
end
|
||||
|
||||
fun_caves.set_status(player_name, 'breathe', elixir_duration)
|
||||
minetest.chat_send_player(player_name, 'Your breathing becomes easier...')
|
||||
itemstack:take_item()
|
||||
return itemstack
|
||||
|
@ -207,6 +224,10 @@ minetest.register_craft({
|
|||
fun_caves.register_status({
|
||||
name = 'damage_elixir',
|
||||
terminate = function(player)
|
||||
if not player then
|
||||
return
|
||||
end
|
||||
|
||||
local player_name = player:get_player_name()
|
||||
minetest.chat_send_player(player_name, minetest.colorize('#FF0000', 'You feel weaker...'))
|
||||
fun_caves.db.status[player_name].damage_elixir = nil
|
||||
|
@ -217,10 +238,22 @@ fun_caves.register_status({
|
|||
fun_caves.register_status({
|
||||
name = 'armor_elixir',
|
||||
terminate = function(player)
|
||||
if 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
|
||||
|
||||
local armor_elixir = fun_caves.db.status[player_name].armor_elixir
|
||||
local factor = armor_elixir.factor
|
||||
local armor = player:get_armor_groups()
|
||||
if not (armor and armor.fleshy) then
|
||||
return
|
||||
end
|
||||
|
||||
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...'))
|
||||
|
@ -232,10 +265,22 @@ fun_caves.register_status({
|
|||
|
||||
if fun_caves.expire_elixir_on_death then
|
||||
minetest.register_on_dieplayer(function(player)
|
||||
if 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] 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()
|
||||
if not (armor and armor.fleshy) then
|
||||
return
|
||||
end
|
||||
|
||||
armor.fleshy = math.min(100, math.max(1, math.ceil(armor.fleshy / factor)))
|
||||
player:set_armor_groups(armor)
|
||||
fun_caves.db.status[player_name].armor_elixir = nil
|
||||
|
@ -246,7 +291,14 @@ end
|
|||
|
||||
|
||||
local function increase_damage(user, bonus)
|
||||
if not user then
|
||||
return
|
||||
end
|
||||
|
||||
local player_name = user:get_player_name()
|
||||
if not (player_name and type(player_name) == 'string' and player_name ~= '') then
|
||||
return
|
||||
end
|
||||
|
||||
minetest.chat_send_player(player_name, 'You feel strong...')
|
||||
fun_caves.set_status(player_name, 'damage_elixir', elixir_duration, {bonus = bonus})
|
||||
|
@ -254,8 +306,19 @@ end
|
|||
|
||||
|
||||
local function armor(user, factor)
|
||||
if not user then
|
||||
return
|
||||
end
|
||||
|
||||
local player_name = user:get_player_name()
|
||||
if not (player_name and type(player_name) == 'string' and player_name ~= '') then
|
||||
return
|
||||
end
|
||||
|
||||
local armor = user:get_armor_groups()
|
||||
if not (armor and armor.fleshy) then
|
||||
return
|
||||
end
|
||||
|
||||
if fun_caves.db.status[player_name].armor_elixir then
|
||||
local old_factor = fun_caves.db.status[player_name].armor_elixir.factor
|
||||
|
@ -297,6 +360,10 @@ if fun_caves.elixir_armor then
|
|||
groups = {dig_immediate = 3, vessel = 1},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
if not (itemstack and user) then
|
||||
return
|
||||
end
|
||||
|
||||
armor(user, value)
|
||||
itemstack:take_item()
|
||||
return itemstack
|
||||
|
@ -347,6 +414,10 @@ for _, desc in pairs(descs) do
|
|||
groups = {dig_immediate = 3, vessel = 1},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
if not (itemstack and user) then
|
||||
return
|
||||
end
|
||||
|
||||
increase_damage(user, bonus)
|
||||
itemstack:take_item()
|
||||
return itemstack
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue