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,]]
})


-- 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",
})

--[[
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:baton", chance = 2, min = 0, max = 1},
		{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:baton", chance = 2, min = 0, max = 1},
		{name = "cops:badge", chance = 4, min = 1, 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
