diff --git a/dirt_monster.lua b/dirt_monster.lua index 518116a..31e515a 100644 --- a/dirt_monster.lua +++ b/dirt_monster.lua @@ -1,6 +1,16 @@ 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,6 +29,7 @@ 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, @@ -48,19 +59,39 @@ mobs:register_mob("mobs_monster:dirt_monster", { punch_start = 40, punch_end = 63, }, + + -- 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, #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 minetest.get_modpath("ethereal") then - spawn_on = "ethereal:gray_dirt" -end - if not mobs.custom_spawn_monster then mobs:spawn({ name = "mobs_monster:dirt_monster", - nodes = {spawn_on}, + nodes = {"default:dirt_with_grass", "ethereal:gray_dirt", "ethereal:dry_dirt"}, min_light = 0, max_light = 7, chance = 6000, diff --git a/stone_monster.lua b/stone_monster.lua index 34197d7..eb8d650 100644 --- a/stone_monster.lua +++ b/stone_monster.lua @@ -1,6 +1,18 @@ 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} + } + } +} + -- Stone Monster by PilzAdam @@ -34,7 +46,7 @@ mobs:register_mob("mobs_monster:stone_monster", { drops = { {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 = "default:iron_lump", chance = 5, min = 0, max = 2} }, water_damage = 0, lava_damage = 1, @@ -59,6 +71,32 @@ mobs:register_mob("mobs_monster:stone_monster", { {"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 }) diff --git a/textures/mobs_dirt_monster2.png b/textures/mobs_dirt_monster2.png new file mode 100644 index 0000000..964698c Binary files /dev/null and b/textures/mobs_dirt_monster2.png differ diff --git a/textures/mobs_dirt_monster3.png b/textures/mobs_dirt_monster3.png new file mode 100644 index 0000000..f11faee Binary files /dev/null and b/textures/mobs_dirt_monster3.png differ diff --git a/textures/mobs_stone_monster2.png b/textures/mobs_stone_monster2.png index 70bfc6e..9c76b83 100644 Binary files a/textures/mobs_stone_monster2.png and b/textures/mobs_stone_monster2.png differ diff --git a/textures/mobs_stone_monster3.png b/textures/mobs_stone_monster3.png new file mode 100644 index 0000000..70bfc6e Binary files /dev/null and b/textures/mobs_stone_monster3.png differ