Compare commits

...

12 Commits

26 changed files with 370 additions and 3098 deletions

View File

@ -1,5 +1,5 @@
local S = mobs.intllib local S = mobs.intllib_monster
local dirt_types = { local dirt_types = {

View File

@ -1,5 +1,5 @@
local S = mobs.intllib local S = mobs.intllib_monster
local master_types = { local master_types = {

View File

@ -1,5 +1,5 @@
local S = mobs.intllib local S = mobs.intllib_monster
local mob_drops = { local mob_drops = {
{name = "fireflies:firefly", chance = 1, min = 1, max = 1} {name = "fireflies:firefly", chance = 1, min = 1, max = 1}

View File

@ -2,10 +2,32 @@
-- Load support for intllib. -- Load support for intllib.
local path = minetest.get_modpath(minetest.get_current_modname()) .. "/" local path = minetest.get_modpath(minetest.get_current_modname()) .. "/"
local S = minetest.get_translator and minetest.get_translator("mobs_monster") or local S
dofile(path .. "intllib.lua")
mobs.intllib = S -- Check for translation method
local S
if minetest.get_translator ~= nil then
S = minetest.get_translator("mobs_monster") -- 5.x translation function
else
if minetest.get_modpath("intllib") then
dofile(minetest.get_modpath("intllib") .. "/init.lua")
if intllib.make_gettext_pair then
gettext, ngettext = intllib.make_gettext_pair() -- new gettext method
else
gettext = intllib.Getter() -- old text file method
end
S = gettext
else -- boilerplate function
S = function(str, ...)
local args = {...}
return str:gsub("@%d+", function(match)
return args[tonumber(match:sub(2))]
end)
end
end
end
mobs.intllib_monster = S
-- Check for custom mob spawn file -- Check for custom mob spawn file
@ -43,4 +65,4 @@ end
dofile(path .. "lucky_block.lua") dofile(path .. "lucky_block.lua")
print (S("[MOD] Mobs Redo Monsters loaded")) print ("[MOD] Mobs Redo Monsters loaded")

View File

@ -1,3 +0,0 @@
-- Support for the old multi-load method
dofile(minetest.get_modpath("intllib").."/init.lua")

View File

@ -1,5 +1,5 @@
local S = mobs.intllib local S = mobs.intllib_monster
local guard_types = { local guard_types = {

View File

@ -1,6 +1,5 @@
local S = mobs.intllib local S = mobs.intllib_monster
-- Lava Flan by Zeg9 (additional textures by JurajVajda) -- Lava Flan by Zeg9 (additional textures by JurajVajda)
@ -19,13 +18,13 @@ mobs:register_mob("mobs_monster:lava_flan", {
textures = { textures = {
{"zmobs_lava_flan.png"}, {"zmobs_lava_flan.png"},
{"zmobs_lava_flan2.png"}, {"zmobs_lava_flan2.png"},
{"zmobs_lava_flan3.png"}, {"zmobs_lava_flan3.png"}
}, },
blood_texture = "fire_basic_flame.png", blood_texture = "fire_basic_flame.png",
makes_footstep_sound = false, makes_footstep_sound = false,
sounds = { sounds = {
random = "mobs_lavaflan", random = "mobs_lavaflan",
war_cry = "mobs_lavaflan", war_cry = "mobs_lavaflan"
}, },
walk_velocity = 0.5, walk_velocity = 0.5,
run_velocity = 2, run_velocity = 2,
@ -33,14 +32,14 @@ mobs:register_mob("mobs_monster:lava_flan", {
view_range = 10, view_range = 10,
floats = 1, floats = 1,
drops = { drops = {
{name = "mobs:lava_orb", chance = 15, min = 1, max = 1}, {name = "mobs:lava_orb", chance = 15, min = 1, max = 1}
}, },
water_damage = 8, water_damage = 8,
lava_damage = -1, lava_damage = -1,
fire_damage = 0, fire_damage = 0,
light_damage = 0, light_damage = 0,
immune_to = { immune_to = {
{"mobs:pick_lava", -2}, -- lava pick heals 2 health {"mobs:pick_lava", -2} -- lava pick heals 2 health
}, },
fly_in = {"default:lava_source", "default:lava_flowing"}, fly_in = {"default:lava_source", "default:lava_flowing"},
animation = { animation = {
@ -55,6 +54,8 @@ mobs:register_mob("mobs_monster:lava_flan", {
punch_start = 20, punch_start = 20,
punch_end = 28 punch_end = 28
}, },
-- custom death function
on_die = function(self, pos) on_die = function(self, pos)
local cod = self.cause_of_death or {} local cod = self.cause_of_death or {}
@ -67,26 +68,32 @@ mobs:register_mob("mobs_monster:lava_flan", {
mobs:effect(pos, 40, "tnt_smoke.png", 3, 5, 2, 0.5, nil, false) mobs:effect(pos, 40, "tnt_smoke.png", 3, 5, 2, 0.5, nil, false)
minetest.sound_play("fire_extinguish_flame", minetest.sound_play("fire_extinguish_flame",
{pos = pos, max_hear_distance = 12, gain = 1.5}, true) {pos = pos, max_hear_distance = 12, gain = 1.5}, true)
self.object:remove() self.object:remove()
if math.random(4) == 1 then if math.random(4) == 1 then
mobs:add_mob(pos, { mobs:add_mob(pos, {name = "mobs_monster:obsidian_flan"})
name = "mobs_monster:obsidian_flan",
})
end end
else else
if minetest.get_node(pos).name == "air" then mobs:effect(pos, 40, "fire_basic_flame.png", 2, 3, 2, 5, 10, nil)
local nods = minetest.find_nodes_in_area(
{x = pos.x, y = pos.y + 1, z = pos.z},
{x = pos.x, y = pos.y, z = pos.z}, "air")
-- place flame if position empty and flame exists
if nods and #nods > 0
and minetest.registered_nodes["fire:basic_flame"] then
pos = nods[math.random(#nods)]
minetest.set_node(pos, {name = "fire:basic_flame"}) minetest.set_node(pos, {name = "fire:basic_flame"})
end end
mobs:effect(pos, 40, "fire_basic_flame.png", 2, 3, 2, 5, 10, nil)
self.object:remove() self.object:remove()
end end
end, end,
glow = 10, glow = 10
}) })
@ -96,21 +103,24 @@ mobs:spawn({
nodes = {"default:lava_source"}, nodes = {"default:lava_source"},
chance = 1500, chance = 1500,
active_object_count = 1, active_object_count = 1,
max_height = 0, max_height = 0
}) })
end end
-- add spawn egg
mobs:register_egg("mobs_monster:lava_flan", S("Lava Flan"), "default_lava.png", 1) 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
-- compatibility alias, only needed for servers who used the old mobs mod
mobs:alias_mob("mobs:lava_flan", "mobs_monster:lava_flan")
-- lava orb -- lava orb
minetest.register_craftitem(":mobs:lava_orb", { minetest.register_craftitem(":mobs:lava_orb", {
description = S("Lava orb"), description = S("Lava orb"),
inventory_image = "zmobs_lava_orb.png", inventory_image = "zmobs_lava_orb.png",
light_source = 14, light_source = 14
}) })
minetest.register_alias("zmobs:lava_orb", "mobs:lava_orb") minetest.register_alias("zmobs:lava_orb", "mobs:lava_orb")
@ -118,7 +128,7 @@ minetest.register_alias("zmobs:lava_orb", "mobs:lava_orb")
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = "mobs:lava_orb", recipe = "mobs:lava_orb",
burntime = 80, burntime = 80
}) })
@ -226,13 +236,12 @@ mobs:register_mob("mobs_monster:obsidian_flan", {
visual = "mesh", visual = "mesh",
mesh = "zmobs_lava_flan.x", mesh = "zmobs_lava_flan.x",
textures = { textures = {
{"mobs_obsidian_flan.png"}, {"mobs_obsidian_flan.png"}
}, },
blood_texture = "default_obsidian.png", blood_texture = "default_obsidian.png",
makes_footstep_sound = true, makes_footstep_sound = true,
sounds = { sounds = {
random = "mobs_lavaflan", random = "mobs_lavaflan"
-- war_cry = "mobs_lavaflan",
}, },
walk_velocity = 0.1, walk_velocity = 0.1,
run_velocity = 0.5, run_velocity = 0.5,
@ -241,7 +250,7 @@ mobs:register_mob("mobs_monster:obsidian_flan", {
floats = 0, floats = 0,
drops = { drops = {
{name = "default:obsidian_shard", chance = 1, min = 1, max = 5}, {name = "default:obsidian_shard", chance = 1, min = 1, max = 5},
{name = "default:obsidian", chance = 3, min = 0, max = 2}, {name = "default:obsidian", chance = 3, min = 0, max = 2}
}, },
water_damage = 0, water_damage = 0,
lava_damage = 8, lava_damage = 8,
@ -261,6 +270,8 @@ mobs:register_mob("mobs_monster:obsidian_flan", {
} }
}) })
-- add spawn egg
mobs:register_egg("mobs_monster:obsidian_flan", S("Obsidian Flan"), mobs:register_egg("mobs_monster:obsidian_flan", S("Obsidian Flan"),
"default_obsidian.png", 1) "default_obsidian.png", 1)
@ -270,11 +281,9 @@ local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false
-- mese arrow (weapon) -- mese arrow (weapon)
mobs:register_arrow("mobs_monster:obsidian_arrow", { mobs:register_arrow("mobs_monster:obsidian_arrow", {
visual = "sprite", visual = "sprite",
-- visual = "wielditem",
visual_size = {x = 0.5, y = 0.5}, visual_size = {x = 0.5, y = 0.5},
textures = {"default_obsidian_shard.png"}, textures = {"default_obsidian_shard.png"},
velocity = 6, velocity = 6,
-- rotate = 180,
hit_player = function(self, player) hit_player = function(self, player)
player:punch(self.object, 1.0, { player:punch(self.object, 1.0, {

View File

@ -31,6 +31,14 @@ mobs.fireball.png was originally made by Sapier and edited by Benrob:
-- (c) Sapier -- (c) Sapier
-- Contact sapier a t gmx net -- Contact sapier a t gmx net
Textures created by wwar (cc0) Textures created by wwar (CC0)
mobs_dungeon_master_nether.png mobs_dungeon_master_nether.png
mobs_dungeon_master_netherdeep.png mobs_dungeon_master_netherdeep.png
Textures and Model created by SirrobZeroone (CC0)
mobs_mese_monster_red.png
mobs_mese_monster_blue.png
mobs_mese_monster_green.png
mobs_mese_monster_purple.png
mobs_mese_arrow.png
mobs_mese_monster.b3d

14
locale/mobs_monster.es.tr Normal file
View File

@ -0,0 +1,14 @@
# textdomain:mobs_monster
Cobweb=Telarania
Dirt Monster=Mounstro de tierra
Dungeon Master=Maestro de mazmorra
Lava Flan=Flan de lava
Lava Pickaxe=Hacha de lava
Lava orb=Esfera de lava
Mese Monster=Mounstro de mese
#Obsidian Flan=
Oerkki=Oerkki
Sand Monster=Mounstro de arena
Spider=Arania
Stone Monster=Mounstro de piedra
Tree Monster=Mounstro de madera

View File

@ -1,42 +1,183 @@
local S = mobs.intllib_monster
local S = mobs.intllib local mese_monster_types = {
-- mese_monster_red
{
y_min = -20,
y_max = -1000,
damage = 2,
reach = 3,
hp_min = 15,
hp_max = 25,
armor = 80,
skins = {"mobs_mese_monster_red.png"},
immune_to = {
{"default:pick_wood", 0},
{"default:shovel_wood", 0},
{"default:axe_wood", 0},
{"default:sword_wood", 0}
},
drops = {
{name = "default:mese_crystal", chance = 15, min = 0, max = 1},
{name = "default:mese_crystal_fragment", chance = 2, min = 0, max = 1}
},
arrow_override = function(self)
self.velocity = 6
self.damage = 2
end
},
-- mese_monster_green
{
y_min = -1001,
y_max = -2000,
damage = 3,
reach = 3,
hp_min = 20,
hp_max = 30,
armor = 75,
skins = {"mobs_mese_monster_green.png"},
immune_to = {
{"default:pick_wood", 0},
{"default:shovel_wood", 0},
{"default:axe_wood", 0},
{"default:sword_wood", 0},
{"default:pick_stone", 0},
{"default:shovel_stone", 0},
{"default:axe_stone", 0},
{"default:sword_stone", 0}
},
drops = {
{name = "default:mese_crystal", chance = 12, min = 0, max = 1},
{name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 1}
},
arrow_override = function(self)
self.velocity = 6
self.damage = 2
end
},
-- mese_monster_blue
{
y_min = -2001,
y_max = -3000,
damage = 3,
reach = 4,
hp_min = 25,
hp_max = 35,
armor = 70,
skins = {"mobs_mese_monster_blue.png"},
immune_to = {
{"default:pick_wood", 0},
{"default:shovel_wood", 0},
{"default:axe_wood", 0},
{"default:sword_wood", 0},
{"default:pick_stone", 0},
{"default:shovel_stone", 0},
{"default:axe_stone", 0},
{"default:sword_stone", 0},
{"default:pick_bronze", 0},
{"default:shovel_bronze", 0},
{"default:axe_bronze", 0},
{"default:sword_bronze", 0}
},
drops = {
{name = "default:mese", chance = 15, min = 0, max = 1},
{name = "default:mese_crystal", chance = 9, min = 0, max = 2},
{name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 2}
},
arrow_override = function(self)
self.velocity = 7
self.damage = 3
end
},
-- mese_monster_purple
{
y_min = -3000,
y_max = -31000,
damage = 4,
reach = 5,
hp_min = 30,
hp_max = 40,
armor = 60,
skins = {"mobs_mese_monster_purple.png"},
immune_to = {
{"default:pick_wood", 0},
{"default:shovel_wood", 0},
{"default:axe_wood", 0},
{"default:sword_wood", 0},
{"default:pick_stone", 0},
{"default:shovel_stone", 0},
{"default:axe_stone", 0},
{"default:sword_stone", 0},
{"default:pick_bronze", 0},
{"default:shovel_bronze", 0},
{"default:axe_bronze", 0},
{"default:sword_bronze", 0},
{"default:pick_steel", 0},
{"default:shovel_steel", 0},
{"default:axe_steel", 0},
{"default:sword_steel", 0}
},
drops = {
{name = "default:mese", chance = 9, min = 0, max = 1},
{name = "default:mese_crystal", chance = 6, min = 0, max = 2},
{name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 3}
},
arrow_override = function(self)
self.velocity = 8
self.damage = 4
end
}}
-- Mese Monster by Zeg9 -- Mese Monster by SirrobZeroone
mobs:register_mob("mobs_monster:mese_monster", { mobs:register_mob("mobs_monster:mese_monster", {
type = "monster", type = "monster",
visual_size = {x = 10, y = 10}, -- Got scale wrong in blender by factor of 10 - S01
passive = false, passive = false,
damage = 3, attack_type = "dogshoot",
attack_type = "shoot", damage = 4,
reach = 4,
shoot_interval = 0.5, shoot_interval = 0.5,
arrow = "mobs_monster:mese_arrow", arrow = "mobs_monster:mese_arrow",
shoot_offset = 2, shoot_offset = 0.75,
--arrow_override = function(self) --arrow_override = function(self)
-- self.velocity = 20 -- self.velocity = 20
--end, --end,
knock_back = true,
hp_min = 10, hp_min = 10,
hp_max = 25, hp_max = 25,
armor = 80, armor = 80,
collisionbox = {-0.5, -1.5, -0.5, 0.5, 0.5, 0.5}, collisionbox = {-0.75, -0.5, -0.75, 0.75, 2.5, 0.75},
visual = "mesh", visual = "mesh",
mesh = "zmobs_mese_monster.x", mesh = "mobs_mese_monster.b3d",
textures = { textures = {
{"zmobs_mese_monster.png"}, {"mobs_mese_monster_purple.png"}
}, },
blood_texture = "default_mese_crystal_fragment.png", blood_texture = "default_mese_crystal_fragment.png",
makes_footstep_sound = false, makes_footstep_sound = false,
sounds = { sounds = {
random = "mobs_mesemonster", random = "mobs_mesemonster",
damage = "default_glass_footstep"
}, },
view_range = 10, view_range = 10,
walk_velocity = 0.5, walk_velocity = 1,
run_velocity = 2, run_velocity = 3,
jump = true, jump = true,
jump_height = 8, jump_height = 8,
can_leap = true,
fall_damage = 0, fall_damage = 0,
fall_speed = -6, fall_speed = -6,
stepheight = 2.1, stepheight = 2.1,
immune_to = {
{"default:pick_wood", 0},
{"default:shovel_wood", 0},
{"default:axe_wood", 0},
{"default:sword_wood", 0}
},
drops = { drops = {
{name = "default:mese_crystal", chance = 9, min = 0, max = 2}, {name = "default:mese_crystal", chance = 9, min = 0, max = 2},
{name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 2}, {name = "default:mese_crystal_fragment", chance = 1, min = 0, max = 2},
@ -47,17 +188,129 @@ mobs:register_mob("mobs_monster:mese_monster", {
lava_damage = 1, lava_damage = 1,
light_damage = 0, light_damage = 0,
animation = { animation = {
speed_normal = 15, speed_normal = 18,
speed_run = 15, speed_run = 18,
stand_start = 0, walk_start = 10,
stand_end = 14, walk_end = 41,
walk_start = 15, walk_speed = 20,
walk_end = 38, run_start = 10,
run_start = 40, run_end = 41,
run_end = 63, run_speed = 30,
punch_start = 40, stand_start = 60,
punch_end = 63, stand_end = 83,
shoot_start = 100,
shoot_end = 113,
die_start = 125,
die_end = 141,
death_speed = 25,
die_loop = false,
jump_start = 150 ,
jump_end = 168,
jump_loop = false,
punch_start = 175,
punch_end = 189
}, },
on_spawn = function(self)
local pos = self.object:get_pos()
-- quick update self function
local function update(self, def)
self.object:set_properties({textures = def.skins})
-- added by mobs_redo
self.hp_min = def.hp_min
self.hp_max = def.hp_max
self.health = math.random(self.hp_min, self.hp_max)
self.damage = def.damage
self.reach = def.reach
self.armor = def.armor
self.immune_to = def.immune_to
self.drops = def.drops
self.arrow_override = def.arrow_override
end
-- Normal spawn case
for name, def in pairs(mese_monster_types) do
if pos.y <= def.y_min and pos.y >= def.y_max then
update(self, def)
return true
end
end
--[[
-- player using egg
-- direction sets type N = red, E = green, S = blue, W = purple
-- Just for fun - S01
local objects = minetest.get_objects_inside_radius(pos, 10)
for i, obj in ipairs(objects) do
if minetest.is_player(obj)
and obj:get_wielded_item():get_name() == "mobs_monster:mese_monster" then
local degree = (360 + math.deg(obj:get_look_horizontal())) % 360
local compass_sel
if degree > 45 and degree <= 135 then compass_sel = 4
elseif degree > 135 and degree <= 225 then compass_sel = 3
elseif degree > 225 and degree <= 315 then compass_sel = 2
else compass_sel = 1
end
local def = mese_monster_types[compass_sel]
update(self, def)
return true
end
end
]]
-- catch case if all else fails random it
update(self, mese_monster_types[math.random(4)])
return true
end
})
-- mese arrow (weapon)
minetest.register_craftitem("mobs_monster:mese_crystal_fragment_arrow", {
description = S("Mese Monster Arrow"),
inventory_image = "mobs_mese_arrow.png",
groups = {not_in_creative_inventory = 1}
})
mobs:register_arrow("mobs_monster:mese_arrow", {
visual = "wielditem",
visual_size = {x = 0.25, y = 0.25},
textures = {"mobs_monster:mese_crystal_fragment_arrow"},
velocity = 8,
rotate = 180,
damage = 2,
hit_player = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = self.damage},
}, nil)
end,
hit_mob = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = self.damage},
}, nil)
end,
hit_node = function(self, pos, node)
end
}) })
@ -68,7 +321,7 @@ mobs:spawn({
max_light = 7, max_light = 7,
chance = 5000, chance = 5000,
active_object_count = 1, active_object_count = 1,
max_height = -20, max_height = -20
}) })
end end
@ -79,40 +332,10 @@ mobs:register_egg("mobs_monster:mese_monster", S("Mese Monster"), "default_mese_
mobs:alias_mob("mobs:mese_monster", "mobs_monster:mese_monster") -- compatiblity 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 -- 9x mese crystal fragments = 1x mese crystal
local f = "default:mese_crystal_fragment"
minetest.register_craft({ minetest.register_craft({
output = "default:mese_crystal", output = "default:mese_crystal",
recipe = { recipe = {{f, f, f}, {f, f, f}, {f, f, f}}
{"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"},
}
}) })

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,5 @@
local S = mobs.intllib local S = mobs.intllib_monster
-- Oerkki by PilzAdam -- Oerkki by PilzAdam

View File

@ -15,7 +15,7 @@ Lava Flan
Mese Monster 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. - These mobs are territorial and spawn below -20 and will fire mese shards at passers by, so best avoided. The deeper you go the tougher they seem to get. Will drop mese when killed.
Oerkki Oerkki

View File

@ -1,6 +1,5 @@
local S = mobs.intllib local S = mobs.intllib_monster
-- custom particle effects -- custom particle effects
local effect = function( local effect = function(

BIN
screenshot.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

View File

@ -1,5 +1,5 @@
local S = mobs.intllib local S = mobs.intllib_monster
local get_velocity = function(self) local get_velocity = function(self)

View File

@ -1,5 +1,5 @@
local S = mobs.intllib local S = mobs.intllib_monster
local stone_types = { local stone_types = {

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 567 B

View File

@ -1,5 +1,5 @@
local S = mobs.intllib local S = mobs.intllib_monster
local tree_types = { local tree_types = {