-- base_soldierarena

function startup()

	local team = GetTeam(Team.kBlue)
	team:SetClassLimit( Player.kScout, -1 )
	team:SetClassLimit( Player.kSniper, -1 )
	team:SetClassLimit( Player.kSoldier, 0 )
	team:SetClassLimit( Player.kDemoman, 0 )
	team:SetClassLimit( Player.kMedic, -1 )
	team:SetClassLimit( Player.kHwguy, -1 )
	team:SetClassLimit( Player.kPyro, -1 )
	team:SetClassLimit( Player.kSpy, -1 )
	team:SetClassLimit( Player.kEngineer, -1 )
	team:SetClassLimit( Player.kCivilian, -1 )

	team = GetTeam(Team.kRed)
	team:SetClassLimit( Player.kScout, -1 )
	team:SetClassLimit( Player.kSniper, -1 )
	team:SetClassLimit( Player.kSoldier, 0 )
	team:SetClassLimit( Player.kDemoman, 0 )
	team:SetClassLimit( Player.kMedic, -1 )
	team:SetClassLimit( Player.kHwguy, -1 )
	team:SetClassLimit( Player.kPyro, -1 )
	team:SetClassLimit( Player.kSpy, -1 )
	team:SetClassLimit( Player.kEngineer, -1 )
	team:SetClassLimit( Player.kCivilian, -1 )

	team = GetTeam(Team.kYellow)
	team:SetClassLimit( Player.kScout, -1 )
	team:SetClassLimit( Player.kSniper, -1 )
	team:SetClassLimit( Player.kSoldier, 0 )
	team:SetClassLimit( Player.kDemoman, 0 )
	team:SetClassLimit( Player.kMedic, -1 )
	team:SetClassLimit( Player.kHwguy, -1 )
	team:SetClassLimit( Player.kPyro, -1 )
	team:SetClassLimit( Player.kSpy, -1 )
	team:SetClassLimit( Player.kEngineer, -1 )
	team:SetClassLimit( Player.kCivilian, -1 )

	team = GetTeam(Team.kGreen)
	team:SetClassLimit( Player.kScout, -1 )
	team:SetClassLimit( Player.kSniper, -1 )
	team:SetClassLimit( Player.kSoldier, 0 )
	team:SetClassLimit( Player.kDemoman, 0 )
	team:SetClassLimit( Player.kMedic, -1 )
	team:SetClassLimit( Player.kHwguy, -1 )
	team:SetClassLimit( Player.kPyro, -1 )
	team:SetClassLimit( Player.kSpy, -1 )
	team:SetClassLimit( Player.kEngineer, -1 )
	team:SetClassLimit( Player.kCivilian, -1 )

end

function player_spawn( player_id )
	-- 400 for overkill. of course the values
	-- get clamped in game code
	local player = GetPlayer(player_id)
	player:AddHealth( 400 )
	player:AddArmor( 400 )

	player:RemoveAmmo( Ammo.kNails, 400 )
	player:AddAmmo( Ammo.kShells, 400 )
	player:AddAmmo( Ammo.kRockets, 400 )
	player:RemoveAmmo( Ammo.kCells, 400 )
	player:RemoveAmmo( Ammo.kDetpack, 1 )
	player:RemoveAmmo( Ammo.kManCannon, 1 )
	player:RemoveAmmo( Ammo.kGren1, 4 )
	player:RemoveAmmo( Ammo.kGren2, 4 )

	-- Players get 1 gren1
	player:AddAmmo( Ammo.kGren1, 1 )
end

function player_ondamage( player, damageinfo )

	if not player_entity then return end
	if not damageinfo then return end

	local attackerPlayer = CastToPlayer(damageinfo:GetAttacker())
	if not attackerPlayer then return end

	local weapon = damageinfo:GetInflictor():GetClassName()
	local player = CastToPlayer(player_entity)

	-- Don't take rocket, gl/pl damage from ourselves
	if ( player:GetId() == attackerPlayer:GetId() ) then
		
		if ( weapon == "ff_projectile_rocket" ) then
			damageinfo:SetDamage(0);
		-- green pipes
		elseif ( weapon == "ff_projectile_pl" ) then
			damageinfo:SetDamage(0);
		-- blue pipes
		elseif ( weapon == "ff_projectile_gl" ) then
			damageinfo:SetDamage(0);
		end
	end
end

function player_killed( player_id )
	-- If you kill someone, give your team a point
	local killer = GetPlayer(killer)
	local victim = GetPlayer(player_id)
	
	if not (victim:GetTeamId() == killer:GetTeamId()) then
		local killersTeam = killer:GetTeam()
		killersTeam:AddScore(1)
	end
end