1
0
mirror of https://github.com/sys4-fr/server-nalc.git synced 2025-01-23 16:30:19 +01:00

Update the mobs mod

- Update to the 0.8 release of TenPlus1 mobs redo mod
- Merge the TenPlus1 mobs redo mod changes
- Add 2/3 new sounds for each monsters (from the Cyberpangolin mobs
sounds)
- Small up of the lava_flan mob health
This commit is contained in:
Ombridride 2014-12-25 18:34:34 +01:00
parent c81fc9903e
commit 3fce25aeab
41 changed files with 113 additions and 72 deletions

View File

@ -25,7 +25,8 @@ This mod contains the following additions:
Changelog: Changelog:
0.7 - mob.protected switch added to api.lua, when set to 1 mobs no longer spawn in protected areas, also bug fixes 0.8 - Added sounds to monster mobs (thanks Cyberpangolin for the sfx) and also chicken sound
0.7 - mobs.protected switch added to api.lua, when set to 1 mobs no longer spawn in protected areas, also bug fixes
0.6 - Api now supports multi-textured mobs, e.g oerkki, dungeon master, rats and chickens have random skins when spawning (sheep fix TODO), also new Honey block 0.6 - Api now supports multi-textured mobs, e.g oerkki, dungeon master, rats and chickens have random skins when spawning (sheep fix TODO), also new Honey block
0.5 - Mobs now float in water, die from falling, and some code improvements 0.5 - Mobs now float in water, die from falling, and some code improvements
0.4 - Dungeon Masters and Mese Monsters have much better aim due to shoot_offset, also they can both shoot through nodes that aren't walkable (flowers, grass etc) plus new sheep sound :) 0.4 - Dungeon Masters and Mese Monsters have much better aim due to shoot_offset, also they can both shoot through nodes that aren't walkable (flowers, grass etc) plus new sheep sound :)

View File

@ -174,7 +174,7 @@ function mobs:register_mob(name, def)
end, end,
on_step = function(self, dtime) on_step = function(self, dtime)
local yaw = 0
if self.type == "monster" and minetest.setting_getbool("only_peaceful_mobs") then if self.type == "monster" and minetest.setting_getbool("only_peaceful_mobs") then
self.object:remove() self.object:remove()
end end
@ -196,7 +196,7 @@ function mobs:register_mob(name, def)
-- drop egg -- drop egg
if self.animaltype == "clucky" then if self.animaltype == "clucky" then
if math.random(1, 1500) < 2 if math.random(1, 3000) <= 1
and minetest.get_node(self.object:getpos()).name == "air" and minetest.get_node(self.object:getpos()).name == "air"
and self.state == "stand" then and self.state == "stand" then
minetest.set_node(self.object:getpos(), {name="mobs:egg"}) minetest.set_node(self.object:getpos(), {name="mobs:egg"})
@ -458,7 +458,7 @@ function mobs:register_mob(name, def)
self.set_animation(self, "walk") self.set_animation(self, "walk")
end end
elseif self.state == "walk" then elseif self.state == "walk" then
if math.random(1, 100) < 31 then if math.random(1, 100) <= 30 then
self.object:setyaw(self.object:getyaw()+((math.random(0,360)-180)/180*math.pi)) self.object:setyaw(self.object:getyaw()+((math.random(0,360)-180)/180*math.pi))
end end
if self.jump and self.get_velocity(self) <= 0.5 and self.object:getvelocity().y == 0 then if self.jump and self.get_velocity(self) <= 0.5 and self.object:getvelocity().y == 0 then
@ -468,7 +468,7 @@ function mobs:register_mob(name, def)
end end
self:set_animation("walk") self:set_animation("walk")
self.set_velocity(self, self.walk_velocity) self.set_velocity(self, self.walk_velocity)
if math.random(1, 100) < 31 then if math.random(1, 100) <= 30 then
self.set_velocity(self, 0) self.set_velocity(self, 0)
self.state = "stand" self.state = "stand"
self:set_animation("stand") self:set_animation("stand")
@ -534,7 +534,7 @@ function mobs:register_mob(name, def)
full_punch_interval=1.0, full_punch_interval=1.0,
damage_groups = {fleshy=self.damage} damage_groups = {fleshy=self.damage}
}, vec) }, vec)
if self.attack.player:get_hp() < 1 then if self.attack.player:get_hp() <= 0 then
self.state = "stand" self.state = "stand"
self:set_animation("stand") self:set_animation("stand")
end end
@ -576,7 +576,7 @@ function mobs:register_mob(name, def)
self.object:setyaw(yaw) self.object:setyaw(yaw)
self.set_velocity(self, 0) self.set_velocity(self, 0)
if self.timer > self.shoot_interval and math.random(1, 100) < 61 then if self.timer > self.shoot_interval and math.random(1, 100) <= 60 then
self.timer = 0 self.timer = 0
self:set_animation("punch") self:set_animation("punch")
@ -629,7 +629,7 @@ function mobs:register_mob(name, def)
self.object:set_properties(tmp.textures) self.object:set_properties(tmp.textures)
end]] end]]
end end
if self.lifetimer < 1 and not self.tamed and self.type ~= "npc" then if self.lifetimer <= 0 and not self.tamed and self.type ~= "npc" then
self.object:remove() self.object:remove()
end end
end, end,
@ -801,14 +801,15 @@ function mobs:register_spawn(name, nodes, max_light, min_light, chance, active_o
end end
pos.y = pos.y+1 pos.y = pos.y+1
if not minetest.get_node_light(pos) then
if not minetest.get_node_light(pos) return
or minetest.get_node_light(pos) > max_light end
or minetest.get_node_light(pos) < min_light then if minetest.get_node_light(pos) > max_light then
--print ("LIGHT", name) return
end
if minetest.get_node_light(pos) < min_light then
return return
end end
if pos.y > max_height then if pos.y > max_height then
return return
end end
@ -867,7 +868,8 @@ function mobs:register_arrow(name, def)
on_step = function(self, dtime) on_step = function(self, dtime)
local pos = self.object:getpos() local pos = self.object:getpos()
--if minetest.get_node(self.object:getpos()).name ~= "air" then --if minetest.get_node(self.object:getpos()).name ~= "air" then
if minetest.registered_nodes[minetest.get_node(self.object:getpos()).name].walkable then local node = minetest.get_node(self.object:getpos()).name
if minetest.registered_nodes[node].walkable then
self.hit_node(self, pos, node) self.hit_node(self, pos, node)
self.object:remove() self.object:remove()
return return

View File

@ -34,7 +34,9 @@ mobs:register_mob("mobs:bee", {
walk_start = 35, walk_start = 35,
walk_end = 65, walk_end = 65,
}, },
sounds = {
random = "mobs_bee_random01",
},
on_rightclick = function(self, clicker) on_rightclick = function(self, clicker)
if clicker:is_player() and clicker:get_inventory() then if clicker:is_player() and clicker:get_inventory() then
clicker:get_inventory():add_item("main", "mobs:bee") clicker:get_inventory():add_item("main", "mobs:bee")
@ -53,7 +55,7 @@ minetest.register_craftitem("mobs:bee", {
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.above then if pointed_thing.above then
minetest.add_entity(pointed_thing.above, "mobs:bee") minetest.env:add_entity(pointed_thing.above, "mobs:bee")
itemstack:take_item() itemstack:take_item()
end end
return itemstack return itemstack
@ -92,7 +94,7 @@ minetest.register_node("mobs:beehive", {
after_place_node = function(pos, placer, itemstack) after_place_node = function(pos, placer, itemstack)
if placer:is_player() then if placer:is_player() then
minetest.set_node(pos, {name="mobs:beehive", param2=1}) minetest.set_node(pos, {name="mobs:beehive", param2=1})
minetest.add_entity(pos, "mobs:bee") minetest.env:add_entity(pos, "mobs:bee")
end end
end, end,
@ -107,22 +109,24 @@ minetest.register_craft({
-- Honey Block -- Honey Block
minetest.register_node("mobs:honey_block", { minetest.register_node("mobs:honey_block", {
description = "Honey Block", description = "Honey Block",
tiles = {"mobs_honey_block.png"}, tiles = {"mobs_honey_block.png"},
groups = {snappy=3,flammable=2}, groups = {snappy=3,flammable=2},
sounds = default.node_sound_dirt_defaults(), sounds = default.node_sound_dirt_defaults(),
}) })
minetest.register_craft({ minetest.register_craft({
output = "mobs:honey_block", output = "mobs:honey_block",
recipe = { recipe = {
{"mobs:honey", "mobs:honey", "mobs:honey"}, {"mobs:honey", "mobs:honey", "mobs:honey"},
{"mobs:honey", "mobs:honey", "mobs:honey"}, {"mobs:honey", "mobs:honey", "mobs:honey"},
{"mobs:honey", "mobs:honey", "mobs:honey"}, {"mobs:honey", "mobs:honey", "mobs:honey"},
} }
}) })
minetest.register_craft({ minetest.register_craft({
output = "mobs:honey 9", output = "mobs:honey 9",
recipe = { recipe = {
{"mobs:honey_block"}, {"mobs:honey_block"},
} }
}) })

View File

@ -18,9 +18,9 @@ mobs:register_mob("mobs:chicken", {
texture_2 = {"mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", texture_2 = {"mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png",
"mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png",
"mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png"}, "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png"},
}, },
--textures = {"mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", --textures = {"mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png",
-- "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png"}, -- "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png"},
makes_footstep_sound = true, makes_footstep_sound = true,
walk_velocity = 1, walk_velocity = 1,
armor = 200, armor = 200,
@ -46,22 +46,10 @@ mobs:register_mob("mobs:chicken", {
clicker:get_inventory():add_item("main", "mobs:chicken") clicker:get_inventory():add_item("main", "mobs:chicken")
self.object:remove() self.object:remove()
end end
-- A VOIR POUR RENDRE TAMED/APPRIVOISABLE
-- if item:get_name() == "farming:wheat" then
-- if not minetest.setting_getbool("creative_mode") then
-- item:take_item()
-- clicker:set_wielded_item(item)
-- end
-- self.food = (self.food or 0) + 1
-- if self.food >= 4 then
-- self.food = 0
-- self.tamed = true
-- end
-- end
-- return
-- end
end, end,
sounds = {
random = "mobs_chicken",
},
jump = true, jump = true,
step = 1, step = 1,
blood_texture = "mobs_blood.png", blood_texture = "mobs_blood.png",
@ -78,7 +66,7 @@ minetest.register_craftitem("mobs:chicken", {
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.above then if pointed_thing.above then
minetest.add_entity(pointed_thing.above, "mobs:chicken") minetest.env:add_entity(pointed_thing.above, "mobs:chicken")
itemstack:take_item() itemstack:take_item()
end end
return itemstack return itemstack
@ -127,7 +115,7 @@ minetest.register_craft({
-- Chicken (raw and cooked) -- Chicken (raw and cooked)
minetest.register_craftitem("mobs:chicken_raw", { minetest.register_craftitem("mobs:chicken_raw", {
description = "Raw Chicken", description = "Raw Chicken",
inventory_image = "mobs_chicken_raw.png", inventory_image = "mobs_chicken_raw.png",
on_use = minetest.item_eat(2), on_use = minetest.item_eat(2),
}) })

View File

@ -47,6 +47,9 @@ mobs:register_mob("mobs:dirt_monster", {
punch_start = 40, punch_start = 40,
punch_end = 63, punch_end = 63,
}, },
sounds = {
random = {"mobs_dirtmonster_random01", "mobs_dirtmonster_random02"},
},
jump = true, jump = true,
step = 1, step = 1,
blood_texture = "default_dirt.png", blood_texture = "default_dirt.png",

View File

@ -74,6 +74,9 @@ mobs:register_mob("mobs:dungeon_master", {
speed_normal = 15, speed_normal = 15,
speed_run = 15, speed_run = 15,
}, },
sounds = {
random = {"mobs_dungeonmaster_random01", "mobs_dungeonmaster_random02.ogg", "mobs_dungeonmaster_random03.ogg"},
},
jump = true, jump = true,
step = 0.5, step = 0.5,
shoot_offset = 0, shoot_offset = 0,
@ -106,11 +109,11 @@ mobs:register_arrow("mobs:fireball", {
for dy=-1,1 do for dy=-1,1 do
for dz=-1,1 do for dz=-1,1 do
local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.get_node(p).name local n = minetest.env:get_node(p).name
local excluding = minetest.registered_nodes[n].groups["unbreakable"] ~= nil local excluding = minetest.registered_nodes[n].groups["unbreakable"] ~= nil
or n:split(":")[1] == "nether" or n:split(":")[1] == "nether"
for _,i in ipairs(excluded) do for _,i in ipairs(excluded) do
if i == n then excluding = true end if i == n then including = true end
end end
--if p.y < -19600 and including and n:split(":")[1] == "nether" then --if p.y < -19600 and including and n:split(":")[1] == "nether" then
@ -119,9 +122,9 @@ mobs:register_arrow("mobs:fireball", {
end end
if n ~= "default:obsidian" and n ~= "ethereal:obsidian_brick" then if n ~= "default:obsidian" and n ~= "ethereal:obsidian_brick" then
if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <= 30 then if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <= 30 then
minetest.set_node(p, {name="fire:basic_flame"}) minetest.env:set_node(p, {name="fire:basic_flame"})
else else
minetest.set_node(p, {name="air"}) minetest.env:set_node(p, {name="air"})
end end
end end
end end

View File

@ -12,8 +12,8 @@ minetest.register_alias("zmobs:lava_orb", "mobs:lava_orb")
mobs:register_mob("mobs:lava_flan", { mobs:register_mob("mobs:lava_flan", {
type = "monster", type = "monster",
hp_min = 15, hp_min = 20,
hp_max = 30, hp_max = 35,
collisionbox = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5}, collisionbox = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5},
visual = "mesh", visual = "mesh",
mesh = "zmobs_lava_flan.x", mesh = "zmobs_lava_flan.x",
@ -53,6 +53,9 @@ mobs:register_mob("mobs:lava_flan", {
punch_start = 20, punch_start = 20,
punch_end = 28, punch_end = 28,
}, },
sounds = {
random = {"mobs_lavaflan_random01", "mobs_lavaflan_random02"},
},
jump = true, jump = true,
step = 2, step = 2,
blood_texture = "fire_basic_flame.png", blood_texture = "fire_basic_flame.png",

21
mods/mobs/license.txt Normal file
View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2014 Krupnov Pavel
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.

View File

@ -65,6 +65,9 @@ mobs:register_mob("mobs:mese_monster", {
punch_start = 15, -- 40 punch_start = 15, -- 40
punch_end = 38, -- 63 punch_end = 38, -- 63
}, },
sounds = {
random = {"mobs_mesemonster_random01", "mobs_mesemonster_random02"},
},
jump = true, jump = true,
step = 1, step = 1,
shoot_offset = 2, shoot_offset = 2,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -49,6 +49,10 @@ mobs:register_mob("mobs:oerkki", {
speed_normal = 15, speed_normal = 15,
speed_run = 15, speed_run = 15,
}, },
sounds = {
random = {"mobs_oerkki_random01", "mobs_oerkki_random02"},
attack = "mobs_oerkki_attack",
},
jump = true, jump = true,
step = 1, step = 1,
blood_texture = "mobs_blood.png", blood_texture = "mobs_blood.png",

View File

@ -25,6 +25,9 @@ mobs:register_mob("mobs:rat", {
jump = true, jump = true,
step = 1, step = 1,
passive = true, passive = true,
sounds = {
random = {"mobs_rat_random01", "mobs_rat_random02"},
},
on_rightclick = function(self, clicker) on_rightclick = function(self, clicker)
if clicker:is_player() and clicker:get_inventory() then if clicker:is_player() and clicker:get_inventory() then
@ -43,7 +46,7 @@ minetest.register_craftitem("mobs:rat", {
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.above then if pointed_thing.above then
minetest.add_entity(pointed_thing.above, "mobs:rat") minetest.env:add_entity(pointed_thing.above, "mobs:rat")
itemstack:take_item() itemstack:take_item()
end end
return itemstack return itemstack

View File

@ -48,6 +48,9 @@ mobs:register_mob("mobs:sand_monster", {
punch_start = 74, punch_start = 74,
punch_end = 105, punch_end = 105,
}, },
sounds = {
random = {"mobs_sandmonster_random01", "mobs_sandmonster_random02"},
},
jump = true, jump = true,
step = 1, step = 1,
blood_texture = "mobs_blood.png", blood_texture = "mobs_blood.png",

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -57,20 +57,16 @@ mobs:register_mob("mobs:spider", {
punch_start = 50, punch_start = 50,
punch_end = 90, punch_end = 90,
}, },
-- jump = true,
-- sounds = {},
-- step = 1,
--})
-- },
jump = true,
step = 1,
blood_texture = "mobs_blood.png",
sounds = { sounds = {
random = {"mobs_spider_random01", "mobs_spider_random02"},
war_cry = "mobs_eerie", war_cry = "mobs_eerie",
death = "mobs_howl", death = "mobs_howl",
attack = "mobs_oerkki_attack", attack = "mobs_oerkki_attack",
}, },
jump = true,
sounds = {},
step = 1,
blood_texture = "mobs_blood.png",
}) })
mobs:register_spawn("mobs:spider", {"default:junglegrass", "default:jungleleaves", "default:jungletree"}, 20, -10, 7000, 1, 31000) mobs:register_spawn("mobs:spider", {"default:junglegrass", "default:jungleleaves", "default:jungletree"}, 20, -10, 7000, 1, 31000)

View File

@ -56,6 +56,9 @@ mobs:register_mob("mobs:stone_monster", {
punch_start = 40, punch_start = 40,
punch_end = 63, punch_end = 63,
}, },
sounds = {
random = "mobs_stonemonster_random01", "mobs_stonemonster_random02",
},
jump = true, jump = true,
step = 1, step = 1,
blood_texture = "mobs_blood.png", blood_texture = "mobs_blood.png",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 B

After

Width:  |  Height:  |  Size: 513 B

View File

@ -57,6 +57,10 @@ mobs:register_mob("mobs:tree_monster", {
punch_start = 48, punch_start = 48,
punch_end = 62, punch_end = 62,
}, },
sounds = {
random = {"mobs_treemonster_random01", "mobs_treemonster_random01"},
},
step = 0.5,
jump = true, jump = true,
step = 1, step = 1,
blood_texture = "default_wood.png", blood_texture = "default_wood.png",