mirror of
https://github.com/sys4-fr/server-nalc.git
synced 2024-12-25 02:00:37 +01: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:
parent
a6bfdd377c
commit
4645ef3cb5
@ -1,4 +1,4 @@
|
|||||||
-- Mobs Api (24th March 2015)
|
-- Mobs Api (29th March 2015)
|
||||||
mobs = {}
|
mobs = {}
|
||||||
mobs.mod = "redo"
|
mobs.mod = "redo"
|
||||||
|
|
||||||
@ -41,16 +41,13 @@ function mobs:register_mob(name, def)
|
|||||||
animation = def.animation,
|
animation = def.animation,
|
||||||
follow = def.follow or "",
|
follow = def.follow or "",
|
||||||
jump = def.jump or true,
|
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,
|
walk_chance = def.walk_chance or 50,
|
||||||
attacks_monsters = def.attacks_monsters or false,
|
attacks_monsters = def.attacks_monsters or false,
|
||||||
group_attack = def.group_attack or false,
|
group_attack = def.group_attack or false,
|
||||||
--fov = def.fov or 120,
|
--fov = def.fov or 120,
|
||||||
passive = def.passive or false,
|
passive = def.passive or false,
|
||||||
recovery_time = def.recovery_time or 0.5,
|
recovery_time = def.recovery_time or 0.5,
|
||||||
knock_back = def.knock_back or 1, --default value is "or 3",
|
knock_back = def.knock_back or 1, --Modif MFF, default value is "or 3",
|
||||||
blood_offset = def.blood_offset or 0,
|
|
||||||
blood_amount = def.blood_amount or 5,
|
blood_amount = def.blood_amount or 5,
|
||||||
blood_texture = def.blood_texture or "mobs_blood.png",
|
blood_texture = def.blood_texture or "mobs_blood.png",
|
||||||
shoot_offset = def.shoot_offset or 0,
|
shoot_offset = def.shoot_offset or 0,
|
||||||
@ -88,6 +85,7 @@ function mobs:register_mob(name, def)
|
|||||||
end,
|
end,
|
||||||
|
|
||||||
set_velocity = function(self, v)
|
set_velocity = function(self, v)
|
||||||
|
if not v then v = 0 end -- added
|
||||||
local yaw = self.object:getyaw()
|
local yaw = self.object:getyaw()
|
||||||
if self.drawtype == "side" then
|
if self.drawtype == "side" then
|
||||||
yaw = yaw+(math.pi/2)
|
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
|
if self.fall_damage == 1 and self.object:getvelocity().y == 0 then
|
||||||
local d = self.old_y - self.object:getpos().y
|
local d = self.old_y - self.object:getpos().y
|
||||||
if d > 5 then
|
if d > 5 then
|
||||||
local damage = math.floor(d - 5)
|
self.object:set_hp(self.object:get_hp() - math.floor(d - 5))
|
||||||
self.object:set_hp(self.object:get_hp()-damage)
|
|
||||||
check_for_death(self)
|
check_for_death(self)
|
||||||
end
|
end
|
||||||
self.old_y = self.object:getpos().y
|
self.old_y = self.object:getpos().y
|
||||||
@ -241,12 +238,12 @@ function mobs:register_mob(name, def)
|
|||||||
|
|
||||||
local pos = self.object:getpos()
|
local pos = self.object:getpos()
|
||||||
local n = minetest.get_node(pos)
|
local n = minetest.get_node(pos)
|
||||||
local lit = minetest.get_node_light(pos) or 0
|
|
||||||
local tod = minetest.get_timeofday()
|
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
|
if self.light_damage and self.light_damage ~= 0
|
||||||
and pos.y > 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
|
and tod > 0.2 and tod < 0.8 then
|
||||||
self.object:set_hp(self.object:get_hp()-self.light_damage)
|
self.object:set_hp(self.object:get_hp()-self.light_damage)
|
||||||
effect(pos, 5, "tnt_smoke.png")
|
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
|
if self.type == "monster" and damage_enabled and self.state ~= "attack" then
|
||||||
|
|
||||||
local s = self.object:getpos()
|
local s = self.object:getpos()
|
||||||
local inradius = minetest.get_objects_inside_radius(s,self.view_range)
|
|
||||||
local player = nil
|
local player = nil
|
||||||
local type = 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
|
if oir:is_player() then
|
||||||
player = oir
|
player = oir
|
||||||
type = "player"
|
type = "player"
|
||||||
else
|
else
|
||||||
local obj = oir:get_luaentity()
|
obj = oir:get_luaentity()
|
||||||
if obj then
|
if obj then
|
||||||
player = obj.object
|
player = obj.object
|
||||||
type = obj.type
|
type = obj.type
|
||||||
@ -316,38 +313,23 @@ function mobs:register_mob(name, def)
|
|||||||
-- NPC FIND A MONSTER TO ATTACK
|
-- NPC FIND A MONSTER TO ATTACK
|
||||||
if self.type == "npc" and self.attacks_monsters and self.state ~= "attack" then
|
if self.type == "npc" and self.attacks_monsters and self.state ~= "attack" then
|
||||||
local s = self.object:getpos()
|
local s = self.object:getpos()
|
||||||
local inradius = minetest.get_objects_inside_radius(s,self.view_range)
|
local obj = nil
|
||||||
for _, oir in pairs(inradius) do
|
local p, dist
|
||||||
local obj = oir:get_luaentity()
|
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
|
if obj and obj.type == "monster" then
|
||||||
-- attack monster
|
-- attack monster
|
||||||
local p = obj.object:getpos()
|
p = obj.object:getpos()
|
||||||
local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5
|
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)
|
self.do_attack(self,obj.object,dist)
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
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
|
-- 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
|
if self.horny == true and self.hornytimer < 240 and self.child == false then
|
||||||
self.hornytimer = self.hornytimer + 1
|
self.hornytimer = self.hornytimer + 1
|
||||||
if self.hornytimer <= 40 then
|
|
||||||
effect(self.object:getpos(), 4, "heart.png")
|
|
||||||
end
|
|
||||||
if self.hornytimer >= 240 then
|
if self.hornytimer >= 240 then
|
||||||
self.hornytimer = 0
|
self.hornytimer = 0
|
||||||
self.horny = false
|
self.horny = false
|
||||||
@ -364,6 +346,7 @@ function mobs:register_mob(name, def)
|
|||||||
textures = self.base_texture,
|
textures = self.base_texture,
|
||||||
mesh = self.base_mesh,
|
mesh = self.base_mesh,
|
||||||
visual_size = {x=self.visual_size.x,y=self.visual_size.y},
|
visual_size = {x=self.visual_size.x,y=self.visual_size.y},
|
||||||
|
collisionbox = self.collisionbox,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
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 animal is horny, find another same animal who is horny and mate
|
||||||
if self.horny == true and self.hornytimer <= 40 then
|
if self.horny == true and self.hornytimer <= 40 then
|
||||||
local pos = self.object:getpos()
|
local pos = self.object:getpos()
|
||||||
|
effect(pos, 4, "heart.png")
|
||||||
local ents = minetest.get_objects_inside_radius(pos, self.view_range)
|
local ents = minetest.get_objects_inside_radius(pos, self.view_range)
|
||||||
local num = 0
|
local num = 0
|
||||||
|
local ent = nil
|
||||||
for i,obj in ipairs(ents) do
|
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 ent and ent.name == self.name and ent.horny == true and ent.hornytimer <= 40 then num = num + 1 end
|
||||||
|
|
||||||
if num > 1 then
|
if num > 1 then
|
||||||
--print("2 horny "..name)
|
|
||||||
self.following = ent
|
self.following = ent
|
||||||
ent.following = self
|
ent.following = self
|
||||||
self.horny = false
|
self.horny = false
|
||||||
@ -388,22 +372,22 @@ function mobs:register_mob(name, def)
|
|||||||
ent.horny = false
|
ent.horny = false
|
||||||
ent.following = nil
|
ent.following = nil
|
||||||
ent.hornytimer = 0
|
ent.hornytimer = 0
|
||||||
|
|
||||||
minetest.after(7, function(dtime)
|
minetest.after(7, function(dtime)
|
||||||
--print ("spawned baby:",self.name)
|
|
||||||
local mob = minetest.add_entity(pos, self.name)
|
local mob = minetest.add_entity(pos, self.name)
|
||||||
local ent2 = mob:get_luaentity()
|
local ent2 = mob:get_luaentity()
|
||||||
local textures = self.base_texture
|
local textures = self.base_texture
|
||||||
if def.child_texture then
|
if def.child_texture then
|
||||||
print ("child texture detected")
|
|
||||||
textures = def.child_texture[1]
|
textures = def.child_texture[1]
|
||||||
end
|
end
|
||||||
mob:set_properties({
|
mob:set_properties({
|
||||||
textures = textures,
|
textures = textures,
|
||||||
visual_size = {x=self.visual_size.x/2,y=self.visual_size.y/2},
|
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.child = true
|
||||||
ent2.tamed = true
|
ent2.tamed = true
|
||||||
|
ent2.following = ent -- follow mother
|
||||||
end)
|
end)
|
||||||
num = 0
|
num = 0
|
||||||
break
|
break
|
||||||
@ -411,7 +395,21 @@ function mobs:register_mob(name, def)
|
|||||||
end
|
end
|
||||||
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.following = nil
|
||||||
self.v_start = false
|
self.v_start = false
|
||||||
end
|
end
|
||||||
@ -446,9 +444,9 @@ function mobs:register_mob(name, def)
|
|||||||
self.v_start = true
|
self.v_start = true
|
||||||
self.set_velocity(self, self.walk_velocity)
|
self.set_velocity(self, self.walk_velocity)
|
||||||
else
|
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()
|
local v = self.object:getvelocity()
|
||||||
v.y = 6
|
v.y = 6.5 -- 6 (in older api.lua version)
|
||||||
self.object:setvelocity(v)
|
self.object:setvelocity(v)
|
||||||
end
|
end
|
||||||
self.set_velocity(self, self.walk_velocity)
|
self.set_velocity(self, self.walk_velocity)
|
||||||
@ -837,13 +835,14 @@ function mobs:register_mob(name, def)
|
|||||||
get_staticdata = function(self)
|
get_staticdata = function(self)
|
||||||
-- select random texture, set model
|
-- select random texture, set model
|
||||||
if not self.base_texture then
|
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
|
self.base_mesh = def.mesh
|
||||||
end
|
end
|
||||||
-- set texture, model and size
|
-- set texture, model and size
|
||||||
local textures = self.base_texture
|
local textures = self.base_texture
|
||||||
local mesh = self.base_mesh
|
local mesh = self.base_mesh
|
||||||
local vis_size = self.visual_size
|
local vis_size = self.visual_size
|
||||||
|
local colbox = self.collisionbox
|
||||||
-- specific texture if gotten
|
-- specific texture if gotten
|
||||||
if self.gotten == true and def.gotten_texture then
|
if self.gotten == true and def.gotten_texture then
|
||||||
textures = def.gotten_texture
|
textures = def.gotten_texture
|
||||||
@ -858,6 +857,8 @@ function mobs:register_mob(name, def)
|
|||||||
if def.child_texture then
|
if def.child_texture then
|
||||||
textures = def.child_texture[1]
|
textures = def.child_texture[1]
|
||||||
end
|
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
|
end
|
||||||
-- remember settings
|
-- remember settings
|
||||||
local tmp = {
|
local tmp = {
|
||||||
@ -871,6 +872,7 @@ function mobs:register_mob(name, def)
|
|||||||
textures = textures,
|
textures = textures,
|
||||||
visual_size = vis_size,
|
visual_size = vis_size,
|
||||||
base_texture = self.base_texture,
|
base_texture = self.base_texture,
|
||||||
|
collisionbox = colbox,
|
||||||
}
|
}
|
||||||
self.object:set_properties(tmp)
|
self.object:set_properties(tmp)
|
||||||
return minetest.serialize(tmp)
|
return minetest.serialize(tmp)
|
||||||
@ -879,14 +881,13 @@ function mobs:register_mob(name, def)
|
|||||||
on_punch = function(self, hitter, tflp, tool_capabilities, dir)
|
on_punch = function(self, hitter, tflp, tool_capabilities, dir)
|
||||||
|
|
||||||
process_weapon(hitter,tflp,tool_capabilities)
|
process_weapon(hitter,tflp,tool_capabilities)
|
||||||
local pos = self.object:getpos()
|
|
||||||
check_for_death(self)
|
check_for_death(self)
|
||||||
|
|
||||||
--blood_particles
|
--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
|
if self.blood_amount > 0 and pos then
|
||||||
local p = pos
|
effect(pos, self.blood_amount, self.blood_texture)
|
||||||
p.y = p.y + self.blood_offset
|
|
||||||
effect(p, self.blood_amount, self.blood_texture)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- knock back effect, adapted from blockmen's pyramids mod
|
-- knock back effect, adapted from blockmen's pyramids mod
|
||||||
@ -913,10 +914,10 @@ function mobs:register_mob(name, def)
|
|||||||
if self.state ~= "attack" then
|
if self.state ~= "attack" then
|
||||||
self.do_attack(self,hitter,1)
|
self.do_attack(self,hitter,1)
|
||||||
end
|
end
|
||||||
-- alert other NPCs to the attack
|
-- alert others to the attack
|
||||||
local inradius = minetest.get_objects_inside_radius(hitter:getpos(),5)
|
local obj = nil
|
||||||
for _, oir in pairs(inradius) do
|
for _, oir in pairs(minetest.get_objects_inside_radius(hitter:getpos(),5)) do
|
||||||
local obj = oir:get_luaentity()
|
obj = oir:get_luaentity()
|
||||||
if obj then
|
if obj then
|
||||||
if obj.group_attack == true and obj.state ~= "attack" then
|
if obj.group_attack == true and obj.state ~= "attack" then
|
||||||
obj.do_attack(obj,hitter,1)
|
obj.do_attack(obj,hitter,1)
|
||||||
@ -1006,10 +1007,10 @@ function check_for_death(self)
|
|||||||
local pos = self.object:getpos()
|
local pos = self.object:getpos()
|
||||||
pos.y = pos.y + 0.5 -- drop items half a block higher
|
pos.y = pos.y + 0.5 -- drop items half a block higher
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
|
local obj = nil
|
||||||
for _,drop in ipairs(self.drops) do
|
for _,drop in ipairs(self.drops) do
|
||||||
if math.random(1, drop.chance) == 1 then
|
if math.random(1, drop.chance) == 1 then
|
||||||
local d = ItemStack(drop.name.." "..math.random(drop.min, drop.max))
|
obj = minetest.add_item(pos, ItemStack(drop.name.." "..math.random(drop.min, drop.max)))
|
||||||
local obj = minetest.add_item(pos, d)
|
|
||||||
if obj then
|
if obj then
|
||||||
obj:setvelocity({x=math.random(-1,1), y=5, z=math.random(-1,1)})
|
obj:setvelocity({x=math.random(-1,1), y=5, z=math.random(-1,1)})
|
||||||
end
|
end
|
||||||
@ -1079,13 +1080,6 @@ local weapon = player:get_wielded_item()
|
|||||||
weapon:add_wear(wear)
|
weapon:add_wear(wear)
|
||||||
player:set_wielded_item(weapon)
|
player:set_wielded_item(weapon)
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
-- Spawn Egg
|
-- Spawn Egg
|
||||||
|
@ -13,9 +13,8 @@ mobs:register_mob("mobs:bee", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_bee.x",
|
mesh = "mobs_bee.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 1,
|
{"mobs_bee.png"},
|
||||||
texture_1 = {"mobs_bee.png"},
|
|
||||||
},
|
},
|
||||||
-- sounds
|
-- sounds
|
||||||
makes_footstep_sound = false,
|
makes_footstep_sound = false,
|
||||||
@ -52,8 +51,8 @@ mobs:register_mob("mobs:bee", {
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
-- spawn on group:flowers between 4 and 20 light, 1 in 10000 chance, 1 bee in area up to 31000 in height
|
-- 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", {"default:dirt_with_grass"}, 20, 4, 10000, 1, 31000)
|
mobs:register_spawn("mobs:bee", {"group:flower"}, 20, 4, 5000, 1, 31000)
|
||||||
|
|
||||||
-- register spawn egg
|
-- register spawn egg
|
||||||
mobs:register_egg("mobs:bee", "Bee", "mobs_bee_inv.png", 0)
|
mobs:register_egg("mobs:bee", "Bee", "mobs_bee_inv.png", 0)
|
||||||
|
@ -13,11 +13,10 @@ mobs:register_mob("mobs:bunny", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_bunny.b3d",
|
mesh = "mobs_bunny.b3d",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 3,
|
{"mobs_bunny_grey.png"},
|
||||||
texture_1 = {"mobs_bunny_grey.png"},
|
{"mobs_bunny_brown.png"},
|
||||||
texture_2 = {"mobs_bunny_brown.png"},
|
{"mobs_bunny_white.png"},
|
||||||
texture_3 = {"mobs_bunny_white.png"},
|
|
||||||
},
|
},
|
||||||
-- sounds
|
-- sounds
|
||||||
sounds = {},
|
sounds = {},
|
||||||
|
@ -13,14 +13,11 @@ mobs:register_mob("mobs:chicken", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_chicken.x",
|
mesh = "mobs_chicken.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 2,
|
{"mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png",
|
||||||
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", "mobs_chicken.png", "mobs_chicken.png",
|
{"mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.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"},
|
||||||
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"},
|
|
||||||
},
|
},
|
||||||
child_texture = {
|
child_texture = {
|
||||||
{"mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png",
|
{"mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png",
|
||||||
@ -57,7 +54,7 @@ mobs:register_mob("mobs:chicken", {
|
|||||||
-- follows wheat
|
-- follows wheat
|
||||||
follow = "farming:seed_wheat", view_range = 8,
|
follow = "farming:seed_wheat", view_range = 8,
|
||||||
-- replace air with egg (lay)
|
-- replace air with egg (lay)
|
||||||
replace_rate = 1000,
|
replace_rate = 2000,
|
||||||
replace_what = {"air"},
|
replace_what = {"air"},
|
||||||
replace_with = "mobs:egg",
|
replace_with = "mobs:egg",
|
||||||
-- right click to pick up chicken
|
-- right click to pick up chicken
|
||||||
@ -70,7 +67,10 @@ mobs:register_mob("mobs:chicken", {
|
|||||||
clicker:set_wielded_item(tool)
|
clicker:set_wielded_item(tool)
|
||||||
end
|
end
|
||||||
self.food = (self.food or 0) + 1
|
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
|
self.food = 0
|
||||||
if self.child == false then self.horny = true end
|
if self.child == false then self.horny = true end
|
||||||
self.gotten = false -- reset
|
self.gotten = false -- reset
|
||||||
@ -86,6 +86,12 @@ mobs:register_mob("mobs:chicken", {
|
|||||||
end
|
end
|
||||||
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
|
-- 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)
|
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",
|
visual = "mesh",
|
||||||
mesh = "mobs_cow.x",
|
mesh = "mobs_cow.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 1, -- à mettre à 2 quand "mobs_cow_brown.png" sera compatible
|
{"mobs_cow.png"},
|
||||||
texture_1 = {"mobs_cow.png"},
|
{"mobs_cow_brown.png"}, -- dé-commenter quand "mobs_cow_brown.png" sera compatible
|
||||||
--texture_2 = {"mobs_cow_brown.png"}, -- dé-commenter quand "mobs_cow_brown.png" sera compatible
|
|
||||||
},
|
},
|
||||||
blood_texture = "mobs_blood.png",
|
blood_texture = "mobs_blood.png",
|
||||||
visual_size = {x=1,y=1},
|
visual_size = {x=1,y=1},
|
||||||
|
42
mods/mobs/creeper.lua
Normal file → Executable file
42
mods/mobs/creeper.lua
Normal file → Executable file
@ -15,19 +15,22 @@ mobs:register_mob("mobs:creeper", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_tree_monster.x",
|
mesh = "mobs_tree_monster.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 1,
|
{"mobs_creeper.png"},
|
||||||
texture_1 = {"mobs_creeper.png"},
|
|
||||||
},
|
},
|
||||||
visual_size = {x=4.5,y=4.5},
|
visual_size = {x=4.5,y=4.5},
|
||||||
blood_texture = "mobs_creeper_inv.png",
|
blood_texture = "mobs_creeper_inv.png",
|
||||||
|
-- sounds
|
||||||
-- Continuer d'organiser le code à partir d'ici --
|
|
||||||
|
|
||||||
makes_footstep_sound = true,
|
makes_footstep_sound = true,
|
||||||
view_range = 16,
|
sounds = {
|
||||||
|
random = "mobs_treemonster",
|
||||||
|
},
|
||||||
|
-- speed and jump
|
||||||
walk_velocity = 2,
|
walk_velocity = 2,
|
||||||
run_velocity = 4,
|
run_velocity = 4,
|
||||||
|
jump = true,
|
||||||
|
view_range = 16,
|
||||||
|
-- drops mese or diamond when dead
|
||||||
drops = {
|
drops = {
|
||||||
{name = "default:torch",
|
{name = "default:torch",
|
||||||
chance = 10,
|
chance = 10,
|
||||||
@ -46,27 +49,18 @@ mobs:register_mob("mobs:creeper", {
|
|||||||
min = 2,
|
min = 2,
|
||||||
max = 3,},
|
max = 3,},
|
||||||
},
|
},
|
||||||
light_resistant = true,
|
-- damaged by
|
||||||
water_damage = 0,
|
water_damage = 2,
|
||||||
lava_damage = 15,
|
lava_damage = 15,
|
||||||
light_damage = 0,
|
light_damage = 0,
|
||||||
disable_fall_damage = false,
|
-- model animation
|
||||||
animation = {
|
animation = {
|
||||||
speed_normal = 15,
|
stand_start = 0, stand_end = 24,
|
||||||
speed_run = 15,
|
walk_start = 25, walk_end = 47,
|
||||||
stand_start = 0,
|
run_start = 48, run_end = 62,
|
||||||
stand_end = 24,
|
punch_start = 48, punch_end = 62,
|
||||||
walk_start = 25,
|
speed_normal = 15, speed_run = 15,
|
||||||
walk_end = 47,
|
|
||||||
run_start = 48,
|
|
||||||
run_end = 62,
|
|
||||||
punch_start = 48,
|
|
||||||
punch_end = 62,
|
|
||||||
},
|
},
|
||||||
sounds = {
|
|
||||||
random = "mobs_treemonster",
|
|
||||||
},
|
|
||||||
jump = true,
|
|
||||||
})
|
})
|
||||||
mobs:register_spawn("mobs:creeper", {"default:dirt_with_grass"}, 20, 8, 12000, 1, 31000)
|
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)
|
mobs:register_egg("mobs:creeper", "Creeper", "mobs_creeper_inv.png", 1)
|
||||||
|
@ -15,9 +15,8 @@ mobs:register_mob("mobs:dirt_monster", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_stone_monster.x",
|
mesh = "mobs_stone_monster.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 1,
|
{"mobs_dirt_monster.png"},
|
||||||
texture_1 = {"mobs_dirt_monster.png"},
|
|
||||||
},
|
},
|
||||||
visual_size = {x=3, y=2.6},
|
visual_size = {x=3, y=2.6},
|
||||||
blood_texture = "default_dirt.png",
|
blood_texture = "default_dirt.png",
|
||||||
|
@ -21,11 +21,10 @@ mobs:register_mob("mobs:dungeon_master", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_dungeon_master.x",
|
mesh = "mobs_dungeon_master.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 3,
|
{"mobs_dungeon_master.png"},
|
||||||
texture_1 = {"mobs_dungeon_master.png"},
|
{"mobs_dungeon_master_cobblestone.png"},
|
||||||
texture_2 = {"mobs_dungeon_master_cobblestone.png"},
|
{"mobs_dungeon_master_strangewhite.png"},
|
||||||
texture_3 = {"mobs_dungeon_master_strangewhite.png"},
|
|
||||||
},
|
},
|
||||||
visual_size = {x=8, y=8},
|
visual_size = {x=8, y=8},
|
||||||
blood_texture = "mobs_blood.png",
|
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").."/wolf.lua") -- PilzAdam
|
||||||
dofile(minetest.get_modpath("mobs").."/lava_flan.lua") -- Zeg9
|
dofile(minetest.get_modpath("mobs").."/lava_flan.lua") -- Zeg9
|
||||||
dofile(minetest.get_modpath("mobs").."/mese_monster.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
|
-- NPC
|
||||||
dofile(minetest.get_modpath("mobs").."/npc.lua")
|
dofile(minetest.get_modpath("mobs").."/npc.lua") -- TenPlus1
|
||||||
|
|
||||||
-- Creeper (fast impl by davedevils)
|
-- Creeper (fast impl by davedevils)
|
||||||
dofile(minetest.get_modpath("mobs").."/creeper.lua")
|
dofile(minetest.get_modpath("mobs").."/creeper.lua")
|
||||||
|
@ -13,12 +13,11 @@ mobs:register_mob("mobs:kitten", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
visual_size = {x=0.5, y=0.5},
|
visual_size = {x=0.5, y=0.5},
|
||||||
mesh = "mobs_kitten.b3d",
|
mesh = "mobs_kitten.b3d",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 4,
|
{"mobs_kitten_striped.png"},
|
||||||
texture_1 = {"mobs_kitten_striped.png"},
|
{"mobs_kitten_splotchy.png"},
|
||||||
texture_2 = {"mobs_kitten_splotchy.png"},
|
{"mobs_kitten_ginger.png"},
|
||||||
texture_3 = {"mobs_kitten_ginger.png"},
|
{"mobs_kitten_sandy.png"},
|
||||||
texture_4 = {"mobs_kitten_sandy.png"},
|
|
||||||
},
|
},
|
||||||
blood_texture = "mobs_blood.png",
|
blood_texture = "mobs_blood.png",
|
||||||
-- sounds
|
-- sounds
|
||||||
@ -29,12 +28,12 @@ mobs:register_mob("mobs:kitten", {
|
|||||||
-- speed and jump
|
-- speed and jump
|
||||||
walk_velocity = 0.6,
|
walk_velocity = 0.6,
|
||||||
jump = false,
|
jump = false,
|
||||||
-- drops sometimes coins
|
-- drops string and coins
|
||||||
drops = {
|
drops = {
|
||||||
{name = "maptools:copper_coin",
|
{name = "maptools:copper_coin",
|
||||||
chance = 10,
|
chance = 10, min = 1, max = 1,},
|
||||||
min = 1,
|
{name = "farming:string",
|
||||||
max = 1,},
|
chance = 2, min = 1, max = 1},
|
||||||
},
|
},
|
||||||
-- damaged by
|
-- damaged by
|
||||||
water_damage = 1,
|
water_damage = 1,
|
||||||
|
@ -15,9 +15,8 @@ mobs:register_mob("mobs:lava_flan", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "zmobs_lava_flan.x",
|
mesh = "zmobs_lava_flan.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 1,
|
{"zmobs_lava_flan.png"},
|
||||||
texture_1 = {"zmobs_lava_flan.png"},
|
|
||||||
},
|
},
|
||||||
blood_texture = "fire_basic_flame.png",
|
blood_texture = "fire_basic_flame.png",
|
||||||
visual_size = {x=1, y=1},
|
visual_size = {x=1, y=1},
|
||||||
@ -53,8 +52,8 @@ mobs:register_mob("mobs:lava_flan", {
|
|||||||
punch_start = 20, punch_end = 28,
|
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
|
-- 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, 2, 31000)
|
mobs:register_spawn("mobs:lava_flan", {"default:lava_source"}, 20, -1, 2500, 3, 31000)
|
||||||
-- register spawn egg
|
-- register spawn egg
|
||||||
mobs:register_egg("mobs:lava_flan", "Lava Flan", "default_lava.png", 1)
|
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},
|
collisionbox = {-0.5, -1.5, -0.5, 0.5, 0.5, 0.5},
|
||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "zmobs_mese_monster.x",
|
mesh = "zmobs_mese_monster.x",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 1,
|
{"zmobs_mese_monster.png"},
|
||||||
texture_1 = {"zmobs_mese_monster.png"},
|
|
||||||
},
|
},
|
||||||
visual_size = {x=1, y=1},
|
visual_size = {x=1, y=1},
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
@ -60,7 +59,7 @@ mobs:register_mob("mobs:mese_monster", {
|
|||||||
punch_start = 15, punch_end = 38, -- was 40 & 63
|
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)
|
mobs:register_spawn("mobs:mese_monster", {"default:stone", }, 20, -1, 7000, 1, -25)
|
||||||
-- register spawn egg
|
-- register spawn egg
|
||||||
mobs:register_egg("mobs:mese_monster", "Mese Monster", "default_mese_block.png", 1)
|
mobs:register_egg("mobs:mese_monster", "Mese Monster", "default_mese_block.png", 1)
|
||||||
|
@ -21,9 +21,8 @@ mobs:register_mob("mobs:npc", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "character.b3d",
|
mesh = "character.b3d",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 1,
|
{"mobs_npc.png"},
|
||||||
texture_1 = {"mobs_npc.png"},
|
|
||||||
},
|
},
|
||||||
visual_size = {x=1, y=1},
|
visual_size = {x=1, y=1},
|
||||||
-- sounds
|
-- sounds
|
||||||
@ -33,7 +32,6 @@ mobs:register_mob("mobs:npc", {
|
|||||||
walk_velocity = 1.5,
|
walk_velocity = 1.5,
|
||||||
run_velocity = 2.5,
|
run_velocity = 2.5,
|
||||||
jump = true,
|
jump = true,
|
||||||
step = 1,
|
|
||||||
-- drops wood and chance of apples when dead
|
-- drops wood and chance of apples when dead
|
||||||
drops = {
|
drops = {
|
||||||
{name = "default:wood",
|
{name = "default:wood",
|
||||||
@ -65,14 +63,12 @@ mobs:register_mob("mobs:npc", {
|
|||||||
local item = clicker:get_wielded_item()
|
local item = clicker:get_wielded_item()
|
||||||
if item:get_name() == "mobs:meat" or item:get_name() == "farming:bread" then
|
if item:get_name() == "mobs:meat" or item:get_name() == "farming:bread" then
|
||||||
local hp = self.object:get_hp()
|
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
|
if not minetest.setting_getbool("creative_mode") then
|
||||||
item:take_item()
|
item:take_item()
|
||||||
clicker:set_wielded_item(item)
|
clicker:set_wielded_item(item)
|
||||||
end
|
end
|
||||||
local n = hp + 4
|
self.object:set_hp(hp+4)
|
||||||
if n > self.hp_max then n = self.hp_max end
|
|
||||||
self.object:set_hp(n)
|
|
||||||
-- right clicking with gold lump drops random item from mobs.npc_drops
|
-- right clicking with gold lump drops random item from mobs.npc_drops
|
||||||
elseif item:get_name() == "default:gold_lump" then
|
elseif item:get_name() == "default:gold_lump" then
|
||||||
if not minetest.setting_getbool("creative_mode") then
|
if not minetest.setting_getbool("creative_mode") then
|
||||||
|
@ -15,10 +15,9 @@ mobs:register_mob("mobs:oerkki", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_oerkki.x",
|
mesh = "mobs_oerkki.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 2,
|
{"mobs_oerkki.png"},
|
||||||
texture_1 = {"mobs_oerkki.png"},
|
{"mobs_oerkki2.png"},
|
||||||
texture_2 = {"mobs_oerkki2.png"},
|
|
||||||
},
|
},
|
||||||
visual_size = {x=5, y=5},
|
visual_size = {x=5, y=5},
|
||||||
blood_texture = "mobs_blood.png",
|
blood_texture = "mobs_blood.png",
|
||||||
@ -43,7 +42,7 @@ mobs:register_mob("mobs:oerkki", {
|
|||||||
-- damaged by
|
-- damaged by
|
||||||
water_damage = 1,
|
water_damage = 1,
|
||||||
lava_damage = 1,
|
lava_damage = 1,
|
||||||
light_damage = 0,
|
light_damage = 1,
|
||||||
-- model animation
|
-- model animation
|
||||||
animation = {
|
animation = {
|
||||||
stand_start = 0, stand_end = 23,
|
stand_start = 0, stand_end = 23,
|
||||||
|
@ -13,10 +13,9 @@ mobs:register_mob("mobs:rat", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_rat.x",
|
mesh = "mobs_rat.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 2,
|
{"mobs_rat.png"},
|
||||||
texture_1 = {"mobs_rat.png"},
|
{"mobs_rat_brown.png"},
|
||||||
texture_2 = {"mobs_rat_brown.png"},
|
|
||||||
},
|
},
|
||||||
blood_texture = "mobs_blood.png",
|
blood_texture = "mobs_blood.png",
|
||||||
-- sounds
|
-- sounds
|
||||||
|
@ -15,9 +15,8 @@ mobs:register_mob("mobs:sand_monster", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_sand_monster.x",
|
mesh = "mobs_sand_monster.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 1,
|
{"mobs_sand_monster.png"},
|
||||||
texture_1 = {"mobs_sand_monster.png"},
|
|
||||||
},
|
},
|
||||||
visual_size = {x=8,y=8},
|
visual_size = {x=8,y=8},
|
||||||
blood_texture = "default_sand.png",
|
blood_texture = "default_sand.png",
|
||||||
@ -52,7 +51,7 @@ mobs:register_mob("mobs:sand_monster", {
|
|||||||
punch_start = 74, punch_end = 105,
|
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)
|
mobs:register_spawn("mobs:sand_monster", {"default:desert_sand", "default:sand"}, 20, -1, 7500, 1, 31000)
|
||||||
-- register spawn egg
|
-- register spawn egg
|
||||||
mobs:register_egg("mobs:sand_monster", "Sand Monster", "default_desert_sand.png", 1)
|
mobs:register_egg("mobs:sand_monster", "Sand Monster", "default_desert_sand.png", 1)
|
||||||
|
@ -13,9 +13,8 @@ mobs:register_mob("mobs:sheep", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_sheep.x",
|
mesh = "mobs_sheep.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 1,
|
{"mobs_sheep.png"},
|
||||||
texture_1 = {"mobs_sheep.png"},
|
|
||||||
},
|
},
|
||||||
blood_texture = "mobs_blood.png",
|
blood_texture = "mobs_blood.png",
|
||||||
visual_size = {x=1,y=1},
|
visual_size = {x=1,y=1},
|
||||||
@ -86,7 +85,7 @@ mobs:register_mob("mobs:sheep", {
|
|||||||
if minetest.registered_items["wool:white"] then
|
if minetest.registered_items["wool:white"] then
|
||||||
local pos = self.object:getpos()
|
local pos = self.object:getpos()
|
||||||
pos.y = pos.y + 0.5
|
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
|
if obj then
|
||||||
obj:setvelocity({x=math.random(-1,1), y=5, z=math.random(-1,1)})
|
obj:setvelocity({x=math.random(-1,1), y=5, z=math.random(-1,1)})
|
||||||
end
|
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.
0
mods/mobs/sounds/mobs_stonemonster.ogg → mods/mobs/sounds/mobs_stonemonster_attack.ogg
Normal file → Executable file
0
mods/mobs/sounds/mobs_stonemonster.ogg → mods/mobs/sounds/mobs_stonemonster_attack.ogg
Normal file → Executable file
Binary file not shown.
0
mods/mobs/sounds/tnt_explode.ogg
Normal file → Executable file
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", {
|
mobs:register_mob("mobs:spider", {
|
||||||
-- animal, monster, npc, barbarian
|
-- animal, monster, npc, barbarian
|
||||||
@ -15,9 +15,8 @@ mobs:register_mob("mobs:spider", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_spider.x",
|
mesh = "mobs_spider.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 1,
|
{"mobs_spider.png"},
|
||||||
texture_1 = {"mobs_spider.png"},
|
|
||||||
},
|
},
|
||||||
visual_size = {x=7,y=7},
|
visual_size = {x=7,y=7},
|
||||||
blood_texture = "mobs_blood.png",
|
blood_texture = "mobs_blood.png",
|
||||||
@ -27,7 +26,7 @@ mobs:register_mob("mobs:spider", {
|
|||||||
random = "mobs_spider",
|
random = "mobs_spider",
|
||||||
war_cry = "mobs_eerie",
|
war_cry = "mobs_eerie",
|
||||||
death = "mobs_howl",
|
death = "mobs_howl",
|
||||||
attack = "mobs_spider",
|
attack = "mobs_spider_attack",
|
||||||
},
|
},
|
||||||
-- speed and jump, sinks in water
|
-- speed and jump, sinks in water
|
||||||
walk_velocity = 1,
|
walk_velocity = 1,
|
||||||
@ -57,7 +56,7 @@ mobs:register_mob("mobs:spider", {
|
|||||||
punch_start = 50, punch_end = 90,
|
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)
|
mobs:register_spawn("mobs:spider", {"default:jungleleaves", "default:jungletree"}, 20, -1, 9000, 1, 31000)
|
||||||
-- register spawn egg
|
-- register spawn egg
|
||||||
mobs:register_egg("mobs:spider", "Spider", "mobs_cobweb.png", 1)
|
mobs:register_egg("mobs:spider", "Spider", "mobs_cobweb.png", 1)
|
||||||
@ -78,8 +77,8 @@ minetest.register_node("mobs:spider_cobweb", {
|
|||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
liquid_viscosity = 11,
|
liquid_viscosity = 11,
|
||||||
liquidtype = "source",
|
liquidtype = "source",
|
||||||
liquid_alternative_flowing = "mobs:spider_cobweb",
|
liquid_alternative_flowing = "mobs:spider_cobweb", --Modif MFF
|
||||||
liquid_alternative_source = "mobs:spider_cobweb",
|
liquid_alternative_source = "mobs:spider_cobweb", --Modif MFF
|
||||||
liquid_renewable = false,
|
liquid_renewable = false,
|
||||||
liquid_range = 0,
|
liquid_range = 0,
|
||||||
walkable = false,
|
walkable = false,
|
||||||
|
@ -15,9 +15,8 @@ mobs:register_mob("mobs:stone_monster", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_stone_monster.x",
|
mesh = "mobs_stone_monster.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 1,
|
{"mobs_stone_monster.png"},
|
||||||
texture_1 = {"mobs_stone_monster.png"},
|
|
||||||
},
|
},
|
||||||
visual_size = {x=3, y=2.6},
|
visual_size = {x=3, y=2.6},
|
||||||
blood_texture = "mobs_blood.png",
|
blood_texture = "mobs_blood.png",
|
||||||
@ -25,6 +24,7 @@ mobs:register_mob("mobs:stone_monster", {
|
|||||||
makes_footstep_sound = true,
|
makes_footstep_sound = true,
|
||||||
sounds = {
|
sounds = {
|
||||||
random = "mobs_stonemonster",
|
random = "mobs_stonemonster",
|
||||||
|
attack = "mobs_stonemonster_attack",
|
||||||
},
|
},
|
||||||
-- speed and jump, sinks in water
|
-- speed and jump, sinks in water
|
||||||
walk_velocity = 2,
|
walk_velocity = 2,
|
||||||
@ -32,7 +32,7 @@ mobs:register_mob("mobs:stone_monster", {
|
|||||||
jump = true,
|
jump = true,
|
||||||
floats = 0,
|
floats = 0,
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
-- chance of dropping torch, iron, lump and coins
|
-- chance of dropping torch, iron lump, coal lump and/or silver coins
|
||||||
drops = {
|
drops = {
|
||||||
{name = "default:torch",
|
{name = "default:torch",
|
||||||
chance = 10, min = 3, max = 5,},
|
chance = 10, min = 3, max = 5,},
|
||||||
@ -56,7 +56,7 @@ mobs:register_mob("mobs:stone_monster", {
|
|||||||
punch_start = 40, punch_end = 63,
|
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)
|
mobs:register_spawn("mobs:stone_monster", {"default:stone", "nether:dirt_top"}, 5, -1, 7000, 1, -5)
|
||||||
-- register spawn egg
|
-- register spawn egg
|
||||||
mobs:register_egg("mobs:stone_monster", "Stone Monster", "default_stone.png", 1)
|
mobs:register_egg("mobs:stone_monster", "Stone Monster", "default_stone.png", 1)
|
||||||
|
BIN
mods/mobs/textures/mobs_creeper_inv.png
Normal file → Executable file
BIN
mods/mobs/textures/mobs_creeper_inv.png
Normal file → Executable file
Binary file not shown.
Before Width: | Height: | Size: 664 B After Width: | Height: | Size: 883 B |
0
mods/mobs/textures/mobs_leather.png
Normal file → Executable file
0
mods/mobs/textures/mobs_leather.png
Normal file → Executable file
Before Width: | Height: | Size: 196 B After Width: | Height: | Size: 196 B |
BIN
mods/mobs/textures/mobs_wolf_inv.png
Executable file
BIN
mods/mobs/textures/mobs_wolf_inv.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
@ -15,9 +15,8 @@ mobs:register_mob("mobs:tree_monster", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_tree_monster.x",
|
mesh = "mobs_tree_monster.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 1,
|
{"mobs_tree_monster.png"},
|
||||||
texture_1 = {"mobs_tree_monster.png"},
|
|
||||||
},
|
},
|
||||||
visual_size = {x=4.5,y=4.5},
|
visual_size = {x=4.5,y=4.5},
|
||||||
blood_texture = "default_wood.png",
|
blood_texture = "default_wood.png",
|
||||||
@ -31,7 +30,7 @@ mobs:register_mob("mobs:tree_monster", {
|
|||||||
run_velocity = 2.5,
|
run_velocity = 2.5,
|
||||||
jump = true,
|
jump = true,
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
-- drops saplings or apple
|
-- drops saplings, junglesapling, apple and/or silver coins
|
||||||
drops = {
|
drops = {
|
||||||
{name = "default:sapling",
|
{name = "default:sapling",
|
||||||
chance = 3, min = 1, max = 2},
|
chance = 3, min = 1, max = 2},
|
||||||
@ -56,7 +55,7 @@ mobs:register_mob("mobs:tree_monster", {
|
|||||||
punch_start = 48, punch_end = 62,
|
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)
|
mobs:register_spawn("mobs:tree_monster", {"default:leaves", "moretrees:beech_leaves"}, 3, -1, 8000, 1, 31000)
|
||||||
-- register spawn egg
|
-- register spawn egg
|
||||||
mobs:register_egg("mobs:tree_monster", "Tree Monster", "default_tree_top.png", 1)
|
mobs:register_egg("mobs:tree_monster", "Tree Monster", "default_tree_top.png", 1)
|
||||||
|
@ -15,9 +15,8 @@ mobs:register_mob("mobs:pumba", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_pumba.x",
|
mesh = "mobs_pumba.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 1,
|
{"mobs_pumba.png"},
|
||||||
texture_1 = {"mobs_pumba.png"},
|
|
||||||
},
|
},
|
||||||
visual_size = {x=1,y=1},
|
visual_size = {x=1,y=1},
|
||||||
blood_texture = "mobs_blood.png",
|
blood_texture = "mobs_blood.png",
|
||||||
|
@ -15,20 +15,22 @@ mobs:register_mob("mobs:wolf", {
|
|||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_wolf.x",
|
mesh = "mobs_wolf.x",
|
||||||
drawtype = "front",
|
drawtype = "front",
|
||||||
available_textures = {
|
textures = {
|
||||||
total = 1,
|
{"mobs_wolf.png"},
|
||||||
texture_1 = {"mobs_wolf.png"},
|
|
||||||
},
|
},
|
||||||
--visual_size = {x=1,y=1}, --Quel valeur lui mettre ?
|
--visual_size = {x=1,y=1}, --Quel valeur lui mettre ?
|
||||||
blood_texture = "mobs_blood.png",
|
blood_texture = "mobs_blood.png",
|
||||||
|
-- sounds
|
||||||
-- Continuer d'organiser le code à partir d'ici --
|
|
||||||
|
|
||||||
makes_footstep_sound = true,
|
makes_footstep_sound = true,
|
||||||
view_range = 16,
|
sounds = {
|
||||||
|
random = "mobs_wolf",
|
||||||
|
},
|
||||||
|
-- speed and jump
|
||||||
walk_velocity = 3,
|
walk_velocity = 3,
|
||||||
run_velocity = 5,
|
run_velocity = 5,
|
||||||
damage = 4,
|
jump = true,
|
||||||
|
view_range = 16,
|
||||||
|
-- drops mese or diamond when dead
|
||||||
drops = {
|
drops = {
|
||||||
{name = "mobs:meat_raw",
|
{name = "mobs:meat_raw",
|
||||||
chance = 1,
|
chance = 1,
|
||||||
@ -39,26 +41,19 @@ mobs:register_mob("mobs:wolf", {
|
|||||||
min = 1,
|
min = 1,
|
||||||
max = 4,},
|
max = 4,},
|
||||||
},
|
},
|
||||||
light_resistant = false,
|
-- damaged by
|
||||||
water_damage = 1,
|
water_damage = 1,
|
||||||
lava_damage = 5,
|
lava_damage = 5,
|
||||||
light_damage = 2,
|
light_damage = 2,
|
||||||
on_rightclick = nil,
|
-- model animation
|
||||||
animation = {
|
animation = {
|
||||||
speed_normal = 15,
|
stand_start = 0, stand_end = 14,
|
||||||
speed_run = 15,
|
walk_start = 15, walk_end = 38,
|
||||||
stand_start = 0,
|
run_start = 40, run_end = 63,
|
||||||
stand_end = 14,
|
punch_start = 40, punch_end = 63,
|
||||||
walk_start = 15,
|
speed_normal = 15, speed_run = 15,
|
||||||
walk_end = 38,
|
|
||||||
run_start = 40,
|
|
||||||
run_end = 63,
|
|
||||||
punch_start = 40,
|
|
||||||
punch_end = 63,
|
|
||||||
},
|
},
|
||||||
sounds = {
|
|
||||||
random = "mobs_wolf",
|
|
||||||
},
|
|
||||||
jump = true,
|
|
||||||
})
|
})
|
||||||
mobs:register_spawn("mobs:wolf", {"default:dirt_with_grass"}, 3, -1, 9500, 1, 31000)
|
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)
|
||||||
|
Loading…
Reference in New Issue
Block a user