Use [colorize instead of textures; fix sheep states
This commit is contained in:
parent
3a2e312f01
commit
79a54e7907
14
ghost.lua
14
ghost.lua
@ -25,19 +25,15 @@ function g_hit(self)
|
|||||||
local sound = g_sound_hit
|
local sound = g_sound_hit
|
||||||
if self.object:get_hp() < 1 then sound = g_sound_dead end
|
if self.object:get_hp() < 1 then sound = g_sound_dead end
|
||||||
minetest.sound_play(sound, {pos = self.object:getpos(), max_hear_distance = 10, loop = false, gain = 0.4})
|
minetest.sound_play(sound, {pos = self.object:getpos(), max_hear_distance = 10, loop = false, gain = 0.4})
|
||||||
prop = {
|
self.object:settexturemod("^[colorize:#c4000099")
|
||||||
mesh = g_mesh,
|
|
||||||
textures = {"creatures_ghost.png^creatures_ghost_hit.png"},
|
|
||||||
}
|
|
||||||
self.object:set_properties(prop)
|
|
||||||
self.can_punch = false
|
self.can_punch = false
|
||||||
minetest.after(0.4, function()
|
minetest.after(0.4, function()
|
||||||
g_update_visuals_def(self)
|
self.can_punch = true
|
||||||
|
self.object:settexturemod("")
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
function g_update_visuals_def(self)
|
function g_init_visuals(self)
|
||||||
self.can_punch = true
|
|
||||||
prop = {
|
prop = {
|
||||||
mesh = g_mesh,
|
mesh = g_mesh,
|
||||||
textures = g_texture,
|
textures = g_texture,
|
||||||
@ -74,7 +70,7 @@ GHOST_DEF = {
|
|||||||
|
|
||||||
|
|
||||||
GHOST_DEF.on_activate = function(self)
|
GHOST_DEF.on_activate = function(self)
|
||||||
g_update_visuals_def(self)
|
g_init_visuals(self)
|
||||||
self.anim = g_get_animations()
|
self.anim = g_get_animations()
|
||||||
self.object:set_animation({x=self.anim.stand_START,y=self.anim.stand_END}, g_animation_speed, 0)
|
self.object:set_animation({x=self.anim.stand_START,y=self.anim.stand_END}, g_animation_speed, 0)
|
||||||
self.npc_anim = ANIM_STAND
|
self.npc_anim = ANIM_STAND
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 511 B |
Binary file not shown.
Before Width: | Height: | Size: 186 B |
Binary file not shown.
Before Width: | Height: | Size: 264 B |
68
sheep.lua
68
sheep.lua
@ -27,30 +27,40 @@ local function s_get_animations()
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
local function s_eat_anim(self)
|
local function eat_cn(self, pos)
|
||||||
self.object:set_animation({x=self.anim.eat_START,y=self.anim.eat_END}, s_animation_speed, 0)
|
self.object:setvelocity({x=0,y=-20,z=0})
|
||||||
self.npc_anim = creatures.ANIM_EAT
|
local p = {x=pos.x,y=pos.y-1,z=pos.z}
|
||||||
|
local n = minetest.get_node(p) or nil
|
||||||
|
if n and n.name and n.name == "default:dirt_with_grass" then
|
||||||
|
self.object:set_animation({x=self.anim.eat_START,y=self.anim.eat_END}, s_animation_speed, 0)
|
||||||
|
self.npc_anim = creatures.ANIM_EAT
|
||||||
|
self.timer = 0
|
||||||
|
minetest.after(3.5, function()
|
||||||
|
self.has_wool = true
|
||||||
|
self.state = 1
|
||||||
|
s_update_visuals(self)
|
||||||
|
minetest.set_node(p,{name="default:dirt"})
|
||||||
|
end)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function s_hit(self)
|
function s_hit(self)
|
||||||
local sound = s_sound_hit
|
local sound = s_sound_hit
|
||||||
if self.object:get_hp() < 1 then sound = s_sound_dead end
|
if self.object:get_hp() < 1 then
|
||||||
|
sound = s_sound_dead
|
||||||
|
end
|
||||||
minetest.sound_play(sound, {pos = self.object:getpos(), max_hear_distance = 10, loop = false, gain = 0.4})
|
minetest.sound_play(sound, {pos = self.object:getpos(), max_hear_distance = 10, loop = false, gain = 0.4})
|
||||||
local prop = {
|
s_update_visuals(self, "^[colorize:#c4000099")
|
||||||
mesh = s_mesh,
|
|
||||||
textures = {self.txture[1].."^creatures_sheep_hit.png"},
|
|
||||||
}
|
|
||||||
self.object:set_properties(prop)
|
|
||||||
self.can_punch = false
|
self.can_punch = false
|
||||||
minetest.after(0.4, function()
|
minetest.after(0.4, function()
|
||||||
s_update_visuals_def(self)
|
s_update_visuals(self)
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
function s_update_visuals_def(self)
|
function s_update_visuals(self, hit)
|
||||||
self.txture = {"creatures_sheep.png"}
|
self.txture = {"creatures_sheep.png" .. (hit or "")}
|
||||||
if not self.has_wool then
|
if not self.has_wool then
|
||||||
self.txture = {"creatures_sheep_shaved.png"}
|
self.txture = {"creatures_sheep_shaved.png" .. (hit or "")}
|
||||||
end
|
end
|
||||||
local prop = {
|
local prop = {
|
||||||
mesh = s_mesh,
|
mesh = s_mesh,
|
||||||
@ -99,7 +109,7 @@ end
|
|||||||
|
|
||||||
SHEEP_DEF.on_activate = function(self, staticdata, dtime_s)
|
SHEEP_DEF.on_activate = function(self, staticdata, dtime_s)
|
||||||
self.txture = s_texture
|
self.txture = s_texture
|
||||||
s_update_visuals_def(self)
|
s_update_visuals(self)
|
||||||
self.anim = s_get_animations()
|
self.anim = s_get_animations()
|
||||||
self.object:set_animation({x=self.anim.stand_START,y=self.anim.stand_END}, s_animation_speed, 0)
|
self.object:set_animation({x=self.anim.stand_START,y=self.anim.stand_END}, s_animation_speed, 0)
|
||||||
self.npc_anim = ANIM_STAND
|
self.npc_anim = ANIM_STAND
|
||||||
@ -126,7 +136,7 @@ SHEEP_DEF.on_activate = function(self, staticdata, dtime_s)
|
|||||||
self.lifetime = tmp.lifetime
|
self.lifetime = tmp.lifetime
|
||||||
end
|
end
|
||||||
if not self.has_wool then
|
if not self.has_wool then
|
||||||
s_update_visuals_def(self)
|
s_update_visuals(self)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -135,8 +145,6 @@ SHEEP_DEF.on_punch = function(self, puncher, time_from_last_punch, tool_capabili
|
|||||||
if not self.can_punch then return end
|
if not self.can_punch then return end
|
||||||
|
|
||||||
self.feeder = ""
|
self.feeder = ""
|
||||||
--SET RUN state (panic)
|
|
||||||
self.state = 4
|
|
||||||
self.timer = 0
|
self.timer = 0
|
||||||
|
|
||||||
if puncher ~= nil then
|
if puncher ~= nil then
|
||||||
@ -178,7 +186,7 @@ SHEEP_DEF.on_rightclick = function(self, clicker)
|
|||||||
minetest.sound_play(s_sound_shears, {pos = my_pos, max_hear_distance = 10, gain = 1})
|
minetest.sound_play(s_sound_shears, {pos = my_pos, max_hear_distance = 10, gain = 1})
|
||||||
my_pos.y = my_pos.y + 0.4
|
my_pos.y = my_pos.y + 0.4
|
||||||
self.has_wool = false
|
self.has_wool = false
|
||||||
s_update_visuals_def(self)
|
s_update_visuals(self)
|
||||||
creatures.drop(my_pos, {{name=s_drop, count=2}})
|
creatures.drop(my_pos, {{name=s_drop, count=2}})
|
||||||
if not minetest.setting_getbool("creative_mode") then
|
if not minetest.setting_getbool("creative_mode") then
|
||||||
item:add_wear(65535/100)
|
item:add_wear(65535/100)
|
||||||
@ -251,6 +259,10 @@ SHEEP_DEF.on_step = function(self, dtime)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if self.state < 0 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
-- update moving state depending on current state
|
-- update moving state depending on current state
|
||||||
if self.state < 4 then
|
if self.state < 4 then
|
||||||
if self.timer > 4/self.state then
|
if self.timer > 4/self.state then
|
||||||
@ -259,7 +271,7 @@ SHEEP_DEF.on_step = function(self, dtime)
|
|||||||
--if self.state == 3 then new = 1 end
|
--if self.state == 3 then new = 1 end
|
||||||
--if self.feeder == "" then new = 5 end
|
--if self.feeder == "" then new = 5 end
|
||||||
self.state = 5--new
|
self.state = 5--new
|
||||||
s_update_visuals_def(self)
|
--s_update_visuals(self)
|
||||||
end
|
end
|
||||||
elseif self.state == 4 and self.timer > 1.5 then
|
elseif self.state == 4 and self.timer > 1.5 then
|
||||||
self.state = 2
|
self.state = 2
|
||||||
@ -270,7 +282,6 @@ SHEEP_DEF.on_step = function(self, dtime)
|
|||||||
if self.feeder ~= "" then new = 5 end
|
if self.feeder ~= "" then new = 5 end
|
||||||
self.state = new
|
self.state = new
|
||||||
self.timer = 0
|
self.timer = 0
|
||||||
--s_update_visuals_def(self)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- play random sound
|
-- play random sound
|
||||||
@ -374,20 +385,9 @@ SHEEP_DEF.on_step = function(self, dtime)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- EATING
|
-- EATING
|
||||||
if self.state == 3 then--and not self.has_wool then
|
if self.state == 3 then
|
||||||
self.object:setvelocity({x=0,y=-20,z=0})
|
self.state = -1 -- deactivate most while eating
|
||||||
local p = {x=current_pos.x,y=current_pos.y-1,z=current_pos.z}
|
eat_cn(self, current_pos)
|
||||||
local n = minetest.get_node(p) or nil
|
|
||||||
if n and n.name and n.name == "default:dirt_with_grass" then
|
|
||||||
if self.timer == 0 then
|
|
||||||
s_eat_anim(self)
|
|
||||||
self.timer = 0.45
|
|
||||||
end
|
|
||||||
minetest.after(1.8,function()
|
|
||||||
self.has_wool = true
|
|
||||||
minetest.set_node(p,{name="default:dirt"})
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
15
zombie.lua
15
zombie.lua
@ -36,19 +36,15 @@ function z_hit(self)
|
|||||||
local sound = z_sound_hit
|
local sound = z_sound_hit
|
||||||
if self.object:get_hp() < 1 then sound = z_sound_dead end
|
if self.object:get_hp() < 1 then sound = z_sound_dead end
|
||||||
minetest.sound_play(sound, {pos = self.object:getpos(), max_hear_distance = 10, loop = false, gain = 0.4})
|
minetest.sound_play(sound, {pos = self.object:getpos(), max_hear_distance = 10, loop = false, gain = 0.4})
|
||||||
prop = {
|
self.object:settexturemod("^[colorize:#c4000099")
|
||||||
mesh = z_mesh,
|
|
||||||
textures = {"creatures_zombie.png^creatures_zombie_hit.png"},
|
|
||||||
}
|
|
||||||
self.object:set_properties(prop)
|
|
||||||
self.can_punch = false
|
self.can_punch = false
|
||||||
minetest.after(0.4, function()
|
minetest.after(0.4, function()
|
||||||
z_update_visuals_def(self)
|
self.can_punch = true
|
||||||
|
self.object:settexturemod("")
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
function z_update_visuals_def(self)
|
function z_init_visuals(self)
|
||||||
self.can_punch = true
|
|
||||||
prop = {
|
prop = {
|
||||||
mesh = z_mesh,
|
mesh = z_mesh,
|
||||||
textures = z_texture,
|
textures = z_texture,
|
||||||
@ -92,7 +88,7 @@ ZOMBIE_DEF.get_staticdata = function(self)
|
|||||||
end
|
end
|
||||||
|
|
||||||
ZOMBIE_DEF.on_activate = function(self, staticdata, dtime_s)
|
ZOMBIE_DEF.on_activate = function(self, staticdata, dtime_s)
|
||||||
z_update_visuals_def(self)
|
z_init_visuals(self)
|
||||||
self.anim = z_get_animations()
|
self.anim = z_get_animations()
|
||||||
self.object:set_animation({x=self.anim.stand_START,y=self.anim.stand_END}, z_animation_speed, 0)
|
self.object:set_animation({x=self.anim.stand_START,y=self.anim.stand_END}, z_animation_speed, 0)
|
||||||
self.npc_anim = ANIM_STAND
|
self.npc_anim = ANIM_STAND
|
||||||
@ -119,7 +115,6 @@ ZOMBIE_DEF.on_punch = function(self, puncher, time_from_last_punch, tool_capabil
|
|||||||
if not self.can_punch then return end
|
if not self.can_punch then return end
|
||||||
|
|
||||||
local my_pos = self.object:getpos()
|
local my_pos = self.object:getpos()
|
||||||
|
|
||||||
if puncher ~= nil then
|
if puncher ~= nil then
|
||||||
self.attacker = puncher
|
self.attacker = puncher
|
||||||
if time_from_last_punch >= 0.45 then
|
if time_from_last_punch >= 0.45 then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user