2022-02-15 17:51:17 +02:00

131 lines
2.9 KiB
Lua

local S = mobs_monster.S
local spider_replace = {"air", "mobs:cobweb"}
if not minetest.is_singleplayer() then
spider_replace = {}
end
-- Spider by AspireMint (fishyWET (CC-BY-SA 3.0 license for texture)
mobs:register_mob("mobs_monster:spider", {
description = S"Spider",
docile_by_day = true,
group_attack = true,
type = "monster",
passive = false,
damage = 3,
hp_min = 15,
hp_max = 20,
collisionbox = {-0.8, -0.5, -0.8, 0.8, 0, 0.8},
visual = "mesh",
mesh = "mobs_spider.b3d",
textures = {
{"mobs_spider.png"},
{"mobs_spider_grey.png"},
{"mobs_spider_orange.png"}
},
sounds = {
random = "mobs_spider",
attack = "mobs_spider",
damage = "mobs_spider_damage"
},
run_velocity = 3,
view_range = 15,
replace_rate = 96,
replace_what = {
spider_replace
},
floats = 0,
drops = function(pos)
if rawget(_G, "experience") then
experience.add_orb(math.random(2, 4), pos)
end
return {
{name = "farming:string"},
{name = "farming:string", chance = 2}
}
end,
water_damage = 5,
animation = {
speed_normal = 15, speed_run = 20,
stand_start = 0, stand_end = 0,
walk_start = 1, walk_end = 21,
run_start = 1, run_end = 21,
punch_start = 25, punch_end = 45,
},
-- make spiders jump at you on attack
--[[custom_attack = function(self)
local vel = self.object:get_velocity()
self.object:set_velocity({
x = vel.x * self.run_velocity,
y = self.jump_height * 1.2,
z = vel.z * self.run_velocity
})
self.pausetimer = 0.5
return true -- continue rest of attack function
end]]
})
-- Small spider
mobs:register_mob("mobs_monster:small_spider", {
description = S"Small Spider",
group_attack = true,
type = "animal",
passive = false,
damage = 1,
hp_min = 5,
hp_max = 10,
collisionbox = {-0.3, -0.15, -0.3, 0.3, 0.05, 0.3},
visual = "mesh",
mesh = "mobs_spider.b3d",
textures = {
{"mobs_spider.png"},
{"mobs_spider_grey.png"},
{"mobs_spider_orange.png"}
},
visual_size = {x = 0.3, y = 0.3},
sounds = {
random = "mobs_spider",
attack = "mobs_spider",
damage = "mobs_spider_damage"
},
run_velocity = 3,
view_range = 10,
floats = 0,
drops = function(pos)
if rawget(_G, "experience") then
experience.add_orb(math.random(2), pos)
end
return {
{name = "farming:string"}
}
end,
water_damage = 5,
animation = {
speed_normal = 15, speed_run = 20,
stand_start = 0, stand_end = 0,
walk_start = 1, walk_end = 21,
run_start = 1, run_end = 21,
punch_start = 25, punch_end = 45
}
})
mobs:register_egg("mobs_monster:spider", S"Spider Egg", "mobs_monster_egg.png^mobs_monster_spider_egg.png")
mobs:register_egg("mobs_monster:small_spider", S"Small Spider Egg", "mobs_monster_egg.png^mobs_monster_spider_small_egg.png")
mobs:spawn({
name = "mobs_monster:spider",
nodes = mobs_monster.spawn_nodes,
max_light = 12,
chance = 20000
})
mobs:spawn({
name = "mobs_monster:small_spider",
nodes = mobs_monster.spawn_nodes,
chance = 20000
})