1
0
镜像来自 https://github.com/sys4-fr/server-nalc.git synced 2025-10-15 23:25:36 +02:00

Update mobs mod

- api.lua (many improves, chicken egg more frequent, NPC attack nearly
mobs, textures code, etc…)
- Bee (spawn on group:flower now, textures code updated)
- Bunny (textures code updated)
- Chicken (two times more eggs, textures code updated)
- Cow (textures code updated)
- Creeper (finish reorganize the code, textures code updated, new eggs
inventory texture)
- Dirt Monster (textures code updated)
- Dungeon Master (textures code updated)
- init.lua (small credits tweaks)
- Kitten (textures code updated, now drop sometimes farming:string)
- Lava Flan (textures code updated, now 3 can spawn per chunck)
- Mese Monster (textures code updated)
- NPC (textures code updated, revert give raw meat versus health code
for tests)
- Oerkki (textures code updated, now 1 light damage)
- Rat (textures code updated)
- Sand Monster (textures code updated)
- Sheep (textures code updated, now give 2 to 3 wool when sheared)
- Spider (textures code updated, change credits, comments our
modifications)
- Stone Monster (textures code updated)
- Tree Monster (textures code updated)
- Warthog (textures code updated)
- Wolf (finish reorganize the code, textures code updated, add spawner
egg and an inventory texture)
- Tweaks some sounds
This commit is contained in:
Ombridride
2015-03-31 19:32:46 +02:00
父節點 a6bfdd377c
當前提交 4645ef3cb5
共有 38 個文件被更改,包括 176 次插入206 次删除

查看文件

@@ -1,4 +1,4 @@
-- Mobs Api (24th March 2015)
-- Mobs Api (29th March 2015)
mobs = {}
mobs.mod = "redo"
@@ -41,16 +41,13 @@ function mobs:register_mob(name, def)
animation = def.animation,
follow = def.follow or "",
jump = def.jump or true,
exp_min = def.exp_min or 0,
exp_max = def.exp_max or 0,
walk_chance = def.walk_chance or 50,
attacks_monsters = def.attacks_monsters or false,
group_attack = def.group_attack or false,
--fov = def.fov or 120,
passive = def.passive or false,
recovery_time = def.recovery_time or 0.5,
knock_back = def.knock_back or 1, --default value is "or 3",
blood_offset = def.blood_offset or 0,
knock_back = def.knock_back or 1, --Modif MFF, default value is "or 3",
blood_amount = def.blood_amount or 5,
blood_texture = def.blood_texture or "mobs_blood.png",
shoot_offset = def.shoot_offset or 0,
@@ -88,6 +85,7 @@ function mobs:register_mob(name, def)
end,
set_velocity = function(self, v)
if not v then v = 0 end -- added
local yaw = self.object:getyaw()
if self.drawtype == "side" then
yaw = yaw+(math.pi/2)
@@ -208,8 +206,7 @@ function mobs:register_mob(name, def)
if self.fall_damage == 1 and self.object:getvelocity().y == 0 then
local d = self.old_y - self.object:getpos().y
if d > 5 then
local damage = math.floor(d - 5)
self.object:set_hp(self.object:get_hp()-damage)
self.object:set_hp(self.object:get_hp() - math.floor(d - 5))
check_for_death(self)
end
self.old_y = self.object:getpos().y
@@ -241,12 +238,12 @@ function mobs:register_mob(name, def)
local pos = self.object:getpos()
local n = minetest.get_node(pos)
local lit = minetest.get_node_light(pos) or 0
local tod = minetest.get_timeofday()
pos.y = pos.y + (self.collisionbox[2] + self.collisionbox[5]) / 2
if self.light_damage and self.light_damage ~= 0
and pos.y > 0
and lit > 10 -- direct sunlight (was 4)
and (minetest.get_node_light(pos) or 0) > 10 -- direct sunlight (was 4)
and tod > 0.2 and tod < 0.8 then
self.object:set_hp(self.object:get_hp()-self.light_damage)
effect(pos, 5, "tnt_smoke.png")
@@ -279,17 +276,17 @@ function mobs:register_mob(name, def)
if self.type == "monster" and damage_enabled and self.state ~= "attack" then
local s = self.object:getpos()
local inradius = minetest.get_objects_inside_radius(s,self.view_range)
local player = nil
local type = nil
local obj = nil
for _,oir in ipairs(inradius) do
for _,oir in ipairs(minetest.get_objects_inside_radius(s,self.view_range)) do
if oir:is_player() then
player = oir
type = "player"
else
local obj = oir:get_luaentity()
obj = oir:get_luaentity()
if obj then
player = obj.object
type = obj.type
@@ -316,38 +313,23 @@ function mobs:register_mob(name, def)
-- NPC FIND A MONSTER TO ATTACK
if self.type == "npc" and self.attacks_monsters and self.state ~= "attack" then
local s = self.object:getpos()
local inradius = minetest.get_objects_inside_radius(s,self.view_range)
for _, oir in pairs(inradius) do
local obj = oir:get_luaentity()
local obj = nil
local p, dist
for _, oir in pairs(minetest.get_objects_inside_radius(s,self.view_range)) do
obj = oir:get_luaentity()
if obj and obj.type == "monster" then
-- attack monster
local p = obj.object:getpos()
local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5
p = obj.object:getpos()
dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5
self.do_attack(self,obj.object,dist)
break
end
end
end
if self.follow ~= "" and not self.following then
for _,player in pairs(minetest.get_connected_players()) do
local s = self.object:getpos()
local p = player:getpos()
local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5
if self.view_range and dist < self.view_range then
self.following = player ; self.following_player = true
break
else self.following_player = nil
end
end
end
-- horny animal can mate for 40 seconds, afterwards horny animal cannot mate again for 200 seconds
if self.horny == true and self.hornytimer < 240 and self.child == false then
self.hornytimer = self.hornytimer + 1
if self.hornytimer <= 40 then
effect(self.object:getpos(), 4, "heart.png")
end
if self.hornytimer >= 240 then
self.hornytimer = 0
self.horny = false
@@ -364,6 +346,7 @@ function mobs:register_mob(name, def)
textures = self.base_texture,
mesh = self.base_mesh,
visual_size = {x=self.visual_size.x,y=self.visual_size.y},
collisionbox = self.collisionbox,
})
end
end
@@ -371,15 +354,16 @@ function mobs:register_mob(name, def)
-- if animal is horny, find another same animal who is horny and mate
if self.horny == true and self.hornytimer <= 40 then
local pos = self.object:getpos()
effect(pos, 4, "heart.png")
local ents = minetest.get_objects_inside_radius(pos, self.view_range)
local num = 0
local ent = nil
for i,obj in ipairs(ents) do
local ent = obj:get_luaentity()
ent = obj:get_luaentity()
if ent and ent.name == self.name and ent.horny == true and ent.hornytimer <= 40 then num = num + 1 end
if num > 1 then
--print("2 horny "..name)
self.following = ent
ent.following = self
self.horny = false
@@ -388,22 +372,22 @@ function mobs:register_mob(name, def)
ent.horny = false
ent.following = nil
ent.hornytimer = 0
minetest.after(7, function(dtime)
--print ("spawned baby:",self.name)
local mob = minetest.add_entity(pos, self.name)
local ent2 = mob:get_luaentity()
local textures = self.base_texture
if def.child_texture then
print ("child texture detected")
textures = def.child_texture[1]
end
mob:set_properties({
textures = textures,
visual_size = {x=self.visual_size.x/2,y=self.visual_size.y/2},
collisionbox = {self.collisionbox[1]/2, self.collisionbox[2]/2, self.collisionbox[3]/2,
self.collisionbox[4]/2, self.collisionbox[5]/2, self.collisionbox[6]/2},
})
ent2.child = true
ent2.tamed = true
ent2.following = ent -- follow mother
end)
num = 0
break
@@ -411,7 +395,21 @@ function mobs:register_mob(name, def)
end
end
if self.following and self.following:is_player() and self.following:get_wielded_item():get_name() ~= self.follow then
if self.follow ~= "" and not self.following then
local s, p, dist
for _,player in pairs(minetest.get_connected_players()) do
s = self.object:getpos()
p = player:getpos()
dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5
if self.view_range and dist < self.view_range then
self.following = player
break
end
end
end
--if self.following and self.following:is_player() and self.following:get_wielded_item():get_name() ~= self.follow then
if self.following and self.following.is_player and self.following:get_wielded_item():get_name() ~= self.follow then
self.following = nil
self.v_start = false
end
@@ -446,9 +444,9 @@ function mobs:register_mob(name, def)
self.v_start = true
self.set_velocity(self, self.walk_velocity)
else
if self.jump and self.get_velocity(self) <= 0.5 and self.object:getvelocity().y == 0 then -- 0.5 was 1.5
if self.jump and self.get_velocity(self) <= 0.5 and self.object:getvelocity().y == 0 then
local v = self.object:getvelocity()
v.y = 6
v.y = 6.5 -- 6 (in older api.lua version)
self.object:setvelocity(v)
end
self.set_velocity(self, self.walk_velocity)
@@ -837,13 +835,14 @@ function mobs:register_mob(name, def)
get_staticdata = function(self)
-- select random texture, set model
if not self.base_texture then
self.base_texture = def.available_textures["texture_"..math.random(1,def.available_textures["total"])]
self.base_texture = def.textures[math.random(1,#def.textures)]
self.base_mesh = def.mesh
end
-- set texture, model and size
local textures = self.base_texture
local mesh = self.base_mesh
local vis_size = self.visual_size
local colbox = self.collisionbox
-- specific texture if gotten
if self.gotten == true and def.gotten_texture then
textures = def.gotten_texture
@@ -858,6 +857,8 @@ function mobs:register_mob(name, def)
if def.child_texture then
textures = def.child_texture[1]
end
colbox = {self.collisionbox[1]/2, self.collisionbox[2]/2, self.collisionbox[3]/2,
self.collisionbox[4]/2, self.collisionbox[5]/2, self.collisionbox[6]/2}
end
-- remember settings
local tmp = {
@@ -871,6 +872,7 @@ function mobs:register_mob(name, def)
textures = textures,
visual_size = vis_size,
base_texture = self.base_texture,
collisionbox = colbox,
}
self.object:set_properties(tmp)
return minetest.serialize(tmp)
@@ -879,14 +881,13 @@ function mobs:register_mob(name, def)
on_punch = function(self, hitter, tflp, tool_capabilities, dir)
process_weapon(hitter,tflp,tool_capabilities)
local pos = self.object:getpos()
check_for_death(self)
--blood_particles
local pos = self.object:getpos()
pos.y = pos.y + (self.collisionbox[2] + self.collisionbox[5]) / 2
if self.blood_amount > 0 and pos then
local p = pos
p.y = p.y + self.blood_offset
effect(p, self.blood_amount, self.blood_texture)
effect(pos, self.blood_amount, self.blood_texture)
end
-- knock back effect, adapted from blockmen's pyramids mod
@@ -913,10 +914,10 @@ function mobs:register_mob(name, def)
if self.state ~= "attack" then
self.do_attack(self,hitter,1)
end
-- alert other NPCs to the attack
local inradius = minetest.get_objects_inside_radius(hitter:getpos(),5)
for _, oir in pairs(inradius) do
local obj = oir:get_luaentity()
-- alert others to the attack
local obj = nil
for _, oir in pairs(minetest.get_objects_inside_radius(hitter:getpos(),5)) do
obj = oir:get_luaentity()
if obj then
if obj.group_attack == true and obj.state ~= "attack" then
obj.do_attack(obj,hitter,1)
@@ -1006,10 +1007,10 @@ function check_for_death(self)
local pos = self.object:getpos()
pos.y = pos.y + 0.5 -- drop items half a block higher
self.object:remove()
local obj = nil
for _,drop in ipairs(self.drops) do
if math.random(1, drop.chance) == 1 then
local d = ItemStack(drop.name.." "..math.random(drop.min, drop.max))
local obj = minetest.add_item(pos, d)
obj = minetest.add_item(pos, ItemStack(drop.name.." "..math.random(drop.min, drop.max)))
if obj then
obj:setvelocity({x=math.random(-1,1), y=5, z=math.random(-1,1)})
end
@@ -1079,13 +1080,6 @@ local weapon = player:get_wielded_item()
weapon:add_wear(wear)
player:set_wielded_item(weapon)
end
-- if weapon:get_definition().sounds ~= nil then
-- local s = math.random(0,#weapon:get_definition().sounds)
-- minetest.sound_play(weapon:get_definition().sounds[s], {object=player,})
-- else
-- minetest.sound_play("default_sword_wood", {object = player,})
-- end
end
-- Spawn Egg

查看文件

@@ -13,9 +13,8 @@ mobs:register_mob("mobs:bee", {
visual = "mesh",
mesh = "mobs_bee.x",
drawtype = "front",
available_textures = {
total = 1,
texture_1 = {"mobs_bee.png"},
textures = {
{"mobs_bee.png"},
},
-- sounds
makes_footstep_sound = false,
@@ -52,8 +51,8 @@ mobs:register_mob("mobs:bee", {
end
end,
})
-- spawn on group:flowers between 4 and 20 light, 1 in 10000 chance, 1 bee in area up to 31000 in height
mobs:register_spawn("mobs:bee", {"default:dirt_with_grass"}, 20, 4, 10000, 1, 31000)
-- spawn on group:flowers between 4 and 20 light, 1 in 5000 chance, 1 bee in area up to 31000 in height
mobs:register_spawn("mobs:bee", {"group:flower"}, 20, 4, 5000, 1, 31000)
-- register spawn egg
mobs:register_egg("mobs:bee", "Bee", "mobs_bee_inv.png", 0)

查看文件

@@ -13,11 +13,10 @@ mobs:register_mob("mobs:bunny", {
visual = "mesh",
mesh = "mobs_bunny.b3d",
drawtype = "front",
available_textures = {
total = 3,
texture_1 = {"mobs_bunny_grey.png"},
texture_2 = {"mobs_bunny_brown.png"},
texture_3 = {"mobs_bunny_white.png"},
textures = {
{"mobs_bunny_grey.png"},
{"mobs_bunny_brown.png"},
{"mobs_bunny_white.png"},
},
-- sounds
sounds = {},

查看文件

@@ -13,14 +13,11 @@ mobs:register_mob("mobs:chicken", {
visual = "mesh",
mesh = "mobs_chicken.x",
drawtype = "front",
available_textures = {
total = 2,
texture_1 = {"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"},
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"},
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_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"},
},
child_texture = {
{"mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png",
@@ -57,7 +54,7 @@ mobs:register_mob("mobs:chicken", {
-- follows wheat
follow = "farming:seed_wheat", view_range = 8,
-- replace air with egg (lay)
replace_rate = 1000,
replace_rate = 2000,
replace_what = {"air"},
replace_with = "mobs:egg",
-- right click to pick up chicken
@@ -70,7 +67,10 @@ mobs:register_mob("mobs:chicken", {
clicker:set_wielded_item(tool)
end
self.food = (self.food or 0) + 1
if self.food >= 4 then
if self.child == true then
self.hornytimer = self.hornytimer + 10
end
if self.food >= 8 then
self.food = 0
if self.child == false then self.horny = true end
self.gotten = false -- reset
@@ -86,6 +86,12 @@ mobs:register_mob("mobs:chicken", {
end
end,
if clicker:is_player() and clicker:get_inventory() and self.child == false
and clicker:get_inventory():room_for_item("main", "mobs:chicken") then
clicker:get_inventory():add_item("main", "mobs:chicken")
self.object:remove()
end
end,
})
-- spawn on default or bamboo grass between 8 and 20 light, 1 in 9000 change, 1 chicken in area up to 31000 in height
mobs:register_spawn("mobs:chicken", {"default:dirt_with_grass"}, 20, 0, 10000, 1, 31000)

查看文件

@@ -15,10 +15,9 @@ mobs:register_mob("mobs:cow", {
visual = "mesh",
mesh = "mobs_cow.x",
drawtype = "front",
available_textures = {
total = 1, -- à mettre à 2 quand "mobs_cow_brown.png" sera compatible
texture_1 = {"mobs_cow.png"},
--texture_2 = {"mobs_cow_brown.png"}, -- dé-commenter quand "mobs_cow_brown.png" sera compatible
textures = {
{"mobs_cow.png"},
{"mobs_cow_brown.png"}, -- dé-commenter quand "mobs_cow_brown.png" sera compatible
},
blood_texture = "mobs_blood.png",
visual_size = {x=1,y=1},

42
mods/mobs/creeper.lua Normal file → Executable file
查看文件

@@ -15,19 +15,22 @@ mobs:register_mob("mobs:creeper", {
visual = "mesh",
mesh = "mobs_tree_monster.x",
drawtype = "front",
available_textures = {
total = 1,
texture_1 = {"mobs_creeper.png"},
textures = {
{"mobs_creeper.png"},
},
visual_size = {x=4.5,y=4.5},
blood_texture = "mobs_creeper_inv.png",
-- Continuer d'organiser le code à partir d'ici --
-- sounds
makes_footstep_sound = true,
view_range = 16,
sounds = {
random = "mobs_treemonster",
},
-- speed and jump
walk_velocity = 2,
run_velocity = 4,
jump = true,
view_range = 16,
-- drops mese or diamond when dead
drops = {
{name = "default:torch",
chance = 10,
@@ -46,27 +49,18 @@ mobs:register_mob("mobs:creeper", {
min = 2,
max = 3,},
},
light_resistant = true,
water_damage = 0,
-- damaged by
water_damage = 2,
lava_damage = 15,
light_damage = 0,
disable_fall_damage = false,
-- model animation
animation = {
speed_normal = 15,
speed_run = 15,
stand_start = 0,
stand_end = 24,
walk_start = 25,
walk_end = 47,
run_start = 48,
run_end = 62,
punch_start = 48,
punch_end = 62,
stand_start = 0, stand_end = 24,
walk_start = 25, walk_end = 47,
run_start = 48, run_end = 62,
punch_start = 48, punch_end = 62,
speed_normal = 15, speed_run = 15,
},
sounds = {
random = "mobs_treemonster",
},
jump = true,
})
mobs:register_spawn("mobs:creeper", {"default:dirt_with_grass"}, 20, 8, 12000, 1, 31000)
mobs:register_egg("mobs:creeper", "Creeper", "mobs_creeper_inv.png", 1)

查看文件

@@ -15,9 +15,8 @@ mobs:register_mob("mobs:dirt_monster", {
visual = "mesh",
mesh = "mobs_stone_monster.x",
drawtype = "front",
available_textures = {
total = 1,
texture_1 = {"mobs_dirt_monster.png"},
textures = {
{"mobs_dirt_monster.png"},
},
visual_size = {x=3, y=2.6},
blood_texture = "default_dirt.png",

查看文件

@@ -21,11 +21,10 @@ mobs:register_mob("mobs:dungeon_master", {
visual = "mesh",
mesh = "mobs_dungeon_master.x",
drawtype = "front",
available_textures = {
total = 3,
texture_1 = {"mobs_dungeon_master.png"},
texture_2 = {"mobs_dungeon_master_cobblestone.png"},
texture_3 = {"mobs_dungeon_master_strangewhite.png"},
textures = {
{"mobs_dungeon_master.png"},
{"mobs_dungeon_master_cobblestone.png"},
{"mobs_dungeon_master_strangewhite.png"},
},
visual_size = {x=8, y=8},
blood_texture = "mobs_blood.png",

查看文件

@@ -24,10 +24,10 @@ dofile(minetest.get_modpath("mobs").."/treemonster.lua") -- PilzAdam
dofile(minetest.get_modpath("mobs").."/wolf.lua") -- PilzAdam
dofile(minetest.get_modpath("mobs").."/lava_flan.lua") -- Zeg9
dofile(minetest.get_modpath("mobs").."/mese_monster.lua") -- Zeg9
dofile(minetest.get_modpath("mobs").."/spider.lua") -- https://forum.minetest.net/viewtopic.php?pid=127538
dofile(minetest.get_modpath("mobs").."/spider.lua") -- AspireMint
-- NPC
dofile(minetest.get_modpath("mobs").."/npc.lua")
dofile(minetest.get_modpath("mobs").."/npc.lua") -- TenPlus1
-- Creeper (fast impl by davedevils)
dofile(minetest.get_modpath("mobs").."/creeper.lua")

查看文件

@@ -13,12 +13,11 @@ mobs:register_mob("mobs:kitten", {
visual = "mesh",
visual_size = {x=0.5, y=0.5},
mesh = "mobs_kitten.b3d",
available_textures = {
total = 4,
texture_1 = {"mobs_kitten_striped.png"},
texture_2 = {"mobs_kitten_splotchy.png"},
texture_3 = {"mobs_kitten_ginger.png"},
texture_4 = {"mobs_kitten_sandy.png"},
textures = {
{"mobs_kitten_striped.png"},
{"mobs_kitten_splotchy.png"},
{"mobs_kitten_ginger.png"},
{"mobs_kitten_sandy.png"},
},
blood_texture = "mobs_blood.png",
-- sounds
@@ -29,12 +28,12 @@ mobs:register_mob("mobs:kitten", {
-- speed and jump
walk_velocity = 0.6,
jump = false,
-- drops sometimes coins
-- drops string and coins
drops = {
{name = "maptools:copper_coin",
chance = 10,
min = 1,
max = 1,},
chance = 10, min = 1, max = 1,},
{name = "farming:string",
chance = 2, min = 1, max = 1},
},
-- damaged by
water_damage = 1,

查看文件

@@ -15,9 +15,8 @@ mobs:register_mob("mobs:lava_flan", {
visual = "mesh",
mesh = "zmobs_lava_flan.x",
drawtype = "front",
available_textures = {
total = 1,
texture_1 = {"zmobs_lava_flan.png"},
textures = {
{"zmobs_lava_flan.png"},
},
blood_texture = "fire_basic_flame.png",
visual_size = {x=1, y=1},
@@ -53,8 +52,8 @@ mobs:register_mob("mobs:lava_flan", {
punch_start = 20, punch_end = 28,
},
})
-- spawns in lava between -1 and 20 light, 1 in 2000 chance, 2 in area below 31000 in height
mobs:register_spawn("mobs:lava_flan", {"default:lava_source"}, 20, -1, 2500, 2, 31000)
-- spawns in lava between -1 and 20 light, 1 in 2000 chance, 3 in area below 31000 in height
mobs:register_spawn("mobs:lava_flan", {"default:lava_source"}, 20, -1, 2500, 3, 31000)
-- register spawn egg
mobs:register_egg("mobs:lava_flan", "Lava Flan", "default_lava.png", 1)

查看文件

@@ -17,9 +17,8 @@ mobs:register_mob("mobs:mese_monster", {
collisionbox = {-0.5, -1.5, -0.5, 0.5, 0.5, 0.5},
visual = "mesh",
mesh = "zmobs_mese_monster.x",
available_textures = {
total = 1,
texture_1 = {"zmobs_mese_monster.png"},
textures = {
{"zmobs_mese_monster.png"},
},
visual_size = {x=1, y=1},
drawtype = "front",
@@ -60,7 +59,7 @@ mobs:register_mob("mobs:mese_monster", {
punch_start = 15, punch_end = 38, -- was 40 & 63
},
})
-- spawn on stone between 20 and -1 light, 1 in 6000 chance, 1 in area below -25
-- spawn on stone between 20 and -1 light, 1 in 7000 chance, 1 in area below -25
mobs:register_spawn("mobs:mese_monster", {"default:stone", }, 20, -1, 7000, 1, -25)
-- register spawn egg
mobs:register_egg("mobs:mese_monster", "Mese Monster", "default_mese_block.png", 1)

查看文件

@@ -21,9 +21,8 @@ mobs:register_mob("mobs:npc", {
visual = "mesh",
mesh = "character.b3d",
drawtype = "front",
available_textures = {
total = 1,
texture_1 = {"mobs_npc.png"},
textures = {
{"mobs_npc.png"},
},
visual_size = {x=1, y=1},
-- sounds
@@ -33,7 +32,6 @@ mobs:register_mob("mobs:npc", {
walk_velocity = 1.5,
run_velocity = 2.5,
jump = true,
step = 1,
-- drops wood and chance of apples when dead
drops = {
{name = "default:wood",
@@ -65,14 +63,12 @@ mobs:register_mob("mobs:npc", {
local item = clicker:get_wielded_item()
if item:get_name() == "mobs:meat" or item:get_name() == "farming:bread" then
local hp = self.object:get_hp()
if hp >= self.hp_max then return end
if hp + 4 > self.hp_max then return end
if not minetest.setting_getbool("creative_mode") then
item:take_item()
clicker:set_wielded_item(item)
end
local n = hp + 4
if n > self.hp_max then n = self.hp_max end
self.object:set_hp(n)
self.object:set_hp(hp+4)
-- right clicking with gold lump drops random item from mobs.npc_drops
elseif item:get_name() == "default:gold_lump" then
if not minetest.setting_getbool("creative_mode") then

查看文件

@@ -15,10 +15,9 @@ mobs:register_mob("mobs:oerkki", {
visual = "mesh",
mesh = "mobs_oerkki.x",
drawtype = "front",
available_textures = {
total = 2,
texture_1 = {"mobs_oerkki.png"},
texture_2 = {"mobs_oerkki2.png"},
textures = {
{"mobs_oerkki.png"},
{"mobs_oerkki2.png"},
},
visual_size = {x=5, y=5},
blood_texture = "mobs_blood.png",
@@ -43,7 +42,7 @@ mobs:register_mob("mobs:oerkki", {
-- damaged by
water_damage = 1,
lava_damage = 1,
light_damage = 0,
light_damage = 1,
-- model animation
animation = {
stand_start = 0, stand_end = 23,

查看文件

@@ -13,10 +13,9 @@ mobs:register_mob("mobs:rat", {
visual = "mesh",
mesh = "mobs_rat.x",
drawtype = "front",
available_textures = {
total = 2,
texture_1 = {"mobs_rat.png"},
texture_2 = {"mobs_rat_brown.png"},
textures = {
{"mobs_rat.png"},
{"mobs_rat_brown.png"},
},
blood_texture = "mobs_blood.png",
-- sounds

查看文件

@@ -15,9 +15,8 @@ mobs:register_mob("mobs:sand_monster", {
visual = "mesh",
mesh = "mobs_sand_monster.x",
drawtype = "front",
available_textures = {
total = 1,
texture_1 = {"mobs_sand_monster.png"},
textures = {
{"mobs_sand_monster.png"},
},
visual_size = {x=8,y=8},
blood_texture = "default_sand.png",
@@ -52,7 +51,7 @@ mobs:register_mob("mobs:sand_monster", {
punch_start = 74, punch_end = 105,
},
})
-- spawns on desert sand between -1 and 20 light, 1 in 5000 chance, 1 sand monster in area up to 31000 in height
-- spawns on desert sand between -1 and 20 light, 1 in 7500 chance, 1 sand monster in area up to 31000 in height
mobs:register_spawn("mobs:sand_monster", {"default:desert_sand", "default:sand"}, 20, -1, 7500, 1, 31000)
-- register spawn egg
mobs:register_egg("mobs:sand_monster", "Sand Monster", "default_desert_sand.png", 1)

查看文件

@@ -13,9 +13,8 @@ mobs:register_mob("mobs:sheep", {
visual = "mesh",
mesh = "mobs_sheep.x",
drawtype = "front",
available_textures = {
total = 1,
texture_1 = {"mobs_sheep.png"},
textures = {
{"mobs_sheep.png"},
},
blood_texture = "mobs_blood.png",
visual_size = {x=1,y=1},
@@ -86,7 +85,7 @@ mobs:register_mob("mobs:sheep", {
if minetest.registered_items["wool:white"] then
local pos = self.object:getpos()
pos.y = pos.y + 0.5
local obj = minetest.add_item(pos, ItemStack("wool:white "..math.random(1,3)))
local obj = minetest.add_item(pos, ItemStack("wool:white "..math.random(2,3)))
if obj then
obj:setvelocity({x=math.random(-1,1), y=5, z=math.random(-1,1)})
end

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.

0
mods/mobs/sounds/tnt_explode.ogg Normal file → Executable file
查看文件

查看文件

@@ -1,5 +1,5 @@
-- Spider by fishyWET (borrowed from Lord of the Test [game])
-- Spider by AspireMint (fishyWET (CC-BY-SA 3.0 license for texture)
mobs:register_mob("mobs:spider", {
-- animal, monster, npc, barbarian
@@ -15,9 +15,8 @@ mobs:register_mob("mobs:spider", {
visual = "mesh",
mesh = "mobs_spider.x",
drawtype = "front",
available_textures = {
total = 1,
texture_1 = {"mobs_spider.png"},
textures = {
{"mobs_spider.png"},
},
visual_size = {x=7,y=7},
blood_texture = "mobs_blood.png",
@@ -27,7 +26,7 @@ mobs:register_mob("mobs:spider", {
random = "mobs_spider",
war_cry = "mobs_eerie",
death = "mobs_howl",
attack = "mobs_spider",
attack = "mobs_spider_attack",
},
-- speed and jump, sinks in water
walk_velocity = 1,
@@ -57,7 +56,7 @@ mobs:register_mob("mobs:spider", {
punch_start = 50, punch_end = 90,
},
})
-- spawn on desert stone/crystal dirt, between 0 and 5 light, 1 in 7000 chance, 1 in area up to 71 in height
-- spawn on desert stone/crystal dirt, between 0 and 5 light, 1 in 9000 chance, 1 in area up to 31000 in height
mobs:register_spawn("mobs:spider", {"default:jungleleaves", "default:jungletree"}, 20, -1, 9000, 1, 31000)
-- register spawn egg
mobs:register_egg("mobs:spider", "Spider", "mobs_cobweb.png", 1)
@@ -78,8 +77,8 @@ minetest.register_node("mobs:spider_cobweb", {
sunlight_propagates = true,
liquid_viscosity = 11,
liquidtype = "source",
liquid_alternative_flowing = "mobs:spider_cobweb",
liquid_alternative_source = "mobs:spider_cobweb",
liquid_alternative_flowing = "mobs:spider_cobweb", --Modif MFF
liquid_alternative_source = "mobs:spider_cobweb", --Modif MFF
liquid_renewable = false,
liquid_range = 0,
walkable = false,

查看文件

@@ -15,9 +15,8 @@ mobs:register_mob("mobs:stone_monster", {
visual = "mesh",
mesh = "mobs_stone_monster.x",
drawtype = "front",
available_textures = {
total = 1,
texture_1 = {"mobs_stone_monster.png"},
textures = {
{"mobs_stone_monster.png"},
},
visual_size = {x=3, y=2.6},
blood_texture = "mobs_blood.png",
@@ -25,6 +24,7 @@ mobs:register_mob("mobs:stone_monster", {
makes_footstep_sound = true,
sounds = {
random = "mobs_stonemonster",
attack = "mobs_stonemonster_attack",
},
-- speed and jump, sinks in water
walk_velocity = 2,
@@ -32,7 +32,7 @@ mobs:register_mob("mobs:stone_monster", {
jump = true,
floats = 0,
view_range = 16,
-- chance of dropping torch, iron, lump and coins
-- chance of dropping torch, iron lump, coal lump and/or silver coins
drops = {
{name = "default:torch",
chance = 10, min = 3, max = 5,},
@@ -56,7 +56,7 @@ mobs:register_mob("mobs:stone_monster", {
punch_start = 40, punch_end = 63,
},
})
-- spawns on stone between -1 and 5 light, 1 in 5500 chance, 1 in area below -5
-- spawns on stone between -1 and 5 light, 1 in 7000 chance, 1 in area below -5
mobs:register_spawn("mobs:stone_monster", {"default:stone", "nether:dirt_top"}, 5, -1, 7000, 1, -5)
-- register spawn egg
mobs:register_egg("mobs:stone_monster", "Stone Monster", "default_stone.png", 1)

二進制
mods/mobs/textures/mobs_creeper_inv.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  大小: 664 B

After

Width:  |  Height:  |  大小: 883 B

0
mods/mobs/textures/mobs_leather.png Normal file → Executable file
查看文件

Before

Width:  |  Height:  |  大小: 196 B

After

Width:  |  Height:  |  大小: 196 B

二進制
mods/mobs/textures/mobs_wolf_inv.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  大小: 2.2 KiB

查看文件

@@ -15,9 +15,8 @@ mobs:register_mob("mobs:tree_monster", {
visual = "mesh",
mesh = "mobs_tree_monster.x",
drawtype = "front",
available_textures = {
total = 1,
texture_1 = {"mobs_tree_monster.png"},
textures = {
{"mobs_tree_monster.png"},
},
visual_size = {x=4.5,y=4.5},
blood_texture = "default_wood.png",
@@ -31,7 +30,7 @@ mobs:register_mob("mobs:tree_monster", {
run_velocity = 2.5,
jump = true,
view_range = 16,
-- drops saplings or apple
-- drops saplings, junglesapling, apple and/or silver coins
drops = {
{name = "default:sapling",
chance = 3, min = 1, max = 2},
@@ -56,7 +55,7 @@ mobs:register_mob("mobs:tree_monster", {
punch_start = 48, punch_end = 62,
},
})
-- spawn on leaves and beech_leaves, between 0 and 5 light, 1 in 7000 chance, 1 in area up to 31000 in height
-- spawn on leaves and beech_leaves, between 0 and 5 light, 1 in 8000 chance, 1 in area up to 31000 in height
mobs:register_spawn("mobs:tree_monster", {"default:leaves", "moretrees:beech_leaves"}, 3, -1, 8000, 1, 31000)
-- register spawn egg
mobs:register_egg("mobs:tree_monster", "Tree Monster", "default_tree_top.png", 1)

查看文件

@@ -15,9 +15,8 @@ mobs:register_mob("mobs:pumba", {
visual = "mesh",
mesh = "mobs_pumba.x",
drawtype = "front",
available_textures = {
total = 1,
texture_1 = {"mobs_pumba.png"},
textures = {
{"mobs_pumba.png"},
},
visual_size = {x=1,y=1},
blood_texture = "mobs_blood.png",

查看文件

@@ -15,20 +15,22 @@ mobs:register_mob("mobs:wolf", {
visual = "mesh",
mesh = "mobs_wolf.x",
drawtype = "front",
available_textures = {
total = 1,
texture_1 = {"mobs_wolf.png"},
textures = {
{"mobs_wolf.png"},
},
--visual_size = {x=1,y=1}, --Quel valeur lui mettre ?
blood_texture = "mobs_blood.png",
-- Continuer d'organiser le code à partir d'ici --
-- sounds
makes_footstep_sound = true,
view_range = 16,
sounds = {
random = "mobs_wolf",
},
-- speed and jump
walk_velocity = 3,
run_velocity = 5,
damage = 4,
jump = true,
view_range = 16,
-- drops mese or diamond when dead
drops = {
{name = "mobs:meat_raw",
chance = 1,
@@ -39,26 +41,19 @@ mobs:register_mob("mobs:wolf", {
min = 1,
max = 4,},
},
light_resistant = false,
-- damaged by
water_damage = 1,
lava_damage = 5,
light_damage = 2,
on_rightclick = nil,
-- model animation
animation = {
speed_normal = 15,
speed_run = 15,
stand_start = 0,
stand_end = 14,
walk_start = 15,
walk_end = 38,
run_start = 40,
run_end = 63,
punch_start = 40,
punch_end = 63,
stand_start = 0, stand_end = 14,
walk_start = 15, walk_end = 38,
run_start = 40, run_end = 63,
punch_start = 40, punch_end = 63,
speed_normal = 15, speed_run = 15,
},
sounds = {
random = "mobs_wolf",
},
jump = true,
})
mobs:register_spawn("mobs:wolf", {"default:dirt_with_grass"}, 3, -1, 9500, 1, 31000)
mobs:register_egg("mobs:wolf", "Wolf", "mobs_wolf_inv.png", 1)