Add monsters
|
@ -131,6 +131,10 @@ origin https://codeberg.org/Hamlet/mobs_humans (fetch)
|
|||
* master 673a63c [origin/master] Delete LICENSE.txt
|
||||
Mod: mobs/mobs_humans
|
||||
|
||||
origin https://notabug.org/TenPlus1/mobs_monster.git (fetch)
|
||||
* master 4018a5c [origin/master] Added spawn.lua check for custom mob spawns, example file included
|
||||
Mod: mobs/mobs_monster
|
||||
|
||||
origin https://github.com/runsy/petz (fetch)
|
||||
* master 1c03c2a [origin/master] get chcicken legs from chicken legs bucket
|
||||
Mod: mobs/petz
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
default
|
||||
mobs
|
||||
lucky_block?
|
||||
toolranks?
|
||||
intllib?
|
|
@ -0,0 +1 @@
|
|||
Adds many types of monster.
|
|
@ -0,0 +1,77 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
|
||||
-- Dirt Monster by PilzAdam
|
||||
|
||||
mobs:register_mob("mobs_monster:dirt_monster", {
|
||||
type = "monster",
|
||||
passive = false,
|
||||
attack_type = "dogfight",
|
||||
pathfinding = true,
|
||||
reach = 2,
|
||||
damage = 2,
|
||||
hp_min = 3,
|
||||
hp_max = 27,
|
||||
armor = 100,
|
||||
collisionbox = {-0.4, -1, -0.4, 0.4, 0.8, 0.4},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_stone_monster.b3d",
|
||||
textures = {
|
||||
{"mobs_dirt_monster.png"},
|
||||
},
|
||||
blood_texture = "default_dirt.png",
|
||||
makes_footstep_sound = true,
|
||||
sounds = {
|
||||
random = "mobs_dirtmonster",
|
||||
},
|
||||
view_range = 15,
|
||||
walk_velocity = 1,
|
||||
run_velocity = 3,
|
||||
jump = true,
|
||||
drops = {
|
||||
{name = "default:dirt", chance = 1, min = 0, max = 2},
|
||||
},
|
||||
water_damage = 1,
|
||||
lava_damage = 5,
|
||||
light_damage = 3,
|
||||
fear_height = 4,
|
||||
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,
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
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},
|
||||
min_light = 0,
|
||||
max_light = 7,
|
||||
chance = 6000,
|
||||
active_object_count = 2,
|
||||
min_height = 0,
|
||||
day_toggle = false,
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
mobs:register_egg("mobs_monster:dirt_monster", S("Dirt Monster"), "default_dirt.png", 1)
|
||||
|
||||
|
||||
mobs:alias_mob("mobs:dirt_monster", "mobs_monster:dirt_monster") -- compatibility
|
|
@ -0,0 +1,143 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
|
||||
-- Dungeon Master by PilzAdam
|
||||
|
||||
mobs:register_mob("mobs_monster:dungeon_master", {
|
||||
type = "monster",
|
||||
passive = false,
|
||||
damage = 6,
|
||||
attack_type = "dogshoot",
|
||||
dogshoot_switch = 1,
|
||||
dogshoot_count_max = 12, -- shoot for 10 seconds
|
||||
dogshoot_count2_max = 3, -- dogfight for 3 seconds
|
||||
reach = 3,
|
||||
shoot_interval = 2.2,
|
||||
arrow = "mobs_monster:fireball",
|
||||
shoot_offset = 1,
|
||||
hp_min = 22,
|
||||
hp_max = 45,
|
||||
armor = 60,
|
||||
collisionbox = {-0.7, -1, -0.7, 0.7, 1.6, 0.7},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_dungeon_master.b3d",
|
||||
textures = {
|
||||
{"mobs_dungeon_master.png"},
|
||||
{"mobs_dungeon_master2.png"},
|
||||
{"mobs_dungeon_master3.png"},
|
||||
},
|
||||
makes_footstep_sound = true,
|
||||
sounds = {
|
||||
random = "mobs_dungeonmaster",
|
||||
shoot_attack = "mobs_fireball",
|
||||
},
|
||||
walk_velocity = 1,
|
||||
run_velocity = 3,
|
||||
jump = true,
|
||||
view_range = 15,
|
||||
drops = {
|
||||
{name = "default:mese_crystal_fragment", chance = 1, 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:diamond", chance = 4, min = 0, max = 1},
|
||||
{name = "default:diamondblock", chance = 30, min = 0, max = 1},
|
||||
},
|
||||
water_damage = 1,
|
||||
lava_damage = 1,
|
||||
light_damage = 0,
|
||||
fear_height = 3,
|
||||
animation = {
|
||||
stand_start = 0,
|
||||
stand_end = 19,
|
||||
walk_start = 20,
|
||||
walk_end = 35,
|
||||
punch_start = 36,
|
||||
punch_end = 48,
|
||||
shoot_start = 36,
|
||||
shoot_end = 48,
|
||||
speed_normal = 15,
|
||||
speed_run = 15,
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
if not mobs.custom_spawn_monster then
|
||||
mobs:spawn({
|
||||
name = "mobs_monster:dungeon_master",
|
||||
nodes = {"default:stone"},
|
||||
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)
|
||||
|
||||
|
||||
mobs:alias_mob("mobs:dungeon_master", "mobs_monster:dungeon_master") -- compatibility
|
||||
|
||||
|
||||
-- fireball (weapon)
|
||||
mobs:register_arrow("mobs_monster:fireball", {
|
||||
visual = "sprite",
|
||||
visual_size = {x = 1, y = 1},
|
||||
textures = {"mobs_fireball.png"},
|
||||
collisionbox = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
|
||||
velocity = 7,
|
||||
tail = 1,
|
||||
tail_texture = "mobs_fireball.png",
|
||||
tail_size = 10,
|
||||
glow = 5,
|
||||
expire = 0.1,
|
||||
|
||||
on_activate = function(self, staticdata, dtime_s)
|
||||
-- make fireball indestructable
|
||||
self.object:set_armor_groups({immortal = 1, fleshy = 100})
|
||||
end,
|
||||
|
||||
-- if player has a good weapon with 7+ damage it can deflect fireball
|
||||
on_punch = function(self, hitter, tflp, tool_capabilities, dir)
|
||||
|
||||
if hitter and hitter:is_player() and tool_capabilities and dir then
|
||||
|
||||
local damage = tool_capabilities.damage_groups and
|
||||
tool_capabilities.damage_groups.fleshy or 1
|
||||
|
||||
local tmp = tflp / (tool_capabilities.full_punch_interval or 1.4)
|
||||
|
||||
if damage > 6 and tmp < 4 then
|
||||
|
||||
self.object:set_velocity({
|
||||
x = dir.x * self.velocity,
|
||||
y = dir.y * self.velocity,
|
||||
z = dir.z * self.velocity,
|
||||
})
|
||||
end
|
||||
end
|
||||
end,
|
||||
|
||||
-- direct hit, no fire... just plenty of pain
|
||||
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,
|
||||
|
||||
-- node hit
|
||||
hit_node = function(self, pos, node)
|
||||
mobs:boom(self, pos, 1)
|
||||
end
|
||||
})
|
||||
|
||||
--minetest.override_item("default:obsidian", {on_blast = function() end})
|
|
@ -0,0 +1,43 @@
|
|||
|
||||
-- Load support for intllib.
|
||||
local path = minetest.get_modpath(minetest.get_current_modname()) .. "/"
|
||||
|
||||
local S = minetest.get_translator and minetest.get_translator("mobs_monster") or
|
||||
dofile(path .. "intllib.lua")
|
||||
|
||||
mobs.intllib = S
|
||||
|
||||
|
||||
-- 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
|
||||
|
||||
|
||||
-- Monsters
|
||||
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
|
||||
|
||||
|
||||
-- Load custom spawning
|
||||
if mobs.custom_spawn_monster then
|
||||
dofile(path .. "spawn.lua")
|
||||
end
|
||||
|
||||
|
||||
-- Lucky Blocks
|
||||
dofile(path .. "lucky_block.lua")
|
||||
|
||||
|
||||
print (S("[MOD] Mobs Redo Monsters loaded"))
|
|
@ -0,0 +1,3 @@
|
|||
-- Support for the old multi-load method
|
||||
dofile(minetest.get_modpath("intllib").."/init.lua")
|
||||
|
|
@ -0,0 +1,333 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
|
||||
-- Lava Flan by Zeg9 (additional textures by JurajVajda)
|
||||
|
||||
mobs:register_mob("mobs_monster:lava_flan", {
|
||||
type = "monster",
|
||||
passive = false,
|
||||
attack_type = "dogfight",
|
||||
reach = 2,
|
||||
damage = 3,
|
||||
hp_min = 10,
|
||||
hp_max = 35,
|
||||
armor = 80,
|
||||
collisionbox = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5},
|
||||
visual = "mesh",
|
||||
mesh = "zmobs_lava_flan.x",
|
||||
textures = {
|
||||
{"zmobs_lava_flan.png"},
|
||||
{"zmobs_lava_flan2.png"},
|
||||
{"zmobs_lava_flan3.png"},
|
||||
},
|
||||
blood_texture = "fire_basic_flame.png",
|
||||
makes_footstep_sound = false,
|
||||
sounds = {
|
||||
random = "mobs_lavaflan",
|
||||
war_cry = "mobs_lavaflan",
|
||||
},
|
||||
walk_velocity = 0.5,
|
||||
run_velocity = 2,
|
||||
jump = true,
|
||||
view_range = 10,
|
||||
floats = 1,
|
||||
drops = {
|
||||
{name = "mobs:lava_orb", chance = 15, min = 1, max = 1},
|
||||
},
|
||||
water_damage = 8,
|
||||
lava_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,
|
||||
stand_start = 0,
|
||||
stand_end = 8,
|
||||
walk_start = 10,
|
||||
walk_end = 18,
|
||||
run_start = 20,
|
||||
run_end = 28,
|
||||
punch_start = 20,
|
||||
punch_end = 28,
|
||||
},
|
||||
on_die = function(self, pos)
|
||||
|
||||
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
|
||||
if minetest.get_node(pos).name == "air" then
|
||||
minetest.set_node(pos, {name = "fire:basic_flame"})
|
||||
end
|
||||
|
||||
mobs:effect(pos, 40, "fire_basic_flame.png", 2, 3, 2, 5, 10, nil)
|
||||
|
||||
self.object:remove()
|
||||
end
|
||||
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,
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
-- lava orb
|
||||
minetest.register_craftitem(":mobs:lava_orb", {
|
||||
description = S("Lava orb"),
|
||||
inventory_image = "zmobs_lava_orb.png",
|
||||
})
|
||||
|
||||
minetest.register_alias("zmobs:lava_orb", "mobs:lava_orb")
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "mobs:lava_orb",
|
||||
burntime = 80,
|
||||
})
|
||||
|
||||
|
||||
-- Lava Pick (digs and smelts at same time)
|
||||
|
||||
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)
|
||||
end
|
||||
|
||||
-- reset new smelted drops
|
||||
local hot_drops = {}
|
||||
|
||||
-- loop through current node drops
|
||||
for _, drop in pairs(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
|
||||
|
||||
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)
|
||||
end
|
||||
end
|
||||
|
||||
return old_handle_node_drops(pos, hot_drops, digger)
|
||||
end
|
||||
|
||||
minetest.register_tool(":mobs:pick_lava", {
|
||||
description = S("Lava Pickaxe"),
|
||||
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},
|
||||
},
|
||||
damage_groups = {fleshy = 6, fire = 1},
|
||||
},
|
||||
groups = {pickaxe = 1}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mobs:pick_lava",
|
||||
recipe = {
|
||||
{"mobs:lava_orb", "mobs:lava_orb", "mobs:lava_orb"},
|
||||
{"", "default:obsidian_shard", ""},
|
||||
{"", "default:obsidian_shard", ""},
|
||||
}
|
||||
})
|
||||
|
||||
-- Add [toolranks] mod support if found
|
||||
if minetest.get_modpath("toolranks") then
|
||||
|
||||
minetest.override_item("mobs:pick_lava", {
|
||||
original_description = "Lava Pickaxe",
|
||||
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",
|
||||
-- war_cry = "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,
|
||||
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,
|
||||
}
|
||||
})
|
||||
|
||||
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 = "wielditem",
|
||||
visual_size = {x = 0.5, y = 0.5},
|
||||
textures = {"default_obsidian_shard.png"},
|
||||
velocity = 6,
|
||||
-- rotate = 180,
|
||||
|
||||
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 = minetest.registered_nodes[node]
|
||||
if def then
|
||||
node = { name = node }
|
||||
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 = 12, gain = 1.0}, true)
|
||||
end
|
||||
})
|
|
@ -0,0 +1,32 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 TenPlus1
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
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.
|
||||
|
||||
mobs.fireball.png was originally made by Sapier and edited by Benrob:
|
||||
|
||||
-- Animals Mod by Sapier
|
||||
--
|
||||
-- You may copy, use, modify or do nearly anything except removing this
|
||||
-- copyright notice.
|
||||
-- And of course you are NOT allow to pretend you have written it.
|
||||
--
|
||||
-- (c) Sapier
|
||||
-- Contact sapier a t gmx net
|
|
@ -0,0 +1,37 @@
|
|||
# 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
|
|
@ -0,0 +1,34 @@
|
|||
# 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
|
|
@ -0,0 +1,38 @@
|
|||
# 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
|
|
@ -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
|
|
@ -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=
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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ı
|
|
@ -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=树怪
|
|
@ -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=樹怪
|
|
@ -0,0 +1,35 @@
|
|||
# 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
|
|
@ -0,0 +1,36 @@
|
|||
# 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=
|
||||
Obsidian Flan=
|
||||
|
||||
#mese_monster.lua
|
||||
Mese Monster=
|
||||
|
||||
#oerkki.lua
|
||||
Oerkki=
|
||||
|
||||
#sandmonster.lua
|
||||
Sand Monster=
|
||||
|
||||
#spider.lua
|
||||
Spider=
|
||||
Cobweb=
|
||||
|
||||
#stonemonster.lua
|
||||
Stone Monster=
|
||||
|
||||
#treemonster.lua
|
||||
Tree Monster=
|
|
@ -0,0 +1,39 @@
|
|||
# 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ı
|
|
@ -0,0 +1,36 @@
|
|||
# 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 = [模组] Mobs Redo 'Monsters' 已加载
|
||||
|
||||
#lava_flan.lua
|
||||
Lava Flan = 岩浆饼
|
||||
Lava orb = 岩浆球
|
||||
Lava Pickaxe = 岩浆镐
|
||||
Obsidian Flan = 黑耀石饼
|
||||
|
||||
#mese_monster.lua
|
||||
Mese Monster = 黄石怪
|
||||
|
||||
#oerkki.lua
|
||||
Oerkki = 奥尔基
|
||||
|
||||
#sandmonster.lua
|
||||
Sand Monster = 沙怪
|
||||
|
||||
#spider.lua
|
||||
Spider = 蜘蛛
|
||||
Cobweb = 蜘蛛网
|
||||
|
||||
#stonemonster.lua
|
||||
Stone Monster = 石头怪
|
||||
|
||||
#treemonster.lua
|
||||
Tree Monster = 树怪
|
|
@ -0,0 +1,36 @@
|
|||
# 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 = [模組] Mobs Redo 'Monsters' 已加載
|
||||
|
||||
#lava_flan.lua
|
||||
Lava Flan = 岩漿餅
|
||||
Lava orb = 岩漿球
|
||||
Lava Pickaxe = 岩漿鎬
|
||||
Obsidian Flan = 黑耀石餅
|
||||
|
||||
#mese_monster.lua
|
||||
Mese Monster = 黃石怪
|
||||
|
||||
#oerkki.lua
|
||||
Oerkki = 奧爾基
|
||||
|
||||
#sandmonster.lua
|
||||
Sand Monster = 沙怪
|
||||
|
||||
#spider.lua
|
||||
Spider = 蜘蛛
|
||||
Cobweb = 蜘蛛網
|
||||
|
||||
#stonemonster.lua
|
||||
Stone Monster = 石頭怪
|
||||
|
||||
#treemonster.lua
|
||||
Tree Monster = 樹怪
|
|
@ -0,0 +1,42 @@
|
|||
|
||||
if minetest.get_modpath("lucky_block") then
|
||||
|
||||
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,
|
||||
},
|
||||
}
|
||||
|
||||
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
|
|
@ -0,0 +1,113 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
|
||||
-- Mese Monster by Zeg9
|
||||
|
||||
mobs:register_mob("mobs_monster:mese_monster", {
|
||||
type = "monster",
|
||||
passive = false,
|
||||
damage = 3,
|
||||
attack_type = "shoot",
|
||||
shoot_interval = 0.5,
|
||||
arrow = "mobs_monster:mese_arrow",
|
||||
shoot_offset = 2,
|
||||
hp_min = 10,
|
||||
hp_max = 25,
|
||||
armor = 80,
|
||||
collisionbox = {-0.5, -1.5, -0.5, 0.5, 0.5, 0.5},
|
||||
visual = "mesh",
|
||||
mesh = "zmobs_mese_monster.x",
|
||||
textures = {
|
||||
{"zmobs_mese_monster.png"},
|
||||
},
|
||||
blood_texture = "default_mese_crystal_fragment.png",
|
||||
makes_footstep_sound = false,
|
||||
sounds = {
|
||||
random = "mobs_mesemonster",
|
||||
},
|
||||
view_range = 10,
|
||||
walk_velocity = 0.5,
|
||||
run_velocity = 2,
|
||||
jump = true,
|
||||
jump_height = 8,
|
||||
fall_damage = 0,
|
||||
fall_speed = -6,
|
||||
stepheight = 2.1,
|
||||
drops = {
|
||||
{name = "default:mese_crystal", chance = 9, min = 0, max = 2},
|
||||
{name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 2},
|
||||
},
|
||||
water_damage = 1,
|
||||
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,
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
if not mobs.custom_spawn_monster then
|
||||
mobs:spawn({
|
||||
name = "mobs_monster:mese_monster",
|
||||
nodes = {"default:stone"},
|
||||
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
|
||||
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"},
|
||||
}
|
||||
})
|
|
@ -0,0 +1 @@
|
|||
name = mobs_monster
|
|
@ -0,0 +1,77 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
|
||||
-- Oerkki by PilzAdam
|
||||
|
||||
mobs:register_mob("mobs_monster:oerkki", {
|
||||
type = "monster",
|
||||
passive = false,
|
||||
attack_type = "dogfight",
|
||||
pathfinding = true,
|
||||
reach = 2,
|
||||
damage = 4,
|
||||
hp_min = 8,
|
||||
hp_max = 34,
|
||||
armor = 100,
|
||||
collisionbox = {-0.4, -1, -0.4, 0.4, 0.9, 0.4},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_oerkki.b3d",
|
||||
textures = {
|
||||
{"mobs_oerkki.png"},
|
||||
{"mobs_oerkki2.png"},
|
||||
},
|
||||
makes_footstep_sound = false,
|
||||
sounds = {
|
||||
random = "mobs_oerkki",
|
||||
},
|
||||
walk_velocity = 1,
|
||||
run_velocity = 3,
|
||||
view_range = 10,
|
||||
jump = true,
|
||||
drops = {
|
||||
{name = "default:obsidian", chance = 3, min = 0, max = 2},
|
||||
{name = "default:gold_lump", chance = 2, min = 0, max = 2},
|
||||
},
|
||||
water_damage = 2,
|
||||
lava_damage = 4,
|
||||
light_damage = 1,
|
||||
fear_height = 4,
|
||||
animation = {
|
||||
stand_start = 0,
|
||||
stand_end = 23,
|
||||
walk_start = 24,
|
||||
walk_end = 36,
|
||||
run_start = 37,
|
||||
run_end = 49,
|
||||
punch_start = 37,
|
||||
punch_end = 49,
|
||||
speed_normal = 15,
|
||||
speed_run = 15,
|
||||
},
|
||||
replace_rate = 5,
|
||||
replace_what = {"default:torch"},
|
||||
replace_with = "air",
|
||||
replace_offset = -1,
|
||||
immune_to = {
|
||||
{"default:sword_wood", 0}, -- no damage
|
||||
{"default:gold_lump", -10}, -- heals by 10 points
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
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)
|
||||
|
||||
|
||||
mobs:alias_mob("mobs:oerkki", "mobs_monster:oerkki") -- compatiblity
|
|
@ -0,0 +1,40 @@
|
|||
|
||||
MONSTER MOBS
|
||||
|
||||
Dirt Monster
|
||||
|
||||
- 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.
|
||||
|
||||
Dungeon Master
|
||||
|
||||
- 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.
|
||||
|
||||
Lava Flan
|
||||
|
||||
- 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.
|
||||
|
||||
Mese Monster
|
||||
|
||||
- These mobs are territorial and spawn below -20 and will fire mese shards at passers by, so best avoided. Will drop mese when killed.
|
||||
|
||||
Oerkki
|
||||
|
||||
- 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.
|
||||
|
||||
Sand Monster
|
||||
|
||||
- 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.
|
||||
|
||||
Spiders
|
||||
|
||||
- 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.
|
||||
|
||||
Stone 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. can drop torch, iron or coal when killed.
|
||||
|
||||
Tree Monster
|
||||
|
||||
- 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.
|
||||
|
||||
Lucky Blocks: 11
|
|
@ -0,0 +1,133 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
|
||||
-- custom particle effects
|
||||
local effect = function(
|
||||
pos, amount, texture, min_size, max_size, radius, gravity, glow)
|
||||
|
||||
radius = radius or 2
|
||||
min_size = min_size or 0.5
|
||||
max_size = max_size or 1
|
||||
gravity = gravity or -10
|
||||
glow = glow or 0
|
||||
|
||||
minetest.add_particlespawner({
|
||||
amount = amount,
|
||||
time = 0.25,
|
||||
minpos = pos,
|
||||
maxpos = pos,
|
||||
minvel = {x = -radius, y = -radius, z = -radius},
|
||||
maxvel = {x = radius, y = radius, z = radius},
|
||||
minacc = {x = 0, y = gravity, z = 0},
|
||||
maxacc = {x = -20, y = gravity, z = 15},
|
||||
minexptime = 0.1,
|
||||
maxexptime = 1,
|
||||
minsize = min_size,
|
||||
maxsize = max_size,
|
||||
texture = texture,
|
||||
glow = glow,
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
-- Sand Monster by PilzAdam
|
||||
|
||||
mobs:register_mob("mobs_monster:sand_monster", {
|
||||
type = "monster",
|
||||
passive = false,
|
||||
attack_type = "dogfight",
|
||||
pathfinding = true,
|
||||
--specific_attack = {"player", "mobs_npc:npc"},
|
||||
reach = 2,
|
||||
damage = 1,
|
||||
hp_min = 4,
|
||||
hp_max = 20,
|
||||
armor = 100,
|
||||
collisionbox = {-0.4, -1, -0.4, 0.4, 0.8, 0.4},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_sand_monster.b3d",
|
||||
textures = {
|
||||
{"mobs_sand_monster.png"},
|
||||
},
|
||||
blood_texture = "default_desert_sand.png",
|
||||
makes_footstep_sound = true,
|
||||
sounds = {
|
||||
random = "mobs_sandmonster",
|
||||
},
|
||||
walk_velocity = 1.5,
|
||||
run_velocity = 4,
|
||||
view_range = 8, --15
|
||||
jump = true,
|
||||
floats = 0,
|
||||
drops = {
|
||||
{name = "default:desert_sand", chance = 1, min = 3, max = 5},
|
||||
},
|
||||
water_damage = 3,
|
||||
lava_damage = 4,
|
||||
light_damage = 0,
|
||||
fear_height = 4,
|
||||
animation = {
|
||||
speed_normal = 15,
|
||||
speed_run = 15,
|
||||
stand_start = 0,
|
||||
stand_end = 39,
|
||||
walk_start = 41,
|
||||
walk_end = 72,
|
||||
run_start = 74,
|
||||
run_end = 105,
|
||||
punch_start = 74,
|
||||
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)
|
||||
local pos = self.object:get_pos()
|
||||
minetest.add_item(pos, "default:sand")
|
||||
end,
|
||||
]]
|
||||
on_die = function(self, pos)
|
||||
pos.y = pos.y + 0.5
|
||||
mobs:effect(pos, 30, "mobs_sand_particles.png", .1, 2, 3, 5)
|
||||
pos.y = pos.y + 0.25
|
||||
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,
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
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
|
|
@ -0,0 +1,173 @@
|
|||
|
||||
--[[ 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,
|
||||
})
|
|
@ -0,0 +1,246 @@
|
|||
|
||||
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
|
||||
|
||||
-- Spider by AspireMint (CC-BY-SA 3.0 license)
|
||||
|
||||
mobs:register_mob("mobs_monster:spider", {
|
||||
--docile_by_day = true,
|
||||
group_attack = true,
|
||||
type = "monster",
|
||||
passive = false,
|
||||
attack_type = "dogfight",
|
||||
reach = 2,
|
||||
damage = 3,
|
||||
hp_min = 10,
|
||||
hp_max = 30,
|
||||
armor = 200,
|
||||
collisionbox = {-0.8, -0.5, -0.8, 0.8, 0, 0.8},
|
||||
visual_size = {x = 1, y = 1},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_spider.b3d",
|
||||
textures = {
|
||||
{"mobs_spider_mese.png"},
|
||||
{"mobs_spider_orange.png"},
|
||||
{"mobs_spider_snowy.png"},
|
||||
{"mobs_spider_grey.png"},
|
||||
{"mobs_spider_crystal.png"},
|
||||
},
|
||||
makes_footstep_sound = false,
|
||||
sounds = {
|
||||
random = "mobs_spider",
|
||||
attack = "mobs_spider",
|
||||
},
|
||||
walk_velocity = 1,
|
||||
run_velocity = 3,
|
||||
jump = true,
|
||||
view_range = 15,
|
||||
floats = 0,
|
||||
drops = {
|
||||
{name = "farming:string", chance = 1, min = 0, max = 2},
|
||||
},
|
||||
water_damage = 5,
|
||||
lava_damage = 5,
|
||||
light_damage = 0,
|
||||
animation = {
|
||||
speed_normal = 15,
|
||||
speed_run = 20,--15,
|
||||
stand_start = 0,
|
||||
stand_end = 0,
|
||||
walk_start = 1,
|
||||
walk_end = 21,
|
||||
run_start = 1,
|
||||
run_end = 21,
|
||||
punch_start = 25,
|
||||
punch_end = 45,
|
||||
},
|
||||
-- what kind of spider are we spawning?
|
||||
on_spawn = function(self)
|
||||
|
||||
local pos = self.object:get_pos() ; pos.y = pos.y - 1
|
||||
|
||||
-- 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},
|
||||
}
|
||||
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
|
||||
|
||||
pos.y = pos.y + self.collisionbox[2] - 0.2
|
||||
|
||||
local dir_x = -math.sin(yaw) * (self.collisionbox[4] + 0.5)
|
||||
local dir_z = math.cos(yaw) * (self.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
|
||||
mobs:set_animation(self, "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
|
||||
})
|
||||
|
||||
|
||||
if not mobs.custom_spawn_monster then
|
||||
-- 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)
|
||||
|
||||
|
||||
mobs:alias_mob("mobs_monster:spider2", "mobs_monster:spider") -- compatibility
|
||||
mobs:alias_mob("mobs:spider", "mobs_monster:spider")
|
||||
|
||||
|
||||
-- cobweb
|
||||
minetest.register_node(":mobs:cobweb", {
|
||||
description = S("Cobweb"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 1.2,
|
||||
tiles = {"mobs_cobweb.png"},
|
||||
inventory_image = "mobs_cobweb.png",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
liquid_viscosity = 11,
|
||||
liquidtype = "source",
|
||||
liquid_alternative_flowing = "mobs:cobweb",
|
||||
liquid_alternative_source = "mobs:cobweb",
|
||||
liquid_renewable = false,
|
||||
liquid_range = 0,
|
||||
walkable = false,
|
||||
groups = {snappy = 1, disable_jump = 1},
|
||||
drop = "farming:string",
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mobs:cobweb",
|
||||
recipe = {
|
||||
{"farming:string", "", "farming:string"},
|
||||
{"", "farming:string", ""},
|
||||
{"farming:string", "", "farming:string"},
|
||||
}
|
||||
})
|
|
@ -0,0 +1,79 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
|
||||
-- Stone Monster by PilzAdam
|
||||
|
||||
mobs:register_mob("mobs_monster:stone_monster", {
|
||||
type = "monster",
|
||||
passive = false,
|
||||
attack_type = "dogfight",
|
||||
pathfinding = true,
|
||||
reach = 2,
|
||||
damage = 3,
|
||||
hp_min = 12,
|
||||
hp_max = 35,
|
||||
armor = 80,
|
||||
collisionbox = {-0.4, -1, -0.4, 0.4, 0.9, 0.4},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_stone_monster.b3d",
|
||||
textures = {
|
||||
{"mobs_stone_monster.png"},
|
||||
{"mobs_stone_monster2.png"}, -- by AMMOnym
|
||||
},
|
||||
makes_footstep_sound = true,
|
||||
sounds = {
|
||||
random = "mobs_stonemonster",
|
||||
},
|
||||
walk_velocity = 1,
|
||||
run_velocity = 2,
|
||||
jump_height = 0,
|
||||
stepheight = 1.1,
|
||||
floats = 0,
|
||||
view_range = 10,
|
||||
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},
|
||||
},
|
||||
water_damage = 0,
|
||||
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,
|
||||
},
|
||||
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},
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
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)
|
||||
|
||||
|
||||
mobs:alias_mob("mobs:stone_monster", "mobs_monster:stone_monster") -- compatibility
|
After Width: | Height: | Size: 144 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 220 B |
After Width: | Height: | Size: 275 B |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 239 B |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 148 B |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 7.8 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 8.3 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 522 B |
After Width: | Height: | Size: 567 B |
|
@ -0,0 +1,85 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
|
||||
-- Tree Monster (or Tree Gollum) by PilzAdam
|
||||
|
||||
mobs:register_mob("mobs_monster:tree_monster", {
|
||||
type = "monster",
|
||||
passive = false,
|
||||
attack_type = "dogfight",
|
||||
attack_animals = true,
|
||||
--specific_attack = {"player", "mobs_animal:chicken"},
|
||||
reach = 2,
|
||||
damage = 2,
|
||||
hp_min = 7,
|
||||
hp_max = 33,
|
||||
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"},
|
||||
},
|
||||
blood_texture = "default_wood.png",
|
||||
makes_footstep_sound = true,
|
||||
sounds = {
|
||||
random = "mobs_treemonster",
|
||||
},
|
||||
walk_velocity = 1,
|
||||
run_velocity = 3,
|
||||
jump = true,
|
||||
view_range = 15,
|
||||
drops = {
|
||||
{name = "default:stick", chance = 1, min = 0, max = 2},
|
||||
{name = "default:sapling", chance = 2, min = 0, max = 2},
|
||||
{name = "default:junglesapling", chance = 3, min = 0, max = 2},
|
||||
{name = "default:apple", chance = 4, min = 1, max = 2},
|
||||
},
|
||||
water_damage = 0,
|
||||
lava_damage = 0,
|
||||
light_damage = 2,
|
||||
fall_damage = 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,
|
||||
stand_start = 0,
|
||||
stand_end = 24,
|
||||
walk_start = 25,
|
||||
walk_end = 47,
|
||||
run_start = 48,
|
||||
run_end = 62,
|
||||
punch_start = 48,
|
||||
punch_end = 62,
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
if not mobs.custom_spawn_monster then
|
||||
mobs:spawn({
|
||||
name = "mobs_monster:tree_monster",
|
||||
nodes = {"default:leaves", "default:jungleleaves"},
|
||||
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)
|
||||
|
||||
|
||||
mobs:alias_mob("mobs:tree_monster", "mobs_monster:tree_monster") -- compatibility
|
|
@ -7,3 +7,4 @@ petz - nice animals
|
|||
mobs_ghost_redo - ghost
|
||||
water_life - water animals
|
||||
goblins - underground mobs
|
||||
mobs_monster - monsters
|
||||
|
|