function init(is_restart)

	-- Initialise arena - backdrop_name, start_pos, is_restart
	init_level("level-human-zoo", CCPoint(-60, -30), is_restart)

end

function onLevelIntro()

	bot_manager.MaxBotsOnScreen = 2

	say("fist", localize("HUMAN_ZOO_INTRO_1"), fistTalk)
	say("fist", localize("HUMAN_ZOO_INTRO_2"), fistTalk)
	say("lumberjack", localize("HUMAN_ZOO_INTRO_3"), talkToFist)
	say("fist", localize("HUMAN_ZOO_INTRO_4"), fistTalk, onLevelIntroEnd)

end

function onAmbush(bIsRestart)

	-- Restart from here
	if (bIsRestart ~= true) then

   		-- Make this a bit harder than the last ambush
		bot_manager.MaxBotsOnScreen = bot_manager.MaxBotsOnScreen + 1

		game_manager:setCheckpoint("onAmbush")
    end

	-- Spawn bad guys
	local bot_descs = {}
	table.insert(bot_descs, game_manager:actorDescWithFile("bib-gruntbear.plist"))
	table.insert(bot_descs, game_manager:actorDescWithFile("warriors-gruntbear.plist"))
	startAmbush(bot_descs, bot_manager.MaxBotsOnScreen * 3)

	return true

end

function onBossAmbush(bIsRestart)

	-- Restart from here
	if (bIsRestart ~= true) then
		game_manager:setCheckpoint("onBossAmbush")
	end

	-- Spawn boss dude & his mates
	local bot_descs = {}
	table.insert(bot_descs, game_manager:actorDescWithFile("bib-gruntbear.plist"))
	boss_id = startLevelBossFight("bib-bear", bot_descs, bIsRestart)

	return true

end

function onLevelBossSpeech()

	say("bib-bear", localize("HUMAN_ZOO_BOSS_1"))
	say("lumberjack", localize("HUMAN_ZOO_BOSS_2"))
	say("bib-bear", localize("HUMAN_ZOO_BOSS_3"))
	say("lumberjack", localize("HUMAN_ZOO_BOSS_4"))
	say("bib-bear", localize("HUMAN_ZOO_BOSS_5"), nil, onLevelBossSpeechEnd)

end

function onAboutToEnterWormhole()

	disconnectControls()

	say("lumberjack", localize("HUMAN_ZOO_OUTRO_1"), talkToFist)
	say("fist", localize("HUMAN_ZOO_OUTRO_2"), fistTalk)
	say("lumberjack", localize("HUMAN_ZOO_OUTRO_3"), talkToFist)
	say("fist", localize("HUMAN_ZOO_OUTRO_4"), fistTalk)
	say("fist", localize("HUMAN_ZOO_OUTRO_5"), connectControls)

	return true

end

function onInfoGareth()

	say("lumberjack", localize("HUMAN_ZOO_GARETH"), onInfoStart, onInfoEnd)
	return true

end

function onInfoJon()

	say("lumberjack", localize("HUMAN_ZOO_JON"), onInfoStart, onInfoEnd)
	return true

end

function onInfoTam()

	say("lumberjack", localize("HUMAN_ZOO_TAM"), onInfoStart, onInfoEnd)
	return true

end

function onInfoGrant()

	say("lumberjack", localize("HUMAN_ZOO_GRANT"), onInfoStart, onInfoEnd)
	return true

end

function onInfoRic()

	say("lumberjack", localize("HUMAN_ZOO_RIC"), onInfoStart, onInfoEnd)
	return true

end

function onInfoIGrowBeards()

	say("lumberjack", localize("HUMAN_ZOO_JUSTIN"), onInfoStart, onInfoEnd)
	return true

end

function onInfoBand()
	say("lumberjack", localize("HUMAN_ZOO_BAND"), onInfoStart, onInfoEnd)
	return true
end

function onInfoMarcus()
	say("lumberjack", localize("HUMAN_ZOO_MARCUS"), onInfoStart, onInfoEnd)
	return true
end

function onInfoBenAndDan()
	say("lumberjack", localize("HUMAN_ZOO_BEN_AND_DAN"), onInfoStart, onInfoEnd)
	return true
end

function onInfoBob()
	if (game_manager:isPlatformType(kTargetGameStick)) then
		say("lumberjack", localize("HUMAN_ZOO_BAWB_MICROCONSOLES"), onInfoStart, onInfoEnd)
	else
		say("lumberjack", localize("HUMAN_ZOO_BAWB_OUYA"), onInfoStart, onInfoEnd)
	end
	return true
end

function  onInfoStart()

	disconnectControls()
	bot_manager:pause()

end

function  onInfoEnd()
	
	-- body
	connectControls(false)
	bot_manager:resume()

end