Initial Upload

master
TenPlus1 2016-04-26 15:58:31 +01:00
commit 7dbe887fed
60 changed files with 334109 additions and 0 deletions

18
README.txt Normal file
View File

@ -0,0 +1,18 @@
Not so simple mobs by NPX team
We would like to thank:
- PilzAdam, for his wonderful simple-mobs mod;
- Tenplus1, for his hard work in making mobs_redo;
- rnd, for his pathfinding;
- Echoes91, for Spears: simple but amazing;
- and obviously Celeron-55 and all the people who contributed to Minetest and its community;
- Denise and Ponzi_Duro for the revision of the guide
- Double P and Ponzi_Duro for the beta testing
License GPL v3
The mod makes the game really hard, please read the Guide before playing:
https://dl.orangedox.com/a9tDekhYmWRkJt0J0a
Note: this is a custom mob pack made from the original nssm mobs to work with
mobs redo api for a particular server.

43
ant_soldier.lua Normal file
View File

@ -0,0 +1,43 @@
mobs:register_mob("nssm:ant_soldier", {
type = "monster",
hp_max = 20,
hp_min = 20,
collisionbox = {-0.49, 0.00, -0.49, 0.49, 0.9, 0.49},
visual = "mesh",
mesh = "ant_soldier.x",
textures = {{"ant_soldier.png"}},
visual_size = {x=3, y=3},
makes_footstep_sound = true,
view_range = 20,
fear_height = 4,
walk_velocity = 1.5,
run_velocity = 3,
rotate = 270,
sounds = {
random = "ant",
},
damage = 4,
jump = true,
drops = {
{name = "default:mese_crystal_fragment", chance = 1, min = 1, max = 2},
},
reach = 2,
armor = 90,
water_damage = 2,
lava_damage = 7,
light_damage = 0,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 35,
stand_start = 1,
stand_end = 60,
walk_start = 90,
walk_end = 130,
run_start = 90,
run_end = 130,
punch_start = 60,
punch_end = 80,
}
})

43
ant_worker.lua Normal file
View File

@ -0,0 +1,43 @@
mobs:register_mob("nssm:ant_worker", {
type = "animal",
hp_max = 13,
hp_min = 13,
collisionbox = {-0.4, 0.00, -0.4, 0.4, 0.5, 0.4},
visual = "mesh",
mesh = "ant_worker.x",
textures = {{"ant_worker.png"}},
visual_size = {x=2, y=2},
makes_footstep_sound = true,
view_range = 20,
fear_height = 4,
walk_velocity = 1.5,
run_velocity = 2,
rotate = 270,
sounds = {
random = "ant",
},
damage = 2,
jump = true,
drops = {
{name = "default:mese_crystal_fragment", chance = 3, min = 1, max = 2},
},
armor = 90,
water_damage = 2,
lava_damage = 7,
light_damage = 0,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 25,
stand_start = 1,
stand_end = 50,
walk_start = 120,
walk_end = 160,
run_start = 120,
run_end = 160,
punch_start = 50,
punch_end = 70,
}
})

60
black_widow.lua Normal file
View File

@ -0,0 +1,60 @@
mobs:register_mob("nssm:black_widow", {
type = "monster",
hp_max = 20,
hp_min = 19,
collisionbox = {-0.4, 0.00, -0.4, 0.4, 0.8, 0.4},
visual = "mesh",
mesh = "black_widow.x",
textures = {{"black_widow.png"}},
visual_size = {x=2, y=2},
makes_footstep_sound = true,
view_range = 15,
fear_height = 4,
walk_velocity = 1,
run_velocity = 2.5,
rotate = 270,
sounds = {
random = "black_widow",
},
damage = 3,
jump = true,
drops = {
{name = "default:mese_crystal_fragment", chance = 1, min = 1, max = 2},
},
armor = 100,
water_damage = 1,
lava_damage = 7,
light_damage = 0,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 25,
stand_start = 1,
stand_end = 70,
walk_start = 80,
walk_end = 120,
run_start = 120,
run_end = 140,
punch_start = 150,
punch_end = 160,
},
do_custom = function(self)
if math.random(1, 25) > 1 then
return
end
local pos = self.object:getpos()
local dx = math.random(1, 3)
local dz = math.random(1, 3)
local p = {x = pos.x + dx, y = pos.y - 1, z = pos.z + dz}
local t = {x = pos.x + dx, y = pos.y, z = pos.z + dz}
if minetest.get_node(p).name ~= "air"
and minetest.get_node(t).name == "air" then
minetest.set_node(t, {name = "nssm:web"})
end
end,
})

42
crocodile.lua Normal file
View File

@ -0,0 +1,42 @@
mobs:register_mob("nssm:crocodile", {
type = "monster",
hp_max = 20,
hp_min = 15,
collisionbox = {-0.45, -0.30, -0.45, 0.45, 0.3, 0.45},
visual = "mesh",
mesh = "crocodile.x",
textures = {{"croco.png"}},
sounds = {
random = "crocod",
},
visual_size = {x=4, y=4},
makes_footstep_sound = true,
view_range = 15,
walk_velocity = 1,
run_velocity = 1,
damage = 3,
floats = 1,
jump = true,
drops = {
{name = "default:mese_crystal_fragment", chance = 1, min = 1, max = 2},
},
armor = 90,
reach = 2,
water_damage = 0,
lava_damage = 10,
light_damage = 0,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 25,
stand_start = 1,
stand_end = 80,
walk_start = 230,
walk_end = 270,
run_start = 230,
run_end = 270,
punch_start = 205,
punch_end = 220,
}
})

2
depends.txt Normal file
View File

@ -0,0 +1,2 @@
default
mobs

21
init.lua Normal file
View File

@ -0,0 +1,21 @@
local path = minetest.get_modpath("nssm")
-- mobs
dofile(path .. "/ant_soldier.lua")
dofile(path .. "/ant_worker.lua")
dofile(path .. "/black_widow.lua")
dofile(path .. "/crocodile.lua")
dofile(path .. "/moonheron.lua")
dofile(path .. "/octopus.lua")
dofile(path .. "/sandworm.lua")
dofile(path .. "/tarantula.lua")
dofile(path .. "/uloboros.lua")
dofile(path .. "/werewolf.lua")
dofile(path .. "/white_werewolf.lua")
-- items
dofile(path .. "/nssm_materials.lua")
-- where do mobs spawn
dofile(path .. "/spawn.lua")

1
mod.conf Normal file
View File

@ -0,0 +1 @@
name = nssm

38364
models/ant_soldier.x Normal file

File diff suppressed because it is too large Load Diff

36586
models/ant_worker.x Normal file

File diff suppressed because it is too large Load Diff

37475
models/black_widow.x Normal file

File diff suppressed because it is too large Load Diff

23586
models/crocodile.x Normal file

File diff suppressed because it is too large Load Diff

44209
models/moonheron.x Normal file

File diff suppressed because it is too large Load Diff

35202
models/octopus.x Normal file

File diff suppressed because it is too large Load Diff

19572
models/sandworm.x Normal file

File diff suppressed because it is too large Load Diff

37391
models/tarantula_propower.x Normal file

File diff suppressed because it is too large Load Diff

37499
models/uloboros.x Normal file

File diff suppressed because it is too large Load Diff

23397
models/werewolf.x Normal file

File diff suppressed because it is too large Load Diff

45
moonheron.lua Normal file
View File

@ -0,0 +1,45 @@
mobs:register_mob("nssm:moonheron", {
type = "monster",
hp_max = 23,
hp_min = 22,
collisionbox = {-0.45, -0.3, -0.45, 0.45, 0.3, 0.45},
visual = "mesh",
mesh = "moonheron.x",
textures = {{"moonheron.png"}},
visual_size = {x=10, y=10},
view_range = 35,
rotate = 270,
walk_velocity = 2,
run_velocity = 3,
fall_speed = 0,
stepheight = 3,
sounds = {
random = "moonheron",
distance =40,
},
damage = 3,
jump = true,
drops = {
{name = "mobs:mese_crystal_fragment", chance = 1, min = 1, max = 1},
},
armor = 100,
floats = 1,
water_damage = 5,
lava_damage = 5,
light_damage = 5,
fly = true,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 35,
stand_start = 140,
stand_end = 200,
walk_start = 20,
walk_end = 60,
run_start = 20,
run_end = 60,
punch_start = 80,
punch_end = 120,
}
})

237
nssm_materials.lua Normal file
View File

@ -0,0 +1,237 @@
--ore generation
minetest.register_ore({
ore_type = "scatter",
ore = "nssm:ant_dirt",
wherein = "default:cobble",
clust_scarcity = 1,
clust_num_ores = 27,
clust_size = 3,
y_min = -1,
y_max = 40,
})
minetest.register_ore({
ore_type = "scatter",
ore = "nssm:ant_dirt",
wherein = "default:mossycobble",
clust_scarcity = 1,
clust_num_ores = 27,
clust_size = 3,
y_min = -1000,
y_max = 40,
})
minetest.register_ore({
ore_type = "scatter",
ore = "nssm:ant_dirt",
wherein = "default:sandstonebrick",
clust_scarcity = 1,
clust_num_ores = 27,
clust_size = 3,
y_min = -1000,
y_max = 40,
})
minetest.register_ore({
ore_type = "scatter",
ore = "nssm:ant_dirt",
wherein = "stairs:stair_sandstonebrick",
clust_scarcity = 1,
clust_num_ores = 27,
clust_size = 3,
y_min = -1000,
y_max = 40,
})
minetest.register_ore({
ore_type = "scatter",
ore = "nssm:ant_dirt",
wherein = "stairs:stair_cobble",
clust_scarcity = 1,
clust_num_ores = 27,
clust_size = 3,
y_min = -1000,
y_max = 40,
})
minetest.register_ore({
ore_type = "scatter",
ore = "nssm:web",
wherein = "default:junglegrass",
clust_scarcity = 2*2*2,
clust_num_ores = 2,
clust_size = 2,
y_min = -20,
y_max = 200,
})
minetest.register_ore({
ore_type = "scatter",
ore = "nssm:web",
wherein = "default:jungleleaves",
clust_scarcity = 4*4*4,
clust_num_ores = 5,
clust_size = 5,
y_min = -20,
y_max = 200,
}
)
--nodes
minetest.register_node("nssm:ant_dirt", {
description = "Ant Dirt",
tiles = {"ant_dirt.png"},
groups = {crumbly=3},
})
minetest.register_node("nssm:web", {
description = "Web",
inventory_image = "web.png",
tiles = {"web.png"} ,
drawtype = "plantlike",
paramtype = "light",
walkable = false,
pointable = true,
diggable = true,
buildable_to = false,
drop = "",
drowning = 0,
liquid_renewable = false,
liquidtype = "source",
liquid_range = 0,
liquid_alternative_flowing = "nssm:web",
liquid_alternative_source = "nssm:web",
liquid_viscosity = 20,
groups = {flammable = 2, snappy = 1},
})
--tools
minetest.register_tool('nssm:sun_sword', {
description = 'Sun Sword',
inventory_image = 'sun_sword.png',
tool_capabilities = {
full_punch_interval = 0.6,
max_drop_level=1,
groupcaps={
snappy={times={[1]=0.80, [2]=0.40, [3]=0.20}, uses=70, maxlevel=1},
fleshy={times={[2]=0.6, [3]=0.2}, uses=70, maxlevel=1}
},
damage_groups = {fleshy=10},
},
minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing)
if puncher:get_wielded_item():get_name() == 'nssm:sun_sword' then
if node.name ~= "air" then
minetest.add_node(pointed_thing.above, {name = "fire:basic_flame"})
end
end
end)
})
minetest.register_tool("nssm:masticone_fang_sword", {
description = "Masticone Fang Sword",
inventory_image = "masticone_fang_sword.png",
tool_capabilities = {
full_punch_interval =0.7 ,
max_drop_level=1,
groupcaps={
snappy={times={[1]=0.6, [2]=0.5, [3]=0.4}, uses=200, maxlevel=1},
fleshy={times={[2]=0.8, [3]=0.4}, uses=200, maxlevel=1}
},
damage_groups = {fleshy=8},
},
})
minetest.register_tool("nssm:night_sword", {
description = "Night Sword",
inventory_image = "night_sword.png",
tool_capabilities = {
full_punch_interval =0.4 ,
max_drop_level=1,
groupcaps={
snappy={times={[1]=0.4, [2]=0.3, [3]=0.2}, uses=300, maxlevel=1},
fleshy={times={[2]=0.7, [3]=0.3}, uses=300, maxlevel=1}
},
damage_groups = {fleshy=12},
},
})
minetest.register_tool("nssm:crab_light_mace", {
description = "Light Crab Mace",
inventory_image = "crab_light_mace.png",
tool_capabilities = {
full_punch_interval =2 ,
max_drop_level=1,
groupcaps={
fleshy={times={[2]=1.4, [3]=1}, uses=120, maxlevel=1}
},
damage_groups = {fleshy=8},
},
})
minetest.register_tool("nssm:crab_heavy_mace", {
description = "Heavy Crab Mace",
inventory_image = "crab_heavy_mace.png",
tool_capabilities = {
full_punch_interval =4 ,
max_drop_level=1,
groupcaps={
fleshy={times={[2]=2, [3]=1.4}, uses=120, maxlevel=1}
},
damage_groups = {fleshy=12},
},
})
minetest.register_node("nssm:rope", {
description = "Rope",
paramtype = "light",
walkable = false,
climbable = true,
sunlight_propagates = true,
drawtype = "plantlike",
tiles = { "rope.png" },
groups = {snappy=1},
})
minetest.register_tool("nssm:stoneater_pick", {
description = "Stoneater Pickaxe",
inventory_image = "stoneater_pick.png",
tool_capabilities = {
full_punch_interval = 0.9,
max_drop_level=0,
groupcaps={
cracky = {times={[3]=0.0}, uses=200, maxlevel=1},
},
damage_groups = {fleshy=5},
},
})
minetest.register_tool("nssm:mantis_sword", {
description = "Mantis Sword",
inventory_image = "mantis_sword.png",
tool_capabilities = {
full_punch_interval =0.7 ,
max_drop_level=1,
groupcaps={
fleshy={times={[2]=1.0, [3]=0.4}, uses=50, maxlevel=1},
snappy={times={[2]=0.80, [3]=0.3}, uses=100, maxlevel=1},
},
damage_groups = {fleshy=6},
},
})
minetest.register_tool("nssm:ant_sword", {
description = "Ant Sword",
inventory_image = "ant_sword.png",
tool_capabilities = {
full_punch_interval = 0.8,
max_drop_level=1,
groupcaps={
snappy={times={[1]=1.30, [2]=0.90, [3]=0.40}, uses=40, maxlevel=3},
},
damage_groups = {fleshy=8},
},
})

45
octopus.lua Normal file
View File

@ -0,0 +1,45 @@
mobs:register_mob("nssm:octopus", {
type = "monster",
hp_max = 22,
hp_min = 15,
collisionbox = {-0.9, -0.5, -0.9, 0.9, 0.92, 0.9},
visual = "mesh",
mesh = "octopus.x",
textures = {{"octopus.png"}},
visual_size = {x=4, y=4},
view_range = 25,
fly = true,
fly_in = "default:water_source",
fall_speed = -20,
walk_velocity = 1.5,
run_velocity = 3,
damage = 3,
rotate = 270,
jump = false,
jump_chance = 0,
jump_height = 0,
sounds = {
random = "octopus",
},
drops = {
{name = "default:mese_crystal_fragment", chance = 1, min = 2, max = 3},
},
armor = 100,
water_damage = 0,
lava_damage = 10,
light_damage = 0,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 35,
stand_start = 1,
stand_end = 50,
walk_start = 60,
walk_end = 100,
run_start = 60,
run_end = 100,
punch_start = 120,
punch_end = 160,
}
})

60
sandworm.lua Normal file
View File

@ -0,0 +1,60 @@
mobs:register_mob("nssm:sandworm", {
type = "monster",
hp_max = 30,
hp_min = 25,
collisionbox = {-0.4, -0.2, -0.4, 0.4, 1.90, 0.4},
visual = "mesh",
mesh = "sandworm.x",
textures = {{"sandworm.png"}},
visual_size = {x=4, y=4},
makes_footstep_sound = false,
view_range = 17,
rotate = 270,
reach = 4,
fear_height = 3,
walk_velocity = 2,
run_velocity = 2,
damage = 4,
jump = false,
drops = {
{name = "default:mese_crystal_fragment", chance = 2, min = 1, max = 3},
},
armor = 90,
water_damage = 5,
lava_damage = 10,
light_damage = 0,
attack_type = "dogfight",
animation = {
speed_normal = 25,
speed_run = 40,
stand_start = 1,
stand_end = 100,
walk_start = 110,
walk_end = 140,
run_start = 110,
run_end = 140,
punch_start = 150,
punch_end = 180,
},
do_custom = function(self)
--Worm
local c=2
local pos = self.object:getpos()
local v = self.object:getvelocity()
for dx = -c*(math.abs(v.x))-1 , c*(math.abs(v.x))+1 do
for dy=0,4 do
for dz = -c*(math.abs(v.z))-1 , c*(math.abs(v.z))+1 do
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.env:get_node(p).name
if (n~="default:water_source" and n~="default:water_flowing") then
if n=="default:sand" or n=="default:desert_sand" then
minetest.env:set_node(t, {name="air"})
end
end
end
end
end
end,
})

BIN
sounds/ant.ogg Normal file

Binary file not shown.

BIN
sounds/black_widow.ogg Normal file

Binary file not shown.

BIN
sounds/crocod.ogg Normal file

Binary file not shown.

BIN
sounds/moonheron.ogg Normal file

Binary file not shown.

BIN
sounds/octopus.ogg Normal file

Binary file not shown.

BIN
sounds/tarry.ogg Normal file

Binary file not shown.

BIN
sounds/uloboros.ogg Normal file

Binary file not shown.

BIN
sounds/werewolf.ogg Normal file

Binary file not shown.

26
spawn.lua Normal file
View File

@ -0,0 +1,26 @@
-- Spawning parameters
-- ANTS
mobs:spawn_specific("nssm:ant_soldier", {"nssm:ant_dirt"}, {"air"}, 0, 20, 7, 30, 4, -31000, 31000)
mobs:spawn_specific("nssm:ant_worker", {"nssm:ant_dirt"}, {"air"}, 0, 20, 5, 10, 5, -31000, 31000)
-- SPIDERS
mobs:spawn_specific("nssm:tarantula", {"default:jungle_grass", "default:jungletree", "nssm:web" }, {"air"}, 0, 14, 120, 5000, 1, -31000, 31000)
mobs:spawn_specific("nssm:uloboros", {"default:jungle_grass", "default:jungletree", "nssm:web" }, {"air"}, 0, 20, 20, 1000, 1, -31000, 31000)
-- SEA
mobs:spawn_specific("nssm:crocodile", {"default:sand","default:water_source"}, {"default:water_source"}, 0, 20, 60, 35000, 1, -31000, 31000)
mobs:spawn_specific("nssm:octopus", {"default:water_source"}, {"default:water_source"}, 0, 20, 60, 40000, 1, -31000, 0)
-- DESERT
mobs:spawn_specific("nssm:sandworm", {"default:desert_sand", "default:desert_stone"}, {"air"}, 0, 20, 20, 30000, 1, -31000, 31000)
-- MOUNTAINS
mobs:spawn_specific("nssm:werewolf", {"default:dirt_with_grass"}, {"default:dirt_with_grass"}, 0, 10, 30, 20000, 1, 20, 31000)
-- ICE
mobs:spawn_specific("nssm:white_werewolf", {"default:dirt_with_snow","default:snowblock"}, {"air"}, 0, 20, 60, 20000, 1, -31000, 31000)
-- SKY
mobs:spawn_specific("nssm:moonheron", {"air"}, {"air"}, 0, 10, 100, 750000, 1, 10, 40)

43
tarantula.lua Normal file
View File

@ -0,0 +1,43 @@
mobs:register_mob("nssm:tarantula", {
type = "monster",
hp_max = 70,
hp_min = 70,
collisionbox = {-0.5, 0.00, -0.5, 0.5, 1, 0.5},
visual = "mesh",
mesh = "tarantula_propower.x",
textures = {{"tarantula.png"}},
visual_size = {x=10, y=10},
makes_footstep_sound = true,
view_range = 30,
lifetimer = 500,
walk_velocity = 1.5,
run_velocity = 3.3,
rotate = 270,
sounds = {
random = "tarry",
},
damage = 10,
jump = true,
drops = {
{name = "default:mese_crystal_fragment", chance = 1, min = 1, max = 2},
},
armor = 60,
water_damage = 1,
lava_damage = 3,
reach = 4,
light_damage = 0,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 25,
stand_start = 1,
stand_end = 60,
walk_start = 100,
walk_end = 140,
run_start = 140,
run_end = 160,
punch_start = 180,
punch_end = 200,
}
})

BIN
textures/ant_dirt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 629 B

BIN
textures/ant_soldier.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
textures/ant_sword.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 B

BIN
textures/ant_worker.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
textures/black_widow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 B

BIN
textures/croco.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

BIN
textures/mantis_sword.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 793 B

BIN
textures/moonheron.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

BIN
textures/night_sword.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 805 B

BIN
textures/nssm_blood.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 B

BIN
textures/nssm_blood3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 B

BIN
textures/octopus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
textures/rope.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

BIN
textures/sandworm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
textures/stoneater_pick.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

BIN
textures/sun_sword.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 898 B

BIN
textures/tarantula.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

BIN
textures/transparent.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 906 B

BIN
textures/uloboros.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
textures/web.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

BIN
textures/werewolf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

BIN
textures/white_werewolf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

60
uloboros.lua Normal file
View File

@ -0,0 +1,60 @@
mobs:register_mob("nssm:uloboros", {
type = "monster",
hp_max = 18,
hp_min = 17,
collisionbox = {-0.5, 0.00, -0.5, 0.5, 0.8, 0.5},
visual = "mesh",
mesh = "uloboros.x",
textures = {{"uloboros.png"}},
visual_size = {x=4, y=4},
makes_footstep_sound = true,
view_range = 22,
walk_velocity = 1.5,
fear_height = 4,
run_velocity = 2.5,
rotate = 270,
sounds = {
random = "uloboros",
},
damage = 3,
jump = true,
drops = {
{name = "default:mese_crystal_fragment", chance = 2, min = 1, max = 2},
},
armor = 100,
water_damage = 1,
lava_damage = 7,
light_damage = 0,
attack_type = "dogfight",
animation = {
speed_normal = 20,
speed_run = 30,
stand_start = 1,
stand_end = 80,
walk_start = 120,
walk_end = 160,
run_start = 120,
run_end = 160,
punch_start = 80,
punch_end = 110,
},
do_custom = function(self)
if math.random(1, 25) > 1 then
return
end
local pos = self.object:getpos()
local dx = math.random(1, 3)
local dz = math.random(1, 3)
local p = {x = pos.x + dx, y = pos.y - 1, z = pos.z + dz}
local t = {x = pos.x + dx, y = pos.y, z = pos.z + dz}
if minetest.get_node(p).name ~= "air"
and minetest.get_node(t).name == "air" then
minetest.set_node(t, {name = "nssm:web"})
end
end,
})

41
werewolf.lua Normal file
View File

@ -0,0 +1,41 @@
mobs:register_mob("nssm:werewolf", {
type = "monster",
hp_max = 30,
hp_min = 25,
collisionbox = {-0.85, -0.01, -0.85, 0.85, 3.50, 0.85},
visual = "mesh",
mesh = "werewolf.x",
textures = {{"werewolf.png"}},
visual_size = {x=4, y=4},
makes_footstep_sound = true,
view_range = 30,
walk_velocity = 3,
fear_height = 4,
run_velocity = 5,
sounds = {
random = "werewolf",
},
damage = 4,
jump = true,
drops = {
{name = "default:mese_crystal_fragment", chance = 1, min = 3, max = 4},
},
armor = 100,
water_damage = 2,
lava_damage = 5,
light_damage = 0,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 25,
stand_start = 1,
stand_end = 60,
walk_start = 90,
walk_end = 130,
run_start = 140,
run_end = 160,
punch_start = 170,
punch_end = 193,
}
})

41
white_werewolf.lua Normal file
View File

@ -0,0 +1,41 @@
mobs:register_mob("nssm:white_werewolf", {
type = "monster",
hp_max = 30,
hp_min = 25,
collisionbox = {-0.85, -0.01, -0.85, 0.85, 3.50, 0.85},
visual = "mesh",
mesh = "werewolf.x",
textures = {{"white_werewolf.png"}},
visual_size = {x=4, y=4},
makes_footstep_sound = true,
view_range = 30,
walk_velocity = 3,
fear_height = 4,
run_velocity = 5,
sounds = {
random = "werewolf",
},
damage = 4,
jump = true,
drops = {
{name = "default:mese_crystal_fragment", chance = 2, min = 1, max = 1},
},
armor = 100,
water_damage = 2,
lava_damage = 5,
light_damage = 0,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 25,
stand_start = 1,
stand_end = 60,
walk_start = 90,
walk_end = 130,
run_start = 140,
run_end = 160,
punch_start = 170,
punch_end = 193,
}
})