minetest-mm/mods/mobs_water/mobs_crocs/init.lua
2024-12-19 12:55:40 +01:00

158 lines
3.8 KiB
Lua

-- load settings
local croc_walkers = minetest.settings:get_bool("mobs_crocs.enable_walkers", true)
local croc_floaters = minetest.settings:get_bool("mobs_crocs.enable_floaters", true)
local croc_swimmers = minetest.settings:get_bool("mobs_crocs.enable_swimmers", true)
local croc_spawn_chance = 60000
-- tweak croc spawn chance depending on which one's are enabled
croc_spawn_chance = croc_spawn_chance - (croc_walkers and 0 or 20000)
croc_spawn_chance = croc_spawn_chance - (croc_floaters and 0 or 20000)
croc_spawn_chance = croc_spawn_chance - (croc_swimmers and 0 or 20000)
-- Mineclone check
local mod_mcl = minetest.get_modpath("mcl_core")
-- crocodile definition
local croc_def = {
type = "monster",
attack_type = "dogfight",
damage = 8,
reach = 3,
hp_min = 20,
hp_max = 25,
armor = 200,
collisionbox = {-0.85, -0.30, -0.85, 0.85, 1.5, 0.85},
drawtype = "front",
visual = "mesh",
mesh = "crocodile.x",
textures = {
{"croco.png"},
{"croco2.png"}
},
visual_size = {x = 4, y = 4},
sounds = {
random = "croco"
},
fly = false,
floats = 0,
stepheight = 1,
view_range = 10,
water_damage = 0,
lava_damage = 10,
light_damage = 0,
animation = {
speed_normal = 24, speed_run = 24,
stand_start = 0, stand_end = 80,
walk_start = 81, walk_end = 170,
fly_start = 81, fly_end = 170,
run_start = 81, run_end = 170,
punch_start = 205, punch_end = 220
},
drops = {
{name = (mod_mcl and "mcl_mobitems:beef" or "mobs:meat_raw"),
chance = 1, min = 1, max = 3},
{name = (mod_mcl and "mcl_mobitems:leather" or "mobs:leather"),
chance = 1, min = 0, max = 2}
}
}
if croc_walkers then
mobs:register_mob("mobs_crocs:crocodile", table.copy(croc_def))
mobs:register_egg("mobs_crocs:crocodile", "Crocodile (walk)", "default_grass.png", 1)
end
if croc_floaters then
croc_def.reach = 2
croc_def.collisionbox = {-0.638, -0.23, -0.638, 0.638, 1.13, 0.638}
croc_def.visual_size = {x = 3, y = 3}
croc_def.floats = 1
mobs:register_mob("mobs_crocs:crocodile_float", table.copy(croc_def))
mobs:register_egg("mobs_crocs:crocodile_float", "Crocodile (float)", "default_grass.png", 1)
end
if croc_swimmers then
croc_def.reach = 1
croc_def.collisionbox = {-0.425, -0.15, -0.425, 0.425, 0.75, 0.425}
croc_def.visual_size = {x = 2, y = 2}
croc_def.fly = true
croc_def.fly_in = (mod_mcl and "mcl_core:water_source" or "default:water_source")
croc_def.fall_speed = -1
croc_def.floats = 0
mobs:register_mob("mobs_crocs:crocodile_swim", table.copy(croc_def))
mobs:register_egg("mobs_crocs:crocodile_swim", "Crocodile (swim)", "default_grass.png", 1)
end
-- Check for custom spawn.lua
local MP = minetest.get_modpath(minetest.get_current_modname()) .. "/"
local input = io.open(MP .. "spawn.lua", "r")
if input then
input:close() ; input = nil ; dofile(MP .. "spawn.lua")
else
if croc_walkers then
mobs:spawn({
name = "mobs_crocs:crocodile",
nodes = {
(mod_mcl and "group:shovely" or "group:crumbly")
},
neighbors = {
"group:water", "dryplants:juncus", "dryplants:reedmace",
(mod_mcl and "mcl_core:reeds" or "default:papyrus")
},
interval = 30,
chance = croc_spawn_chance,
min_height = 0,
max_height = 10
})
end
if croc_floaters then
mobs:spawn({
name = "mobs_crocs:crocodile_float",
nodes = {"group:water"},
neighbors = {
(mcl_core and "group:shovely" or "group:crumbly"),
"group:seaplants", "dryplants:juncus", "dryplants:reedmace",
(mod_mcl and "mcl_core:reeds" or "default:papyrus")
},
interval = 30,
chance = croc_spawn_chance,
min_height = -3,
max_height = 10
})
end
if croc_swimmers then
mobs:spawn({
name = "mobs_crocs:crocodile_swim",
nodes = {"group:water"},
neighbors = {(mcl_core and "group:shovely" or "group:crumbly")},
interval = 30,
chance = croc_spawn_chance,
min_height = -8,
max_height = 10
})
end
end
print("[MOD] Mobs Redo Crocs loaded")