236 lines
4.4 KiB
Lua

cops = {}
cops.copsSpawned = 0
-- Pig spawner
minetest.register_node("cops:pig_spawner", {
walkable = false;
drawtype = "glasslike",
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
--[[on_timer = function(pos)
minetest.add_entity(pos, "cops:cop_regular_female")
return true
end,
on_construct = function(pos)
minetest.get_node_timer(pos):start(20)
end,]]
})
--[[
minetest.register_abm({
nodenames = {"cops:pig_spawner"},
interval = 30,
chance = 5,
action = function(pos, node, active_object_count, active_object_count_wider)
local i = math.random(0, 2)
if i == 0 then
minetest.add_entity(pos, "cops:cop_regular_female")
elseif i == 1 then
minetest.add_entity(pos, "cops:cop_regular_male")
elseif i == 2 then
minetest.add_entity(pos, "cops:cop_armedthug")
end
end})]]
minetest.register_abm({
nodenames = {"main:bricks_stone"},
interval = 40,
chance = 140,
action = function(pos, node, active_object_count, active_object_count_wider)
if cops.copsSpawned < 20 then
newPos = {x = pos.x, y = pos.y + 2, z = pos.z}
local i = math.random(0, 7)
if i < 2 then
minetest.add_entity(newPos, "cops:cop_regular_female")
elseif i < 6 then
minetest.add_entity(newPos, "cops:cop_regular_male")
elseif i == 7 then
minetest.add_entity(newPos, "cops:cop_armedthug")
end
cops.copsSpawned = cops.copsSpawned + 1
end
end})
-- Cops
mobs:register_mob("cops:cop_regular_female", {
type = "monster",
passive = false,
attack_type = "dogfight",
pathfinding = true,
reach = 2,
damage = 3,
hp_min = 16,
hp_max = 25,
armor = 100,
collisionbox =
{
-.4, 0, -.4, .4, 2, .4
},
pushable = true,
visual = "mesh",
mesh = "character.b3d",
textures =
{
{"cop_regular_female.png"},
},
makes_footstep_sound = true,
sounds =
{
random = "female_noise",
},
on_die = onCopDie,
walk_velocity = 2,
run_velocity = 8,
jump_height = 1,
stepheight = 0,
floats = 0,
view_range = 45,
fall_damage = true,
drops =
{
{name = "cops:badge", chance = 4, min = 0, max = 1},
{name = "cops:handcuffs", chance = 3, min = 0, max = 1},
{name = "cops:electric_weapon_broken", chance = 3, min = 0, max = 1}
},
animation =
{
speed_normal = 30,
speed_run = 50,
stand_start = 0,
stand_end = 79,
walk_start = 168,
walk_end = 187,
run_start = 168,
run_end = 187,
punch_start = 200,
punch_end = 219
},
})
mobs:register_mob("cops:cop_regular_male", {
type = "monster",
passive = false,
attack_type = "dogfight",
pathfinding = true,
reach = 2,
damage = 3,
hp_min = 21,
hp_max = 25,
armor = 100,
collisionbox =
{
-.4, 0, -.4, .4, 2, .4
},
pushable = true,
visual = "mesh",
mesh = "character.b3d",
textures =
{
{"cop_regular_male.png"},
},
makes_footstep_sound = true,
sounds =
{
random = "male_noise",
},
on_die = onCopDie,
walk_velocity = 2,
run_velocity = 8,
jump_height = 1,
stepheight = 0,
floats = 0,
view_range = 45,
fall_damage = true,
drops =
{
{name = "cops:badge", chance = 4, min = 0, max = 1},
{name = "cops:handcuffs", chance = 3, min = 0, max = 1},
{name = "cops:electric_weapon_broken", chance = 3, min = 0, max = 1}
},
animation =
{
speed_normal = 30,
speed_run = 50,
stand_start = 0,
stand_end = 79,
walk_start = 168,
walk_end = 187,
run_start = 168,
run_end = 187,
punch_start = 200,
punch_end = 219
},
})
mobs:register_mob("cops:cop_armedthug", {
type = "monster",
passive = false,
attack_type = "dogfight",
pathfinding = true,
reach = 3,
damage = 5,
hp_min = 46,
hp_max = 50,
armor = 100,
collisionbox =
{
-.4, 0, -.4, .4, 2, .4
},
pushable = true,
visual = "mesh",
mesh = "character.b3d",
textures =
{
{"cop_armedthug.png"},
},
makes_footstep_sound = true,
sounds =
{
random = "male_noise",
},
on_die = onCopDie,
walk_velocity = 2,
run_velocity = 8,
jump_height = 1,
stepheight = 0,
floats = 0,
view_range = 45,
fall_damage = true,
drops =
{
{name = "cops:badge", chance = 3, min = 0, max = 1},
{name = "cops:handcuffs", chance = 4, min = 1, max = 2},
},
animation =
{
speed_normal = 30,
speed_run = 50,
stand_start = 0,
stand_end = 79,
walk_start = 168,
walk_end = 187,
run_start = 168,
run_end = 187,
punch_start = 200,
punch_end = 219
},
})
onCopDie = function()
cops.copsSpawned = cops.copsSpawned - 1
end