VoxeLibre/mods/ENTITIES/mobs_mc/vex.lua
2018-09-18 16:14:55 +02:00

104 lines
2.3 KiB
Lua

--MCmobs v0.4
--maikerumine
--made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes
-- intllib
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--###################
--################### VEX
--###################
mobs:register_mob("mobs_mc:vex", {
type = "monster",
pathfinding = 1,
passive = false,
attack_type = "dogfight",
physical = false,
hp_min = 14,
hp_max = 14,
collisionbox = {-0.2, 0.2, -0.2, 0.2, 1.0, 0.2}, --bat
visual = "mesh",
mesh = "mobs_mc_vex.b3d",
textures = {
{
"default_tool_steelsword.png",
"mobs_mc_vex.png",
},
},
visual_size = {x=1.25, y=1.25},
damage = 9,
reach = 2,
view_range = 16,
walk_velocity = 3.2,
run_velocity = 5.9,
attack_type = "dogfight",
sounds = {
-- TODO: random
death = "mobs_mc_vex_death",
damage = "mobs_mc_vex_hurt",
distance = 16,
},
animation = {
stand_speed = 25,
walk_speed = 25,
run_speed = 50,
stand_start = 40,
stand_end = 80,
walk_start = 0,
walk_end = 40,
run_start = 0,
run_end = 40,
},
do_custom = function(self, dtime)
-- Glow red while attacking
-- TODO: Charge sound
if self.state == "attack" then
if self.base_texture[2] ~= "mobs_mc_vex_charging.png" then
self.base_texture[2] = "mobs_mc_vex_charging.png"
self.object:set_properties({textures=self.base_texture})
end
else
if self.base_texture[1] ~= "default_tool_steelsword.png" then
self.base_texture[1] = "default_tool_steelsword.png"
self.object:set_properties({textures=self.base_texture})
end
end
-- Take constant damage if the vex' life clock ran out
-- (only for vexes summoned by evokers)
if self._summoned then
if not self._lifetimer then
self._lifetimer = 33
end
self._lifetimer = self._lifetimer - dtime
if self._lifetimer <= 0 then
if self._damagetimer then
self._damagetimer = self._damagetimer - 1
end
self.object:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 2},
}, nil)
self._damagetimer = 1
end
end
end,
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fly = true,
fly_in = {"air"},
})
-- spawn eggs
mobs:register_egg("mobs_mc:vex", S("Vex"), "mobs_mc_spawn_icon_vex.png", 0)
if minetest.settings:get_bool("log_mods") then
minetest.log("action", "MC Vex loaded")
end