1
0
mirror of https://codeberg.org/tenplus1/mobs_monster.git synced 2025-07-13 13:50:34 +02:00

37 Commits

Author SHA1 Message Date
ad2237d791 Merge remote-tracking branch 'upstream/master' 2025-03-21 13:15:06 +01:00
2671360c0d Merge remote-tracking branch 'upstream/master' 2025-03-20 12:28:17 +01:00
bb6a664f1e Merge remote-tracking branch 'upstream/master' 2024-09-15 09:26:52 +02:00
7893b94f6e Merge remote-tracking branch 'upstream/master' 2023-12-13 21:01:04 +01:00
d4d8cc526a Merge remote-tracking branch 'upstream/master' 2023-11-22 23:55:26 +01:00
c632143fad Merge remote-tracking branch 'upstream/master' 2023-06-07 22:02:13 +02:00
00146154b5 Merge remote-tracking branch 'upstream/master' 2022-08-26 15:18:27 +02:00
b3e50d295c Merge remote-tracking branch 'upstream/master' 2022-01-22 20:06:05 +01:00
cab9cf25c6 Merge remote-tracking branch 'upstream/master' 2021-11-26 21:44:00 +01:00
f39fc78e4a Merge remote-tracking branch 'upstream/master' 2021-09-21 23:09:27 +02:00
70d92995bb Merge remote-tracking branch 'upstream/master' 2021-07-26 22:23:25 +02:00
69ca619580 Merge remote-tracking branch 'upstream/master' 2021-06-20 17:16:01 +02:00
7bd9080eda Merge remote-tracking branch 'upstream/master' 2021-04-08 13:29:19 +02:00
2baa1cc77d Merge remote-tracking branch 'upstream/master' 2021-03-12 12:30:34 +01:00
2129b4731f Merge remote-tracking branch 'upstream/master' 2021-02-07 13:11:50 +01:00
c8003524d6 Merge remote-tracking branch 'upstream/master' 2021-01-29 17:44:57 +01:00
4a3bf56409 Merge remote-tracking branch 'upstream/master' 2021-01-23 12:56:11 +01:00
5297dfbbdf Merge remote-tracking branch 'upstream/master' 2020-09-21 18:06:40 +02:00
1e72bfd920 Merge remote-tracking branch 'upstream/master' 2020-09-04 21:40:14 +02:00
057177203a Merge remote-tracking branch 'upstream/master' 2020-08-29 20:31:49 +02:00
6b69a3e23d Merge remote-tracking branch 'upstream/master' 2020-08-25 20:06:32 +02:00
7be2f3bd63 Merge remote-tracking branch 'upstream/master' 2020-08-19 21:24:25 +02:00
ca10e7e1f6 Merge remote-tracking branch 'upstream/master' 2020-07-17 22:40:01 +02:00
592c4aca50 Merge remote-tracking branch 'upstream/master' into nalc-1.2-dev 2020-06-20 15:39:41 +02:00
55d3d4b547 Merge remote-tracking branch 'upstream/master' into nalc-1.2-dev 2020-05-09 14:24:36 +02:00
5674b6328e Merge remote-tracking branch 'upstream/master' into nalc-1.2-dev 2020-02-29 18:08:15 +01:00
3ddd27e515 Merge branch 'master' of yunohost.local:mtcontrib/mobs_monster into nalc-1.2-dev 2019-12-22 13:58:23 +01:00
133766d0ab Merge branch 'master' into nalc-1.2 2019-05-10 00:58:32 +02:00
25a7636bb9 Merge commit 'a8df74e' into nalc 2018-12-31 16:21:06 +01:00
01a491af9c Ajout d'un alias pour compatibilité avec le mod fishing de Crabman 2018-12-15 21:23:22 +01:00
18565d6bdb Ajout de textures oubliés pour les items du dungeon master 2018-12-15 21:20:43 +01:00
d3b2074daf Renommage d'items 2018-12-15 21:18:58 +01:00
4e47e4f02c Ajout de drops d'items 2018-11-02 13:48:56 +01:00
b993f11b92 Ajoute le spawn du minotaur sur la roche du desert 2018-11-02 11:42:29 +01:00
2e99fafa82 Corrige le spawn du minotaur 2018-11-02 11:28:51 +01:00
204d00c52c Renommage des alias 2018-11-01 17:16:20 +01:00
abd7791e87 Ajout du minotaur 2018-11-01 16:30:03 +01:00
23 changed files with 218 additions and 85 deletions

View File

@ -1,5 +1,5 @@
local S = core.get_translator("mobs_monster") local S = minetest.get_translator("mobs_monster")
-- custom dirt monster type -- custom dirt monster type
@ -42,6 +42,7 @@ mobs:register_mob("mobs_monster:dirt_monster", {
jump = true, jump = true,
drops = { drops = {
{name = "default:dirt", chance = 1, min = 0, max = 2}, {name = "default:dirt", chance = 1, min = 0, max = 2},
{name = "maptools:silver_coin", chance = 2, min = 1, max = 1,},
{name = "default:clay_lump", chance = 2, min = 0, max = 1} {name = "default:clay_lump", chance = 2, min = 0, max = 1}
}, },
water_damage = 1, water_damage = 1,
@ -66,7 +67,7 @@ mobs:register_mob("mobs_monster:dirt_monster", {
tmp = dirt_types[n] tmp = dirt_types[n]
if core.find_node_near(pos, 1, tmp.nodes) then if minetest.find_node_near(pos, 1, tmp.nodes) then
self.base_texture = tmp.skins self.base_texture = tmp.skins
self.object:set_properties({textures = tmp.skins}) self.object:set_properties({textures = tmp.skins})

View File

@ -1,5 +1,5 @@
local S = core.get_translator("mobs_monster") local S = minetest.get_translator("mobs_monster")
-- custom dungeon master types -- custom dungeon master types
@ -53,7 +53,10 @@ mobs:register_mob("mobs_monster:dungeon_master", {
{name = "mobs:leather", chance = 2, min = 0, max = 2}, {name = "mobs:leather", chance = 2, min = 0, max = 2},
{name = "default:mese_crystal", chance = 3, min = 0, max = 2}, {name = "default:mese_crystal", chance = 3, min = 0, max = 2},
{name = "default:diamond", chance = 4, min = 0, max = 1}, {name = "default:diamond", chance = 4, min = 0, max = 1},
{name = "default:diamondblock", chance = 30, min = 0, max = 1} {name = "default:diamondblock", chance = 30, min = 0, max = 1},
{name = "mobs_monster:dungeon_master_blood", chance = 2, min = 0, max = 2,},
{name = "mobs_monster:dungeon_master_diamond", chance = 6, min = 0, max = 1,},
{name = "maptools:gold_coin", chance = 20, min = 0, max = 1,},
}, },
water_damage = 1, water_damage = 1,
lava_damage = 1, lava_damage = 1,
@ -77,7 +80,7 @@ mobs:register_mob("mobs_monster:dungeon_master", {
tmp = master_types[n] tmp = master_types[n]
if core.find_node_near(pos, 1, tmp.nodes) then if minetest.find_node_near(pos, 1, tmp.nodes) then
self.base_texture = tmp.skins self.base_texture = tmp.skins
self.object:set_properties({textures = tmp.skins}) self.object:set_properties({textures = tmp.skins})
@ -95,14 +98,13 @@ mobs:register_mob("mobs_monster:dungeon_master", {
-- where to spawn -- where to spawn
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", "nether:rack", "nether:rack_deep"}, 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,
max_height = -70 max_height = -70,
}) })
end end
@ -178,4 +180,16 @@ mobs:register_arrow("mobs_monster:fireball", {
end end
}) })
--core.override_item("default:obsidian", {on_blast = function() end}) minetest.register_craftitem(":mobs:dungeon_master_blood", {
description = "Dungeon Master Blood",
inventory_image = "mobs_dungeon_master_blood.png",
groups = {magic = 1},
})
minetest.register_alias("mobs_monster:dungeon_master_blood", "mobs:dungeon_master_blood")
minetest.register_craftitem(":mobs:dungeon_master_diamond", {
description = "Dungeon Master Diamond",
inventory_image = "mobs_dungeon_master_diamond.png",
groups = {magic = 1},
})
minetest.register_alias("mobs_monster:dungeon_master_diamond", "mobs:dungeon_master_diamond")

View File

@ -1,13 +1,13 @@
-- translation and drops -- translation and drops
local S = core.get_translator("mobs_monster") local S = minetest.get_translator("mobs_monster")
local mob_drops = { local mob_drops = {
{name = "fireflies:firefly", chance = 1, min = 1, max = 1} {name = "fireflies:firefly", chance = 1, min = 1, max = 1}
} }
if core.get_modpath("ethereal") then if minetest.get_modpath("ethereal") then
table.insert(mob_drops, table.insert(mob_drops,
{name = "ethereal:fire_dust", chance = 1, min = 1, max = 1}) {name = "ethereal:fire_dust", chance = 1, min = 1, max = 1})

View File

@ -1,8 +1,8 @@
-- translation and mod path -- translation and mod path
local S = core.get_translator("mobs_monster") local S = minetest.get_translator("mobs_monster")
local path = core.get_modpath(core.get_current_modname()) .. "/" local path = minetest.get_modpath(minetest.get_current_modname()) .. "/"
-- Check for custom mob spawn file -- Check for custom mob spawn file
@ -18,7 +18,7 @@ end
local function ddoo(mob) local function ddoo(mob)
if core.settings:get_bool("mobs_monster." .. mob) == false then if minetest.settings:get_bool("mobs_monster." .. mob) == false then
print("[Mobs_Monster] " .. mob .. " disabled!") print("[Mobs_Monster] " .. mob .. " disabled!")
return return
end end
@ -39,6 +39,7 @@ ddoo("mese_monster")
ddoo("spider") -- AspireMint ddoo("spider") -- AspireMint
ddoo("land_guard") ddoo("land_guard")
ddoo("fire_spirit") ddoo("fire_spirit")
dofile(path .. "minotaur.lua") -- NALC(sys4 fork MFF) Kalabasa
-- Load custom spawning if found -- Load custom spawning if found
@ -48,7 +49,7 @@ end
-- Lucky Blocks -- Lucky Blocks
if core.get_modpath("lucky_block") then if minetest.get_modpath("lucky_block") then
dofile(path .. "lucky_block.lua") dofile(path .. "lucky_block.lua")
end end

View File

@ -1,7 +1,7 @@
-- translation and custom land guard types -- translation and custom land guard types
local S = core.get_translator("mobs_monster") local S = minetest.get_translator("mobs_monster")
local guard_types = { local guard_types = {
@ -38,7 +38,7 @@ mobs:register_mob("mobs_monster:land_guard", {
attack_type = "dogfight", attack_type = "dogfight",
group_attack = true, group_attack = true,
reach = 3, reach = 3,
damage = 12, damage = 15,
hp_min = 30, hp_min = 30,
hp_max = 65, hp_max = 65,
armor = 50, armor = 50,
@ -85,7 +85,7 @@ mobs:register_mob("mobs_monster:land_guard", {
tmp = guard_types[n] tmp = guard_types[n]
if core.find_node_near(pos, 1, tmp.nodes) then if minetest.find_node_near(pos, 1, tmp.nodes) then
self.base_texture = { tmp.skins[math.random(#tmp.skins)] } self.base_texture = { tmp.skins[math.random(#tmp.skins)] }
self.object:set_properties({textures = self.base_texture}) self.object:set_properties({textures = self.base_texture})

View File

@ -1,5 +1,5 @@
local S = core.get_translator("mobs_monster") local S = minetest.get_translator("mobs_monster")
-- Lava Flan by Zeg9 (additional textures by JurajVajda) -- Lava Flan by Zeg9 (additional textures by JurajVajda)
@ -39,12 +39,9 @@ mobs:register_mob("mobs_monster:lava_flan", {
fire_damage = 0, fire_damage = 0,
light_damage = 0, light_damage = 0,
immune_to = { immune_to = {
{"mobs:pick_lava", -2}, -- lava pick heals 2 health {"mobs:pick_lava", -2} -- lava pick heals 2 health
{"default:lava_source", 0}, -- so that damage per second doesnt affect mob
{"default:lava_flowing", 0},
{"nether:lava_source", 0},
}, },
fly_in = {"default:lava_source", "default:lava_flowing", "nether:lava_source"}, fly_in = {"default:lava_source", "default:lava_flowing"},
animation = { animation = {
speed_normal = 15, speed_normal = 15,
speed_run = 15, speed_run = 15,
@ -62,7 +59,7 @@ mobs:register_mob("mobs_monster:lava_flan", {
on_die = function(self, pos) on_die = function(self, pos)
local cod = self.cause_of_death or {} local cod = self.cause_of_death or {}
local def = cod.node and core.registered_nodes[cod.node] local def = cod.node and minetest.registered_nodes[cod.node]
if def and def.groups and def.groups.water then if def and def.groups and def.groups.water then
@ -70,7 +67,7 @@ mobs:register_mob("mobs_monster:lava_flan", {
mobs:effect(pos, 40, "tnt_smoke.png", 3, 5, 2, 0.5, nil, false) mobs:effect(pos, 40, "tnt_smoke.png", 3, 5, 2, 0.5, nil, false)
core.sound_play("fire_extinguish_flame", minetest.sound_play("fire_extinguish_flame",
{pos = pos, max_hear_distance = 12, gain = 1.5}, true) {pos = pos, max_hear_distance = 12, gain = 1.5}, true)
self.object:remove() self.object:remove()
@ -81,16 +78,16 @@ mobs:register_mob("mobs_monster:lava_flan", {
else else
mobs:effect(pos, 40, "fire_basic_flame.png", 2, 3, 2, 5, 10, nil) mobs:effect(pos, 40, "fire_basic_flame.png", 2, 3, 2, 5, 10, nil)
local nods = core.find_nodes_in_area( local nods = minetest.find_nodes_in_area(
{x = pos.x, y = pos.y + 1, z = pos.z}, {x = pos.x, y = pos.y + 1, z = pos.z},
{x = pos.x, y = pos.y, z = pos.z}, "air") {x = pos.x, y = pos.y, z = pos.z}, "air")
-- place flame if position empty and flame exists -- place flame if position empty and flame exists
if nods and #nods > 0 if nods and #nods > 0
and core.registered_nodes["fire:basic_flame"] then and minetest.registered_nodes["fire:basic_flame"] then
pos = nods[math.random(#nods)] pos = nods[math.random(#nods)]
core.set_node(pos, {name = "fire:basic_flame"}) minetest.set_node(pos, {name = "fire:basic_flame"})
end end
self.object:remove() self.object:remove()
@ -122,15 +119,15 @@ mobs:alias_mob("mobs:lava_flan", "mobs_monster:lava_flan")
-- lava orb -- lava orb
core.register_craftitem(":mobs:lava_orb", { minetest.register_craftitem(":mobs:lava_orb", {
description = S("Lava orb"), description = S("Lava orb"),
inventory_image = "zmobs_lava_orb.png", inventory_image = "zmobs_lava_orb.png",
light_source = 14 light_source = 14
}) })
core.register_alias("zmobs:lava_orb", "mobs:lava_orb") minetest.register_alias("zmobs:lava_orb", "mobs:lava_orb")
core.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = "mobs:lava_orb", recipe = "mobs:lava_orb",
burntime = 80 burntime = 80
@ -138,9 +135,9 @@ core.register_craft({
-- backup and replace old function -- backup and replace old function
local old_handle_node_drops = core.handle_node_drops local old_handle_node_drops = minetest.handle_node_drops
function core.handle_node_drops(pos, drops, digger) function minetest.handle_node_drops(pos, drops, digger)
-- are we a player using the lava pick? -- are we a player using the lava pick?
if digger and digger:get_wielded_item():get_name() == ("mobs:pick_lava") then if digger and digger:get_wielded_item():get_name() == ("mobs:pick_lava") then
@ -154,7 +151,7 @@ function core.handle_node_drops(pos, drops, digger)
while not stack:is_empty() do while not stack:is_empty() do
local output, decremented_input = core.get_craft_result({ local output, decremented_input = minetest.get_craft_result({
method = "cooking", width = 1, items = {stack}}) method = "cooking", width = 1, items = {stack}})
if output.item:is_empty() then if output.item:is_empty() then
@ -180,7 +177,7 @@ function core.handle_node_drops(pos, drops, digger)
mobs:effect(pos, 1, "tnt_smoke.png", 3, 5, 2, 0.5, nil, false) mobs:effect(pos, 1, "tnt_smoke.png", 3, 5, 2, 0.5, nil, false)
core.sound_play("fire_extinguish_flame", minetest.sound_play("fire_extinguish_flame",
{pos = pos, max_hear_distance = 5, gain = 0.05}, true) {pos = pos, max_hear_distance = 5, gain = 0.05}, true)
end end
end end
@ -190,7 +187,7 @@ end
-- lava pick, smelts nodes when you dig -- lava pick, smelts nodes when you dig
core.register_tool(":mobs:pick_lava", { minetest.register_tool(":mobs:pick_lava", {
description = S("Lava Pickaxe"), description = S("Lava Pickaxe"),
inventory_image = "mobs_pick_lava.png", inventory_image = "mobs_pick_lava.png",
tool_capabilities = { tool_capabilities = {
@ -209,7 +206,7 @@ core.register_tool(":mobs:pick_lava", {
-- recipe -- recipe
core.register_craft({ minetest.register_craft({
output = "mobs:pick_lava", output = "mobs:pick_lava",
recipe = { recipe = {
{"mobs:lava_orb", "mobs:lava_orb", "mobs:lava_orb"}, {"mobs:lava_orb", "mobs:lava_orb", "mobs:lava_orb"},
@ -220,9 +217,9 @@ core.register_craft({
-- Add [toolranks] mod support -- Add [toolranks] mod support
if core.get_modpath("toolranks") then if minetest.get_modpath("toolranks") then
core.override_item("mobs:pick_lava", { minetest.override_item("mobs:pick_lava", {
original_description = S("Lava Pickaxe"), original_description = S("Lava Pickaxe"),
description = toolranks.create_description("Lava Pickaxe", 0, 1), description = toolranks.create_description("Lava Pickaxe", 0, 1),
after_use = toolranks.new_afteruse}) after_use = toolranks.new_afteruse})
@ -279,7 +276,7 @@ mobs:register_egg("mobs_monster:obsidian_flan", S("Obsidian Flan"),
-- obsidian arrow and grief setting check -- obsidian arrow and grief setting check
local mobs_griefing = core.settings:get_bool("mobs_griefing") ~= false local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false
mobs:register_arrow("mobs_monster:obsidian_arrow", { mobs:register_arrow("mobs_monster:obsidian_arrow", {
visual = "sprite", visual = "sprite",
@ -305,13 +302,13 @@ mobs:register_arrow("mobs_monster:obsidian_arrow", {
hit_node = function(self, pos, node) hit_node = function(self, pos, node)
if mobs_griefing == false or core.is_protected(pos, "") then if mobs_griefing == false or minetest.is_protected(pos, "") then
return return
end end
local texture = "default_dirt.png" --fallback texture local texture = "default_dirt.png" --fallback texture
local radius = 1 local radius = 1
local def = node and core.registered_nodes[node.name] local def = node and minetest.registered_nodes[node.name]
if not def then return end if not def then return end
@ -325,7 +322,7 @@ mobs:register_arrow("mobs_monster:obsidian_arrow", {
return return
end end
core.add_particlespawner({ minetest.add_particlespawner({
amount = 32, amount = 32,
time = 0.1, time = 0.1,
minpos = vector.subtract(pos, radius / 2), minpos = vector.subtract(pos, radius / 2),
@ -344,10 +341,10 @@ mobs:register_arrow("mobs_monster:obsidian_arrow", {
collisiondetection = true collisiondetection = true
}) })
core.set_node(pos, {name = "air"}) minetest.set_node(pos, {name = "air"})
local snd = def.sounds and def.sounds.dug or "default_dig_crumbly" local snd = def.sounds and def.sounds.dug or "default_dig_crumbly"
core.sound_play(snd, {pos = pos, max_hear_distance = 8, gain = 1.0}, true) minetest.sound_play(snd, {pos = pos, max_hear_distance = 8, gain = 1.0}, true)
end end
}) })

View File

@ -37,7 +37,6 @@ lucky_block:add_blocks({
{"spw", "mobs:spider", 5}, {"spw", "mobs:spider", 5},
{"spw", "mobs:mese_monster", 2}, {"spw", "mobs:mese_monster", 2},
{"spw", "mobs:lava_flan", 3}, {"spw", "mobs:lava_flan", 3},
{"spw", "mobs_monster:land_guard", 2},
{"nod", "default:chest", 0, { {"nod", "default:chest", 0, {
{name = "mobs:lava_orb", max = 1}}}, {name = "mobs:lava_orb", max = 1}}},
}) })

View File

@ -1,7 +1,7 @@
-- translation and custom mese monster types -- translation and custom mese monster types
local S = core.get_translator("mobs_monster") local S = minetest.get_translator("mobs_monster")
local mese_monster_types = { local mese_monster_types = {
@ -179,6 +179,8 @@ mobs:register_mob("mobs_monster:mese_monster", {
drops = { drops = {
{name = "default:mese_crystal", chance = 9, min = 0, max = 2}, {name = "default:mese_crystal", chance = 9, min = 0, max = 2},
{name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 2}, {name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 2},
{name = "maptools:silver_coin", chance = 1, min = 0, max = 2},
{name = "returnmirror:mirror_inactive", chance = 50, min = 1, max = 1},
}, },
water_damage = 1, water_damage = 1,
lava_damage = 1, lava_damage = 1,
@ -238,11 +240,11 @@ mobs:register_mob("mobs_monster:mese_monster", {
-- direction sets type N = red, E = green, S = blue, W = purple -- direction sets type N = red, E = green, S = blue, W = purple
-- Just for fun - S01 -- Just for fun - S01
local objects = core.get_objects_inside_radius(pos, 10) local objects = minetest.get_objects_inside_radius(pos, 10)
for i, obj in ipairs(objects) do for i, obj in ipairs(objects) do
if core.is_player(obj) if minetest.is_player(obj)
and obj:get_wielded_item():get_name() == "mobs_monster:mese_monster" then and obj:get_wielded_item():get_name() == "mobs_monster:mese_monster" then
local degree = (360 + math.deg(obj:get_look_horizontal())) % 360 local degree = (360 + math.deg(obj:get_look_horizontal())) % 360
@ -271,7 +273,7 @@ mobs:register_mob("mobs_monster:mese_monster", {
-- mese arrow item -- mese arrow item
core.register_craftitem("mobs_monster:mese_crystal_fragment_arrow", { minetest.register_craftitem("mobs_monster:mese_crystal_fragment_arrow", {
description = S("Mese Monster Arrow"), description = S("Mese Monster Arrow"),
inventory_image = "mobs_mese_arrow.png", inventory_image = "mobs_mese_arrow.png",
groups = {not_in_creative_inventory = 1} groups = {not_in_creative_inventory = 1}
@ -310,14 +312,13 @@ mobs:register_arrow("mobs_monster:mese_arrow", {
-- where to spawn -- where to spawn
if not mobs.custom_spawn_monster then if not mobs.custom_spawn_monster then
mobs:spawn({ mobs:spawn({
name = "mobs_monster:mese_monster", name = "mobs_monster:mese_monster",
nodes = {"default:stone"}, nodes = {"default:stone", "default:sandstone"},
max_light = 7, max_light = 7,
chance = 5000, chance = 5000,
active_object_count = 1, active_object_count = 1,
max_height = -20 max_height = -20
}) })
end end
@ -333,7 +334,7 @@ mobs:alias_mob("mobs:mese_monster", "mobs_monster:mese_monster")
local f = "default:mese_crystal_fragment" local f = "default:mese_crystal_fragment"
core.register_craft({ minetest.register_craft({
output = "default:mese_crystal", output = "default:mese_crystal",
recipe = {{f, f, f}, {f, f, f}, {f, f, f}} recipe = {{f, f, f}, {f, f, f}, {f, f, f}}
}) })

111
minotaur.lua Executable file
View File

@ -0,0 +1,111 @@
-- Minotaur Monster by ???
mobs:register_mob("mobs_monster:minotaur", {
-- animal, monster, npc, barbarian
type = "monster",
-- aggressive, deals 11 damage to player when hit
passive = false,
attack_type = "dogfight",
pathfinding = false,
reach = 2,
damage = 6,
-- health & armor
hp_min = 45,
hp_max = 55,
armor = 90,
-- textures and model
collisionbox = {-0.9,-0.01,-0.9, 0.9,2.5,0.9},
visual = "mesh",
mesh = "mobs_minotaur.b3d",
textures = {
{"mobs_minotaur.png"},
},
visual_size = {x=1, y=1},
blood_texture = "mobs_blood.png",
-- sounds
makes_footstep_sound = true,
-- sounds = {
-- random = "mobs_zombie",
-- damage = "mobs_zombie_hit",
-- attack = "mobs_zombie_attack",
-- death = "mobs_zombie_death",
-- },
-- speed and jump
walk_velocity = 1,
run_velocity = 3,
jump = true,
floats = 1,
view_range = 16,
knock_back = 0.05, --this is a test
-- drops desert_sand and coins when dead
drops = {
{name = "maptools:gold_coin", chance = 40, min = 1, max = 1,},
{name = "mobs_monster:minotaur_eye", chance = 2, min = 1, max = 2,},
{name = "mobs_monster:minotaur_horn", chance = 4, min = 1, max = 2,},
{name = "mobs_monster:minotaur_fur", chance = 1, min = 1, max = 3,},
},
water_damage = 0,
lava_damage = 5,
light_damage = 0,
-- model animation
animation = {
speed_normal = 15, speed_run = 15,
stand_start = 0, stand_end = 19,
walk_start = 20, walk_end = 39,
run_start = 20, run_end = 39,
punch_start = 40, punch_end = 50,
},
})
mobs:alias_mob("mobs:minotaur", "mobs_monster:minotaur")
-- spawns on desert sand between -1 and 20 light, 1 in 100000 chance, 1 Minotaur in area up to 31000 in height
--mobs:spawn_specific("mobs_monster:minotaur", {"default:dirt_with_dry_grass"}, {"air"}, -1, 20, 30, 50000, 1, -31000, 31000, false)
mobs:spawn({
name = "mobs_monster:minotaur",
nodes = {"default:dirt_with_dry_grass", "default:desert_sand", "default:desert_stone"},
min_light = 0,
max_light = default.LIGHT_MAX,
chance = 7000,
active_object_count = 1,
min_height = -31000,
max_height = 31000,
})
-- register spawn egg
mobs:register_egg("mobs_monster:minotaur", "Minotaur", "mobs_minotaur_inv.png", 1)
minetest.register_craftitem(":mobs:minotaur_eye", {
description = "Minotaur Eye",
inventory_image = "mobs_minotaur_eye.png",
groups = {magic = 1},
})
mobs:alias_mob("mobs_monster:minotaur_eye", "mobs:minotaur_eye")
minetest.register_craftitem(":mobs:minotaur_horn", {
description = "Minotaur Horn",
inventory_image = "mobs_minotaur_horn.png",
groups = {magic = 1},
})
mobs:alias_mob("mobs_monster:minotaur_horn", "mobs:minotaur_horn")
minetest.register_craftitem(":mobs:minotaur_fur", {
description = "Minotaur Fur",
inventory_image = "mobs_minotaur_fur.png",
groups = {magic = 1},
})
mobs:alias_mob("mobs_monster:minotaur_fur", "mobs:minotaur_fur")
minetest.register_craftitem(":mobs:minotaur_lots_of_fur", {
description = "Lot of Minotaur Fur",
inventory_image = "mobs_minotaur_lots_of_fur.png",
groups = {magic = 1},
})
mobs:alias_mob("mobs_monster:minotaur_lots_of_fur", "mobs:minotaur_lots_of_fur")
minetest.register_craft({
output = "mobs_monster:minotaur_lots_of_fur",
recipe = {{"mobs_monster:minotaur_fur", "mobs_monster:minotaur_fur"},
{"mobs_monster:minotaur_fur", "mobs_monster:minotaur_fur"},
},
})

BIN
models/mobs_minotaur.b3d Executable file

Binary file not shown.

View File

@ -1,5 +1,5 @@
local S = core.get_translator("mobs_monster") local S = minetest.get_translator("mobs_monster")
-- Oerkki by PilzAdam -- Oerkki by PilzAdam
@ -29,7 +29,8 @@ mobs:register_mob("mobs_monster:oerkki", {
jump = true, jump = true,
drops = { drops = {
{name = "default:obsidian", chance = 3, min = 0, max = 2}, {name = "default:obsidian", chance = 3, min = 0, max = 2},
{name = "default:gold_lump", chance = 2, min = 0, max = 2} {name = "default:gold_lump", chance = 2, min = 0, max = 2},
{name = "maptools:silver_coin", chance = 1, min = 0, max = 1},
}, },
water_damage = 2, water_damage = 2,
lava_damage = 4, lava_damage = 4,

View File

@ -1,5 +1,5 @@
local S = core.get_translator("mobs_monster") local S = minetest.get_translator("mobs_monster")
-- custom particle effects -- custom particle effects
@ -11,7 +11,7 @@ local function effect(pos, amount, texture, min_size, max_size, radius, gravity,
gravity = gravity or -10 gravity = gravity or -10
glow = glow or 0 glow = glow or 0
core.add_particlespawner({ minetest.add_particlespawner({
amount = amount, amount = amount,
time = 0.25, time = 0.25,
minpos = pos, minpos = pos,
@ -59,6 +59,7 @@ mobs:register_mob("mobs_monster:sand_monster", {
jump = true, jump = true,
floats = 0, floats = 0,
drops = { drops = {
{name = "maptools:silver_coin", chance = 10, min = 1, max = 1,},
{name = "default:silver_sand", chance = 2, min = 1, max = 2}, {name = "default:silver_sand", chance = 2, min = 1, max = 2},
{name = "default:desert_sand", chance = 2, min = 1, max = 2}, {name = "default:desert_sand", chance = 2, min = 1, max = 2},
{name = "default:sand", chance = 2, min = 1, max = 2}, {name = "default:sand", chance = 2, min = 1, max = 2},
@ -86,7 +87,7 @@ mobs:register_mob("mobs_monster:sand_monster", {
--[[ --[[
custom_attack = function(self, p) custom_attack = function(self, p)
local pos = self.object:get_pos() local pos = self.object:get_pos()
core.add_item(pos, "default:sand") minetest.add_item(pos, "default:sand")
end, end,
]] ]]
on_die = function(self, pos) on_die = function(self, pos)

View File

@ -1,5 +1,5 @@
local S = core.get_translator("mobs_monster") local S = minetest.get_translator("mobs_monster")
-- helper function -- helper function
@ -91,7 +91,8 @@ mobs:register_mob("mobs_monster:spider", {
view_range = 15, view_range = 15,
floats = 0, floats = 0,
drops = { drops = {
{name = "farming:string", chance = 1, min = 0, max = 2} {name = "farming:string", chance = 1, min = 0, max = 2},
{name = "maptools:silver_coin", chance = 3, min = 0, max = 1,},
}, },
water_damage = 5, water_damage = 5,
lava_damage = 5, lava_damage = 5,
@ -115,7 +116,7 @@ mobs:register_mob("mobs_monster:spider", {
tmp = spider_types[n] tmp = spider_types[n]
if core.find_node_near(pos, 1, tmp.nodes) then if minetest.find_node_near(pos, 1, tmp.nodes) then
self.base_texture = tmp.skins self.base_texture = tmp.skins
self.object:set_properties({textures = tmp.skins}) self.object:set_properties({textures = tmp.skins})
@ -172,7 +173,7 @@ mobs:register_mob("mobs_monster:spider", {
local dir_x = -math_sin(yaw) * (prop.collisionbox[4] + 0.5) local dir_x = -math_sin(yaw) * (prop.collisionbox[4] + 0.5)
local dir_z = math_cos(yaw) * (prop.collisionbox[4] + 0.5) local dir_z = math_cos(yaw) * (prop.collisionbox[4] + 0.5)
local nod = core.get_node_or_nil({ local nod = minetest.get_node_or_nil({
x = pos.x + dir_x, x = pos.x + dir_x,
y = pos.y + 0.5, y = pos.y + 0.5,
z = pos.z + dir_z z = pos.z + dir_z
@ -182,8 +183,8 @@ mobs:register_mob("mobs_monster:spider", {
local v = self.object:get_velocity() local v = self.object:get_velocity()
-- can only climb solid facings -- can only climb solid facings
if not nod or not core.registered_nodes[nod.name] if not nod or not minetest.registered_nodes[nod.name]
or not core.registered_nodes[nod.name].walkable then or not minetest.registered_nodes[nod.name].walkable then
self.disable_falling = nil self.disable_falling = nil
v.y = 0 v.y = 0
self.object:set_velocity(v) self.object:set_velocity(v)
@ -264,7 +265,7 @@ mobs:alias_mob("mobs:spider", "mobs_monster:spider")
-- cobweb and recipe -- cobweb and recipe
core.register_node(":mobs:cobweb", { minetest.register_node(":mobs:cobweb", {
description = S("Cobweb"), description = S("Cobweb"),
drawtype = "plantlike", drawtype = "plantlike",
visual_scale = 1.2, visual_scale = 1.2,
@ -285,7 +286,7 @@ core.register_node(":mobs:cobweb", {
sounds = mobs.node_sound_leaves_defaults() sounds = mobs.node_sound_leaves_defaults()
}) })
core.register_craft({ minetest.register_craft({
output = "mobs:cobweb", output = "mobs:cobweb",
recipe = { recipe = {
{"farming:string", "", "farming:string"}, {"farming:string", "", "farming:string"},
@ -298,12 +299,12 @@ core.register_craft({
local web_place = function(pos) local web_place = function(pos)
if core.find_node_near(pos, 1, {"ignore"}) then return end if minetest.find_node_near(pos, 1, {"ignore"}) then return end
local pos2 = core.find_node_near(pos, 1, {"air", "group:leaves"}, true) local pos2 = minetest.find_node_near(pos, 1, {"air", "group:leaves"}, true)
if pos2 then if pos2 then
core.swap_node(pos2, {name = "mobs:cobweb"}) minetest.swap_node(pos2, {name = "mobs:cobweb"})
end end
end end
@ -343,3 +344,5 @@ mobs:register_arrow("mobs_monster:cobweb", {
}, nil) }, nil)
end end
}) })
minetest.register_alias("mobs:spider_cobweb", "mobs:cobweb")

View File

@ -1,7 +1,7 @@
-- translation and custom stone monster types -- translation and custom stone monster types
local S = core.get_translator("mobs_monster") local S = minetest.get_translator("mobs_monster")
local stone_types = { local stone_types = {
@ -54,7 +54,9 @@ mobs:register_mob("mobs_monster:stone_monster", {
drops = { drops = {
{name = "default:cobble", chance = 1, min = 0, max = 2}, {name = "default:cobble", chance = 1, min = 0, max = 2},
{name = "default:coal_lump", chance = 3, 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},
{name = "maptools:silver_coin", chance = 1, min = 0, max = 1},
{name = "default:torch", chance = 2, min = 3, max = 5},
}, },
water_damage = 0, water_damage = 0,
lava_damage = 1, lava_damage = 1,
@ -85,7 +87,7 @@ mobs:register_mob("mobs_monster:stone_monster", {
tmp = stone_types[n] tmp = stone_types[n]
if core.find_node_near(pos, 1, tmp.nodes) then if minetest.find_node_near(pos, 1, tmp.nodes) then
self.base_texture = tmp.skins self.base_texture = tmp.skins
self.object:set_properties({textures = tmp.skins}) self.object:set_properties({textures = tmp.skins})

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

BIN
textures/mobs_minotaur.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
textures/mobs_minotaur_eye.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

BIN
textures/mobs_minotaur_fur.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

BIN
textures/mobs_minotaur_horn.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 B

View File

@ -1,7 +1,7 @@
-- translation and custom tree monster types -- translation and custom tree monster types
local S = core.get_translator("mobs_monster") local S = minetest.get_translator("mobs_monster")
local tree_types = { local tree_types = {
@ -77,7 +77,9 @@ mobs:register_mob("mobs_monster:tree_monster", {
{name = "default:stick", chance = 1, min = 0, max = 2}, {name = "default:stick", chance = 1, min = 0, max = 2},
{name = "default:sapling", chance = 2, min = 0, max = 2}, {name = "default:sapling", chance = 2, min = 0, max = 2},
{name = "default:junglesapling", chance = 3, min = 0, max = 2}, {name = "default:junglesapling", chance = 3, min = 0, max = 2},
{name = "default:apple", chance = 4, min = 1, max = 2} {name = "default:apple", chance = 4, min = 1, max = 2},
{name = "maptools:superapple", chance = 4, min = 0, max = 1,},
{name = "maptools:silver_coin", chance = 3, min = 0, max = 1,},
}, },
water_damage = 0, water_damage = 0,
lava_damage = 0, lava_damage = 0,
@ -114,7 +116,7 @@ mobs:register_mob("mobs_monster:tree_monster", {
if tmp.explode and math.random(2) == 1 then return true end if tmp.explode and math.random(2) == 1 then return true end
if core.find_node_near(pos, 1, tmp.nodes) then if minetest.find_node_near(pos, 1, tmp.nodes) then
self.base_texture = tmp.skins self.base_texture = tmp.skins
self.object:set_properties({textures = tmp.skins}) self.object:set_properties({textures = tmp.skins})