merge upstream
@ -30,7 +30,7 @@ mobs:register_mob("mobs_monster:dirt_monster", {
|
||||
run_velocity = 3,
|
||||
jump = true,
|
||||
drops = {
|
||||
{name = "default:dirt", chance = 1, min = 3, max = 5},
|
||||
{name = "default:dirt", chance = 1, min = 0, max = 2},
|
||||
},
|
||||
water_damage = 1,
|
||||
lava_damage = 5,
|
||||
@ -62,7 +62,7 @@ mobs:spawn({
|
||||
nodes = {spawn_on},
|
||||
min_light = 0,
|
||||
max_light = 7,
|
||||
chance = 7000,
|
||||
chance = 6000,
|
||||
active_object_count = 2,
|
||||
min_height = 0,
|
||||
max_height = 80,
|
||||
|
@ -7,17 +7,17 @@ local S = mobs.intllib
|
||||
mobs:register_mob("mobs_monster:dungeon_master", {
|
||||
type = "monster",
|
||||
passive = false,
|
||||
damage = 4,
|
||||
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.5,
|
||||
shoot_interval = 2.2,
|
||||
arrow = "mobs_monster:fireball",
|
||||
shoot_offset = 1,
|
||||
hp_min = 12,
|
||||
hp_max = 35,
|
||||
hp_min = 22,
|
||||
hp_max = 45,
|
||||
armor = 60,
|
||||
collisionbox = {-0.7, -1, -0.7, 0.7, 1.6, 0.7},
|
||||
visual = "mesh",
|
||||
@ -37,11 +37,12 @@ mobs:register_mob("mobs_monster:dungeon_master", {
|
||||
jump = true,
|
||||
view_range = 15,
|
||||
drops = {
|
||||
{name = "default:mese_crystal_fragment", chance = 1, min = 1, max = 3},
|
||||
{name = "default:diamond", chance = 4, min = 1, max = 1},
|
||||
{name = "default:mese_crystal", chance = 2, min = 1, max = 2},
|
||||
{name = "default:diamondblock", chance = 30, min = 1, max = 1},
|
||||
{name = "ethereal:bone", chance = 2, min = 2, max = 4}
|
||||
{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},
|
||||
{name = "ethereal:bone", chance = 2, min = 2, max = 4},
|
||||
},
|
||||
water_damage = 1,
|
||||
lava_damage = 1,
|
||||
@ -65,8 +66,8 @@ mobs:register_mob("mobs_monster:dungeon_master", {
|
||||
mobs:spawn({
|
||||
name = "mobs_monster:dungeon_master",
|
||||
nodes = {"default:stone"},
|
||||
max_light = 7,
|
||||
chance = 7000,
|
||||
max_light = 5,
|
||||
chance = 9000,
|
||||
active_object_count = 1,
|
||||
max_height = -70,
|
||||
})
|
||||
@ -83,13 +84,40 @@ mobs:register_arrow("mobs_monster:fireball", {
|
||||
visual = "sprite",
|
||||
visual_size = {x = 1, y = 1},
|
||||
textures = {"mobs_fireball.png"},
|
||||
velocity = 6,
|
||||
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, {
|
||||
@ -105,8 +133,10 @@ mobs:register_arrow("mobs_monster:fireball", {
|
||||
}, nil)
|
||||
end,
|
||||
|
||||
-- node hit, bursts into flame
|
||||
-- node hit
|
||||
hit_node = function(self, pos, node)
|
||||
mobs:explosion(pos, 1, 1, 0)
|
||||
mobs:boom(self, pos, 1)
|
||||
end
|
||||
})
|
||||
|
||||
--minetest.override_item("default:obsidian", {on_blast = function() end})
|
||||
|
2
init.lua
@ -30,4 +30,4 @@ dofile(path .. "/spider.lua") -- AspireMint
|
||||
|
||||
dofile(path .. "/lucky_block.lua")
|
||||
|
||||
print ("[MOD] Mobs Redo 'Monsters' loaded")
|
||||
print ("[MOD] Mobs Redo Monsters loaded")
|
||||
|
@ -35,9 +35,12 @@ mobs:register_mob("mobs_monster:lava_flan", {
|
||||
drops = {
|
||||
{name = "mobs:lava_orb", chance = 15, min = 1, max = 1},
|
||||
},
|
||||
water_damage = 5,
|
||||
water_damage = 8,
|
||||
lava_damage = 0,
|
||||
light_damage = 0,
|
||||
immune_to = {
|
||||
{"mobs:pick_lava", -2}, -- lava pick heals 2 health
|
||||
},
|
||||
animation = {
|
||||
speed_normal = 15,
|
||||
speed_run = 15,
|
||||
@ -51,7 +54,11 @@ mobs:register_mob("mobs_monster:lava_flan", {
|
||||
punch_end = 28,
|
||||
},
|
||||
on_die = function(self, pos)
|
||||
minetest.set_node(pos, {name = "fire:basic_flame"})
|
||||
|
||||
if minetest.get_node(pos).name == "air" then
|
||||
minetest.set_node(pos, {name = "fire:basic_flame"})
|
||||
end
|
||||
|
||||
self.object:remove()
|
||||
|
||||
minetest.add_particlespawner({
|
||||
@ -65,26 +72,26 @@ mobs:register_mob("mobs_monster:lava_flan", {
|
||||
maxacc = {x = 0, y = -10, z = 0},
|
||||
minexptime = 0.1,
|
||||
maxexptime = 1,
|
||||
minsize = 0.5,
|
||||
maxsize = 1.0,
|
||||
minsize = 1.0,
|
||||
maxsize = 2.0,
|
||||
texture = "fire_basic_flame.png",
|
||||
})
|
||||
end,
|
||||
glow = 10,
|
||||
})
|
||||
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_monster:lava_flan",
|
||||
nodes = {"default:lava_source"},
|
||||
chance = 1000,
|
||||
active_object_count = 2,
|
||||
chance = 1500,
|
||||
active_object_count = 1,
|
||||
max_height = 0,
|
||||
})
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
@ -156,8 +163,9 @@ minetest.register_tool(":mobs:pick_lava", {
|
||||
groupcaps={
|
||||
cracky = {times={[1]=1.80, [2]=0.80, [3]=0.40}, uses=40, maxlevel=3},
|
||||
},
|
||||
damage_groups = {fleshy=6},
|
||||
damage_groups = {fleshy = 6, fire = 1},
|
||||
},
|
||||
groups = {pickaxe = 1}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
|
11
license.txt
@ -19,3 +19,14 @@ 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
|
||||
|
34
locale/fr.txt
Normal file
@ -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
|
35
locale/ms.txt
Normal file
@ -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
|
35
locale/zh_CN.txt
Normal file
@ -0,0 +1,35 @@
|
||||
# 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 = 岩浆镐
|
||||
|
||||
#mese_monster.lua
|
||||
Mese Monster = 黄石怪
|
||||
|
||||
#oerkki.lua
|
||||
Oerkki = 奥尔基
|
||||
|
||||
#sandmonster.lua
|
||||
Sand Monster = 沙怪
|
||||
|
||||
#spider.lua
|
||||
Spider = 蜘蛛
|
||||
Cobweb = 蜘蛛网
|
||||
|
||||
#stonemonster.lua
|
||||
Stone Monster = 石头怪
|
||||
|
||||
#treemonster.lua
|
||||
Tree Monster = 树怪
|
35
locale/zh_TW.txt
Normal file
@ -0,0 +1,35 @@
|
||||
# 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 = 岩漿鎬
|
||||
|
||||
#mese_monster.lua
|
||||
Mese Monster = 黃石怪
|
||||
|
||||
#oerkki.lua
|
||||
Oerkki = 奧爾基
|
||||
|
||||
#sandmonster.lua
|
||||
Sand Monster = 沙怪
|
||||
|
||||
#spider.lua
|
||||
Spider = 蜘蛛
|
||||
Cobweb = 蜘蛛網
|
||||
|
||||
#stonemonster.lua
|
||||
Stone Monster = 石頭怪
|
||||
|
||||
#treemonster.lua
|
||||
Tree Monster = 樹怪
|
@ -1,7 +1,30 @@
|
||||
|
||||
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"},
|
||||
|
@ -35,8 +35,8 @@ mobs:register_mob("mobs_monster:mese_monster", {
|
||||
fall_speed = -6,
|
||||
stepheight = 2.1,
|
||||
drops = {
|
||||
{name = "default:mese_crystal", chance = 9, min = 1, max = 3},
|
||||
{name = "default:mese_crystal_fragment", chance = 1, min = 1, max = 9},
|
||||
{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,
|
||||
|
BIN
models/mobs_spider.b3d
Normal file
6103
models/mobs_spider.x
@ -30,8 +30,9 @@ mobs:register_mob("mobs_monster:oerkki", {
|
||||
view_range = 10,
|
||||
jump = true,
|
||||
drops = {
|
||||
{name = "default:obsidian", chance = 3, min = 1, max = 2},
|
||||
{name = "ethereal:bone", chance = 2, min = 1, max = 2}
|
||||
{name = "default:obsidian", chance = 3, min = 0, max = 2},
|
||||
{name = "default:gold_lump", chance = 2, min = 0, max = 2},
|
||||
{name = "ethereal:bone", chance = 2, min = 1, max = 2},
|
||||
},
|
||||
water_damage = 2,
|
||||
lava_damage = 4,
|
||||
|
@ -25,9 +25,9 @@ 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.
|
||||
|
||||
Spider
|
||||
Spiders
|
||||
|
||||
- Found in dark holes inside desertstone (crystal biomes in ethereal), spiders wait for prey to amble past and strike. They are mostly docile during the day though unless hit. Will drop string when killed.
|
||||
- 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
|
||||
|
||||
|
@ -2,6 +2,34 @@
|
||||
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", {
|
||||
@ -21,6 +49,7 @@ mobs:register_mob("mobs_monster:sand_monster", {
|
||||
textures = {
|
||||
{"mobs_sand_monster.png"},
|
||||
},
|
||||
blood_texture = "default_desert_sand.png",
|
||||
makes_footstep_sound = true,
|
||||
sounds = {
|
||||
random = "mobs_sandmonster",
|
||||
@ -49,11 +78,40 @@ mobs:register_mob("mobs_monster:sand_monster", {
|
||||
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:getpos()
|
||||
local pos = self.object:get_pos()
|
||||
minetest.add_item(pos, "default:sand")
|
||||
end,
|
||||
]]
|
||||
on_die = function(self, pos)
|
||||
pos.y = pos.y + 0.5
|
||||
effect(pos, 30, "mobs_sand_particles.png", 0.1, 2, 3, 5)
|
||||
pos.y = pos.y + 0.25
|
||||
effect(pos, 30, "mobs_sand_particles.png", 0.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,
|
||||
]]
|
||||
})
|
||||
|
||||
|
205
spider.lua
@ -1,27 +1,37 @@
|
||||
|
||||
local S = mobs.intllib
|
||||
|
||||
local get_velocity = function(self)
|
||||
|
||||
-- Spider by AspireMint (fishyWET (CC-BY-SA 3.0 license for texture)
|
||||
local v = self.object:get_velocity()
|
||||
|
||||
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,
|
||||
--docile_by_day = true,
|
||||
group_attack = true,
|
||||
type = "monster",
|
||||
passive = false,
|
||||
attack_type = "dogfight",
|
||||
reach = 2,
|
||||
damage = 3,
|
||||
hp_min = 20,
|
||||
hp_max = 40,
|
||||
hp_min = 10,
|
||||
hp_max = 30,
|
||||
armor = 200,
|
||||
collisionbox = {-0.9, -0.01, -0.7, 0.7, 0.6, 0.7},
|
||||
collisionbox = {-0.8, -0.5, -0.8, 0.8, 0, 0.8},
|
||||
visual_size = {x = 1, y = 1},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_spider.x",
|
||||
mesh = "mobs_spider.b3d",
|
||||
textures = {
|
||||
{"mobs_spider.png"},
|
||||
{"mobs_spider_mese.png"},
|
||||
{"mobs_spider_orange.png"},
|
||||
{"mobs_spider_snowy.png"},
|
||||
{"mobs_spider_grey.png"},
|
||||
{"mobs_spider_crystal.png"},
|
||||
},
|
||||
visual_size = {x = 7, y = 7},
|
||||
makes_footstep_sound = false,
|
||||
sounds = {
|
||||
random = "mobs_spider",
|
||||
@ -33,47 +43,182 @@ mobs:register_mob("mobs_monster:spider", {
|
||||
view_range = 15,
|
||||
floats = 0,
|
||||
drops = {
|
||||
{name = "farming:string", chance = 1, min = 1, max = 2},
|
||||
{name = "ethereal:crystal_spike", chance = 15, min = 1, max = 2},
|
||||
{name = "farming:string", chance = 1, min = 0, max = 2},
|
||||
},
|
||||
water_damage = 5,
|
||||
lava_damage = 5,
|
||||
light_damage = 0,
|
||||
animation = {
|
||||
speed_normal = 15,
|
||||
speed_run = 15,
|
||||
stand_start = 1,
|
||||
stand_end = 1,
|
||||
walk_start = 20,
|
||||
walk_end = 40,
|
||||
run_start = 20,
|
||||
run_end = 40,
|
||||
punch_start = 50,
|
||||
punch_end = 90,
|
||||
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 spawn_on = "default:desert_stone"
|
||||
local pos = self.object:get_pos() ; pos.y = pos.y - 1
|
||||
|
||||
if minetest.get_modpath("ethereal") then
|
||||
spawn_on = "ethereal:crystal_dirt"
|
||||
else
|
||||
minetest.register_alias("ethereal:crystal_spike", "default:sandstone")
|
||||
end
|
||||
-- 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.2 then
|
||||
self.disable_falling = false
|
||||
return
|
||||
end
|
||||
|
||||
local pos = self.object:get_pos()
|
||||
local yaw = self.object:get_yaw()
|
||||
|
||||
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)
|
||||
|
||||
minetest.register_alias("mobs:cobweb", "homedecor:cobweb_corner")
|
||||
|
||||
-- turn off falling if attached to facing
|
||||
self.disable_falling = true
|
||||
|
||||
-- move up facing
|
||||
v.y = self.jump_height
|
||||
mobs:set_animation(self, "jump")
|
||||
self.object:set_velocity(v)
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
-- above ground spawn
|
||||
mobs:spawn({
|
||||
name = "mobs_monster:spider",
|
||||
nodes = {spawn_on},
|
||||
nodes = {
|
||||
"default:dirt_with_rainforest_litter", "default:snowblock",
|
||||
"default:snow", "ethereal:crystal_dirt"
|
||||
},
|
||||
min_light = 0,
|
||||
max_light = 12,
|
||||
max_light = 8,
|
||||
chance = 7000,
|
||||
active_object_count = 1,
|
||||
min_height = -50,
|
||||
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,
|
||||
})
|
||||
|
||||
|
||||
mobs:register_egg("mobs_monster:spider", S("Spider"), "mobs_cobweb.png", 1)
|
||||
|
||||
mobs:alias_mob("mobs:spider", "mobs_monster:spider") -- compatibility
|
||||
|
||||
mobs:alias_mob("mobs_monster:spider2", "mobs_monster:spider") -- compatibility
|
||||
mobs:alias_mob("mobs:spider", "mobs_monster:spider")
|
||||
|
||||
|
||||
minetest.register_alias("mobs:cobweb", "homedecor:cobweb_corner")
|
||||
|
||||
--[[ 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"},
|
||||
}
|
||||
})]]
|
||||
|
@ -32,9 +32,9 @@ mobs:register_mob("mobs_monster:stone_monster", {
|
||||
floats = 0,
|
||||
view_range = 10,
|
||||
drops = {
|
||||
{name = "default:torch", chance = 2, min = 3, max = 5},
|
||||
{name = "default:iron_lump", chance = 5, min = 1, max = 2},
|
||||
{name = "default:coal_lump", chance = 3, min = 1, max = 3},
|
||||
{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,
|
||||
@ -51,12 +51,20 @@ mobs:register_mob("mobs_monster:stone_monster", {
|
||||
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},
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_monster:stone_monster",
|
||||
nodes = {"default:stone", "default:desert_stone"},
|
||||
nodes = {"default:stone", "default:desert_stone", "default:sandstone"},
|
||||
max_light = 7,
|
||||
chance = 7000,
|
||||
max_height = 0,
|
||||
|
Before Width: | Height: | Size: 293 B After Width: | Height: | Size: 220 B |
BIN
textures/mobs_sand_particles.png
Normal file
After Width: | Height: | Size: 148 B |
Before Width: | Height: | Size: 2.0 KiB |
BIN
textures/mobs_spider_crystal.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
textures/mobs_spider_grey.png
Normal file
After Width: | Height: | Size: 7.8 KiB |
BIN
textures/mobs_spider_mese.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
textures/mobs_spider_orange.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
textures/mobs_spider_snowy.png
Normal file
After Width: | Height: | Size: 8.3 KiB |
@ -32,14 +32,26 @@ mobs:register_mob("mobs_monster:tree_monster", {
|
||||
jump = true,
|
||||
view_range = 15,
|
||||
drops = {
|
||||
{name = "default:sapling", chance = 3, min = 1, max = 2},
|
||||
{name = "default:junglesapling", chance = 3, min = 1, max = 2},
|
||||
{name = "default:apple", chance = 2, min = 1, max=3},
|
||||
{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,
|
||||
|