petz/petz/settings.lua

566 lines
12 KiB
Lua

local modpath = ...
local settings = Settings(modpath .. "/petz.conf")
local user = Settings(modpath .. "/user.conf")
-- All the settings definitions
local settings_def = {
{
name = "petz_list",
type = "string",
split = true,
default = "",
},
{
name = "remove_list",
type = "string",
split = true,
default = "",
},
{
name = "disable_monsters",
type = "boolean",
default = false,
},
--Tamagochi Mode
{
name = "tamagochi_mode",
type = "boolean",
default = true,
},
{
name = "tamagochi_check_time",
type = "number",
default = 2400,
},
{
name = "tamagochi_reduction_factor",
type = "number",
default = 0.3,
},
{
name = "tamagochi_punch_rate",
type = "number",
default = 0.3,
},
{
name = "tamagochi_feed_hunger_rate",
type = "number",
default = 0.3,
},
{
name = "tamagochi_brush_rate",
type = "number",
default = 0.2,
},
{
name = "tamagochi_beaver_oil_rate",
type = "number",
default = 0.2,
},
{
name = "tamagochi_lashing_rate",
type = "number",
default = 0.2,
},
{
name = "tamagochi_hungry_warning",
type = "number",
default = 0.5,
},
{
name = "tamagochi_check_if_player_online",
type = "boolean",
default = true,
},
{
name = "tamagochi_safe_nodes",
type = "string",
split = true,
default = "",
},
--Damage Engine
{
name = "check_enable_damage",
type = "boolean",
default = false,
},
{
name = "no_damage_in_protected",
type = "boolean",
default = false,
},
--Enviromental Damage
{
name = "air_damage",
type = "number",
default = 1,
},
{
name = "igniter_damage",
type = "number",
default = 1,
},
--Nametag Background
{
name = "tag_background",
type = "boolean",
default = false,
},
--Capture Mobs
{
name = "lasso",
type = "string",
split = false,
default = "petz:lasso",
},
{
name = "rob_mobs",
type = "boolean",
default = false,
},
--Shears
{
name = "shears",
type = "string",
split = false,
default = "petz:shears",
},
--Look at
{
name = "look_at",
type = "boolean",
default = true,
},
--Selling
{
name = "selling",
type = "boolean",
default = true,
},
--Disable Kennel
{
name = "disable_kennel",
type = "boolean",
default = false,
},
--Spawn
{
name = "spawn_interval",
type = "number",
default = 30,
},
{
name = "spawn_chance",
type = "number",
default = 0.3,
},
{
name = "max_mobs",
type = "number",
default = 60,
},
{
name = "max_per_species",
type = "number",
default = 10,
},
{
name = "spawn_peaceful_monsters_ratio",
type = "number",
default = 0.7,
delimit =
{
min = 0.0,
max = 1.0,
}
},
{
name = "no_spawn_in_protected",
type = "boolean",
default = false,
},
--Parent Search
{
name = "parent_search",
type = "boolean",
default = true,
},
--Lifetime
{
name = "lifetime",
type = "number",
default = -1,
},
{
name = "lifetime_variability",
type = "number",
default = 0.2,
},
{
name = "lifetime_only_non_tamed",
type = "boolean",
default = false,
},
{
name = "lifetime_avoid_non_breedable",
type = "boolean",
default = false,
},
--Lay Eggs
{
name = "lay_egg_timing",
type = "number",
default = 1200,
},
{
name = "max_laid_eggs",
type = "number",
default = 10,
},
{
name = "hatch_egg_timing",
type = "number",
default = 500,
},
--Misc Random Sound Chance
{
name = "misc_sound_chance",
type = "number",
default = 50,
},
{
name = "max_hear_distance",
type = "number",
default = 8,
},
--Fly Behaviour
{
name = "fly_check_time",
type = "number",
default = 3,
},
--Breed Engine
{
name = "pregnant_count",
type = "number",
default = 5,
},
{
name = "pregnancy_time",
type = "number",
default = 300,
},
{
name = "growth_time",
type = "number",
default = 1200,
},
{
name = "seed_only_owners",
type = "boolean",
default = true,
},
{
name = "disable_syringe",
type = "boolean",
default = false,
},
--Punch Effect
{
name = "colorize_punch",
type = "boolean",
default = true,
},
{
name = "punch_color",
type = "string",
split = false,
default = "#FF0000",
},
--Blood
{
name = "blood",
type = "boolean",
default = false,
},
--Poop
{
name = "poop",
type = "boolean",
default = true,
},
{
name = "poop_rate",
type = "number",
default = 600,
},
{
name = "poop_decay",
type = "number",
default = 1200,
},
--Ants
{
name = "lay_antegg_timing",
type = "number",
default = 1200,
},
{
name = "max_laid_anteggs",
type = "number",
default = 500,
},
{
name = "ant_population",
type = "number",
default = 5,
},
--Smoke particles when die
{
name = "death_effect",
type = "boolean",
default = true,
},
--Look_at
{
name = "look_at",
type = "boolean",
default = true,
},
{
name = "look_at_random",
type = "number",
default = 10,
},
--Cobweb
{
name = "cobweb_decay",
type = "number",
default = 1200,
},
--Mount
{
name = "pointable_driver",
type = "boolean",
default = true,
},
{
name = "gallop_time",
type = "number",
default = 20,
},
{
name = "gallop_recover_time",
type = "number",
default = 60,
},
--Sleeping
{
name = "sleeping",
type = "boolean",
default = true,
},
--Herding
{
name = "herding",
type = "boolean",
default = true,
},
{
name = "herding_timing",
type = "number",
default = 3,
},
{
name = "herding_members_distance",
type = "number",
default = 5,
},
{
name = "herding_shepherd_distance",
type = "number",
default = 5,
},
--Lashing
{
name = "lashing_tame_count",
type = "number",
default = 3,
},
--Spinning Wheel
{
name = "silk_to_bobbin",
type = "number",
default = 3,
},
--Bee Stuff
{
name = "initial_honey_beehive",
type = "number",
default = 3,
},
{
name = "max_honey_beehive",
type = "number",
default = 10,
},
{
name = "max_bees_beehive",
type = "number",
default = 3,
},
{
name = "bee_outing_ratio",
type = "number",
default = 20,
},
{
name = "worker_bee_delay",
type = "number",
default = 300,
},
{
name = "protect_beehive",
type = "boolean",
default = false,
},
--Weapons
{
name = "pumpkin_grenade_damage",
type = "number",
default = 8,
},
--Horseshoes
{
name = "horseshoe_speedup",
type = "number",
default = 0.2,
},
--Population Control
{
name = "max_tamed_by_owner",
type = "number",
default = -1,
},
--Lycanthropy
{
name = "lycanthropy",
type = "boolean",
default = true,
},
{
name = "lycanthropy_infection_chance_by_wolf",
type = "number",
default = 200,
},
{
name = "lycanthropy_infection_chance_by_werewolf",
type = "number",
default = 10,
},
--Server Cron Tasks
{
name = "clear_mobs_time",
type = "number",
default = 0,
},
--Go Back Home Distance
{
name = "back_home_distance",
type = "number",
default = 50,
},
}
--General Hardcoded Settings-->
petz.settings.visual = "mesh"
petz.settings.visual_size = {x=10, y=10}
petz.settings.rotate = 0
for key, value in ipairs(settings_def) do
if value.type == "string" then
if not(value.default) then
value.default = ''
end
local str = user:get(value.name) or settings:get(value.name, value.default)
if str and value.split then
str = string.split(str)
end
petz.settings[value.name] = str
elseif value.type == "number" then
if not(value.default) then
value.default = -1
end
local number = tonumber(user:get(value.name) or settings:get(value.name, value.default))
if value.delimit then
number = kitz.delimit_number(number, {min=value.delimit.min, max=value.delimit.max})
end
petz.settings[value.name] = number
elseif value.type == "boolean" then
if not(value.default) then
value.default = false
end
local bool_value = user:get_bool(value.name) --can return true/false or nil
if bool_value == nil then
petz.settings[value.name] = settings:get_bool(value.name, value.default)
else
petz.settings[value.name] = bool_value
end
end
end
--Selling
petz.settings.selling_exchange_items = string.split(user:get("selling_exchange_items") or settings:get("selling_exchange_items", ""), ",")
petz.settings.selling_exchange_items_list = {}
for i = 1, #petz.settings.selling_exchange_items do
local exchange_item = petz.settings.selling_exchange_items[i]
local exchange_item_description = minetest.registered_items[exchange_item].description
local exchange_item_inventory_image = minetest.registered_items[exchange_item].inventory_image
if exchange_item_description then
petz.settings.selling_exchange_items_list[i] = {name = exchange_item, description = exchange_item_description, inventory_image = exchange_item_inventory_image}
end
end
--Mobs Specific
for i = 1, #petz.settings["petz_list"] do --load the settings
local petz_type = petz.settings["petz_list"][i]
petz.settings[petz_type.."_spawn"] = user:get_bool(petz_type.."_spawn")
if petz.settings[petz_type.."_spawn"] == nil then
petz.settings[petz_type.."_spawn"] = settings:get_bool(petz_type.."_spawn", false)
end
petz.settings[petz_type.."_spawn_chance"] = tonumber(user:get(petz_type.."_spawn_chance") or settings:get(petz_type.."_spawn_chance")) or 0.0
petz.settings[petz_type.."_spawn_nodes"] = user:get(petz_type.."_spawn_nodes") or settings:get(petz_type.."_spawn_nodes") or ""
petz.settings[petz_type.."_spawn_biome"] = user:get(petz_type.."_spawn_biome") or settings:get(petz_type.."_spawn_biome") or "default"
petz.settings[petz_type.."_spawn_herd"] = tonumber(user:get(petz_type.."_spawn_herd") or settings:get(petz_type.."_spawn_herd")) or 1
petz.settings[petz_type.."_seasonal"] = user:get(petz_type.."_seasonal") or settings:get(petz_type.."_seasonal") or ""
petz.settings[petz_type.."_follow"] = user:get(petz_type.."_follow") or settings:get(petz_type.."_follow") or nil
petz.settings[petz_type.."_breed"] = user:get(petz_type.."_breed") or settings:get(petz_type.."_breed") or nil
petz.settings[petz_type.."_predators"] = user:get(petz_type.."_predators") or settings:get(petz_type.."_predators") or ""
petz.settings[petz_type.."_preys"] = user:get(petz_type.."_preys") or settings:get(petz_type.."_preys") or ""
petz.settings[petz_type.."_colorized"] = user:get_bool(petz_type.."_colorized")
if petz.settings[petz_type.."_colorized"] == nil then
petz.settings[petz_type.."_colorized"] = settings:get_bool(petz_type.."_colorized", false)
end
petz.settings[petz_type.."_copulation_distance"] = tonumber(user:get(petz_type.."_copulation_distance") or settings:get(petz_type.."_copulation_distance")) or 0.0
petz.settings[petz_type.."_convert"] = user:get(petz_type.."_convert") or settings:get(petz_type.."_convert") or nil
petz.settings[petz_type.."_convert_to"] = user:get(petz_type.."_convert_to") or settings:get(petz_type.."_convert_to") or nil
petz.settings[petz_type.."_convert_count"] = tonumber(user:get(petz_type.."_convert_count") or settings:get(petz_type.."_convert_count")) or nil
petz.settings[petz_type.."_lifetime"] = tonumber(user:get(petz_type.."_lifetime") or settings:get(petz_type.."_lifetime")) or nil
petz.settings[petz_type.."_disable_spawn"] = user:get_bool(petz_type.."_disable_spawn")
if petz.settings[petz_type.."_disable_spawn"] == nil then
petz.settings[petz_type.."_disable_spawn"] = settings:get_bool(petz_type.."_disable_spawn", false)
end
if petz_type == "beaver" then
petz.settings[petz_type.."_create_dam"] = user:get_bool(petz_type.."_create_dam")
if petz.settings[petz_type.."_create_dam"] == nil then
petz.settings[petz_type.."_create_dam"] = settings:get_bool(petz_type.."_create_dam", false)
end
settings:get_bool(petz_type.."_create_dam", false)
elseif petz_type == "silkworm" then
petz.settings[petz_type.."_lay_egg_on_node"] = user:get(petz_type.."_lay_egg_on_node") or settings:get(petz_type.."_lay_egg_on_node") or ""
petz.settings[petz_type.."_chrysalis_min_time"] = tonumber(user:get(petz_type.."_chrysalis_min_time") or settings:get(petz_type.."_chrysalis_min_time")) or 1200
petz.settings[petz_type.."_chrysalis_max_time"] = tonumber(user:get(petz_type.."_chrysalis_max_time") or settings:get(petz_type.."_chrysalis_min_time")) or 1500
end
end