Compare commits

...

104 Commits

Author SHA1 Message Date
bri cassa 7893b94f6e Merge remote-tracking branch 'upstream/master' 2023-12-13 21:01:04 +01:00
tenplus1 130f46c81f fix obsidian flan arrow 2023-12-04 07:49:50 +00:00
bri cassa d4d8cc526a Merge remote-tracking branch 'upstream/master' 2023-11-22 23:55:26 +01:00
tenplus1 a1030bf7d5 use api functions for spider 2023-10-13 08:40:10 +01:00
tenplus1 5adb1caf70 use get_properties to return collisionbox 2023-10-03 15:11:56 +01:00
tenplus1 2661e900e7 tidy code 2023-08-13 11:02:47 +01:00
tenplus1 0c4794c446 remove intllib 2023-08-08 16:51:31 +01:00
tenplus1 7a5d019d8a added settings to enable/disable monsters. 2023-08-07 07:10:23 +01:00
tenplus1 51d7677e65 add land_guard to spawn_example.lua file for custom spawns 2023-06-19 16:58:47 +01:00
bri cassa c632143fad Merge remote-tracking branch 'upstream/master' 2023-06-07 22:02:13 +02:00
tenplus1 885ba57efb new fireball texture 2023-06-06 17:59:28 +01:00
tenplus1 a9d4b1f8f3 update license.txt 2023-06-06 15:51:30 +01:00
tenplus1 4a0e6b2877 remember mese monster type 2023-05-28 08:06:37 +01:00
tenplus1 79dec9264c readme updated (thanks eschan145) 2023-03-27 11:00:04 +01:00
tenplus1 b7c5e8b471 disable friendly_fire for dungeon master (they can take a fireball) 2023-03-26 08:34:32 +01:00
tenplus1 641dfc4530 sand and stone monster models updated along with textures (thanks Sirrobzeroone) 2023-03-22 07:53:11 +00:00
tenplus1 0d17a08762 remove any older model mese monsters that haven't already despawned. 2023-01-11 08:29:39 +00:00
tenplus1 bceda9c75f fix crash when no default 2023-01-06 10:06:09 +00:00
tenplus1 6162be9910 update license.txt 2022-12-21 08:21:09 +00:00
tenplus1 463e69a444 update license.txt 2022-12-20 09:17:56 +00:00
tenplus1 1b197f9ae1 update license.txt 2022-12-10 13:14:17 +00:00
tenplus1 1c2daeb102 update license.txt 2022-12-10 12:50:35 +00:00
tenplus1 49639831a9 update license.txt 2022-12-10 12:30:14 +00:00
tenplus1 78354ea87f fix lava_pick outputs (thanks fluxionary) 2022-10-25 14:30:38 +01:00
tenplus1 b85d9bf21e update screenshot 2022-10-25 12:04:23 +01:00
tenplus1 35d0c2b051 change cobweb texture (mc issue) 2022-10-25 11:48:59 +01:00
tenplus1 ba83e28c31 change tree monster textures (mc issues) 2022-10-25 11:43:00 +01:00
tenplus1 84a9b630ce code tidy 2022-09-27 11:27:47 +01:00
bri cassa 00146154b5 Merge remote-tracking branch 'upstream/master' 2022-08-26 15:18:27 +02:00
tenplus1 1ee293dae0 add screenshot.jpg 2022-08-25 13:24:32 +01:00
tenplus1 4d88f45109 place lava flan death flame in air position only 2022-08-21 08:01:07 +01:00
tenplus1 a097ee9388 harden lava flan code 2022-08-11 07:39:25 +01:00
tenplus1 1ba32b39eb add can_leap setting to mese monster 2022-07-12 08:38:04 +01:00
tenplus1 7ade16b4d1 add arrow_override changes to mese monster arrows to make them stronger/faster the deeper you go 2022-07-07 15:58:07 +01:00
tenplus1 4be774624c Added new mese monster types by SirrobZeroone 2022-07-07 09:06:42 +01:00
bri cassa b3e50d295c Merge remote-tracking branch 'upstream/master' 2022-01-22 20:06:05 +01:00
tenplus1 ae0e50bb69 add spanish translation (thanks mckaygerhard) 2022-01-22 08:30:02 +00:00
tenplus1 f792de52af update translation checks 2022-01-20 08:56:28 +00:00
bri cassa cab9cf25c6 Merge remote-tracking branch 'upstream/master' 2021-11-26 21:44:00 +01:00
tenplus1 23e24bff06 fix intllib return 2021-11-14 14:21:53 +00:00
bri cassa f39fc78e4a Merge remote-tracking branch 'upstream/master' 2021-09-21 23:09:27 +02:00
tenplus1 cd201150b6 add nether varients of dungeon master 2021-09-01 08:05:13 +01:00
bri cassa 70d92995bb Merge remote-tracking branch 'upstream/master' 2021-07-26 22:23:25 +02:00
tenplus1 1c4ce9e402 make default optional dependency 2021-07-24 22:21:37 +01:00
bri cassa 69ca619580 Merge remote-tracking branch 'upstream/master' 2021-06-20 17:16:01 +02:00
tenplus1 5009e7439d lava flan heals while in lava 2021-06-14 09:38:32 +01:00
tenplus1 9b3c1e156f fire spirit additions 2021-06-07 17:45:41 +01:00
tenplus1 949bfec484 initial fire spirit upload 2021-05-12 10:11:34 +01:00
bri cassa 7bd9080eda Merge remote-tracking branch 'upstream/master' 2021-04-08 13:29:19 +02:00
tenplus1 e39d06b2d8 add fire damage to obsidian flan 2021-04-05 08:56:12 +01:00
tenplus1 b9666dffb4 add fire_damage = 0 to lava flan 2021-04-05 08:51:13 +01:00
bri cassa 2baa1cc77d Merge remote-tracking branch 'upstream/master' 2021-03-12 12:30:34 +01:00
tenplus1 095d8753e0 add Tree Creeper 2021-03-02 18:04:01 +00:00
tenplus1 476ad97935 update mese monster texture 2021-03-02 13:54:26 +00:00
tenplus1 5723ba508e add Land Guards 2021-03-02 13:35:17 +00:00
tenplus1 57f40cf4b1 make cave spider tiny 2021-03-01 19:47:47 +00:00
tenplus1 22308b4c94 add different dirt and stone type monsters 2021-03-01 12:27:12 +00:00
tenplus1 05ccc87150 add additional tree monster types for ethereal trees 2021-03-01 11:00:57 +00:00
tenplus1 b1a94c5abc update spider types, have jungle tarantula spit webs 2021-03-01 10:24:56 +00:00
Sys Quatre 2129b4731f Merge remote-tracking branch 'upstream/master' 2021-02-07 13:11:50 +01:00
tenplus1 9835105cf9 fix typo in mod.conf 2021-02-01 08:07:59 +00:00
Sys Quatre c8003524d6 Merge remote-tracking branch 'upstream/master' 2021-01-29 17:44:57 +01:00
tenplus1 dbc501da64 lava orb and axe items glow 2021-01-28 14:38:57 +00:00
Sys Quatre 4a3bf56409 Merge remote-tracking branch 'upstream/master' 2021-01-23 12:56:11 +01:00
tenplus1 2c88a98ca3 update mod.conf info 2021-01-21 10:15:19 +00:00
Sys Quatre 5297dfbbdf Merge remote-tracking branch 'upstream/master' 2020-09-21 18:06:40 +02:00
tenplus1 4018a5c8e8 Added spawn.lua check for custom mob spawns, example file included 2020-09-21 10:03:08 +01:00
Sys Quatre 1e72bfd920 Merge remote-tracking branch 'upstream/master' 2020-09-04 21:40:14 +02:00
tenplus1 144c851207 convert mobs_fireball.ogg to mono 2020-09-04 09:14:27 +01:00
Sys Quatre 057177203a Merge remote-tracking branch 'upstream/master' 2020-08-29 20:31:49 +02:00
tenplus1 84f1ff383a mt5.x translations added/updated (thanks dacmot) 2020-08-29 09:35:58 +01:00
Sys Quatre 6b69a3e23d Merge remote-tracking branch 'upstream/master' 2020-08-25 20:06:32 +02:00
tenplus1 a42877ef78 added 5.x translations 2020-08-25 10:53:02 +01:00
tenplus1 deea6597da update translation detection 2020-08-25 09:56:43 +01:00
Sys Quatre 7be2f3bd63 Merge remote-tracking branch 'upstream/master' 2020-08-19 21:24:25 +02:00
tenplus1 fd1807e746 updated locale (thanks IFRFSX) 2020-08-19 13:03:32 +01:00
Sys Quatre ca10e7e1f6 Merge remote-tracking branch 'upstream/master' 2020-07-17 22:40:01 +02:00
TenPlus1 3c3d65796a since lava flan live in lava, set self.fly_in so they dont slow down when moving around 2020-06-28 14:52:17 +01:00
tenplus1 a39eec8822 use mobs:add_mob() to add obsidian flan, also lava damages ob flan 2020-06-22 21:24:57 +01:00
tenplus1 a6b6795eb4 tweak obsidian flan node breakage 2020-06-21 20:52:52 +01:00
Sys Quatre 592c4aca50 Merge remote-tracking branch 'upstream/master' into nalc-1.2-dev 2020-06-20 15:39:41 +02:00
tenplus1 475e0f5624 use global particle effect function for sand/lava monster 2020-06-20 10:08:15 +01:00
tenplus1 4477466120 tidy on_die function, add sounds 2020-06-19 20:44:52 +01:00
tenplus1 abae5bada4 add obsidian flan 2020-06-19 20:26:21 +01:00
tenplus1 4f135de146 spider has new jump attack 2020-06-19 16:07:55 +01:00
tenplus1 b6591fa9a7 tweak spider climbing feature 2020-05-23 14:56:00 +01:00
Sys Quatre 55d3d4b547 Merge remote-tracking branch 'upstream/master' into nalc-1.2-dev 2020-05-09 14:24:36 +02:00
TenPlus1 674afa91e5 nil check for player when using lava pick 2020-05-08 20:40:08 +01:00
TenPlus1 2fdfd7f84c deinterlaced lava flan image 2020-04-23 20:05:55 +01:00
TenPlus1 ded074939a fix lava flan textures to remove annoying interlace handling errors 2020-04-23 08:51:38 +01:00
tenplus1 ffc136296e add sanity check to spiders 2020-04-11 17:56:51 +01:00
TenPlus1 33a314934a spiders now spawn on ethereal's cold dirt 2020-04-07 09:22:37 +01:00
Sys Quatre 5674b6328e Merge remote-tracking branch 'upstream/master' into nalc-1.2-dev 2020-02-29 18:08:15 +01:00
TenPlus1 2663922651 chinese local added (thanks IFRFSX) 2020-02-14 11:24:22 +00:00
TenPlus1 cd5909697b lava flan glow in dark 2020-01-09 09:42:49 +00:00
Sys Quatre 3ddd27e515 Merge branch 'master' of yunohost.local:mtcontrib/mobs_monster into nalc-1.2-dev 2019-12-22 13:58:23 +01:00
TenPlus1 e6d4b185b3 code tidy ' to " 2019-08-05 09:52:25 +01:00
TenPlus1 822450e2c7 add pickaxe group to lava pick 2019-06-03 10:02:26 +01:00
Sys Quatre 133766d0ab Merge branch 'master' into nalc-1.2 2019-05-10 00:58:32 +02:00
TenPlus1 947adeeb79 update license.txt 2019-04-18 14:31:46 +01:00
TenPlus1 6cf5b95fc9 lava pick heals lava flan when hit, increased water damage 2019-02-23 10:36:37 +00:00
TenPlus1 86e5f4ed09 tweaked tool damage for sand, stone and tree monsters 2019-02-11 09:27:22 +00:00
TenPlus1 eeb6a8e138 added mobs:force_capture() example to sand monster 2018-12-20 11:14:52 +00:00
TenPlus1 d6420071ab add do_custom function so that spiders can climb walls 2018-11-29 12:15:56 +00:00
81 changed files with 1853 additions and 3581 deletions

View File

@ -1,5 +0,0 @@
default
mobs
intllib?
lucky_block?
toolranks?

View File

@ -1 +0,0 @@
Adds many types of monster.

View File

@ -1,5 +1,15 @@
-- Translation support
local S = minetest.get_translator("mobs_monster")
local S = mobs.intllib
local dirt_types = {
{ nodes = {"ethereal:dry_dirt"},
skins = {"mobs_dirt_monster3.png"},
drops = {
{name = "ethereal:dry_dirt", chance = 1, min = 0, max = 2}
}
}
}
-- Dirt Monster by PilzAdam
@ -19,11 +29,12 @@ mobs:register_mob("mobs_monster:dirt_monster", {
mesh = "mobs_stone_monster.b3d",
textures = {
{"mobs_dirt_monster.png"},
{"mobs_dirt_monster2.png"}
},
blood_texture = "default_dirt.png",
makes_footstep_sound = true,
sounds = {
random = "mobs_dirtmonster",
random = "mobs_dirtmonster"
},
view_range = 15,
walk_velocity = 1,
@ -47,28 +58,51 @@ mobs:register_mob("mobs_monster:dirt_monster", {
run_start = 40,
run_end = 63,
punch_start = 40,
punch_end = 63,
punch_end = 63
},
-- check surrounding nodes and spawn a specific monster
on_spawn = function(self)
local pos = self.object:get_pos() ; pos.y = pos.y - 1
local tmp
for n = 1, #dirt_types do
tmp = dirt_types[n]
if minetest.find_node_near(pos, 1, tmp.nodes) then
self.base_texture = tmp.skins
self.object:set_properties({textures = tmp.skins})
if tmp.drops then
self.drops = tmp.drops
end
return true
end
end
return true -- run only once, false/nil runs every activation
end
})
local spawn_on = "default:dirt_with_grass"
if not mobs.custom_spawn_monster then
if minetest.get_modpath("ethereal") then
spawn_on = "ethereal:gray_dirt"
mobs:spawn({
name = "mobs_monster:dirt_monster",
nodes = {"default:dirt_with_grass", "ethereal:gray_dirt", "ethereal:dry_dirt"},
min_light = 0,
max_light = 7,
chance = 6000,
active_object_count = 2,
min_height = 0,
day_toggle = false
})
end
mobs:spawn({
name = "mobs_monster:dirt_monster",
nodes = {spawn_on},
min_light = 0,
max_light = 7,
chance = 6000,
active_object_count = 2,
min_height = 0,
day_toggle = false,
})
mobs:register_egg("mobs_monster:dirt_monster", S("Dirt Monster"), "default_dirt.png", 1)

View File

@ -1,5 +1,15 @@
-- Translation support
local S = minetest.get_translator("mobs_monster")
local S = mobs.intllib
local master_types = {
{ nodes = {"nether:rack"},
skins = {"mobs_dungeon_master_nether.png"},
},
{ nodes = {"nether:rack_deep"},
skins = {"mobs_dungeon_master_netherdeep.png"},
}
}
-- Dungeon Master by PilzAdam
@ -15,9 +25,10 @@ mobs:register_mob("mobs_monster:dungeon_master", {
reach = 3,
shoot_interval = 2.2,
arrow = "mobs_monster:fireball",
friendly_fire = false,
shoot_offset = 1,
hp_min = 22,
hp_max = 45,
hp_min = 42,
hp_max = 75,
armor = 60,
collisionbox = {-0.7, -1, -0.7, 0.7, 1.6, 0.7},
visual = "mesh",
@ -25,12 +36,12 @@ mobs:register_mob("mobs_monster:dungeon_master", {
textures = {
{"mobs_dungeon_master.png"},
{"mobs_dungeon_master2.png"},
{"mobs_dungeon_master3.png"},
{"mobs_dungeon_master3.png"}
},
makes_footstep_sound = true,
sounds = {
random = "mobs_dungeonmaster",
shoot_attack = "mobs_fireball",
shoot_attack = "mobs_fireball"
},
walk_velocity = 1,
run_velocity = 3,
@ -60,19 +71,47 @@ mobs:register_mob("mobs_monster:dungeon_master", {
shoot_start = 36,
shoot_end = 48,
speed_normal = 15,
speed_run = 15,
speed_run = 15
},
-- check surrounding nodes and spawn a specific monster
on_spawn = function(self)
local pos = self.object:get_pos() ; pos.y = pos.y - 1
local tmp
for n = 1, #master_types do
tmp = master_types[n]
if minetest.find_node_near(pos, 1, tmp.nodes) then
self.base_texture = tmp.skins
self.object:set_properties({textures = tmp.skins})
if tmp.drops then
self.drops = tmp.drops
end
return true
end
end
return true -- run only once, false/nil runs every activation
end
})
mobs:spawn({
name = "mobs_monster:dungeon_master",
nodes = {"default:stone", "default:sandstone", "nether:netherrack"},
max_light = 5,
chance = 9000,
active_object_count = 1,
max_height = -70,
})
if not mobs.custom_spawn_monster then
mobs:spawn({
name = "mobs_monster:dungeon_master",
nodes = {"default:stone", "nether:rack", "nether:rack_deep", "hell:hellrack"},
max_light = 5,
chance = 9000,
active_object_count = 1,
max_height = -70,
})
end
mobs:register_egg("mobs_monster:dungeon_master", S("Dungeon Master"), "fire_basic_flame.png", 1, true)
@ -114,7 +153,7 @@ mobs:register_arrow("mobs_monster:fireball", {
self.object:set_velocity({
x = dir.x * self.velocity,
y = dir.y * self.velocity,
z = dir.z * self.velocity,
z = dir.z * self.velocity
})
end
end
@ -124,14 +163,14 @@ mobs:register_arrow("mobs_monster:fireball", {
hit_player = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 8},
damage_groups = {fleshy = 8}
}, nil)
end,
hit_mob = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 8},
damage_groups = {fleshy = 8}
}, nil)
end,

99
fire_spirit.lua Normal file
View File

@ -0,0 +1,99 @@
-- Translation support
local S = minetest.get_translator("mobs_monster")
local mob_drops = {
{name = "fireflies:firefly", chance = 1, min = 1, max = 1}
}
if minetest.get_modpath("ethereal") then
table.insert(mob_drops,
{name = "ethereal:fire_dust", chance = 1, min = 1, max = 1})
end
-- Fire Spirit
mobs:register_mob("mobs_monster:fire_spirit", {
type = "monster",
passive = false,
attack_type = "dogfight",
pathfinding = true,
reach = 2,
damage = 4,
hp_min = 25,
hp_max = 45,
armor = 100,
collisionbox = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
visual_scale = {x = 0.5, y = 0.5, z = 0.5},
visual = "sprite",
textures = {
{"mobs_fire_spirit.png"}
},
glow = 14,
blood_texture = "fire_basic_flame.png",
immune_to = {
{"bucket:bucket_water", 1},
{"bucket:bucket_river_water", 1},
{"all"}
},
makes_footstep_sound = false,
sounds = {
random = "fire_fire",
damage = "fire_extinguish_flame",
death = "fire_extinguish_flame"
},
view_range = 14,
walk_velocity = 2,
run_velocity = 3,
jump = true,
jump_height = 6,
drops = mob_drops,
water_damage = 1,
lava_damage = 0,
fire_damage = 0,
light_damage = 0,
fall_damage = false,
fear_height = 8,
animation = {},
on_die = function(self, pos)
mobs:effect(pos, 20, "tnt_smoke.png", 3, 5, 2, 0.5, nil, false)
self.object:remove()
end,
do_custom = function(self, dtime)
self.flame_timer = (self.flame_timer or 0) + dtime
if self.flame_timer < 0.25 then
return
end
self.flame_timer = 0
local pos = self.object:get_pos()
-- pos, amount, texture, min_size, max_size, radius, gravity, glow, fall
mobs:effect(pos, 5, "fire_basic_flame.png", 1, 2, 0.1, 0.2, 14, nil)
end
})
if not mobs.custom_spawn_monster then
mobs:spawn({
name = "mobs_monster:fire_spirit",
nodes = {"default:obsidian", "caverealms:hot_cobble"},
neighbors = {"group:fire"},
min_light = 12,
max_light = 15,
chance = 1500,
active_object_count = 1,
max_height = -150
})
end
mobs:register_egg("mobs_monster:fire_spirit", S("Fire Spirit"), "fire_basic_flame.png", 1)

View File

@ -1,34 +1,56 @@
local path = minetest.get_modpath("mobs_monster")
-- Load support for intllib.
local path = minetest.get_modpath(minetest.get_current_modname()) .. "/"
-- Intllib
local S
if minetest.global_exists("intllib") then
if intllib.make_gettext_pair then
-- New method using gettext.
S = intllib.make_gettext_pair()
else
-- Old method using text files.
S = intllib.Getter()
end
else
S = function(s) return s end
-- Translation support
local S = minetest.get_translator("mobs_monster")
-- Check for custom mob spawn file
local input = io.open(path .. "spawn.lua", "r")
if input then
mobs.custom_spawn_monster = true
input:close()
input = nil
end
-- helper function
local function ddoo(mob)
if minetest.settings:get_bool("mobs_monster." .. mob) == false then
print("[Mobs_Monster] " .. mob .. " disabled!")
return
end
dofile(path .. mob .. ".lua")
end
mobs.intllib = S
-- Monsters
ddoo("dirt_monster") -- PilzAdam
ddoo("dungeon_master")
ddoo("oerkki")
ddoo("sand_monster")
ddoo("stone_monster")
ddoo("tree_monster")
ddoo("lava_flan") -- Zeg9
ddoo("mese_monster")
ddoo("spider") -- AspireMint
ddoo("land_guard")
ddoo("fire_spirit")
dofile(path .. "minotaur.lua") -- NALC(sys4 fork MFF) Kalabasa
dofile(path .. "/dirt_monster.lua") -- PilzAdam
dofile(path .. "/dungeon_master.lua")
dofile(path .. "/oerkki.lua")
dofile(path .. "/sand_monster.lua")
dofile(path .. "/stone_monster.lua")
dofile(path .. "/tree_monster.lua")
dofile(path .. "/lava_flan.lua") -- Zeg9
dofile(path .. "/mese_monster.lua")
dofile(path .. "/spider.lua") -- AspireMint
dofile(path .. "/minotaur.lua") -- NALC(sys4 fork MFF) Kalabasa
dofile(path .. "/lucky_block.lua")
-- Load custom spawning
if mobs.custom_spawn_monster then
dofile(path .. "spawn.lua")
end
print ("[MOD] Mobs Redo 'Monsters' loaded")
-- Lucky Blocks
if minetest.get_modpath("lucky_block") then
dofile(path .. "lucky_block.lua")
end
print ("[MOD] Mobs Monster loaded")

126
land_guard.lua Normal file
View File

@ -0,0 +1,126 @@
-- Translation support
local S = minetest.get_translator("mobs_monster")
local guard_types = {
{ nodes = {
"default:snow", "default:snowblock", "default:ice",
"default:dirt_with_snow"
},
skins = {"mobs_land_guard6.png", "mobs_land_guard7.png", "mobs_land_guard8.png"},
drops = {
{name = "default:ice", chance = 1, min = 1, max = 4},
{name = "mobs:leather", chance = 2, min = 0, max = 2},
{name = "default:diamond", chance = 4, min = 0, max = 2},
},
},
{ nodes = {
"ethereal:dry_dirt", "default:sand", "default:desert_sand",
"default:dry_dirt_with_dry_grass", "default:dry_dirt"
},
skins = {"mobs_land_guard4.png", "mobs_land_guard5.png"},
drops = {
{name = "default:sandstone", chance = 1, min = 1, max = 4},
{name = "mobs:leather", chance = 2, min = 0, max = 2},
{name = "default:mese_crystal", chance = 4, min = 0, max = 2},
},
}
}
-- Land Guard
mobs:register_mob("mobs_monster:land_guard", {
type = "monster",
passive = false,
attack_type = "dogfight",
group_attack = true,
reach = 3,
damage = 15,
hp_min = 30,
hp_max = 65,
armor = 50,
collisionbox = {-0.5, -1.01, -0.5, 0.5, 1.6, 0.5},
visual_size = {x = 1, y = 1},
visual = "mesh",
mesh = "mobs_dungeon_master.b3d",
textures = {
{"mobs_land_guard.png"},
{"mobs_land_guard2.png"},
{"mobs_land_guard3.png"}
},
makes_footstep_sound = true,
sounds = {
random = "mobs_dungeonmaster",
},
walk_velocity = 1.5,
run_velocity = 3.4,
jump = true,
jump_height = 2.0,
floats = 0,
view_range = 15,
drops = {
{name = "mobs:leather", chance = 2, min = 0, max = 2},
{name = "default:mese_crystal", chance = 3, min = 0, max = 2},
{name = "default:diamond", chance = 4, min = 0, max = 1},
},
water_damage = 0,
lava_damage = 6,
light_damage = 0,
fear_height = 8,
animation = {
stand_start = 0,
stand_end = 19,
walk_start = 20,
walk_end = 35,
punch_start = 36,
punch_end = 48,
speed_normal = 15,
speed_run = 20,
},
-- check surrounding nodes and spawn a specific guard
on_spawn = function(self)
local pos = self.object:get_pos() ; pos.y = pos.y - 1
local tmp
for n = 1, #guard_types do
tmp = guard_types[n]
if minetest.find_node_near(pos, 1, tmp.nodes) then
self.base_texture = { tmp.skins[math.random(#tmp.skins)] }
self.object:set_properties({textures = self.base_texture})
self.docile_by_day = tmp.docile
if tmp.drops then
self.drops = tmp.drops
end
return true
end
end
return true -- run only once, false/nil runs every activation
end,
})
if not mobs.custom_spawn_monster then
mobs:spawn({
name = "mobs_monster:land_guard",
nodes = {
"default:snow", "default:ice", "default:stone",
"default:dry_dirt_with_dry_grass", "ethereal:dry_dirt"
},
max_light = 7,
chance = 25000,
min_height = 0,
active_object_count = 1,
})
end
mobs:register_egg("mobs_monster:land_guard", S("Land Guard"), "default_ice.png", 1)

View File

@ -1,6 +1,5 @@
local S = mobs.intllib
-- Translation support
local S = minetest.get_translator("mobs_monster")
-- Lava Flan by Zeg9 (additional textures by JurajVajda)
@ -19,13 +18,13 @@ mobs:register_mob("mobs_monster:lava_flan", {
textures = {
{"zmobs_lava_flan.png"},
{"zmobs_lava_flan2.png"},
{"zmobs_lava_flan3.png"},
{"zmobs_lava_flan3.png"}
},
blood_texture = "fire_basic_flame.png",
makes_footstep_sound = false,
sounds = {
random = "mobs_lavaflan",
war_cry = "mobs_lavaflan",
war_cry = "mobs_lavaflan"
},
walk_velocity = 0.5,
run_velocity = 2,
@ -33,11 +32,16 @@ mobs:register_mob("mobs_monster:lava_flan", {
view_range = 10,
floats = 1,
drops = {
{name = "mobs:lava_orb", chance = 15, min = 1, max = 1},
{name = "mobs:lava_orb", chance = 15, min = 1, max = 1}
},
water_damage = 5,
lava_damage = 0,
water_damage = 8,
lava_damage = -1,
fire_damage = 0,
light_damage = 0,
immune_to = {
{"mobs:pick_lava", -2} -- lava pick heals 2 health
},
fly_in = {"default:lava_source", "default:lava_flowing"},
animation = {
speed_normal = 15,
speed_run = 15,
@ -48,53 +52,75 @@ mobs:register_mob("mobs_monster:lava_flan", {
run_start = 20,
run_end = 28,
punch_start = 20,
punch_end = 28,
punch_end = 28
},
-- custom death function
on_die = function(self, pos)
if minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "fire:basic_flame"})
local cod = self.cause_of_death or {}
local def = cod.node and minetest.registered_nodes[cod.node]
if def and def.groups and def.groups.water then
pos.y = pos.y + 1
mobs:effect(pos, 40, "tnt_smoke.png", 3, 5, 2, 0.5, nil, false)
minetest.sound_play("fire_extinguish_flame",
{pos = pos, max_hear_distance = 12, gain = 1.5}, true)
self.object:remove()
if math.random(4) == 1 then
mobs:add_mob(pos, {name = "mobs_monster:obsidian_flan"})
end
else
mobs:effect(pos, 40, "fire_basic_flame.png", 2, 3, 2, 5, 10, nil)
local nods = minetest.find_nodes_in_area(
{x = pos.x, y = pos.y + 1, z = pos.z},
{x = pos.x, y = pos.y, z = pos.z}, "air")
-- place flame if position empty and flame exists
if nods and #nods > 0
and minetest.registered_nodes["fire:basic_flame"] then
pos = nods[math.random(#nods)]
minetest.set_node(pos, {name = "fire:basic_flame"})
end
self.object:remove()
end
self.object:remove()
minetest.add_particlespawner({
amount = 20,
time = 0.25,
minpos = pos,
maxpos = pos,
minvel = {x = -2, y = -2, z = -2},
maxvel = {x = 2, y = 2, z = 2},
minacc = {x = 0, y = -10, z = 0},
maxacc = {x = 0, y = -10, z = 0},
minexptime = 0.1,
maxexptime = 1,
minsize = 1.0,
maxsize = 2.0,
texture = "fire_basic_flame.png",
})
end,
glow = 10
})
if not mobs.custom_spawn_monster then
mobs:spawn({
name = "mobs_monster:lava_flan",
nodes = {"default:lava_source"},
chance = 1500,
active_object_count = 1,
max_height = 0,
max_height = 0
})
end
-- add spawn egg
mobs:register_egg("mobs_monster:lava_flan", S("Lava Flan"), "default_lava.png", 1)
mobs:alias_mob("mobs:lava_flan", "mobs_monster:lava_flan") -- compatibility
-- compatibility alias, only needed for servers who used the old mobs mod
mobs:alias_mob("mobs:lava_flan", "mobs_monster:lava_flan")
-- lava orb
minetest.register_craftitem(":mobs:lava_orb", {
description = S("Lava orb"),
inventory_image = "zmobs_lava_orb.png",
light_source = 14
})
minetest.register_alias("zmobs:lava_orb", "mobs:lava_orb")
@ -102,7 +128,7 @@ minetest.register_alias("zmobs:lava_orb", "mobs:lava_orb")
minetest.register_craft({
type = "fuel",
recipe = "mobs:lava_orb",
burntime = 80,
burntime = 80
})
@ -112,6 +138,9 @@ local old_handle_node_drops = minetest.handle_node_drops
function minetest.handle_node_drops(pos, drops, digger)
-- does player exist?
if not digger then return end
-- are we holding Lava Pick?
if digger:get_wielded_item():get_name() ~= ("mobs:pick_lava") then
return old_handle_node_drops(pos, drops, digger)
@ -121,29 +150,32 @@ function minetest.handle_node_drops(pos, drops, digger)
local hot_drops = {}
-- loop through current node drops
for _, drop in pairs(drops) do
for _, drop in ipairs(drops) do
-- get cooked output of current drops
local stack = ItemStack(drop)
local output = minetest.get_craft_result({
method = "cooking",
width = 1,
items = {drop}
})
-- if we have cooked result then add to new list
if output
and output.item
and not output.item:is_empty() then
while not stack:is_empty() do
table.insert(hot_drops,
ItemStack({
name = output.item:get_name(),
count = output.item:to_table().count,
})
)
else -- if not then return normal drops
table.insert(hot_drops, stack)
local output, decremented_input = minetest.get_craft_result({
method = "cooking",
width = 1,
items = {stack}
})
if output.item:is_empty() then
table.insert_all(hot_drops, decremented_input.items)
break
else
if not output.item:is_empty() then
table.insert(hot_drops, output.item)
end
table.insert_all(hot_drops, output.replacements)
stack = decremented_input.items[1] or ItemStack()
end
end
end
@ -155,12 +187,18 @@ minetest.register_tool(":mobs:pick_lava", {
inventory_image = "mobs_pick_lava.png",
tool_capabilities = {
full_punch_interval = 0.4,
max_drop_level=3,
groupcaps={
cracky = {times={[1]=1.80, [2]=0.80, [3]=0.40}, uses=40, maxlevel=3},
max_drop_level = 3,
groupcaps = {
cracky = {
times = {[1] = 1.80, [2] = 0.80, [3] = 0.40},
uses = 40,
maxlevel = 3
}
},
damage_groups = {fleshy=6,fire=1},
damage_groups = {fleshy = 6, fire = 1},
},
groups = {pickaxe = 1},
light_source = 14
})
minetest.register_craft({
@ -168,7 +206,7 @@ minetest.register_craft({
recipe = {
{"mobs:lava_orb", "mobs:lava_orb", "mobs:lava_orb"},
{"", "default:obsidian_shard", ""},
{"", "default:obsidian_shard", ""},
{"", "default:obsidian_shard", ""}
}
})
@ -180,3 +218,137 @@ minetest.override_item("mobs:pick_lava", {
description = toolranks.create_description("Lava Pickaxe", 0, 1),
after_use = toolranks.new_afteruse})
end
-- obsidian flan
mobs:register_mob("mobs_monster:obsidian_flan", {
type = "monster",
passive = false,
attack_type = "shoot",
shoot_interval = 0.5,
shoot_offset = 1.0,
arrow = "mobs_monster:obsidian_arrow",
reach = 2,
damage = 3,
hp_min = 10,
hp_max = 35,
armor = 30,
visual_size = {x = 0.6, y = 0.6},
collisionbox = {-0.3, -0.3, -0.3, 0.3, 0.8, 0.3},
visual = "mesh",
mesh = "zmobs_lava_flan.x",
textures = {
{"mobs_obsidian_flan.png"}
},
blood_texture = "default_obsidian.png",
makes_footstep_sound = true,
sounds = {
random = "mobs_lavaflan"
},
walk_velocity = 0.1,
run_velocity = 0.5,
jump = false,
view_range = 10,
floats = 0,
drops = {
{name = "default:obsidian_shard", chance = 1, min = 1, max = 5},
{name = "default:obsidian", chance = 3, min = 0, max = 2}
},
water_damage = 0,
lava_damage = 8,
fire_damage = 0,
light_damage = 0,
animation = {
speed_normal = 15,
speed_run = 15,
stand_start = 0,
stand_end = 8,
walk_start = 10,
walk_end = 18,
run_start = 20,
run_end = 28,
punch_start = 20,
punch_end = 28
}
})
-- add spawn egg
mobs:register_egg("mobs_monster:obsidian_flan", S("Obsidian Flan"),
"default_obsidian.png", 1)
local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false
-- mese arrow (weapon)
mobs:register_arrow("mobs_monster:obsidian_arrow", {
visual = "sprite",
visual_size = {x = 0.5, y = 0.5},
textures = {"default_obsidian_shard.png"},
velocity = 6,
hit_player = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 8},
}, nil)
end,
hit_mob = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 8},
}, nil)
end,
hit_node = function(self, pos, node)
if mobs_griefing == false or minetest.is_protected(pos, "") then
return
end
local texture = "default_dirt.png" --fallback texture
local radius = 1
local def = node and minetest.registered_nodes[node.name]
if not def then
return
end
if def and def.tiles and def.tiles[1] then
texture = def.tiles[1]
end
-- do not break obsidian or diamond blocks or unbreakable nodes
if (def.groups and def.groups.level and def.groups.level > 1)
or def.groups.unbreakable then
return
end
minetest.add_particlespawner({
amount = 32,
time = 0.1,
minpos = vector.subtract(pos, radius / 2),
maxpos = vector.add(pos, radius / 2),
minvel = {x = -3, y = 0, z = -3},
maxvel = {x = 3, y = 5, z = 3},
minacc = {x = 0, y = -10, z = 0},
maxacc = {x = 0, y = -10, z = 0},
minexptime = 0.8,
maxexptime = 2.0,
minsize = radius * 0.33,
maxsize = radius,
texture = texture,
-- ^ only as fallback for clients without support for `node` parameter
node = node,
collisiondetection = true
})
minetest.set_node(pos, {name = "air"})
local snd = def.sounds and def.sounds.dug or "default_dig_crumbly"
minetest.sound_play(snd, {pos = pos, max_hear_distance = 8, gain = 1.0}, true)
end
})

View File

@ -19,3 +19,70 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Textures created by wwar (CC0)
mobs_dungeon_master_nether.png
mobs_dungeon_master_netherdeep.png
mobs_stone_monster.png
mobs_dungeon_master2.png
mobs_land_guard.png
mobs_land_guard2.png
mobs_land_guard3.png
Textures by AMMOnym (WTFPL)
mobs_stone_monster2.png
Textures by TenPlus1 (MIT)
mobs_stone_monster3.png
mobs_fireball.png
Textures by Sirrobzeroone (CC0 1.0 Universal)
mobs_stone_monster4.png
mobs_sand_monster.png
Textures and Model created by SirrobZeroone (CC0)
mobs_mese_monster_red.png
mobs_mese_monster_blue.png
mobs_mese_monster_green.png
mobs_mese_monster_purple.png
mobs_mese_arrow.png
mobs_mese_monster.b3d
Pavel_S and PilzAdam (WTFPL)
mobs_dirt_monster.png
mobs_dirt_monster2.png
mobs_dirt_monster3.png
mobs_dungeon_master.b3d
mobs_dungeon_master.png
mobs_dungeon_master.ogg
mobs_fireball.ogg
mobs_oerkki.b3d
mobs_oerkki.png
mobs_sand_monster.b3d [edited by SirrobZeroone]
mobs_sand_monster2.png
mobs_stone_monster.b3d [edited by SirrobZeroone]
mobs_tree_monster.b3d
mobs_tree_monster*.png (edited by TenPlus1)
AspireMint (CC BY-SA 3.0)
mobs_spider.b3d
mobs_spider_mese.png
mobs_spider_orange.png
mobs_spider_snowy.png
mobs_spider_grey.png
mobs_spider_crystal.png
Zeg9 (CC BY-SA 3.0)
zmobs_lava_flan.x
zmobs_lava_flan.png
zmobs_lava_orb.png
Sounds by Cyberpangolin (WTFPL) https://forum.minetest.net/viewtopic.php?t=10798
mobs_dirtmonster.ogg
mobs_dungeonmaster.ogg
mobs_lavaflan.ogg
mobs_mesemonster.ogg
mobs_oerkki.ogg
mobs_sandmonster.ogg
mobs_stonemonster.ogg
mobs_treemonster.ogg

View File

@ -1,37 +0,0 @@
# German Translation for mobs_monster mod
# Deutsche Übersetzung der mobs_monster Mod
# last update: 2016/June/10
# Author: Xanthin
#dirtmonster.lua
Dirt Monster = Erdmonster
#dungeonmaster.lua
Dungeon Master = Kerkermeister
#init.lua
[MOD] Mobs Redo 'Monsters' loaded = [MOD] Mobs Redo 'Monsters' geladen
#lava_flan.lua
Lava Flan = Lavaflan
Lava orb = Lavakugel
Lava Pickaxe = Lavaspitzhacke
#mese_monster.lua
Mese Monster = Mesemonster
#oerkki.lua
Oerkki = Oerkki
#sandmonster.lua
Sand Monster = Sandmonster
#spider.lua
Spider = Spinne
Cobweb = Spinnennetz
#stonemonster.lua
Stone Monster = Steinmonster
#treemonster.lua
Tree Monster = Baummonster

View File

@ -1,34 +0,0 @@
# last update: 2016/June/10
#dirtmonster.lua
Dirt Monster = Monstre de terre
#dungeonmaster.lua
Dungeon Master = Maître des donjons
#init.lua
[MOD] Mobs Redo 'Monsters' loaded = [MOD] Mobs Redo 'Monstres' chargé
#lava_flan.lua
Lava Flan = Flan de lave
Lava orb = Orbe de lave
Lava Pickaxe = Pioche de lave
#mese_monster.lua
Mese Monster = Monstre de Mese
#oerkki.lua
Oerkki = Oerkki
#sandmonster.lua
Sand Monster = Monstre de sable
#spider.lua
Spider = Araignée
Cobweb = Toile d'arraignée
#stonemonster.lua
Stone Monster = Monstre de pierre
#treemonster.lua
Tree Monster = Monstre de bois

View File

@ -1,38 +0,0 @@
# ITALIAN LOCALE FILE FOR THE MOBS MONSTER MODULE
# Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1
# This file is distributed under the same license as the MOBS MONSTER package.
# Hamlet <h4mlet@riseup.net>, 2017.
#
#dirtmonster.lua
Dirt Monster = Mostro di terra
#dungeonmaster.lua
Dungeon Master = Padrone delle segrete
#init.lua
[MOD] Mobs Redo 'Monsters' loaded = [MOD] Mobs Redo 'Monsters' caricato
#lava_flan.lua
Lava Flan = Sformato di lava
Lava orb = Sfera di lava
Lava Pickaxe = Piccone di lava
#mese_monster.lua
Mese Monster = Mostro di mese
#oerkki.lua
Oerkki = Oerkki
#sandmonster.lua
Sand Monster = Mostro di sabbia
#spider.lua
Spider = Ragno
Cobweb = Ragnatela
#stonemonster.lua
Stone Monster = Mostro di pietra
#treemonster.lua
Tree Monster = Albero mostro

14
locale/mobs_monster.de.tr Normal file
View File

@ -0,0 +1,14 @@
# textdomain:mobs_monster
Cobweb=Spinnennetz
Dirt Monster=Erdmonster
Dungeon Master=Kerkermeister
Lava Flan=Lavaflan
Lava Pickaxe=Lavaspitzhacke
Lava orb=Lavakugel
Mese Monster=Mesemonster
#Obsidian Flan=
Oerkki=Oerkki
Sand Monster=Sandmonster
Spider=Spinne
Stone Monster=Steinmonster
Tree Monster=Baummonster

14
locale/mobs_monster.en.tr Normal file
View File

@ -0,0 +1,14 @@
# textdomain:mobs_monster
#Cobweb=
#Dirt Monster=
#Dungeon Master=
#Lava Flan=
#Lava Pickaxe=
#Lava orb=
#Mese Monster=
#Obsidian Flan=
#Oerkki=
#Sand Monster=
#Spider=
#Stone Monster=
#Tree Monster=

14
locale/mobs_monster.es.tr Normal file
View File

@ -0,0 +1,14 @@
# textdomain:mobs_monster
Cobweb=Telarania
Dirt Monster=Mounstro de tierra
Dungeon Master=Maestro de mazmorra
Lava Flan=Flan de lava
Lava Pickaxe=Hacha de lava
Lava orb=Esfera de lava
Mese Monster=Mounstro de mese
#Obsidian Flan=
Oerkki=Oerkki
Sand Monster=Mounstro de arena
Spider=Arania
Stone Monster=Mounstro de piedra
Tree Monster=Mounstro de madera

14
locale/mobs_monster.fr.tr Normal file
View File

@ -0,0 +1,14 @@
# textdomain:mobs_monster
Cobweb=Toile d'arraignée
Dirt Monster=Monstre de terre
Dungeon Master=Maître des donjons
Lava Flan=Lave en gelée
Lava Pickaxe=Pioche de lave
Lava orb=Orbe de lave
Mese Monster=Monstre de mese
Obsidian Flan=Obsidienne en gelée
Oerkki=Oerkki
Sand Monster=Monstre de sable
Spider=Araignée
Stone Monster=Monstre de pierre
Tree Monster=Monstre de bois

14
locale/mobs_monster.it.tr Normal file
View File

@ -0,0 +1,14 @@
# textdomain:mobs_monster
Cobweb=Ragnatela
Dirt Monster=Mostro di terra
Dungeon Master=Padrone delle segrete
Lava Flan=Sformato di lava
Lava Pickaxe=Piccone di lava
Lava orb=Sfera di lava
Mese Monster=Mostro di mese
#Obsidian Flan=
Oerkki=Oerkki
Sand Monster=Mostro di sabbia
Spider=Ragno
Stone Monster=Mostro di pietra
Tree Monster=Albero mostro

14
locale/mobs_monster.ms.tr Normal file
View File

@ -0,0 +1,14 @@
# textdomain:mobs_monster
Cobweb=Sarang Labah-labah
Dirt Monster=Raksasa Tanah
Dungeon Master=Penjaga Kurungan Bawah Tanah
Lava Flan=Raksasa Lava
Lava Pickaxe=Beliung Lava
Lava orb=Bola Lava
Mese Monster=Raksasa Mese
#Obsidian Flan=
Oerkki=Oerkki
Sand Monster=Raksasa Pasir
Spider=Labah-labah
Stone Monster=Raksasa Batu
Tree Monster=Raksasa Pokok

14
locale/mobs_monster.tr.tr Normal file
View File

@ -0,0 +1,14 @@
# textdomain:mobs_monster
Cobweb=Örümcek ağı
Dirt Monster=Toprak Canavarı
Dungeon Master=Zindan başı
Lava Flan=Lav Flan
Lava Pickaxe=Lav kazması
Lava orb=Lav küre
Mese Monster=Mese Canavarı
#Obsidian Flan=
Oerkki=Oerkki
Sand Monster=Kum Canavarı
Spider=Örümcek
Stone Monster=Taş Canavarı
Tree Monster=Ağaç Canavarı

View File

@ -0,0 +1,14 @@
# textdomain:mobs_monster
Cobweb=蜘蛛网
Dirt Monster=泥土怪
Dungeon Master=地穴之主
Lava Flan=岩浆饼
Lava Pickaxe=岩浆镐
Lava orb=岩浆球
Mese Monster=黄石怪
#Obsidian Flan=
Oerkki=奥尔基
Sand Monster=沙怪
Spider=蜘蛛
Stone Monster=石头怪
Tree Monster=树怪

View File

@ -0,0 +1,14 @@
# textdomain:mobs_monster
Cobweb=蜘蛛網
Dirt Monster=泥土怪
Dungeon Master=地穴之主
Lava Flan=岩漿餅
Lava Pickaxe=岩漿鎬
Lava orb=岩漿球
Mese Monster=黃石怪
#Obsidian Flan=
Oerkki=奧爾基
Sand Monster=沙怪
Spider=蜘蛛
Stone Monster=石頭怪
Tree Monster=樹怪

View File

@ -1,35 +0,0 @@
# Malay translations of mobs_monster mod
# using template from 2016/June/10, translated on 2018/February/05
#dirtmonster.lua
Dirt Monster = Raksasa Tanah
#dungeonmaster.lua
Dungeon Master = Penjaga Kurungan Bawah Tanah
#init.lua
[MOD] Mobs Redo 'Monsters' loaded = [MODS] Mobs Redo 'Monsters' telah dimuatkan
#lava_flan.lua
Lava Flan = Raksasa Lava
Lava orb = Bola Lava
Lava Pickaxe = Beliung Lava
#mese_monster.lua
Mese Monster = Raksasa Mese
#oerkki.lua
Oerkki = Oerkki
#sandmonster.lua
Sand Monster = Raksasa Pasir
#spider.lua
Spider = Labah-labah
Cobweb = Sarang Labah-labah
#stonemonster.lua
Stone Monster = Raksasa Batu
#treemonster.lua
Tree Monster = Raksasa Pokok

View File

@ -1,35 +0,0 @@
# Template for translations of mobs_monster mod
# last update: 2016/June/10
#dirtmonster.lua
Dirt Monster =
#dungeonmaster.lua
Dungeon Master =
#init.lua
[MOD] Mobs Redo 'Monsters' loaded =
#lava_flan.lua
Lava Flan =
Lava orb =
Lava Pickaxe =
#mese_monster.lua
Mese Monster =
#oerkki.lua
Oerkki =
#sandmonster.lua
Sand Monster =
#spider.lua
Spider =
Cobweb =
#stonemonster.lua
Stone Monster =
#treemonster.lua
Tree Monster =

View File

@ -1,39 +0,0 @@
# Türkçe çeviri by Admicos
# Turkish translation by Admicos
# Son düzenleme: 26 Nisan 2017
# Last edit: 26 April 2017
#dirtmonster.lua
Dirt Monster = Toprak Canavarı
#dungeonmaster.lua
Dungeon Master = Zindan başı
#init.lua
[MOD] Mobs Redo 'Monsters' loaded = [MOD] Mobs Redo 'Canavarlar' yüklendi
#lava_flan.lua
Lava Flan = Lav Flan
Lava orb = Lav küre
Lava Pickaxe = Lav kazması
#mese_monster.lua
Mese Monster = Mese Canavarı
#oerkki.lua
Oerkki = Oerkki
#sandmonster.lua
Sand Monster = Kum Canavarı
#spider.lua
Spider = Örümcek
Cobweb = Örümcek ağı
#stonemonster.lua
Stone Monster = Taş Canavarı
#treemonster.lua
Tree Monster = Ağaç Canavarı

View File

@ -1,42 +1,37 @@
local web = {name = "mobs:cobweb"}
local web_trap = {
size = {x = 3, y = 3, z = 3},
data = {
web, web, web,
web, web, web,
web, web, web,
if minetest.get_modpath("lucky_block") then
web, web, web,
web, web, web,
web, web, web,
local web = {name = "mobs:cobweb"}
local web_trap = {
size = {x = 3, y = 3, z = 3},
data = {
web, web, web,
web, web, web,
web, web, web,
web, web, web,
web, web, web,
web, web, web,
web, web, web,
web, web, web,
web, web, web,
},
web, web, web,
web, web, web,
web, web, web
}
}
lucky_block:add_schematics({
{"webtrap", web_trap, {x = 1, y = 0, z = 1}},
})
lucky_block:add_schematics({
{"webtrap", web_trap, {x = 1, y = 0, z = 1}},
})
lucky_block:add_blocks({
{"sch", "webtrap", 1, true},
{"spw", "mobs:dungeon_master", 1, nil, nil, 3, "Billy"},
{"spw", "mobs:sand_monster", 3},
{"spw", "mobs:stone_monster", 3, nil, nil, 3, "Bob"},
{"spw", "mobs:dirt_monster", 3},
{"spw", "mobs:tree_monster", 3},
{"spw", "mobs:oerkki", 3},
{"exp"},
{"spw", "mobs:spider", 5},
{"spw", "mobs:mese_monster", 2},
{"spw", "mobs:lava_flan", 3},
{"nod", "default:chest", 0, {
{name = "mobs:lava_orb", max = 1}}},
})
end
lucky_block:add_blocks({
{"sch", "webtrap", 1, true},
{"spw", "mobs:dungeon_master", 1, nil, nil, 3, "Billy"},
{"spw", "mobs:sand_monster", 3},
{"spw", "mobs:stone_monster", 3, nil, nil, 3, "Bob"},
{"spw", "mobs:dirt_monster", 3},
{"spw", "mobs:tree_monster", 3},
{"spw", "mobs:oerkki", 3},
{"exp"},
{"spw", "mobs:spider", 5},
{"spw", "mobs:mese_monster", 2},
{"spw", "mobs:lava_flan", 3},
{"nod", "default:chest", 0, {
{name = "mobs:lava_orb", max = 1}}},
})

View File

@ -1,39 +1,184 @@
-- Translation support
local S = minetest.get_translator("mobs_monster")
local S = mobs.intllib
local mese_monster_types = {
-- mese_monster_red
{
y_min = -20,
y_max = -1000,
damage = 2,
reach = 3,
hp_min = 15,
hp_max = 25,
armor = 80,
skins = {"mobs_mese_monster_red.png"},
immune_to = {
{"default:pick_wood", 0},
{"default:shovel_wood", 0},
{"default:axe_wood", 0},
{"default:sword_wood", 0}
},
drops = {
{name = "default:mese_crystal", chance = 15, min = 0, max = 1},
{name = "default:mese_crystal_fragment", chance = 2, min = 0, max = 1}
},
arrow_override = function(self)
self.velocity = 6
self.damage = 2
end
},
-- mese_monster_green
{
y_min = -1001,
y_max = -2000,
damage = 3,
reach = 3,
hp_min = 20,
hp_max = 30,
armor = 75,
skins = {"mobs_mese_monster_green.png"},
immune_to = {
{"default:pick_wood", 0},
{"default:shovel_wood", 0},
{"default:axe_wood", 0},
{"default:sword_wood", 0},
{"default:pick_stone", 0},
{"default:shovel_stone", 0},
{"default:axe_stone", 0},
{"default:sword_stone", 0}
},
drops = {
{name = "default:mese_crystal", chance = 12, min = 0, max = 1},
{name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 1}
},
arrow_override = function(self)
self.velocity = 6
self.damage = 2
end
},
-- mese_monster_blue
{
y_min = -2001,
y_max = -3000,
damage = 3,
reach = 4,
hp_min = 25,
hp_max = 35,
armor = 70,
skins = {"mobs_mese_monster_blue.png"},
immune_to = {
{"default:pick_wood", 0},
{"default:shovel_wood", 0},
{"default:axe_wood", 0},
{"default:sword_wood", 0},
{"default:pick_stone", 0},
{"default:shovel_stone", 0},
{"default:axe_stone", 0},
{"default:sword_stone", 0},
{"default:pick_bronze", 0},
{"default:shovel_bronze", 0},
{"default:axe_bronze", 0},
{"default:sword_bronze", 0}
},
drops = {
{name = "default:mese", chance = 15, min = 0, max = 1},
{name = "default:mese_crystal", chance = 9, min = 0, max = 2},
{name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 2}
},
arrow_override = function(self)
self.velocity = 7
self.damage = 3
end
},
-- mese_monster_purple
{
y_min = -3000,
y_max = -31000,
damage = 4,
reach = 5,
hp_min = 30,
hp_max = 40,
armor = 60,
skins = {"mobs_mese_monster_purple.png"},
immune_to = {
{"default:pick_wood", 0},
{"default:shovel_wood", 0},
{"default:axe_wood", 0},
{"default:sword_wood", 0},
{"default:pick_stone", 0},
{"default:shovel_stone", 0},
{"default:axe_stone", 0},
{"default:sword_stone", 0},
{"default:pick_bronze", 0},
{"default:shovel_bronze", 0},
{"default:axe_bronze", 0},
{"default:sword_bronze", 0},
{"default:pick_steel", 0},
{"default:shovel_steel", 0},
{"default:axe_steel", 0},
{"default:sword_steel", 0}
},
drops = {
{name = "default:mese", chance = 9, min = 0, max = 1},
{name = "default:mese_crystal", chance = 6, min = 0, max = 2},
{name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 3}
},
arrow_override = function(self)
self.velocity = 8
self.damage = 4
end
}}
-- Mese Monster by Zeg9
-- Mese Monster by SirrobZeroone
mobs:register_mob("mobs_monster:mese_monster", {
type = "monster",
visual_size = {x = 10, y = 10}, -- Got scale wrong in blender by factor of 10 - S01
passive = false,
damage = 3,
attack_type = "shoot",
attack_type = "dogshoot",
damage = 4,
reach = 4,
shoot_interval = 0.5,
arrow = "mobs_monster:mese_arrow",
shoot_offset = 2,
shoot_offset = 0.75,
-- arrow_override = function(self)
-- self.velocity = 20
-- end,
knock_back = true,
hp_min = 10,
hp_max = 25,
armor = 80,
collisionbox = {-0.5, -1.5, -0.5, 0.5, 0.5, 0.5},
collisionbox = {-0.75, -0.5, -0.75, 0.75, 2.5, 0.75},
visual = "mesh",
mesh = "zmobs_mese_monster.x",
mesh = "mobs_mese_monster.b3d",
textures = {
{"zmobs_mese_monster.png"},
{"mobs_mese_monster_purple.png"}
},
blood_texture = "default_mese_crystal_fragment.png",
makes_footstep_sound = false,
sounds = {
random = "mobs_mesemonster",
damage = "default_glass_footstep"
},
view_range = 10,
walk_velocity = 0.5,
run_velocity = 2,
walk_velocity = 1,
run_velocity = 3,
jump = true,
jump_height = 8,
can_leap = true,
fall_damage = 0,
fall_speed = -6,
stepheight = 2.1,
immune_to = {
{"default:pick_wood", 0},
{"default:shovel_wood", 0},
{"default:axe_wood", 0},
{"default:sword_wood", 0}
},
drops = {
{name = "default:mese_crystal", chance = 9, min = 0, max = 2},
{name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 2},
@ -44,70 +189,164 @@ mobs:register_mob("mobs_monster:mese_monster", {
lava_damage = 1,
light_damage = 0,
animation = {
speed_normal = 15,
speed_run = 15,
stand_start = 0,
stand_end = 14,
walk_start = 15,
walk_end = 38,
run_start = 40,
run_end = 63,
punch_start = 40,
punch_end = 63,
speed_normal = 18,
speed_run = 18,
walk_start = 10,
walk_end = 41,
walk_speed = 20,
run_start = 10,
run_end = 41,
run_speed = 30,
stand_start = 60,
stand_end = 83,
shoot_start = 100,
shoot_end = 113,
die_start = 125,
die_end = 141,
death_speed = 25,
die_loop = false,
jump_start = 150 ,
jump_end = 168,
jump_loop = false,
punch_start = 175,
punch_end = 189
},
after_activate = function(self, staticdata, def, dtime)
local tex = self and self.textures and self.textures[1]
if tex == "zmobs_mese_monster.png" then
self.object:remove()
end
end,
on_spawn = function(self)
local pos = self.object:get_pos()
-- quick update self function
local function update(self, def)
self.object:set_properties({textures = def.skins})
self.base_texture = def.skins
-- added by mobs_redo
self.hp_min = def.hp_min
self.hp_max = def.hp_max
self.health = math.random(self.hp_min, self.hp_max)
self.damage = def.damage
self.reach = def.reach
self.armor = def.armor
self.immune_to = def.immune_to
self.drops = def.drops
self.arrow_override = def.arrow_override
end
-- Normal spawn case
for name, def in pairs(mese_monster_types) do
if pos.y <= def.y_min and pos.y >= def.y_max then
update(self, def)
return true
end
end
--[[
-- player using egg
-- direction sets type N = red, E = green, S = blue, W = purple
-- Just for fun - S01
local objects = minetest.get_objects_inside_radius(pos, 10)
for i, obj in ipairs(objects) do
if minetest.is_player(obj)
and obj:get_wielded_item():get_name() == "mobs_monster:mese_monster" then
local degree = (360 + math.deg(obj:get_look_horizontal())) % 360
local compass_sel
if degree > 45 and degree <= 135 then compass_sel = 4
elseif degree > 135 and degree <= 225 then compass_sel = 3
elseif degree > 225 and degree <= 315 then compass_sel = 2
else compass_sel = 1
end
local def = mese_monster_types[compass_sel]
update(self, def)
return true
end
end
]]
-- catch case if all else fails random it
update(self, mese_monster_types[math.random(4)])
return true
end
})
mobs:spawn({
name = "mobs_monster:mese_monster",
nodes = {"default:stone", "default:sandstone"},
max_light = 7,
chance = 5000,
active_object_count = 1,
max_height = -20,
-- mese arrow (weapon)
minetest.register_craftitem("mobs_monster:mese_crystal_fragment_arrow", {
description = S("Mese Monster Arrow"),
inventory_image = "mobs_mese_arrow.png",
groups = {not_in_creative_inventory = 1}
})
mobs:register_arrow("mobs_monster:mese_arrow", {
visual = "wielditem",
visual_size = {x = 0.25, y = 0.25},
textures = {"mobs_monster:mese_crystal_fragment_arrow"},
velocity = 8,
rotate = 180,
damage = 2,
hit_player = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = self.damage}
}, nil)
end,
hit_mob = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = self.damage}
}, nil)
end,
hit_node = function(self, pos, node)
end
})
if not mobs.custom_spawn_monster then
mobs:spawn({
name = "mobs_monster:mese_monster",
nodes = {"default:stone", "default:sandstone"},
max_light = 7,
chance = 5000,
active_object_count = 1,
max_height = -20
})
end
mobs:register_egg("mobs_monster:mese_monster", S("Mese Monster"), "default_mese_block.png", 1)
mobs:alias_mob("mobs:mese_monster", "mobs_monster:mese_monster") -- compatiblity
-- mese arrow (weapon)
mobs:register_arrow("mobs_monster:mese_arrow", {
visual = "sprite",
-- visual = "wielditem",
visual_size = {x = 0.5, y = 0.5},
textures = {"default_mese_crystal_fragment.png"},
--textures = {"default:mese_crystal_fragment"},
velocity = 6,
-- rotate = 180,
hit_player = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 2},
}, nil)
end,
hit_mob = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 2},
}, nil)
end,
hit_node = function(self, pos, node)
end
})
-- 9x mese crystal fragments = 1x mese crystal
local f = "default:mese_crystal_fragment"
minetest.register_craft({
output = "default:mese_crystal",
recipe = {
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
}
recipe = {{f, f, f}, {f, f, f}, {f, f, f}}
})

View File

@ -1 +1,5 @@
name = mobs_monster
description = Add many different monsters into your world.
depends = mobs
optional_depends = default, lucky_block, toolranks
min_minetest_version = 5.0

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,5 @@
local S = mobs.intllib
-- Translation support
local S = minetest.get_translator("mobs_monster")
-- Oerkki by PilzAdam
@ -20,10 +19,11 @@ mobs:register_mob("mobs_monster:oerkki", {
textures = {
{"mobs_oerkki.png"},
{"mobs_oerkki2.png"},
{"mobs_oerkki3.png"}
},
makes_footstep_sound = false,
sounds = {
random = "mobs_oerkki",
random = "mobs_oerkki"
},
walk_velocity = 1,
run_velocity = 3,
@ -48,7 +48,7 @@ mobs:register_mob("mobs_monster:oerkki", {
punch_start = 37,
punch_end = 49,
speed_normal = 15,
speed_run = 15,
speed_run = 15
},
replace_rate = 5,
replace_what = {"default:torch"},
@ -56,18 +56,21 @@ mobs:register_mob("mobs_monster:oerkki", {
replace_offset = -1,
immune_to = {
{"default:sword_wood", 0}, -- no damage
{"default:gold_lump", -10}, -- heals by 10 points
{"default:gold_lump", -10} -- heals by 10 points
},
})
mobs:spawn({
name = "mobs_monster:oerkki",
nodes = {"default:stone"},
max_light = 7,
chance = 7000,
max_height = -10,
})
if not mobs.custom_spawn_monster then
mobs:spawn({
name = "mobs_monster:oerkki",
nodes = {"default:stone"},
max_light = 7,
chance = 7000,
max_height = -10
})
end
mobs:register_egg("mobs_monster:oerkki", S("Oerkki"), "default_obsidian.png", 1)

View File

@ -1,40 +1,49 @@
# MONSTER MOBS
MONSTER MOBS
This mod creates many types of monsters. Some are weak, some are powerful, and they generally do the player a lot of harm. Many of these monsters spawn below ground and take light damage.
Dirt Monster
**Lucky Blocks**: 12
- Spawning at night on green grass (or grey in ethereal) these mobs wander around looking for a player to eat. Drops 1-5 dirt when killed.
## Dirt Monster
Dungeon Master
Dirt monsters spawn at night on green grass (or grey in `ethereal`). They have a tendency to wander around looking for a player to eat and drop 1-2 dirt when killed. Dirt monsters have between 3-27 health, take damage in sunlight, and deal very little damage.
- Spawning below -70 underground DM's have a tendency to hurl fire balls at unsuspecting players and can cause major damage, but get too close and he will switch to dogfight attack. Can drop mese or diamond when killed.
# Dungeon Master
Lava Flan
Dungeon masters spawn below -70 underground DM's and hurl fireballs at unsuspecting players and can cause major damage, but get too close and he will switch to dogfight attack. They have between 42 and 75 health points. Their melee attack deals six damage points and their fireball inflicts eight. The fireball will also explode if it hits a node. They drop mese or diamond when killed.
- Cute as they may look lava flan wallow in their namesake (no, not flans) and get curious about players who wander by, forgetting that they can burn you and cause damage. They have a 1 in 5 chance of dropping lava orb when killed.
# Lava Flan
Mese Monster
Cute as they may look, lava flan wallow in their namesake (no, not flans) and get curious about players who wander by, forgetting that they can burn you and cause damage. They have a 1 in 5 chance of dropping lava orb when killed, but if they die in water then pray they dont solidify into an obsidian flan that shoots shards and destroys all around them.
- These mobs are territorial and spawn below -20 and will fire mese shards at passers by, so best avoided. Will drop mese when killed.
# Mese Monster
Oerkki
These mobs are territorial and spawn below -20 and will fire mese shards at passers by, so best avoided. The deeper you go the tougher they seem to get. Will drop mese when killed. Another thing - they do not take damage from many weapons.
- Found in dark areas like most monsters Oerkki wander the caverns stealing away torches on the ground and attacking anyone found in that area. 1 in 3 chance of dropping obsidian.
# Oerkki
Sand Monster
Found in dark areas like most monsters, Oerkki wander the caverns stealing away torches on the ground and attacking anyone found in that area. 1 in 3 chance of dropping obsidian.
- The hot deserts are home to these guys who spawn at any time of the day to attack players. They drop 3-5 desert sand when killed.
# Sand Monster
Spiders
The hot deserts are home to these guys who spawn at any time of the day to attack players. They drop 3-5 desert sand when killed. A single sand monster isn't much of a threat - they deal one damage point.
- Snowy spiders are found on higher cold areas, Tarantula's in higher jungle, Cave spider below -20 and Mese spider near areas containing the ore and Crystal spiders only in Ethereal's crystal biomes. Some are docile during the daytime and will drop string when killed.
# Spiders
Stone Monster
Snowy spiders are found on higher cold areas, spitting Tarantula's in higher jungle, small Cave spider below -20 and Mese spider near areas containing the ore and Crystal spiders only in Ethereal's crystal biomes. Some are docile during the daytime and will drop string when killed.
- Found underground in dark caves these mobs seem to be zombie-like in fashion with a tendency to rush a player in the area. can drop torch, iron or coal when killed.
# Stone Monster
Tree Monster
Found underground in dark caves, these mobs seem to be zombie-like in fashion with a tendency to rush a player in the area. They can drop torch, iron or coal when killed.
- Found atop tree's at night time they drop down and look for food in the form of players and animals. Can drop saplings and sometimes an apple or three.
# Tree Monster
Lucky Blocks: 11
Found atop trees at night time they drop down and look for food in the form of players and animals. Can drop saplings and sometimes an apple or three depending on type. Also note that green tree creepers exist and sometimes go boom.
# Land Guard
These huge monsters roam the land in cold, hot and temperate areas and don't like players wandering around their domain. They have between 60 and 130 health points and deal 15 damage, enough to kill you in two blows.
# Fire Spirit
Fire Spirits will not tolerate players roaming around their domain and will fiercely attack until their dying puff of smoke. They will drop their spirit and some fire dust when using ethereal.

View File

@ -1,6 +1,5 @@
local S = mobs.intllib
-- Translation support
local S = minetest.get_translator("mobs_monster")
-- custom particle effects
local effect = function(pos, amount, texture, min_size, max_size, radius, gravity, glow)
@ -25,7 +24,7 @@ local effect = function(pos, amount, texture, min_size, max_size, radius, gravit
minsize = min_size,
maxsize = max_size,
texture = texture,
glow = glow,
glow = glow
})
end
@ -38,6 +37,7 @@ mobs:register_mob("mobs_monster:sand_monster", {
attack_type = "dogfight",
pathfinding = true,
--specific_attack = {"player", "mobs_npc:npc"},
--ignore_invisibility = true,
reach = 2,
damage = 1,
hp_min = 4,
@ -48,15 +48,16 @@ mobs:register_mob("mobs_monster:sand_monster", {
mesh = "mobs_sand_monster.b3d",
textures = {
{"mobs_sand_monster.png"},
{"mobs_sand_monster2.png"}
},
blood_texture = "default_desert_sand.png",
makes_footstep_sound = true,
sounds = {
random = "mobs_sandmonster",
random = "mobs_sandmonster"
},
walk_velocity = 1.5,
run_velocity = 4,
view_range = 8, --15
view_range = 8,
jump = true,
floats = 0,
drops = {
@ -77,7 +78,15 @@ mobs:register_mob("mobs_monster:sand_monster", {
run_start = 74,
run_end = 105,
punch_start = 74,
punch_end = 105,
punch_end = 105
},
immune_to = {
{"default:shovel_wood", 3}, -- shovels deal more damage to sand monster
{"default:shovel_stone", 3},
{"default:shovel_bronze", 4},
{"default:shovel_steel", 4},
{"default:shovel_mese", 5},
{"default:shovel_diamond", 7}
},
--[[
custom_attack = function(self, p)
@ -87,23 +96,41 @@ mobs:register_mob("mobs_monster:sand_monster", {
]]
on_die = function(self, pos)
pos.y = pos.y + 0.5
effect(pos, 30, "mobs_sand_particles.png", 0.1, 2, 3, 5)
mobs:effect(pos, 30, "mobs_sand_particles.png", .1, 2, 3, 5)
pos.y = pos.y + 0.25
effect(pos, 30, "mobs_sand_particles.png", 0.1, 2, 3, 5)
mobs:effect(pos, 30, "mobs_sand_particles.png", .1, 2, 3, 5)
end,
--[[
on_rightclick = function(self, clicker)
local tool = clicker:get_wielded_item()
local name = clicker:get_player_name()
if tool:get_name() == "default:sand" then
self.owner = name
self.type = "npc"
mobs:force_capture(self, clicker)
end
end,
]]
})
if not mobs.custom_spawn_monster then
mobs:spawn({
name = "mobs_monster:sand_monster",
nodes = {"default:desert_sand"},
chance = 7000,
active_object_count = 2,
min_height = 0,
})
mobs:spawn({
name = "mobs_monster:sand_monster",
nodes = {"default:desert_sand"},
chance = 7000,
active_object_count = 2,
min_height = 0
})
end
mobs:register_egg("mobs_monster:sand_monster", S("Sand Monster"), "default_desert_sand.png", 1)
mobs:register_egg("mobs_monster:sand_monster", S("Sand Monster"),
"default_desert_sand.png", 1)
mobs:alias_mob("mobs:sand_monster", "mobs_monster:sand_monster") -- compatibility

BIN
screenshot.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

10
settingtypes.txt Normal file
View File

@ -0,0 +1,10 @@
mobs_monster.dirt_monster (Enable Dirt Monster) bool true
mobs_monster.dungeon_master (Enable Dungeon Master) bool true
mobs_monster.fire_spirit (Enable Fire Spirit) bool true
mobs_monster.land_guard (Enable Land Guard) bool true
mobs_monster.lava_flan (Enable Lava Flan) bool true
mobs_monster.mese_monster (Enable Mese Monster) bool true
mobs_monster.oerkki (Enable Oerkki) bool true
mobs_monster.spider (Enable Spider) bool true
mobs_monster.stone_monster (Enable Stone Monster) bool true
mobs_monster.tree_monster (Enable Tree Monster) bool true

Binary file not shown.

187
spawn_example.lua Normal file
View File

@ -0,0 +1,187 @@
--[[ Spawn Template, defaults to values shown if line not provided
mobs:spawn({
name = "",
- Name of mob, must be provided e.g. "mymod:my_mob"
nodes = {"group:soil, "group:stone"},
- Nodes to spawn on top of.
neighbors = {"air"},
- Nodes to spawn beside.
min_light = 0,
- Minimum light level.
max_light = 15,
- Maximum light level, 15 is sunlight only.
interval = 30,
- Spawn interval in seconds.
chance = 5000,
- Spawn chance, 1 in every 5000 nodes.
active_object_count = 1,
- Active mobs of this type in area.
min_height = -31000,
- Minimum height level.
max_height = 31000,
- Maximum height level.
day_toggle = nil,
- Daytime toggle, true to spawn during day, false for night, nil for both
on_spawn = nil,
- On spawn function to run when mob spawns in world
on_map_load = nil,
- On map load, when true mob only spawns in newly generated map areas
})
]]--
-- Dirt Monster
mobs:spawn({
name = "mobs_monster:dirt_monster",
nodes = {"default:dirt_with_grass"},
min_light = 0,
max_light = 7,
chance = 6000,
active_object_count = 2,
min_height = 0,
day_toggle = false,
})
-- Dungeon Master
mobs:spawn({
name = "mobs_monster:dungeon_master",
nodes = {"default:stone"},
max_light = 5,
chance = 9000,
active_object_count = 1,
max_height = -70,
})
-- Lava Flan
mobs:spawn({
name = "mobs_monster:lava_flan",
nodes = {"default:lava_source"},
chance = 1500,
active_object_count = 1,
max_height = 0,
})
-- Mese Monster
mobs:spawn({
name = "mobs_monster:mese_monster",
nodes = {"default:stone"},
max_light = 7,
chance = 5000,
active_object_count = 1,
max_height = -20,
})
-- Oerkki
mobs:spawn({
name = "mobs_monster:oerkki",
nodes = {"default:stone"},
max_light = 7,
chance = 7000,
max_height = -10,
})
-- Sand Monster
mobs:spawn({
name = "mobs_monster:sand_monster",
nodes = {"default:desert_sand"},
chance = 7000,
active_object_count = 2,
min_height = 0,
})
-- Spider (above ground)
mobs:spawn({
name = "mobs_monster:spider",
nodes = {
"default:dirt_with_rainforest_litter", "default:snowblock",
"default:snow", "ethereal:crystal_dirt", "ethereal:cold_dirt"
},
min_light = 0,
max_light = 8,
chance = 7000,
active_object_count = 1,
min_height = 25,
max_height = 31000,
})
-- Spider (below ground)
mobs:spawn({
name = "mobs_monster:spider",
nodes = {"default:stone_with_mese", "default:mese", "default:stone"},
min_light = 0,
max_light = 7,
chance = 7000,
active_object_count = 1,
min_height = -31000,
max_height = -40,
})
-- Stone Monster
mobs:spawn({
name = "mobs_monster:stone_monster",
nodes = {"default:stone", "default:desert_stone", "default:sandstone"},
max_light = 7,
chance = 7000,
max_height = 0,
})
-- Tree Monster
mobs:spawn({
name = "mobs_monster:tree_monster",
nodes = {"default:leaves", "default:jungleleaves"},
max_light = 7,
chance = 7000,
min_height = 0,
day_toggle = false,
})
-- Land Guard
mobs:spawn({
name = "mobs_monster:land_guard",
nodes = {
"default:snow", "default:ice", "default:stone",
"default:dry_dirt_with_dry_grass", "ethereal:dry_dirt"
},
max_light = 7,
chance = 25000,
min_height = 0,
active_object_count = 1,
})

View File

@ -1,5 +1,55 @@
-- Translation support
local S = minetest.get_translator("mobs_monster")
local S = mobs.intllib
local get_velocity = function(self)
local v = self.object:get_velocity()
-- sanity check
if not v then return 0 end
return (v.x * v.x + v.z * v.z) ^ 0.5
end
local spider_types = {
{ nodes = {"default:snow", "default:snowblock", "default:dirt_with_snow"},
skins = {"mobs_spider_snowy.png"},
docile = true,
drops = nil
},
{ nodes = {"default:dirt_with_rainforest_litter", "default:jungletree"},
skins = {"mobs_spider_orange.png"},
docile = true,
drops = nil,
shoot = true
},
{ nodes = {"default:stone", "default:gravel"},
skins = {"mobs_spider_grey.png"},
docile = nil,
drops = nil,
small = true
},
{ nodes = {"default:mese", "default:stone_with_mese"},
skins = {"mobs_spider_mese.png"},
docile = nil,
drops = {
{name = "farming:string", chance = 1, min = 0, max = 2},
{name = "default:mese_crystal_fragment", chance = 2, min = 1, max = 4}}
},
{ nodes = {"ethereal:crystal_dirt", "ethereal:crystal_spike"},
skins = {"mobs_spider_crystal.png"},
docile = true,
drops = {
{name = "farming:string", chance = 1, min = 0, max = 2},
{name = "ethereal:crystal_spike", chance = 15, min = 1, max = 2}}
}
}
-- Spider by AspireMint (CC-BY-SA 3.0 license)
@ -24,12 +74,12 @@ mobs:register_mob("mobs_monster:spider", {
{"mobs_spider_orange.png"},
{"mobs_spider_snowy.png"},
{"mobs_spider_grey.png"},
{"mobs_spider_crystal.png"},
{"mobs_spider_crystal.png"}
},
makes_footstep_sound = false,
sounds = {
random = "mobs_spider",
attack = "mobs_spider",
attack = "mobs_spider"
},
walk_velocity = 1,
run_velocity = 3,
@ -45,7 +95,7 @@ mobs:register_mob("mobs_monster:spider", {
light_damage = 0,
animation = {
speed_normal = 15,
speed_run = 20,--15,
speed_run = 20,
stand_start = 0,
stand_end = 0,
walk_start = 1,
@ -53,77 +103,160 @@ mobs:register_mob("mobs_monster:spider", {
run_start = 1,
run_end = 21,
punch_start = 25,
punch_end = 45,
punch_end = 45
},
-- what kind of spider are we spawning?
-- check surrounding nodes and spawn a specific spider
on_spawn = function(self)
local pos = self.object:get_pos() ; pos.y = pos.y - 1
local tmp
-- snowy spider
if minetest.find_node_near(pos, 1,
{"default:snow", "default:snowblock", "default:dirt_with_snow"}) then
self.base_texture = {"mobs_spider_snowy.png"}
self.object:set_properties({textures = self.base_texture})
self.docile_by_day = true
-- tarantula
elseif minetest.find_node_near(pos, 1,
{"default:dirt_with_rainforest_litter", "default:jungletree"}) then
self.base_texture = {"mobs_spider_orange.png"}
self.object:set_properties({textures = self.base_texture})
self.docile_by_day = true
-- grey spider
elseif minetest.find_node_near(pos, 1,
{"default:stone", "default:gravel"}) then
self.base_texture = {"mobs_spider_grey.png"}
self.object:set_properties({textures = self.base_texture})
-- mese spider
elseif minetest.find_node_near(pos, 1,
{"default:mese", "default:stone_with_mese"}) then
self.base_texture = {"mobs_spider_mese.png"}
self.object:set_properties({textures = self.base_texture})
elseif minetest.find_node_near(pos, 1,
{"ethereal:crystal_dirt", "ethereal:crystal_spike"}) then
self.base_texture = {"mobs_spider_crystal.png"}
self.object:set_properties({textures = self.base_texture})
self.docile_by_day = true
self.drops = {
{name = "farming:string", chance = 1, min = 0, max = 2},
{name = "ethereal:crystal_spike", chance = 15, min = 1, max = 2},
}
for n = 1, #spider_types do
tmp = spider_types[n]
if minetest.find_node_near(pos, 1, tmp.nodes) then
self.base_texture = tmp.skins
self.object:set_properties({textures = tmp.skins})
self.docile_by_day = tmp.docile
if tmp.drops then
self.drops = tmp.drops
end
if tmp.shoot then
self.attack_type = "dogshoot"
self.arrow = "mobs_monster:cobweb"
self.dogshoot_switch = 1
self.dogshoot_count_max = 60
self.dogshoot_count2_max = 20
self.shoot_interval = 2
self.shoot_offset = 2
end
if tmp.small then
self.object:set_properties({
collisionbox = {-0.2, -0.2, -0.2, 0.2, 0, 0.2},
visual_size = {x = 0.25, y = 0.25}
})
end
return true
end
end
return true -- run only once, false/nil runs every activation
end,
-- custom function to make spiders climb vertical facings
do_custom = function(self, dtime)
-- quarter second timer
self.spider_timer = (self.spider_timer or 0) + dtime
if self.spider_timer < 0.25 then
return
end
self.spider_timer = 0
-- need to be stopped to go onwards
if get_velocity(self) > 0.5 then
self.disable_falling = nil
return
end
local pos = self.object:get_pos()
local yaw = self.object:get_yaw()
-- sanity check
if not yaw then return end
local prop = self.object:get_properties()
pos.y = pos.y + prop.collisionbox[2] - 0.2
local dir_x = -math.sin(yaw) * (prop.collisionbox[4] + 0.5)
local dir_z = math.cos(yaw) * (prop.collisionbox[4] + 0.5)
local nod = minetest.get_node_or_nil({
x = pos.x + dir_x,
y = pos.y + 0.5,
z = pos.z + dir_z
})
-- get current velocity
local v = self.object:get_velocity()
-- can only climb solid facings
if not nod or not minetest.registered_nodes[nod.name]
or not minetest.registered_nodes[nod.name].walkable then
self.disable_falling = nil
v.y = 0
self.object:set_velocity(v)
return
end
--print ("----", nod.name, self.disable_falling, dtime)
-- turn off falling if attached to facing
self.disable_falling = true
-- move up facing
v.x = 0 ; v.y = 0
v.y = self.jump_height
self:set_animation("jump")
self.object:set_velocity(v)
end,
-- make spiders jump at you on attack
custom_attack = function(self, pos)
local vel = self.object:get_velocity()
self.object:set_velocity({
x = vel.x * self.run_velocity,
y = self.jump_height * 1.5,
z = vel.z * self.run_velocity
})
self.pausetimer = 0.5
return true -- continue rest of attack function
end
})
-- above ground spawn
mobs:spawn({
name = "mobs_monster:spider",
nodes = {
"default:dirt_with_rainforest_litter", "default:snowblock",
"default:snow", "ethereal:crystal_dirt"
},
min_light = 0,
max_light = 8,
chance = 7000,
active_object_count = 1,
min_height = 25,
max_height = 31000,
})
if not mobs.custom_spawn_monster then
-- below ground spawn
mobs:spawn({
name = "mobs_monster:spider",
nodes = {"default:stone_with_mese", "default:mese", "default:stone"},
min_light = 0,
max_light = 7,
chance = 7000,
active_object_count = 1,
min_height = -31000,
max_height = -40,
})
-- above ground spawn
mobs:spawn({
name = "mobs_monster:spider",
nodes = {
"default:dirt_with_rainforest_litter", "default:snowblock",
"default:snow", "ethereal:crystal_dirt", "ethereal:cold_dirt"
},
min_light = 0,
max_light = 8,
chance = 7000,
active_object_count = 1,
min_height = 25,
max_height = 31000
})
-- below ground spawn
mobs:spawn({
name = "mobs_monster:spider",
nodes = {"default:stone_with_mese", "default:mese", "default:stone"},
min_light = 0,
max_light = 7,
chance = 7000,
active_object_count = 1,
min_height = -31000,
max_height = -40
})
end
mobs:register_egg("mobs_monster:spider", S("Spider"), "mobs_cobweb.png", 1)
@ -151,7 +284,7 @@ minetest.register_node(":mobs:cobweb", {
walkable = false,
groups = {snappy = 1, disable_jump = 1},
drop = "farming:string",
sounds = default.node_sound_leaves_defaults(),
sounds = default and default.node_sound_leaves_defaults()
})
minetest.register_craft({
@ -159,8 +292,54 @@ minetest.register_craft({
recipe = {
{"farming:string", "", "farming:string"},
{"", "farming:string", ""},
{"farming:string", "", "farming:string"},
{"farming:string", "", "farming:string"}
}
})
local web_place = function(pos)
if minetest.find_node_near(pos, 1, {"ignore"}) then return end
local pos2 = minetest.find_node_near(pos, 1, {"air", "group:leaves"}, true)
if pos2 then
minetest.swap_node(pos2, {name = "mobs:cobweb"})
end
end
mobs:register_arrow("mobs_monster:cobweb", {
visual = "sprite",
visual_size = {x = 1, y = 1},
textures = {"mobs_cobweb.png"},
collisionbox = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
velocity = 15,
tail = 1,
tail_texture = "mobs_cobweb.png",
tail_size = 5,
glow = 2,
expire = 0.1,
hit_player = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 2.0,
damage_groups = {fleshy = 3}
}, nil)
web_place(self.object:get_pos())
end,
hit_node = function(self, pos, node)
web_place(pos)
end,
hit_mob = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 2.0,
damage_groups = {fleshy = 3}
}, nil)
end
})
minetest.register_alias("mobs:spider_cobweb", "mobs:cobweb")

View File

@ -1,5 +1,26 @@
-- Translation support
local S = minetest.get_translator("mobs_monster")
local S = mobs.intllib
local stone_types = {
{ nodes = {"default:desert_stone"},
skins = {"mobs_stone_monster3.png"},
drops = {
{name = "default:desert_cobble", chance = 1, min = 0, max = 2},
{name = "default:iron_lump", chance = 5, min = 0, max = 2},
{name = "default:gold_lump", chance = 5, min = 0, max = 2}
}
},
{ nodes = {"default:sandstone"},
skins = {"mobs_stone_monster4.png"},
drops = {
{name = "default:sandstone", chance = 1, min = 0, max = 2},
{name = "default:tin_lump", chance = 5, min = 0, max = 2},
{name = "default:copper_lump", chance = 5, min = 0, max = 2}
}
}
}
-- Stone Monster by PilzAdam
@ -19,11 +40,11 @@ mobs:register_mob("mobs_monster:stone_monster", {
mesh = "mobs_stone_monster.b3d",
textures = {
{"mobs_stone_monster.png"},
{"mobs_stone_monster2.png"}, -- by AMMOnym
{"mobs_stone_monster2.png"} -- by AMMOnym
},
makes_footstep_sound = true,
sounds = {
random = "mobs_stonemonster",
random = "mobs_stonemonster"
},
walk_velocity = 1,
run_velocity = 2,
@ -35,7 +56,7 @@ mobs:register_mob("mobs_monster:stone_monster", {
{name = "default:cobble", chance = 1, min = 0, max = 2},
{name = "default:coal_lump", chance = 3, min = 0, max = 2},
{name = "default:iron_lump", chance = 5, min = 0, max = 2},
{name = "maptools:silver_coin", chance = 1, min = 0, max = 1,},
{name = "maptools:silver_coin", chance = 1, min = 0, max = 1},
{name = "default:torch", chance = 2, min = 3, max = 5},
},
water_damage = 0,
@ -51,18 +72,55 @@ mobs:register_mob("mobs_monster:stone_monster", {
run_start = 40,
run_end = 63,
punch_start = 40,
punch_end = 63,
punch_end = 63
},
immune_to = {
{"default:pick_wood", 0}, -- wooden pick doesnt hurt stone monster
{"default:pick_stone", 4}, -- picks deal more damage to stone monster
{"default:pick_bronze", 5},
{"default:pick_steel", 5},
{"default:pick_mese", 6},
{"default:pick_diamond", 7}
},
-- check surrounding nodes and spawn a specific spider
on_spawn = function(self)
local pos = self.object:get_pos() ; pos.y = pos.y - 1
local tmp
for n = 1, #stone_types do
tmp = stone_types[n]
if minetest.find_node_near(pos, 1, tmp.nodes) then
self.base_texture = tmp.skins
self.object:set_properties({textures = tmp.skins})
if tmp.drops then
self.drops = tmp.drops
end
return true
end
end
return true -- run only once, false/nil runs every activation
end
})
mobs:spawn({
name = "mobs_monster:stone_monster",
nodes = {"default:stone", "default:desert_stone", "default:sandstone"},
max_light = 7,
chance = 7000,
max_height = 0,
})
if not mobs.custom_spawn_monster then
mobs:spawn({
name = "mobs_monster:stone_monster",
nodes = {"default:stone", "default:desert_stone", "default:sandstone"},
max_light = 7,
chance = 7000,
max_height = 0
})
end
mobs:register_egg("mobs_monster:stone_monster", S("Stone Monster"), "default_stone.png", 1)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 B

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 B

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

BIN
textures/mobs_oerkki3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 778 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
textures/mobs_tree_monster6.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 567 B

View File

@ -1,5 +1,48 @@
-- Translation support
local S = minetest.get_translator("mobs_monster")
local S = mobs.intllib
local tree_types = {
{ nodes = {"ethereal:sakura_leaves", "ethereal:sakura_leaves2"},
skins = {"mobs_tree_monster5.png"},
drops = {
{name = "default:stick", chance = 1, min = 1, max = 3},
{name = "ethereal:sakura_leaves", chance = 1, min = 1, max = 2},
{name = "ethereal:sakura_trunk", chance = 2, min = 1, max = 2},
{name = "ethereal:sakura_tree_sapling", chance = 2, min = 0, max = 2}
}
},
{ nodes = {"ethereal:frost_leaves"},
skins = {"mobs_tree_monster3.png"},
drops = {
{name = "default:stick", chance = 1, min = 1, max = 3},
{name = "ethereal:frost_leaves", chance = 1, min = 1, max = 2},
{name = "ethereal:frost_tree", chance = 2, min = 1, max = 2},
{name = "ethereal:crystal_spike", chance = 4, min = 0, max = 2}
}
},
{ nodes = {"ethereal:yellowleaves"},
skins = {"mobs_tree_monster4.png"},
drops = {
{name = "default:stick", chance = 1, min = 1, max = 3},
{name = "ethereal:yellowleaves", chance = 1, min = 1, max = 2},
{name = "ethereal:yellow_tree_sapling", chance = 2, min = 0, max = 2},
{name = "ethereal:golden_apple", chance = 3, min = 0, max = 2}
}
},
{ nodes = {"default:acacia_bush_leaves"},
skins = {"mobs_tree_monster6.png"},
drops = {
{name = "tnt:gunpowder", chance = 1, min = 0, max = 2},
{name = "default:iron_lump", chance = 5, min = 0, max = 2},
{name = "default:coal_lump", chance = 3, min = 0, max = 3}
},
explode = true
}
}
-- Tree Monster (or Tree Gollum) by PilzAdam
@ -12,20 +55,20 @@ mobs:register_mob("mobs_monster:tree_monster", {
--specific_attack = {"player", "mobs_animal:chicken"},
reach = 2,
damage = 2,
hp_min = 7,
hp_max = 33,
hp_min = 20,
hp_max = 40,
armor = 100,
collisionbox = {-0.4, -1, -0.4, 0.4, 0.8, 0.4},
visual = "mesh",
mesh = "mobs_tree_monster.b3d",
textures = {
{"mobs_tree_monster.png"},
{"mobs_tree_monster2.png"},
{"mobs_tree_monster2.png"}
},
blood_texture = "default_wood.png",
makes_footstep_sound = true,
sounds = {
random = "mobs_treemonster",
random = "mobs_treemonster"
},
walk_velocity = 1,
run_velocity = 3,
@ -43,11 +86,17 @@ mobs:register_mob("mobs_monster:tree_monster", {
lava_damage = 0,
light_damage = 2,
fall_damage = 0,
-- immune_to = {
-- {"default:axe_diamond", 5},
-- {"default:sapling", -5}, -- saplings heal
-- {"all", 0},
-- },
immune_to = {
{"default:axe_wood", 0}, -- wooden axe doesnt hurt wooden monster
{"default:axe_stone", 4}, -- axes deal more damage to tree monster
{"default:axe_bronze", 5},
{"default:axe_steel", 5},
{"default:axe_mese", 7},
{"default:axe_diamond", 9},
{"default:sapling", -5}, -- default and jungle saplings heal
{"default:junglesapling", -5},
-- {"all", 0}, -- only weapons on list deal damage
},
animation = {
speed_normal = 15,
speed_run = 15,
@ -58,19 +107,69 @@ mobs:register_mob("mobs_monster:tree_monster", {
run_start = 48,
run_end = 62,
punch_start = 48,
punch_end = 62,
punch_end = 62
},
-- check surrounding nodes and spawn a specific tree monster
on_spawn = function(self)
local pos = self.object:get_pos() ; pos.y = pos.y - 1
local tmp
for n = 1, #tree_types do
tmp = tree_types[n]
if tmp.explode and math.random(2) == 1 then return true end
if minetest.find_node_near(pos, 1, tmp.nodes) then
self.base_texture = tmp.skins
self.object:set_properties({textures = tmp.skins})
if tmp.drops then
self.drops = tmp.drops
end
if tmp.explode then
self.attack_type = "explode"
self.explosion_radius = 3
self.explosion_timer = 3
self.damage = 21
self.reach = 3
self.fear_height = 4
self.water_damage = 2
self.lava_damage = 15
self.light_damage = 0
self.makes_footstep_sound = false
self.runaway_from = {"mobs_animal:kitten"}
self.sounds = {
attack = "tnt_ignite",
explode = "tnt_explode",
fuse = "tnt_ignite"
}
end
return true
end
end
return true -- run only once, false/nil runs every activation
end
})
mobs:spawn({
name = "mobs_monster:tree_monster",
nodes = {"default:leaves", "default:jungleleaves", "moretrees:beech_leaves"},
max_light = 7,
chance = 7000,
min_height = 0,
day_toggle = false,
})
if not mobs.custom_spawn_monster then
mobs:spawn({
name = "mobs_monster:tree_monster",
nodes = {"group:leaves"},
max_light = 7,
chance = 7000,
min_height = 0,
day_toggle = false
})
end
mobs:register_egg("mobs_monster:tree_monster", S("Tree Monster"), "default_tree_top.png", 1)