Compare commits

...

8 Commits

12 changed files with 165 additions and 13 deletions

View File

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

View File

@ -1,6 +1,16 @@
local S = mobs.intllib 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 -- Dungeon Master by PilzAdam
@ -62,13 +72,39 @@ mobs:register_mob("mobs_monster:dungeon_master", {
speed_normal = 15, 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
}) })
if not mobs.custom_spawn_monster then if not mobs.custom_spawn_monster then
mobs:spawn({ mobs:spawn({
name = "mobs_monster:dungeon_master", name = "mobs_monster:dungeon_master",
nodes = {"default:stone", "default:sandstone", "nether:netherrack"}, nodes = {"default:stone", "nether:rack", "nether:rack_deep", "hell:hellrack"},
max_light = 5, max_light = 5,
chance = 9000, chance = 9000,
active_object_count = 1, active_object_count = 1,

98
fire_spirit.lua Normal file
View File

@ -0,0 +1,98 @@
local S = mobs.intllib
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

@ -30,6 +30,7 @@ dofile(path .. "mese_monster.lua")
dofile(path .. "spider.lua") -- AspireMint dofile(path .. "spider.lua") -- AspireMint
dofile(path .. "minotaur.lua") -- NALC(sys4 fork MFF) Kalabasa dofile(path .. "minotaur.lua") -- NALC(sys4 fork MFF) Kalabasa
dofile(path .. "land_guard.lua") dofile(path .. "land_guard.lua")
dofile(path .. "fire_spirit.lua")
-- Load custom spawning -- Load custom spawning

View File

@ -36,7 +36,7 @@ mobs:register_mob("mobs_monster:lava_flan", {
{name = "mobs:lava_orb", chance = 15, min = 1, max = 1}, {name = "mobs:lava_orb", chance = 15, min = 1, max = 1},
}, },
water_damage = 8, water_damage = 8,
lava_damage = 0, lava_damage = -1,
fire_damage = 0, fire_damage = 0,
light_damage = 0, light_damage = 0,
immune_to = { immune_to = {
@ -53,7 +53,7 @@ mobs:register_mob("mobs_monster:lava_flan", {
run_start = 20, run_start = 20,
run_end = 28, run_end = 28,
punch_start = 20, punch_start = 20,
punch_end = 28, punch_end = 28
}, },
on_die = function(self, pos) on_die = function(self, pos)
@ -176,7 +176,11 @@ minetest.register_tool(":mobs:pick_lava", {
full_punch_interval = 0.4, full_punch_interval = 0.4,
max_drop_level = 3, max_drop_level = 3,
groupcaps = { groupcaps = {
cracky = {times={[1]=1.80, [2]=0.80, [3]=0.40}, uses=40, maxlevel=3}, 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},
}, },
@ -189,7 +193,7 @@ minetest.register_craft({
recipe = { recipe = {
{"mobs:lava_orb", "mobs:lava_orb", "mobs:lava_orb"}, {"mobs:lava_orb", "mobs:lava_orb", "mobs:lava_orb"},
{"", "default:obsidian_shard", ""}, {"", "default:obsidian_shard", ""},
{"", "default:obsidian_shard", ""}, {"", "default:obsidian_shard", ""}
} }
}) })
@ -253,7 +257,7 @@ mobs:register_mob("mobs_monster:obsidian_flan", {
run_start = 20, run_start = 20,
run_end = 28, run_end = 28,
punch_start = 20, punch_start = 20,
punch_end = 28, punch_end = 28
} }
}) })
@ -296,9 +300,11 @@ mobs:register_arrow("mobs_monster:obsidian_arrow", {
local radius = 1 local radius = 1
local def = minetest.registered_nodes[node] local def = minetest.registered_nodes[node]
if def then if def then
node = {name = node} node = {name = node}
end end
if def and def.tiles and def.tiles[1] then if def and def.tiles and def.tiles[1] then
texture = def.tiles[1] texture = def.tiles[1]
end end
@ -325,7 +331,7 @@ mobs:register_arrow("mobs_monster:obsidian_arrow", {
texture = texture, texture = texture,
-- ^ only as fallback for clients without support for `node` parameter -- ^ only as fallback for clients without support for `node` parameter
node = node, node = node,
collisiondetection = true, collisiondetection = true
}) })
minetest.set_node(pos, {name = "air"}) minetest.set_node(pos, {name = "air"})

View File

@ -30,3 +30,7 @@ mobs.fireball.png was originally made by Sapier and edited by Benrob:
-- --
-- (c) Sapier -- (c) Sapier
-- Contact sapier a t gmx net -- Contact sapier a t gmx net
Textures created by wwar (cc0)
mobs_dungeon_master_nether.png
mobs_dungeon_master_netherdeep.png

View File

@ -12,6 +12,9 @@ mobs:register_mob("mobs_monster:mese_monster", {
shoot_interval = 0.5, shoot_interval = 0.5,
arrow = "mobs_monster:mese_arrow", arrow = "mobs_monster:mese_arrow",
shoot_offset = 2, shoot_offset = 2,
--arrow_override = function(self)
-- self.velocity = 20
--end,
hp_min = 10, hp_min = 10,
hp_max = 25, hp_max = 25,
armor = 80, armor = 80,

View File

@ -1,4 +1,4 @@
name = mobs_monster name = mobs_monster
depends = default, mobs depends = mobs
optional_depends = lucky_block, toolranks, intllib optional_depends = default, lucky_block, toolranks, intllib
description = Adds many types of monsters. description = Adds many types of monsters.

View File

@ -41,4 +41,8 @@ Land Guard
- These huge monsters roam the land in cold, hot and temperate areas and don't like players wandering around their domain. - These huge monsters roam the land in cold, hot and temperate areas and don't like players wandering around their domain.
Fire Spirit
- Fire Spirits will not tolerate players roaming around their domain and will fiercely attack until their dying puff of smoke. Will drop it's spirit and some fire dust when using ethereal.
Lucky Blocks: 11 Lucky Blocks: 11

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