122 lines
2.6 KiB
Lua
122 lines
2.6 KiB
Lua
dmobs = {}
|
|
|
|
-- dmobs by D00Med
|
|
|
|
-- mounts api by D00Med and lib_mount api by blert2112
|
|
|
|
dofile(minetest.get_modpath("dmobs").."/api.lua")
|
|
|
|
-- Enable dragons (disable to remove tamed dragons and dragon bosses)
|
|
dmobs.dragons = minetest.settings:get_bool("dmobs.dragons")
|
|
if dmobs.dragons == nil then
|
|
dmobs.dragons = true
|
|
end
|
|
dmobs.regulars = minetest.settings:get_bool("dmobs.regulars")
|
|
if dmobs.regulars == nil then
|
|
dmobs.regulars = true
|
|
end
|
|
|
|
|
|
-- Enable fireballs/explosions
|
|
dmobs.destructive = minetest.settings:get_bool("dmobs.destructive") or false
|
|
|
|
-- Timer for the egg mechanics
|
|
dmobs.eggtimer = tonumber(minetest.settings:get("dmobs.eggtimer") ) or 100
|
|
|
|
|
|
|
|
-- Table cloning to reduce code repetition
|
|
dmobs.deepclone = function(t) -- deep-copy a table -- from https://gist.github.com/MihailJP/3931841
|
|
if type(t) ~= "table" then return t end
|
|
|
|
local target = {}
|
|
|
|
for k, v in pairs(t) do
|
|
if k ~= "__index" and type(v) == "table" then -- omit circular reference
|
|
target[k] = dmobs.deepclone(v)
|
|
else
|
|
target[k] = v
|
|
end
|
|
end
|
|
return target
|
|
end
|
|
|
|
-- Start loading ----------------------------------------------------------------------------------
|
|
|
|
local function loadmob(mobname,dir)
|
|
dir = dir or "/mobs/"
|
|
dofile(minetest.get_modpath("dmobs")..dir..mobname..".lua")
|
|
end
|
|
|
|
-- regular mobs
|
|
|
|
local mobslist = {
|
|
-- friendlies
|
|
"pig",
|
|
"panda",
|
|
"tortoise",
|
|
"golem_friendly",
|
|
"nyan",
|
|
"gnorm",
|
|
"hedgehog",
|
|
"owl",
|
|
"whale",
|
|
"badger",
|
|
"butterfly",
|
|
"elephant",
|
|
|
|
-- baddies
|
|
"pig_evil",
|
|
"fox",
|
|
"rat",
|
|
"wasps",
|
|
"treeman",
|
|
"golem",
|
|
"skeleton",
|
|
"orc",
|
|
"ogre",
|
|
}
|
|
|
|
if dmobs.regulars then
|
|
for _,mobname in pairs(mobslist) do
|
|
loadmob(mobname)
|
|
end
|
|
end
|
|
|
|
---------------
|
|
-- dragons!! --
|
|
---------------
|
|
|
|
loadmob("dragon_normal","/dragons/")
|
|
if dmobs.dragons then
|
|
loadmob("main","/dragons/")
|
|
loadmob("dragon1","/dragons/")
|
|
loadmob("dragon2","/dragons/")
|
|
loadmob("dragon3","/dragons/")
|
|
loadmob("dragon4","/dragons/")
|
|
loadmob("great_dragon","/dragons/")
|
|
loadmob("water_dragon","/dragons/")
|
|
loadmob("wyvern","/dragons/")
|
|
|
|
dofile(minetest.get_modpath("dmobs").."/dragons/eggs.lua")
|
|
end
|
|
dofile(minetest.get_modpath("dmobs").."/arrows/dragonfire.lua")
|
|
dofile(minetest.get_modpath("dmobs").."/arrows/dragonarrows.lua")
|
|
|
|
-- General arrow definitions
|
|
|
|
if dmobs.destructive == true then
|
|
dofile(minetest.get_modpath("dmobs").."/arrows/fire_explosive.lua")
|
|
else
|
|
dofile(minetest.get_modpath("dmobs").."/arrows/fire.lua")
|
|
end
|
|
|
|
dofile(minetest.get_modpath("dmobs").."/nodes.lua")
|
|
dofile(minetest.get_modpath("dmobs").."/arrows/sting.lua")
|
|
|
|
-- Spawning
|
|
|
|
|
|
dofile(minetest.get_modpath("dmobs").."/spawn.lua")
|
|
dofile(minetest.get_modpath("dmobs").."/saddle.lua")
|