--Sawed down version of bot_monochrome_logic.lua, Here so his burst shotgun logic can be used on smaller robots.
local function removeCallbacks(player, callbacks)
	if not IsValid(player) then
		return
	end

	for _, callbackId in pairs(callbacks) do
		player:RemoveCallback(callbackId)
	end
end

function PurpleHeartLogic(_, activator)

	local callbacks = {}

	local terminated = false


	local function terminate()
		if terminated then
			return
		end

		terminated = true

		removeCallbacks(activator, callbacks)

	end
	
	
	callbacks.died = activator:AddCallback(ON_DEATH, function()
		terminate()
	end)
	callbacks.removed = activator:AddCallback(ON_REMOVE, function()
		terminate()
	end)
	callbacks.spawned = activator:AddCallback(ON_SPAWN, function()
		terminate()
	end)
	--used for ability, only does things when check gives it a cond
	callbacks.hurtpre = activator:AddCallback(ON_DAMAGE_RECEIVED_PRE, function(_, damageInfo)
			if activator:InCond(5) == true then
				damageInfo.Damage = damageInfo.Damage * -0.5
				return true
			end
	end)
end