1
0
mirror of https://github.com/sys4-fr/server-nalc.git synced 2024-12-24 17:50:37 +01:00

Update mobs mod and news.txt

mobs mod tweaks :
- tweaked environmental damage check
- mobs retain health, code tidy
- Updated weapon wear & sounds
- code tidy
This commit is contained in:
Ombridride 2015-05-27 18:25:55 +02:00
parent 1f426f2e94
commit 9eea1d7f42
2 changed files with 121 additions and 146 deletions

View File

@ -1,4 +1,4 @@
-- Mobs Api (24th May 2015) -- Mobs Api (27th May 2015)
mobs = {} mobs = {}
mobs.mod = "redo" mobs.mod = "redo"
@ -12,10 +12,6 @@ local enable_blood = minetest.setting_getbool("mobs_enable_blood") or true
function mobs:register_mob(name, def) function mobs:register_mob(name, def)
minetest.register_entity(name, { minetest.register_entity(name, {
--weight = 5,
--is_visible = true,
--automatic_rotate = false,
--automatic_face_movement_dir = 0.0, -- set yaw direction in degrees, false to disable
stepheight = def.stepheight or 0.6, stepheight = def.stepheight or 0.6,
name = name, name = name,
fly = def.fly, fly = def.fly,
@ -34,7 +30,7 @@ function mobs:register_mob(name, def)
visual = def.visual, visual = def.visual,
visual_size = def.visual_size or {x=1, y=1}, visual_size = def.visual_size or {x=1, y=1},
mesh = def.mesh, mesh = def.mesh,
makes_footstep_sound = def.makes_footstep_sound or true, makes_footstep_sound = def.makes_footstep_sound or false,
view_range = def.view_range or 5, view_range = def.view_range or 5,
walk_velocity = def.walk_velocity or 1, walk_velocity = def.walk_velocity or 1,
run_velocity = def.run_velocity or 2, run_velocity = def.run_velocity or 2,
@ -61,12 +57,15 @@ function mobs:register_mob(name, def)
--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, --Modif MFF, default value is "or 3", knock_back = def.knock_back or 3,
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,
floats = def.floats or 1, -- floats in water by default floats = def.floats or 1, -- floats in water by default
replacements = def.replacements or {}, replace_rate = def.replace_rate,
replace_what = def.replace_what,
replace_with = def.replace_with,
replace_offset = def.replace_offset or 0,
timer = 0, timer = 0,
env_damage_timer = 0, -- only if state = "attack" env_damage_timer = 0, -- only if state = "attack"
attack = {player=nil, dist=nil}, attack = {player=nil, dist=nil},
@ -78,6 +77,7 @@ function mobs:register_mob(name, def)
child = false, child = false,
gotten = false, gotten = false,
owner = "", owner = "",
health = 0,
do_attack = function(self, player, dist) do_attack = function(self, player, dist)
if self.state ~= "attack" then if self.state ~= "attack" then
@ -161,57 +161,42 @@ function mobs:register_mob(name, def)
on_step = function(self, dtime) on_step = function(self, dtime)
local yaw = 0
if self.type == "monster" and peaceful_only then if self.type == "monster" and peaceful_only then
self.object:remove() self.object:remove()
return return
end end
-- if lifetimer run out and not npc, tamed or attacking then remove mob -- if lifetimer run out and not npc; tamed or attacking then remove mob
if self.type ~= "npc" and not self.tamed then if self.type ~= "npc" and not self.tamed then
self.lifetimer = self.lifetimer - dtime self.lifetimer = self.lifetimer - dtime
if self.lifetimer <= 0 and self.state ~= "attack" then if self.lifetimer <= 0 and self.state ~= "attack" then
for _,obj in ipairs(minetest.get_objects_inside_radius(self.object:getpos(), 10)) do minetest.log("action","lifetimer expired, removed "..self.name)
if obj:is_player() then effect(self.object:getpos(), 15, "tnt_smoke.png")
minetest.log("action","lifetimer expired, removed mob "..self.name) self.object:remove()
self.object:remove() return
return
end
end
end end
end end
-- check for mob drop/replace (used for chicken egg and sheep eating grass/wheat) -- check for mob drop/replace (used for chicken egg and sheep eating grass/wheat)
--[[ if self.replace_rate
old fields : and self.child == false
replace_rate = def.replace_rate, and math.random(1,self.replace_rate) == 1 then
replace_what = def.replace_what, local pos = self.object:getpos()
replace_with = def.replace_with, pos.y = pos.y + self.replace_offset
replace_offset = def.replace_offset or 0, if self.replace_what
]]-- and self.object:getvelocity().y == 0
for _, fields in pairs(self.replacements) do and #minetest.find_nodes_in_area(pos, pos, self.replace_what) > 0 then
--and self.state == "stand" then
if fields.replace_rate minetest.set_node(pos, {name = self.replace_with})
and math.random(1,fields.replace_rate) == 1
and self.child == false then
fields.replace_offset = fields.replace_offset or 0
local pos = self.object:getpos()
pos.y = pos.y + fields.replace_offset
if #minetest.find_nodes_in_area(pos,pos,fields.replace_what) > 0
and self.object:getvelocity().y == 0
and fields.replace_what then
minetest.set_node(pos, {name = fields.replace_with})
end
end end
end end
local yaw = 0
-- jump direction (adapted from Carbone mobs), gravity, falling or floating in water -- jump direction (adapted from Carbone mobs), gravity, falling or floating in water
if not self.fly then if not self.fly then
if self.object:getvelocity().y > 0.1 then if self.object:getvelocity().y > 0.1 then
local yaw = self.object:getyaw() + self.rotate yaw = self.object:getyaw() + self.rotate
local x = math.sin(yaw) * -2 local x = math.sin(yaw) * -2
local z = math.cos(yaw) * 2 local z = math.cos(yaw) * 2
@ -233,6 +218,7 @@ function mobs:register_mob(name, def)
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
self.object:set_hp(self.object:get_hp() - math.floor(d - 5)) self.object:set_hp(self.object:get_hp() - math.floor(d - 5))
effect(self.object:getpos(), 5, "tnt_smoke.png")
check_for_death(self) check_for_death(self)
end end
self.old_y = self.object:getpos().y self.old_y = self.object:getpos().y
@ -268,28 +254,29 @@ function mobs:register_mob(name, def)
local tod = minetest.get_timeofday() local tod = minetest.get_timeofday()
pos.y = (pos.y + self.collisionbox[2]) -- foot level pos.y = (pos.y + self.collisionbox[2]) -- foot level
--print ("standing on:", minetest.get_node(pos).name) --print ("standing on:", minetest.get_node(pos).name)
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 tod > 0.2 and tod < 0.8 and tod > 0.2 and tod < 0.8
and (minetest.get_node_light(pos) or 0) > 10 then and (minetest.get_node_light(pos) or 0) > 10 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")
check_for_death(self)
end end
if self.water_damage and self.water_damage ~= 0 if self.water_damage and self.water_damage ~= 0
and minetest.get_item_group(n.name, "water") ~= 0 then and minetest.get_item_group(n.name, "water") ~= 0 then
self.object:set_hp(self.object:get_hp()-self.water_damage) self.object:set_hp(self.object:get_hp()-self.water_damage)
effect(pos, 5, "bubble.png") effect(pos, 5, "bubble.png")
check_for_death(self)
end end
if self.lava_damage and self.lava_damage ~= 0 if self.lava_damage and self.lava_damage ~= 0
and minetest.get_item_group(n.name, "lava") ~= 0 then and minetest.get_item_group(n.name, "lava") ~= 0 then
self.object:set_hp(self.object:get_hp()-self.lava_damage) self.object:set_hp(self.object:get_hp()-self.lava_damage)
effect(pos, 5, "fire_basic_flame.png") effect(pos, 5, "fire_basic_flame.png")
check_for_death(self)
end end
check_for_death(self)
end end
local do_jump = function(self) local do_jump = function(self)
@ -432,8 +419,8 @@ 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() ; pos.y = pos.y + 1 local pos = self.object:getpos()
effect(pos, 4, "heart.png") ; pos.y = pos.y - 1 effect({x=pos.x, y=pos.y+1, z=pos.z}, 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 local ent = nil
@ -509,7 +496,7 @@ function mobs:register_mob(name, def)
self.following = nil self.following = nil
else else
local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z} local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z}
local yaw = (math.atan(vec.z/vec.x)+math.pi/2) + self.rotate yaw = (math.atan(vec.z/vec.x)+math.pi/2) + self.rotate -- local
if p.x > s.x then if p.x > s.x then
yaw = yaw+math.pi yaw = yaw+math.pi
end end
@ -518,7 +505,7 @@ function mobs:register_mob(name, def)
-- anyone but standing npc's can move along -- anyone but standing npc's can move along
if dist > 2 and self.order ~= "stand" then if dist > 2 and self.order ~= "stand" then
if (self.jump and self.get_velocity(self) <= 0.5 and self.object:getvelocity().y == 0) if (self.jump and self.get_velocity(self) <= 0.5 and self.object:getvelocity().y == 0)
or (self.object:getvelocity().y == 0 and self.jump_chance > 0) then -- CHANGED from self.jump or (self.object:getvelocity().y == 0 and self.jump_chance > 0) then
self.direction = {x = math.sin(yaw)*-1, y = -20, z = math.cos(yaw)} self.direction = {x = math.sin(yaw)*-1, y = -20, z = math.cos(yaw)}
do_jump(self) do_jump(self)
end end
@ -591,10 +578,9 @@ function mobs:register_mob(name, def)
elseif self.state == "walk" then elseif self.state == "walk" then
local s = self.object:getpos() local s = self.object:getpos()
-- if there is water nearby, try to avoid it local lp = minetest.find_node_near(s, 1, {"group:water"})
local lp = minetest.find_node_near(s, 2, {"group:water"}) -- if water nearby then turn away
if lp then
if lp ~= nil then
local vec = {x=lp.x-s.x, y=lp.y-s.y, z=lp.z-s.z} local vec = {x=lp.x-s.x, y=lp.y-s.y, z=lp.z-s.z}
yaw = math.atan(vec.z/vec.x) + 3*math.pi / 2 + self.rotate yaw = math.atan(vec.z/vec.x) + 3*math.pi / 2 + self.rotate
if lp.x > s.x then if lp.x > s.x then
@ -602,7 +588,7 @@ function mobs:register_mob(name, def)
end end
self.object:setyaw(yaw) self.object:setyaw(yaw)
-- no water near, so randomly turn -- otherwise randomly turn
elseif math.random(1, 100) <= 30 then elseif 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
@ -646,7 +632,7 @@ function mobs:register_mob(name, def)
end end
local vec = {x = p.x -s.x, y = p.y -s.y, z = p.z -s.z} local vec = {x = p.x -s.x, y = p.y -s.y, z = p.z -s.z}
local yaw = math.atan(vec.z/vec.x)+math.pi/2 + self.rotate yaw = math.atan(vec.z/vec.x)+math.pi/2 + self.rotate -- local
if p.x > s.x then if p.x > s.x then
yaw = yaw+math.pi yaw = yaw+math.pi
end end
@ -711,30 +697,31 @@ function mobs:register_mob(name, def)
local p = self.attack.player:getpos() local p = self.attack.player:getpos()
local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5 local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5
-- fly bit modified from BlockMens creatures mod -- fly bit modified from BlockMens creatures mod
if self.fly and dist > 2 then if self.fly and dist > 2 then
local nod = minetest.get_node_or_nil(s) local nod = minetest.get_node_or_nil(s)
local p1 = s local p1 = s
local me_y = math.floor(p1.y) local me_y = math.floor(p1.y)
local p2 = p local p2 = p
local p_y = math.floor(p2.y+1) local p_y = math.floor(p2.y+1)
if nod and nod.name == self.fly_in then local v = self.object:getvelocity()
if me_y < p_y then if nod and nod.name == self.fly_in then
self.object:setvelocity({x=self.object:getvelocity().x,y=1*self.walk_velocity,z=self.object:getvelocity().z}) if me_y < p_y then
elseif me_y > p_y then self.object:setvelocity({x=v.x,y=1*self.walk_velocity,z=v.z})
self.object:setvelocity({x=self.object:getvelocity().x,y=-1*self.walk_velocity,z=self.object:getvelocity().z}) elseif me_y > p_y then
end self.object:setvelocity({x=v.x,y=-1*self.walk_velocity,z=v.z})
else end
if me_y < p_y then else
self.object:setvelocity({x=self.object:getvelocity().x,y=0.01,z=self.object:getvelocity().z}) if me_y < p_y then
elseif me_y > p_y then self.object:setvelocity({x=v.x,y=0.01,z=v.z})
self.object:setvelocity({x=self.object:getvelocity().x,y=-0.01,z=self.object:getvelocity().z}) elseif me_y > p_y then
end self.object:setvelocity({x=v.x,y=-0.01,z=v.z})
end end
end
end end
-- end fly bit -- end fly bit
if dist > self.view_range or self.attack.player:get_hp() <= 0 then if dist > self.view_range or self.attack.player:get_hp() <= 0 then
self.state = "stand" self.state = "stand"
@ -747,7 +734,7 @@ end
end end
local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z} local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z}
local yaw = (math.atan(vec.z/vec.x)+math.pi/2) + self.rotate yaw = (math.atan(vec.z/vec.x)+math.pi/2) + self.rotate -- local
if p.x > s.x then if p.x > s.x then
yaw = yaw+math.pi yaw = yaw+math.pi
end end
@ -812,7 +799,7 @@ end
end end
local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z} local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z}
local yaw = (math.atan(vec.z/vec.x)+math.pi/2) + self.rotate yaw = (math.atan(vec.z/vec.x)+math.pi/2) + self.rotate -- local
if p.x > s.x then if p.x > s.x then
yaw = yaw+math.pi yaw = yaw+math.pi
end end
@ -843,18 +830,19 @@ end
end, end,
on_activate = function(self, staticdata, dtime_s) on_activate = function(self, staticdata, dtime_s)
local pos = self.object:getpos() if self.type == "monster" and peaceful_only then
self.object:set_hp( math.random(self.hp_min, self.hp_max) ) -- set HP self.object:remove()
self.oldhp = self.object:get_hp(self) -- used for hurt sound end
self.health = math.random (self.hp_min, self.hp_max) -- set initial HP
self.object:set_hp( self.health )
self.health = self.object:get_hp()
self.object:set_armor_groups({fleshy=self.armor}) self.object:set_armor_groups({fleshy=self.armor})
self.object:setacceleration({x=0, y= self.fall_speed, z=0}) self.object:setacceleration({x=0, y= self.fall_speed, z=0})
self.state = "stand" self.state = "stand"
self.object:setvelocity({x=0, y=self.object:getvelocity().y, z=0}) self.object:setvelocity({x=0, y=self.object:getvelocity().y, z=0})
self.old_y = self.object:getpos().y self.old_y = self.object:getpos().y
self.object:setyaw(math.random(1, 360)/180*math.pi) self.object:setyaw(math.random(1, 360)/180*math.pi)
if self.type == "monster" and peaceful_only then
self.object:remove()
end
if staticdata then if staticdata then
local tmp = minetest.deserialize(staticdata) local tmp = minetest.deserialize(staticdata)
@ -892,12 +880,12 @@ end
if tmp.owner then if tmp.owner then
self.owner = tmp.owner self.owner = tmp.owner
end end
if tmp.health then
self.health = tmp.health
self.object:set_hp( self.health )
end
end end
end end
-- quick fix for dog so it doesn't revert back to wolf
if self.type == "monster" and self.tamed == true then
self.type = "npc"
end
end, end,
get_staticdata = function(self) get_staticdata = function(self)
@ -942,17 +930,36 @@ end
base_texture = self.base_texture, base_texture = self.base_texture,
collisionbox = colbox, collisionbox = colbox,
owner = self.owner, owner = self.owner,
health = self.health,
} }
self.object:set_properties(tmp) self.object:set_properties(tmp)
return minetest.serialize(tmp) return minetest.serialize(tmp)
end, end,
on_punch = function(self, hitter, tflp, tool_capabilities, dir) on_punch = function(self, hitter, tflp, tool_capabilities, dir)
-- weapon wear
local weapon = hitter:get_wielded_item()
if weapon:get_definition().tool_capabilities ~= nil then
local wear = ( weapon:get_definition().tool_capabilities.full_punch_interval / 75 ) * 9000
weapon:add_wear(wear)
hitter:set_wielded_item(weapon)
end
-- weapon sounds
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=hitter,
})
else
minetest.sound_play("default_punch", {
object = hitter,
})
end
process_weapon(hitter,tflp,tool_capabilities)
check_for_death(self) check_for_death(self)
--blood_particles -- blood_particles
local pos = self.object:getpos() local pos = self.object:getpos()
pos.y = pos.y + (-self.collisionbox[2] + self.collisionbox[5]) / 2 pos.y = pos.y + (-self.collisionbox[2] + self.collisionbox[5]) / 2
if self.blood_amount > 0 and pos and enable_blood == true then if self.blood_amount > 0 and pos and enable_blood == true then
@ -960,17 +967,14 @@ end
end end
-- knock back effect, adapted from blockmen's pyramids mod -- knock back effect, adapted from blockmen's pyramids mod
-- https://github.com/BlockMen/pyramids
local kb = self.knock_back local kb = self.knock_back
local r = self.recovery_time local r = self.recovery_time
local ykb = 0 -- was 2
local v = self.object:getvelocity() local v = self.object:getvelocity()
if tflp < tool_capabilities.full_punch_interval then if tflp < tool_capabilities.full_punch_interval then
kb = kb * ( tflp / tool_capabilities.full_punch_interval ) kb = kb * ( tflp / tool_capabilities.full_punch_interval )
r = r * ( tflp / tool_capabilities.full_punch_interval ) r = r * ( tflp / tool_capabilities.full_punch_interval )
end end
if v.y ~= 0 then ykb = 0 end self.object:setvelocity({x=dir.x*kb,y=0,z=dir.z*kb})
self.object:setvelocity({x=dir.x*kb,y=ykb,z=dir.z*kb})
self.pause_timer = r self.pause_timer = r
-- attack puncher and call other mobs for help -- attack puncher and call other mobs for help
@ -1083,24 +1087,6 @@ function mobs:explosion(pos, radius, fire, smoke, sound)
local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp}) local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp})
local data = vm:get_data() local data = vm:get_data()
local p = {} local p = {}
local undestroyed = { --Modif MFF DEBUT
minetest.get_content_id("air"),
minetest.get_content_id("ignore"),
minetest.get_content_id("default:obsidian"),
minetest.get_content_id("default:obsidianbrick"),
minetest.get_content_id("default:chest_locked"),
minetest.get_content_id("doors:door_steel_b_1"),
minetest.get_content_id("doors:door_steel_t_1"),
minetest.get_content_id("doors:door_steel_b_2"),
minetest.get_content_id("doors:door_steel_t_2"),
minetest.get_content_id("default:bedrock"),
minetest.get_content_id("default:obsidian_cooled"),
minetest.get_content_id("more_chests:cobble"),
minetest.get_content_id("more_chests:shared"),
minetest.get_content_id("more_chests:secret"),
minetest.get_content_id("more_chests:dropbox"),
minetest.get_content_id("more_chests:shared_chest")
} --Modif MFF DEBUT
local c_air = minetest.get_content_id("air") local c_air = minetest.get_content_id("air")
local c_ignore = minetest.get_content_id("ignore") local c_ignore = minetest.get_content_id("ignore")
local c_obsidian = minetest.get_content_id("default:obsidian") local c_obsidian = minetest.get_content_id("default:obsidian")
@ -1134,19 +1120,14 @@ function mobs:explosion(pos, radius, fire, smoke, sound)
end end
end end
end end
end if fire > 0 and (minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <= 30) then
if n.name == "doors:door_wood_b_1" then minetest.set_node(p, {name="fire:basic_flame"})
minetest.remove_node({x=np.x,y=np.y+1,z=np.z}) else
elseif n.name == "doors:door_wood_t_1" then minetest.remove_node(p)
minetest.remove_node({x=np.x,y=np.y-1,z=np.z}) end
end if smoke > 0 then
if fire > 0 and (minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <= 30) then effect(p, 2, "tnt_smoke.png", 5)
minetest.set_node(p, {name="fire:basic_flame"}) end
else
minetest.remove_node(p)
end
if smoke > 0 then
effect(p, 2, "tnt_smoke.png", 5)
end end
end end
vi = vi + 1 vi = vi + 1
@ -1159,9 +1140,9 @@ end
function check_for_death(self) function check_for_death(self)
local hp = self.object:get_hp() local hp = self.object:get_hp()
if hp > 0 then if hp > 0 then
if self.sounds.damage ~= nil and hp < self.oldhp then if self.sounds.damage ~= nil then
minetest.sound_play(self.sounds.damage,{object = self.object}) minetest.sound_play(self.sounds.damage,{object = self.object})
self.oldhp = hp self.health = hp
end end
return return
end end
@ -1269,15 +1250,6 @@ function mobs:register_arrow(name, def)
}) })
end end
function process_weapon(player, time_from_last_punch, tool_capabilities)
local weapon = player:get_wielded_item()
if tool_capabilities ~= nil then
local wear = ( tool_capabilities.full_punch_interval / 75 ) * 65535
weapon:add_wear(wear)
player:set_wielded_item(weapon)
end
end
-- Spawn Egg -- Spawn Egg
function mobs:register_egg(mob, desc, background, addegg) function mobs:register_egg(mob, desc, background, addegg)
local invimg = background local invimg = background
@ -1294,8 +1266,7 @@ function mobs:register_egg(mob, desc, background, addegg)
local mob = minetest.add_entity(pos, mob) local mob = minetest.add_entity(pos, mob)
local ent = mob:get_luaentity() local ent = mob:get_luaentity()
if ent.type ~= "monster" then if ent.type ~= "monster" then
ent.owner = placer:get_player_name() -- set owner
ent.tamed = true
ent.owner = placer:get_player_name() ent.owner = placer:get_player_name()
ent.tamed = true ent.tamed = true
end end

View File

@ -4,6 +4,10 @@ News de FR - MinetestForFun (Survival - PVP - Hardcore)
/!\ Le serveur étant devenu extrêmement stable, les MAJ vont se rarifier pour un temps /!\ /!\ Le serveur étant devenu extrêmement stable, les MAJ vont se rarifier pour un temps /!\
/!\ En effet, nous profitons de cette stabilité pour préparer une grosse MAJ qui boulversera à jamais le gameplay de Minetest /!\ /!\ En effet, nous profitons de cette stabilité pour préparer une grosse MAJ qui boulversera à jamais le gameplay de Minetest /!\
---xx/05/2015--- (Remerciements : x)
MAJ de "mobs" (possibilité d'ajouter des armes aux monstres, les monstres endommagés ne voient plus leur vie restauré s'ils sont déchargés puis rechergés, et amélioration du code)
MAJ de "hud/hunger.lua" (ajout des valeurs de nutritions des haricots/beans)
---27/05/2015--- (Remerciements : Mg, Obani, Ataron) ---27/05/2015--- (Remerciements : Mg, Obani, Ataron)
MAJ de "/_misc/whoison" ("/timeonline" à maintenant un alias "/played", libre à vous de l'utiliser) MAJ de "/_misc/whoison" ("/timeonline" à maintenant un alias "/played", libre à vous de l'utiliser)
MAJ de "bobblocks" (grosse amélioration du code par HybridDog) MAJ de "bobblocks" (grosse amélioration du code par HybridDog)
@ -25,7 +29,7 @@ Ajout du mod "dumpnodes mod" (permet à l'admin de générer les couleurs des cu
MAJ de "worldedit" (amélioration du code) MAJ de "worldedit" (amélioration du code)
MAJ de "nether" (bugfix du problème de mapgen que nous avons rencontré) MAJ de "nether" (bugfix du problème de mapgen que nous avons rencontré)
MAJ de "whoison" (plus précis dans les données sorties) MAJ de "whoison" (plus précis dans les données sorties)
Ajout du mod "compassgps" (une boussole, avec possibilité d'enregistrer des positions, différentes textures de boussoles disponibles) Ajout du mod "compassgps" (une boussole, avec possibilité d'enregistrer des positions, différentes textures de boussoles disponibles)
Ajout du mod "worldedge" (quand vous atteingnez le bout de la carte, vous êtes téléporté à l'autre bout "logique" de la carte, à la façon du jeu "snake") Ajout du mod "worldedge" (quand vous atteingnez le bout de la carte, vous êtes téléporté à l'autre bout "logique" de la carte, à la façon du jeu "snake")
MAJ de "mobs" (ajout des bouses/dungs - rare - pour les vaches/cows, elles peuvent être utilisées comme combustible) MAJ de "mobs" (ajout des bouses/dungs - rare - pour les vaches/cows, elles peuvent être utilisées comme combustible)
MAJ de "mobs" (modification des drops de "coins", uniquement "des fois" des silver_coins maintenant, les creeper ne droppent plus de coins, le Minotaur et le Yeti sont maintenant 100% fonctionnels) MAJ de "mobs" (modification des drops de "coins", uniquement "des fois" des silver_coins maintenant, les creeper ne droppent plus de coins, le Minotaur et le Yeti sont maintenant 100% fonctionnels)
@ -83,8 +87,8 @@ MAJ de "connected_chests" (amélioration du code)
---13/04/2015--- (Remerciements : Crabman, Mg) ---13/04/2015--- (Remerciements : Crabman, Mg)
MAJ de "mobs" (Les NPCs vous suivent et protègent uniquement si vous leur donnez 4 diamants - avec un clique droit -) MAJ de "mobs" (Les NPCs vous suivent et protègent uniquement si vous leur donnez 4 diamants - avec un clique droit -)
MAJ de "mesecons" (retour à la version antéireure fonctionnelle tant que la dernière version à son problème avec les portes/doors) MAJ de "mesecons" (retour à la version antéireure fonctionnelle tant que la dernière version à son problème avec les portes/doors)
MAJ de "hud" et "hunger" (retour à la version 1.4 fonctionnelle tant que la version 2.1.x n'est pas stable) MAJ de "hud" et "hunger" (retour à la version 1.4 fonctionnelle tant que la version 2.1.x n'est pas stable)
---12/04/2015--- (Remerciements : Mg, Crabman) ---12/04/2015--- (Remerciements : Mg, Crabman)
MAJ de "mobs" (Nouveaux objets nécessaires pour appater les npcs, npcs qui disparaissent après 10 minutes si non apprivoisés) MAJ de "mobs" (Nouveaux objets nécessaires pour appater les npcs, npcs qui disparaissent après 10 minutes si non apprivoisés)
@ -146,7 +150,7 @@ MAJ de "builtin_item" (amélioration du code)
---28/03/2015--- (Remerciements : Mg, Crabman) ---28/03/2015--- (Remerciements : Mg, Crabman)
MAJ de "tsm_pyramids" (crashfix) MAJ de "tsm_pyramids" (crashfix)
MAJ de "fail" (petite améliortion du code) MAJ de "fail" (petite améliortion du code)
MAJ de "soundset" (ajout d'un menu dans l'inventaire pour modifier graphiquement le volume de la musique et des sons d'ambiances du serveur) MAJ de "soundset" (ajout d'un menu dans l'inventaire pour modifier graphiquement le volume de la musique et des sons d'ambiances du serveur)
MAJ de "mobs" (Le taux de spawn de la plupart des monstres à été ajusté, les valeurs suivantes sont approximatives : "Lava Flan -13%, Sand Monster -50%, Spider -13%, Creeper -33%, Mese Monster -15%, Stone Monster -29%, Oerkki -7%, Dungeon Master +18%, Rat +11%, Bee -33%, Kiten +15%, Bunny +15%, Chicken +10%, Sheep -5%, Warthog -10%, NPC -5%". Des suites de ces valeurs, il y a autant de chance de trouver tous les animaux passif à la surface exception pour les NPCs qui sont deux fois plus rare. Aussi, Vous avez une chance égal en Cavernes de tomber contre Oerkki, Stone Monster, Mese Monster et Dungeon Master. Enfin, Vous vous ferez agresser un peu moins souvent dans la jungle.) MAJ de "mobs" (Le taux de spawn de la plupart des monstres à été ajusté, les valeurs suivantes sont approximatives : "Lava Flan -13%, Sand Monster -50%, Spider -13%, Creeper -33%, Mese Monster -15%, Stone Monster -29%, Oerkki -7%, Dungeon Master +18%, Rat +11%, Bee -33%, Kiten +15%, Bunny +15%, Chicken +10%, Sheep -5%, Warthog -10%, NPC -5%". Des suites de ces valeurs, il y a autant de chance de trouver tous les animaux passif à la surface exception pour les NPCs qui sont deux fois plus rare. Aussi, Vous avez une chance égal en Cavernes de tomber contre Oerkki, Stone Monster, Mese Monster et Dungeon Master. Enfin, Vous vous ferez agresser un peu moins souvent dans la jungle.)
---26/03/2015--- (Remerciements : Ataron, Crabman, Mg) ---26/03/2015--- (Remerciements : Ataron, Crabman, Mg)
@ -248,7 +252,7 @@ MAJ de "mobs" (ajout d'un son pour les loups)
MAJ de "mobs" (bugfix des loups) MAJ de "mobs" (bugfix des loups)
MAJ de "MFF_game" (nouvelle texture de feu pour le four/furnace, ajout de Obsidian/Obsidian brick stairs & slabs, bugfix/amélioration mgv5/mgv7, crashfix) MAJ de "MFF_game" (nouvelle texture de feu pour le four/furnace, ajout de Obsidian/Obsidian brick stairs & slabs, bugfix/amélioration mgv5/mgv7, crashfix)
MAJ de "maptools" (bugfix des fences/rails unbreakable) MAJ de "maptools" (bugfix des fences/rails unbreakable)
MAJ de "MFF_game" (beaucoup de textures modifiés - lingots, minerais, rails -, vous coulez dans l'eau plus doucement, recette mossycobble=>stone après un passage au four/furnace) MAJ de "MFF_game" (beaucoup de textures modifiés - lingots, minerais, rails -, vous coulez dans l'eau plus doucement, recette mossycobble=>stone après un passage au four/furnace)
MAJ de "MFF_game/mods/default/commands.lua" (crashfix de l'infotool) MAJ de "MFF_game/mods/default/commands.lua" (crashfix de l'infotool)
MAJ de "MFF_game/mods/door" (optimisation et amélioration du code) MAJ de "MFF_game/mods/door" (optimisation et amélioration du code)
MAJ de "MFF_game/mods/bucket" (quand un bucket vide est remplit il est jeté au sol si votre inventaire est plain et non détruit comme auparavant) MAJ de "MFF_game/mods/bucket" (quand un bucket vide est remplit il est jeté au sol si votre inventaire est plain et non détruit comme auparavant)
@ -378,7 +382,7 @@ MAJ de "riesenpilz" (modification de la texture)
MAJ de "homedecor" (bugfix sur les itenframes s'ils sont cassés ou world-édités) MAJ de "homedecor" (bugfix sur les itenframes s'ils sont cassés ou world-édités)
MAJ de "chatlog" (les commandes échoués n'apparaîtront plus dans le chat, visible de tous) MAJ de "chatlog" (les commandes échoués n'apparaîtront plus dans le chat, visible de tous)
MAJ de "carts" (bugfix pouvant entrainer un crash du servuer) MAJ de "carts" (bugfix pouvant entrainer un crash du servuer)
MAJ de "la plupart des mods" (résolution des variables globales) MAJ de "la plupart des mods" (résolution des variables globales)
MAJ de "misc/noshout_messages" (debug, s'affiche correctement désormais) MAJ de "misc/noshout_messages" (debug, s'affiche correctement désormais)
MAJ de "future_ban" (bugfix) MAJ de "future_ban" (bugfix)
MAJ de "pipeworks" (toutes les textures sont maintenant en meshe) MAJ de "pipeworks" (toutes les textures sont maintenant en meshe)
@ -608,7 +612,7 @@ Ajout du mod "sprint" (appuyez deux fois sur votre touche avancer avec 0.5sec d'
---10/11/2014--- ---10/11/2014---
MAJ de "_misc/irc.init" (finalisation du mod, les nouveaux joueurs doivent taper "/irc" pour pouvoir communiquer avec les autres joueurs, les anciens joueurs nont pas besoin de faire cela cependant, nous vous conseillons fortement de faire cette commande pour vous informer des règles de lirc) MAJ de "_misc/irc.init" (finalisation du mod, les nouveaux joueurs doivent taper "/irc" pour pouvoir communiquer avec les autres joueurs, les anciens joueurs nont pas besoin de faire cela cependant, nous vous conseillons fortement de faire cette commande pour vous informer des règles de lirc)
---09/11/2014--- ---09/11/2014---
Ajout du mod "coloredwood" (bois/barrière de toute les couleurs, grâce au colorants, compatible avec la colormachine) Ajout du mod "coloredwood" (bois/barrière de toute les couleurs, grâce au colorants, compatible avec la colormachine)
@ -678,7 +682,7 @@ Ajout du mod "sponge" (ajout d'une ponge craftable, comme dans minecr**t celle c
MAJ de "dropondie" (ré-ajout d'une portion de code pour le bugfix des items qui ce restaure quand vous mourrez et les re-ramassez) MAJ de "dropondie" (ré-ajout d'une portion de code pour le bugfix des items qui ce restaure quand vous mourrez et les re-ramassez)
MAJ de "minetestforfun_game"(nettoyage du code des tree/jungletree, des doors et des trapdoors par Calinou) MAJ de "minetestforfun_game"(nettoyage du code des tree/jungletree, des doors et des trapdoors par Calinou)
MAJ de "snowdrift" (la quantité et fréquence de la neige entrainait du lag coté client, la quantité de neige à été divisé par deux, et la fréquence par trois pour y remédier) MAJ de "snowdrift" (la quantité et fréquence de la neige entrainait du lag coté client, la quantité de neige à été divisé par deux, et la fréquence par trois pour y remédier)
Ajout du mod "highlandpools" (des lacs et rivières ce formeront désormais parfois au dessus du niveau de l'eau dans les nouvelles régions générées) Ajout du mod "highlandpools" (des lacs et rivières ce formeront désormais parfois au dessus du niveau de l'eau dans les nouvelles régions générées)
MAJ de "maptools" (ajustement esthétique du code) MAJ de "maptools" (ajustement esthétique du code)
MAJ de "minetestforfun_game" (certains minerais rare, à savoir, les gold coin, le mese et le diamant, luisent/brillent désormais dans le noir) MAJ de "minetestforfun_game" (certains minerais rare, à savoir, les gold coin, le mese et le diamant, luisent/brillent désormais dans le noir)
MAJ de "nether" (les comandes "/to_hell" et "/from_hell" ont été supprimés) MAJ de "nether" (les comandes "/to_hell" et "/from_hell" ont été supprimés)
@ -866,7 +870,7 @@ Nouvelle "default" animation lors du cassage d'un bloque (avec plus de FPS)
Ajout du mod "craft obsidian" (à partir d'un "lava_bucket") Ajout du mod "craft obsidian" (à partir d'un "lava_bucket")
MAJ farming (bugs fix) MAJ farming (bugs fix)
MAJ de MinetestForFun_game (nouveaux craft : les "dry shrub"/buisson sec du désert, ce transforme en stick 1 pour 1, le "clay" ce stack maintenant par 200, les "empty_bucket" ce groupe par 100, les "stick" ce groupe par 1000, les "torch" ce craft par 5) MAJ de MinetestForFun_game (nouveaux craft : les "dry shrub"/buisson sec du désert, ce transforme en stick 1 pour 1, le "clay" ce stack maintenant par 200, les "empty_bucket" ce groupe par 100, les "stick" ce groupe par 1000, les "torch" ce craft par 5)
MAJ de screwdriver (avec un clique gauche la texture ce tourne, tandis qu'avec un clique droit le cube ce tourne) MAJ de screwdriver (avec un clique gauche la texture ce tourne, tandis qu'avec un clique droit le cube ce tourne)
---01/09/2014--- ---01/09/2014---
Ajout du mod "Framed_glass" (extraction de technic, ajout notamment de "framed_steel_glass" colorés) Ajout du mod "Framed_glass" (extraction de technic, ajout notamment de "framed_steel_glass" colorés)