285 lines
5.6 KiB
Lua
Raw Normal View History

cops = {}
cops.copsSpawned = 0
2022-11-21 16:12:22 -05:00
-- Pig spawner
2022-11-24 00:51:57 -05:00
minetest.register_node(":cops:pig_spawner", {
2022-11-21 16:12:22 -05:00
walkable = false;
drawtype = "glasslike",
paramtype = "light",
is_ground_content = false,
sunlight_propagates = true,
2022-11-21 16:12:22 -05:00
--[[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,]]
})
2022-11-24 00:51:57 -05:00
-- Items
minetest.register_craftitem(":cops:handcuffs", {
description = "Handcuffs",
wield_image = "cops_handcuffs.png",
inventory_image = "cops_handcuffs.png",
})
minetest.register_craftitem(":cops:badge", {
description = "Police Badge",
wield_image = "cops_badge.png",
inventory_image = "cops_badge.png",
})
minetest.register_craftitem(":cops:baton", {
type = "none",
description = "Baton",
wield_image = "cops_baton.png",
inventory_image = "cops_baton.png",
tool_capabilities = {
max_drop_level = 0,
full_punch_interval = 0.4,
groupcaps =
{
cracky = {times={[4]=.1}, uses=0, maxlevel=4},
},
damage_groups = {fleshy = 5, snappy = 4},
}
})
minetest.register_craftitem(":cops:electric_weapon_broken", {
description = "Broken Electric Weapon",
wield_image = "cops_electric_weapon_broken.png",
inventory_image = "cops_electric_weapon_broken.png",
})
--[[
2022-11-21 16:12:22 -05:00
minetest.register_abm({
nodenames = {"cops:pig_spawner"},
interval = 30,
chance = 5,
2022-11-21 16:12:22 -05:00
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)
2022-11-27 14:08:38 -05:00
if cops.copsSpawned < 25 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
2022-11-21 20:43:08 -05:00
end})
2022-11-21 16:12:22 -05:00
-- Cops
2022-11-24 00:51:57 -05:00
mobs:register_mob(":cops:cop_regular_female", {
2022-11-21 16:12:22 -05:00
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",
},
2022-11-26 13:52:38 -05:00
on_die = function(self, pos)
onCopDie(self, pos)
end,
2022-11-21 16:12:22 -05:00
walk_velocity = 2,
run_velocity = 8,
jump_height = 1,
stepheight = 0,
floats = 0,
view_range = 45,
fall_damage = true,
drops =
{
2022-11-24 00:51:57 -05:00
{name = "cops:baton", chance = 2, min = 0, max = 1},
2022-11-21 16:12:22 -05:00
{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
},
})
2022-11-24 00:51:57 -05:00
mobs:register_mob(":cops:cop_regular_male", {
2022-11-21 16:12:22 -05:00
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",
},
2022-11-26 13:52:38 -05:00
on_die = function(self, pos)
onCopDie(self, pos)
end,
2022-11-21 16:12:22 -05:00
walk_velocity = 2,
run_velocity = 8,
jump_height = 1,
stepheight = 0,
floats = 0,
view_range = 45,
fall_damage = true,
drops =
{
2022-11-24 00:51:57 -05:00
{name = "cops:baton", chance = 2, min = 0, max = 1},
{name = "cops:badge", chance = 4, min = 1, max = 1},
2022-11-21 16:12:22 -05:00
{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
},
})
2022-11-24 00:51:57 -05:00
mobs:register_mob(":cops:cop_armedthug", {
2022-11-21 16:12:22 -05:00
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",
},
2022-11-26 13:52:38 -05:00
on_die = function(self, pos)
onCopDie(self, pos)
end,
2022-11-21 16:12:22 -05:00
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
},
})
2022-11-26 13:52:38 -05:00
onCopDie = function(self, pos)
minetest.set_node(pos, {name = "literal_trash:bloodstain", param2 = 1})
destruction_counter.pigsKilled = destruction_counter.pigsKilled + 1
cops.copsSpawned = cops.copsSpawned - 1
2022-11-27 14:08:38 -05:00
destruction_counter.updateCounter()
2022-11-24 00:51:57 -05:00
end