function stuncommon(damage, activator, caller)
	if activator.m_iTeamNum == caller.m_iTeamNum then
		return
	end
	if damage < 70.0025 or caller.m_bIsMiniBoss == 1 then
		return
	end
	caller:StunPlayer(10, 0.0025, TF_STUNFLAG_BONKSTUCK | TF_STUNFLAG_SLOWDOWN, activator)
end
function OnWaveInit()
	convar.SetValue("tf_mvm_min_players_to_start", 5)
	for _, player in pairs(ents.GetAllPlayers()) do
		player:RemoveAllCallbacks(ON_DAMAGE_RECEIVED_PRE)
		player:RemoveAllCallbacks(ON_DEATH)
		--print("all callbacks removed")
	end
end
function solotest()
	convar.SetValue("tf_mvm_min_players_to_start", 0)
end
function OnGameTick()
	for _, player in pairs (ents.GetAllPlayers()) do
		if player:IsBot() then
			return
		end
		if player:InCond(12) then
			player:AcceptInput("setscriptoverlaymaterial", "effects/combine_binocoverlay")
		elseif player:InCond(65) then
			player:AcceptInput("setscriptoverlaymaterial", "botvision")
		elseif not player:InCond(12) and not player:InCond(65) then
			player:AcceptInput("setscriptoverlaymaterial", "")
		end
	end
end
local function damagecallback(bot)
	bot:AddCallback(ON_DAMAGE_RECEIVED_PRE, function(_, damageinfo)
		--print("bot took damage, callback executed")
		local origin = bot:GetAbsOrigin()
		local angles = bot:GetAbsAngles()
		if damageinfo.Damage < 51 then
			util.ParticleEffect("bot_impact_light", origin, angles, bot)
			--print("bot took less than 51 damage, playing light impact particle")
		end
		if damageinfo.Damage > 51 then
			util.ParticleEffect("bot_impact_heavy", origin, angles, bot)
			--print("bot took more than 50 damage, playing heavy impact particle")
		end
		return true
	end)
	bot:AddCallback(ON_DEATH, function()
		--print("bot died, callbacks removed")
		bot:RemoveAllCallbacks()
	end)
end
function OnWaveSpawnBot(bot)
	bot:SetAttributeValue("increased air control", 5)
	bot:SetAttributeValue("mult duck speed", 3)
	bot:SetAttributeValue("mult credit collect range", 0)
	bot:SetAttributeValue("crit mod disabled", 0)
	bot:AddCond(51, 0.5, nil)
	if bot.m_bIsMiniBoss == 1 then
		bot:SetAttributeValue("damage force increase", 0)
		bot:SetAttributeValue("airblast vulnerability multiplier", 0)
		bot:SetAttributeValue("airblast vertical vulnerability multiplier", 0)
	end
	if bot.m_flModelScale > 1 then
		bot:SetAttributeValue("always gib", 1)
	end
	if bot.m_iTeamNum ~= 3 then
		damagecallback(bot)
	end
end
function heavynoupgrade(_, activator)
	if activator.m_iClass == 6 then
		convar.SetValue("tf_mvm_bot_flag_carrier_interval_to_1st_upgrade", 999999)
		convar.SetValue("tf_mvm_bot_flag_carrier_interval_to_2nd_upgrade", 999999)
		convar.SetValue("tf_mvm_bot_flag_carrier_interval_to_3rd_upgrade", 999999)
	end
end
function clearnoupgrades()
	convar.SetValue("tf_mvm_bot_flag_carrier_interval_to_1st_upgrade", 5)
	convar.SetValue("tf_mvm_bot_flag_carrier_interval_to_2nd_upgrade", 15)
	convar.SetValue("tf_mvm_bot_flag_carrier_interval_to_3rd_upgrade", 15)
end