mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-11-26 04:21:07 +01:00
clean up ai.lua
This commit is contained in:
parent
cadd53c103
commit
8ca5f221ec
2 changed files with 169 additions and 166 deletions
|
@ -175,12 +175,6 @@ mobs.mob_step = function(self, dtime)
|
|||
|
||||
--print(self.object:get_yaw())
|
||||
|
||||
--if self.state == "die" then
|
||||
-- print("need custom die stop moving thing")
|
||||
-- return
|
||||
--end
|
||||
|
||||
|
||||
state_switch(self, dtime)
|
||||
|
||||
state_execution(self,dtime)
|
||||
|
@ -191,165 +185,5 @@ mobs.mob_step = function(self, dtime)
|
|||
mobs.collision(self)
|
||||
end
|
||||
|
||||
|
||||
--if not self.fire_resistant then
|
||||
-- mcl_burning.tick(self.object, dtime)
|
||||
--end
|
||||
|
||||
--if use_cmi then
|
||||
--cmi.notify_step(self.object, dtime)
|
||||
--end
|
||||
|
||||
--local pos = self.object:get_pos()
|
||||
--local yaw = 0
|
||||
|
||||
--if mobs_debug then
|
||||
--update_tag(self)
|
||||
--end
|
||||
|
||||
|
||||
|
||||
--if self.jump_sound_cooloff > 0 then
|
||||
-- self.jump_sound_cooloff = self.jump_sound_cooloff - dtime
|
||||
--end
|
||||
|
||||
--if self.opinion_sound_cooloff > 0 then
|
||||
-- self.opinion_sound_cooloff = self.opinion_sound_cooloff - dtime
|
||||
--end
|
||||
|
||||
--if falling(self, pos) then
|
||||
-- Return if mob died after falling
|
||||
-- return
|
||||
--end
|
||||
|
||||
|
||||
-- run custom function (defined in mob lua file)
|
||||
--if self.do_custom then
|
||||
|
||||
-- when false skip going any further
|
||||
--if self.do_custom(self, dtime) == false then
|
||||
-- return
|
||||
--end
|
||||
--end
|
||||
|
||||
-- knockback timer
|
||||
--if self.pause_timer > 0 then
|
||||
|
||||
-- self.pause_timer = self.pause_timer - dtime
|
||||
|
||||
-- return
|
||||
--end
|
||||
|
||||
-- attack timer
|
||||
--self.timer = self.timer + dtime
|
||||
|
||||
--[[
|
||||
if self.state ~= "attack" then
|
||||
|
||||
if self.timer < 1 then
|
||||
print("returning>>error code 1")
|
||||
return
|
||||
end
|
||||
|
||||
self.timer = 0
|
||||
end
|
||||
]]--
|
||||
|
||||
-- never go over 100
|
||||
--if self.timer > 100 then
|
||||
-- self.timer = 1
|
||||
--end
|
||||
|
||||
-- mob plays random sound at times
|
||||
--if math_random(1, 70) == 1 then
|
||||
-- mob_sound(self, "random", true)
|
||||
--end
|
||||
|
||||
-- environmental damage timer (every 1 second)
|
||||
--self.env_damage_timer = self.env_damage_timer + dtime
|
||||
|
||||
--if (self.state == "attack" and self.env_damage_timer > 1)
|
||||
--or self.state ~= "attack" then
|
||||
--
|
||||
-- self.env_damage_timer = 0
|
||||
--
|
||||
-- -- check for environmental damage (water, fire, lava etc.)
|
||||
-- if do_env_damage(self) then
|
||||
-- return
|
||||
-- end
|
||||
--
|
||||
-- node replace check (cow eats grass etc.)
|
||||
-- replace(self, pos)
|
||||
--end
|
||||
|
||||
--monster_attack(self)
|
||||
|
||||
--npc_attack(self)
|
||||
|
||||
--breed(self)
|
||||
|
||||
--do_jump(self)
|
||||
|
||||
--runaway_from(self)
|
||||
|
||||
|
||||
--if is_at_water_danger(self) and self.state ~= "attack" then
|
||||
-- if math_random(1, 10) <= 6 then
|
||||
-- set_velocity(self, 0)
|
||||
-- self.state = "stand"
|
||||
-- set_animation(self, "stand")
|
||||
-- yaw = yaw + math_random(-0.5, 0.5)
|
||||
-- yaw = set_yaw(self, yaw, 8)
|
||||
-- end
|
||||
--end
|
||||
|
||||
|
||||
-- Add water flowing for mobs from mcl_item_entity
|
||||
--[[
|
||||
local p, node, nn, def
|
||||
p = self.object:get_pos()
|
||||
node = minetest_get_node_or_nil(p)
|
||||
if node then
|
||||
nn = node.name
|
||||
def = minetest_registered_nodes[nnenable_physicss if not on/in flowing liquid
|
||||
self._flowing = false
|
||||
enable_physics(self.object, self, true)
|
||||
return
|
||||
end
|
||||
|
||||
--Mob following code.
|
||||
follow_flop(self)
|
||||
|
||||
|
||||
if is_at_cliff_or_danger(self) then
|
||||
set_velocity(self, 0)
|
||||
self.state = "stand"
|
||||
set_animation(self, "stand")
|
||||
local yaw = self.object:get_yaw() or 0
|
||||
yaw = set_yaw(self, yaw + 0.78, 8)
|
||||
end
|
||||
|
||||
-- Despawning: when lifetimer expires, remove mob
|
||||
if remove_far
|
||||
and self.can_despawn == true
|
||||
and ((not self.nametag) or (self.nametag == ""))
|
||||
and self.state ~= "attack"
|
||||
and self.following == nil then
|
||||
|
||||
self.lifetimer = self.lifetimer - dtime
|
||||
if self.despawn_immediately or self.lifetimer <= 0 then
|
||||
minetest.log("action", "Mob "..self.name.." despawns in mob_step at "..minetest.pos_to_string(pos, 1))
|
||||
mcl_burning.extinguish(self.object)
|
||||
self.object:remove()
|
||||
elseif self.lifetimer <= 10 then
|
||||
if math_random(10) < 4 then
|
||||
self.despawn_immediately = true
|
||||
else
|
||||
self.lifetimer = 20
|
||||
end
|
||||
end
|
||||
end
|
||||
]]--
|
||||
|
||||
self.old_velocity = self.object:get_velocity()
|
||||
end
|
||||
|
|
|
@ -3297,3 +3297,172 @@ end
|
|||
function mobs:yaw(self, yaw, delay, dtime)
|
||||
set_yaw(self, yaw, delay, dtime)
|
||||
end
|
||||
|
||||
|
||||
mob_step = function()
|
||||
|
||||
--if self.state == "die" then
|
||||
-- print("need custom die stop moving thing")
|
||||
-- return
|
||||
--end
|
||||
|
||||
--if not self.fire_resistant then
|
||||
-- mcl_burning.tick(self.object, dtime)
|
||||
--end
|
||||
|
||||
--if use_cmi then
|
||||
--cmi.notify_step(self.object, dtime)
|
||||
--end
|
||||
|
||||
--local pos = self.object:get_pos()
|
||||
--local yaw = 0
|
||||
|
||||
--if mobs_debug then
|
||||
--update_tag(self)
|
||||
--end
|
||||
|
||||
|
||||
|
||||
--if self.jump_sound_cooloff > 0 then
|
||||
-- self.jump_sound_cooloff = self.jump_sound_cooloff - dtime
|
||||
--end
|
||||
|
||||
--if self.opinion_sound_cooloff > 0 then
|
||||
-- self.opinion_sound_cooloff = self.opinion_sound_cooloff - dtime
|
||||
--end
|
||||
|
||||
--if falling(self, pos) then
|
||||
-- Return if mob died after falling
|
||||
-- return
|
||||
--end
|
||||
|
||||
|
||||
-- run custom function (defined in mob lua file)
|
||||
--if self.do_custom then
|
||||
|
||||
-- when false skip going any further
|
||||
--if self.do_custom(self, dtime) == false then
|
||||
-- return
|
||||
--end
|
||||
--end
|
||||
|
||||
-- knockback timer
|
||||
--if self.pause_timer > 0 then
|
||||
|
||||
-- self.pause_timer = self.pause_timer - dtime
|
||||
|
||||
-- return
|
||||
--end
|
||||
|
||||
-- attack timer
|
||||
--self.timer = self.timer + dtime
|
||||
|
||||
--[[
|
||||
if self.state ~= "attack" then
|
||||
|
||||
if self.timer < 1 then
|
||||
print("returning>>error code 1")
|
||||
return
|
||||
end
|
||||
|
||||
self.timer = 0
|
||||
end
|
||||
]]--
|
||||
|
||||
-- never go over 100
|
||||
--if self.timer > 100 then
|
||||
-- self.timer = 1
|
||||
--end
|
||||
|
||||
-- mob plays random sound at times
|
||||
--if math_random(1, 70) == 1 then
|
||||
-- mob_sound(self, "random", true)
|
||||
--end
|
||||
|
||||
-- environmental damage timer (every 1 second)
|
||||
--self.env_damage_timer = self.env_damage_timer + dtime
|
||||
|
||||
--if (self.state == "attack" and self.env_damage_timer > 1)
|
||||
--or self.state ~= "attack" then
|
||||
--
|
||||
-- self.env_damage_timer = 0
|
||||
--
|
||||
-- -- check for environmental damage (water, fire, lava etc.)
|
||||
-- if do_env_damage(self) then
|
||||
-- return
|
||||
-- end
|
||||
--
|
||||
-- node replace check (cow eats grass etc.)
|
||||
-- replace(self, pos)
|
||||
--end
|
||||
|
||||
--monster_attack(self)
|
||||
|
||||
--npc_attack(self)
|
||||
|
||||
--breed(self)
|
||||
|
||||
--do_jump(self)
|
||||
|
||||
--runaway_from(self)
|
||||
|
||||
|
||||
--if is_at_water_danger(self) and self.state ~= "attack" then
|
||||
-- if math_random(1, 10) <= 6 then
|
||||
-- set_velocity(self, 0)
|
||||
-- self.state = "stand"
|
||||
-- set_animation(self, "stand")
|
||||
-- yaw = yaw + math_random(-0.5, 0.5)
|
||||
-- yaw = set_yaw(self, yaw, 8)
|
||||
-- end
|
||||
--end
|
||||
|
||||
|
||||
-- Add water flowing for mobs from mcl_item_entity
|
||||
--[[
|
||||
local p, node, nn, def
|
||||
p = self.object:get_pos()
|
||||
node = minetest_get_node_or_nil(p)
|
||||
if node then
|
||||
nn = node.name
|
||||
def = minetest_registered_nodes[nnenable_physicss if not on/in flowing liquid
|
||||
self._flowing = false
|
||||
enable_physics(self.object, self, true)
|
||||
return
|
||||
end
|
||||
|
||||
--Mob following code.
|
||||
follow_flop(self)
|
||||
|
||||
|
||||
if is_at_cliff_or_danger(self) then
|
||||
set_velocity(self, 0)
|
||||
self.state = "stand"
|
||||
set_animation(self, "stand")
|
||||
local yaw = self.object:get_yaw() or 0
|
||||
yaw = set_yaw(self, yaw + 0.78, 8)
|
||||
end
|
||||
|
||||
-- Despawning: when lifetimer expires, remove mob
|
||||
if remove_far
|
||||
and self.can_despawn == true
|
||||
and ((not self.nametag) or (self.nametag == ""))
|
||||
and self.state ~= "attack"
|
||||
and self.following == nil then
|
||||
|
||||
self.lifetimer = self.lifetimer - dtime
|
||||
if self.despawn_immediately or self.lifetimer <= 0 then
|
||||
minetest.log("action", "Mob "..self.name.." despawns in mob_step at "..minetest.pos_to_string(pos, 1))
|
||||
mcl_burning.extinguish(self.object)
|
||||
self.object:remove()
|
||||
elseif self.lifetimer <= 10 then
|
||||
if math_random(10) < 4 then
|
||||
self.despawn_immediately = true
|
||||
else
|
||||
self.lifetimer = 20
|
||||
end
|
||||
end
|
||||
end
|
||||
]]--
|
||||
|
||||
end
|
Loading…
Reference in a new issue