pt_BR, the return. also fix line ending screwups
authorarrom
Sun, 07 Nov 2010 13:19:55 -0500
changeset 4188 e1bf1b5a301e
parent 4187 adb144a907aa
child 4191 2a92c7f5c058
pt_BR, the return. also fix line ending screwups
share/hedgewars/Data/Locale/hedgewars_pt_BR.ts
share/hedgewars/Data/Maps/Basketball/map.lua
share/hedgewars/Data/Maps/Knockball/map.lua
share/hedgewars/Data/Maps/TrophyRace/map.lua
share/hedgewars/Data/Missions/Campaign/01#Boot Camp.lua
--- a/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts	Sun Nov 07 19:00:41 2010 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts	Sun Nov 07 13:19:55 2010 -0500
@@ -415,9 +415,9 @@
     </message>
     <message numerus="yes">
         <source>(%1 kill)</source>
-        <translation type="unfinished">
+        <translation>
             <numerusform>(%1 morte)</numerusform>
-            <numerusform></numerusform>
+            <numerusform>(%1 mortes)</numerusform>
         </translation>
     </message>
     <message>
@@ -427,22 +427,22 @@
     <message numerus="yes">
         <source>&lt;b&gt;%1&lt;/b&gt; thought it&apos;s good to shoot his own hedgehogs with &lt;b&gt;%2&lt;/b&gt; pts.</source>
         <translation type="unfinished">
-            <numerusform>&lt;b&gt;%1&lt;/b&gt; pensou que era bom atirar na sua própria equipe totalizando &lt;b&gt;%2&lt;/b&gt; pts.</numerusform>
-            <numerusform></numerusform>
+            <numerusform>&lt;b&gt;%1&lt;/b&gt; pensou que era bom atirar na sua própria equipe totalizando &lt;b&gt;%2&lt;/b&gt; ponto.</numerusform>
+            <numerusform>&lt;b&gt;%1&lt;/b&gt; pensou que era bom atirar na sua própria equipe totalizando &lt;b&gt;%2&lt;/b&gt; pontos.</numerusform>
         </translation>
     </message>
     <message numerus="yes">
         <source>&lt;b&gt;%1&lt;/b&gt; killed &lt;b&gt;%2&lt;/b&gt; of his own hedgehogs.</source>
         <translation type="unfinished">
             <numerusform>&lt;b&gt;%1&lt;/b&gt; matou &lt;b&gt;%2&lt;/b&gt; dos próprios ouriços.&lt;/p&gt;.</numerusform>
-            <numerusform></numerusform>
+            <numerusform>&lt;b&gt;%1&lt;/b&gt; matou &lt;b&gt;%2&lt;/b&gt; dos próprios ouriços.&lt;/p&gt;.</numerusform>
         </translation>
     </message>
     <message numerus="yes">
         <source>&lt;b&gt;%1&lt;/b&gt; was scared and skipped turn &lt;b&gt;%2&lt;/b&gt; times.</source>
         <translation type="unfinished">
+            <numerusform>&lt;b&gt;%1&lt;/b&gt; estava assustado e passou o turno &lt;b&gt;%2&lt;/b&gt; vez.&lt;/p&gt;.</numerusform>
             <numerusform>&lt;b&gt;%1&lt;/b&gt; estava assustado e passou o turno &lt;b&gt;%2&lt;/b&gt; vezes.&lt;/p&gt;.</numerusform>
-            <numerusform></numerusform>
         </translation>
     </message>
 </context>
@@ -715,7 +715,7 @@
     <message>
         <source>Want to save ropes? Release the rope in mid air and then shoot again. As long as you don&apos;t touch the ground you&apos;ll reuse your rope without wasting ammo!</source>
         <comment>Tips</comment>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Quer economizar corda? Solte-a quando estiver no meio do ar e então atire de novo. Se você não tocar o solo, você reutilizará a corda e não desperdiçará o seu arsenal!</translation>
     </message>
 </context>
 <context>
--- a/share/hedgewars/Data/Maps/Basketball/map.lua	Sun Nov 07 19:00:41 2010 +0100
+++ b/share/hedgewars/Data/Maps/Basketball/map.lua	Sun Nov 07 13:19:55 2010 -0500
@@ -7,7 +7,8 @@
 	["pl"] = "Hedgewars-Koszykówka",
 	["pt_PT"] = "Hedgewars-Basketball",
 	["sk"] = "Hedgewars-Basketbal",
-	["sv"] = "Hedgewars-Basket"
+	["sv"] = "Hedgewars-Basket",
+	["pt_BR"] = "Hedgewars-Basketball"
 	}
 
 local subcaption = {
@@ -17,7 +18,8 @@
 	["pl"] = "Mecz Nie-Taki-Towarzyski",
 	["pt_PT"] = "Partida não muito amigável",
 	["sk"] = "Nie tak celkom priateľský zápas",
-	["sv"] = "En inte så vänlig match"
+	["sv"] = "En inte så vänlig match",
+	["pt_BR"] = "Partida não muito amigável"
 	}
 
 local goal = {
@@ -27,7 +29,8 @@
 	["pl"] = "Uderzaj swoich przekiwników|wyrzucając przez kosz, poza mapę!",
 	["pt_PT"] = "Bate os teus adversarios|fora do mapa acertando com eles no cesto!",
 	["sk"] = "Odpálkujte vašich súperov do koša|a von z mapy!",
-	["sv"] = "Slå ner dina motståndare i|korgarna och ut ur kartan!"
+	["sv"] = "Slå ner dina motståndare i|korgarna och ut ur kartan!",
+	["pt_BR"] = "Rebata seus oponentes para|fora do mapa através dos cestos!"
 	}
 
 local scored = {
@@ -37,7 +40,8 @@
 	["pl"] = " zdobyła punkt!",
 	["pt_PT"] = " marca um cesto!",
 	["sk"] = " skóruje!",
-	["sv"] = " fick ett poäng"
+	["sv"] = " fick ett poäng",
+	["pt_BR"] = " fez uma cesta"
 	}
 
 local failed = {
@@ -47,7 +51,8 @@
 	["pl"] = " zdobyła punkt karny!",
 	["pt_PT"] = " perde um ponto!",
 	["sk"] = " dostáva trestný bod!",
-	["sv"] = " fick ett straff"
+	["sv"] = " fick ett straff",
+	["pt_BR"] = " sofre uma penalidade"
 	}
 
 	local sscore = {
@@ -57,7 +62,8 @@
 	["pl"] = "Punktacja",
 	["pt_PT"] = "Pontuação",
 	["sk"] = "Skóre",
-	["sv"] = "Poängställning"
+	["sv"] = "Poängställning",
+	["pt_BR"] = "Pontuação"
 	}
 
 local team = {
@@ -66,7 +72,8 @@
 	["pl"] = "Drużyna",
 	["pt_PT"] = "Equipa",
 	["sk"] = "Tím",
-	["sv"] = "Lag"
+	["sv"] = "Lag",
+	["pt_BR"] = "Equipe"
 	}
 
 local drowning = {
@@ -76,7 +83,8 @@
 	["pl"] = "jest wyautowany i",
 	["pt_PT"] = "está fora e",
 	["sk"] = "je mimo hru a",
-	["sv"] = "är ute och"
+	["sv"] = "är ute och",
+	["pt_BR"] = "está fora e"
 	}
 
 local function loc(text)
--- a/share/hedgewars/Data/Maps/Knockball/map.lua	Sun Nov 07 19:00:41 2010 +0100
+++ b/share/hedgewars/Data/Maps/Knockball/map.lua	Sun Nov 07 13:19:55 2010 -0500
@@ -7,7 +7,8 @@
 	["pl"] = "Hedgewars-Knockball",
 	["pt_PT"] = "Hedgewars-Knockball",
 	["sk"] = "Hedgewars-Knockball",
-	["sv"] = "Hedgewars-Knockball"
+	["sv"] = "Hedgewars-Knockball",
+	["pt_BR"] = "Hedgewars-Knockball"
 	}
 
 local subcaption = {
@@ -17,7 +18,8 @@
 	["pl"] = "Mecz Nie-Taki-Towarzyski",
 	["pt_PT"] = "Partida não muito amigável",
 	["sk"] = "Nie tak celkom priateľký zápas",
-	["sv"] = "En inte så vänlig match"
+	["sv"] = "En inte så vänlig match",
+	["pt_BR"] = "Partida não muito amigável"
 	}
 
 local goal = {
@@ -27,7 +29,8 @@
 	["pl"] = "Uderzaj piłkami w swoich przeciwników|i strącaj ich do wody!",
 	["pt_PT"] = "Bate bolas contra os teus|enimigos e empurra-os ao mar!",
 	["sk"] = "Loptami triafajte vašich nepriateľov|a zhoďte ich tak do mora!",
-	["sv"] = "Slå bollar mot dina fiender|och slå ner dem i havet"
+	["sv"] = "Slå bollar mot dina fiender|och slå ner dem i havet",
+	["pt_BR"] = "Rebata as bolas em direção ao seus|e derrube-os no mar!"
 	}
 
 local scored = {
@@ -37,7 +40,8 @@
 	["pl"] = "%s utonął i drużyna %d|zdobyła punkt!| |Punktacja:",
 	["pt_PT"] = "%s está fora e a equipa %d|soma um ponto!| |Pontuação:",
 	["sk"] = "%s je mimo hru a tím %d|získal bod!| |Skóre:",
-	["sv"] = "%s är ute och lag %d|fick ett poäng!| |Poängställning:"
+	["sv"] = "%s är ute och lag %d|fick ett poäng!| |Poängställning:",
+	["pt_BR"] = "%s está fora e a Equipe %d|marcou um ponto!| |Pontuação:"
 	}
 
 local failed = {
@@ -47,7 +51,8 @@
 	["pl"] = "%s utonął i drużyna %d|dostała punkt karny!| |Punktacja:",
 	["pt_PT"] = "%s está fora e a equipa %d|perde um ponto!| |Pontuação:",
 	["sk"] = "%s je mimo hru a tím %d|dostal trestný bod!| |Skóre:",
-	["sv"] = "%s är ute och lag %d|fick ett straff!| |Poängställning:"
+	["sv"] = "%s är ute och lag %d|fick ett straff!| |Poängställning:",
+	["pt_BR"] = "%s está fora e a Equipe %d|sofreu uma penalidade!| |Pontuação:"
 	}
 
 local function loc(text)
--- a/share/hedgewars/Data/Maps/TrophyRace/map.lua	Sun Nov 07 19:00:41 2010 +0100
+++ b/share/hedgewars/Data/Maps/TrophyRace/map.lua	Sun Nov 07 13:19:55 2010 -0500
@@ -1,231 +1,241 @@
--- Hedgewars - Roperace for 2+ Players
-
-local caption = {
-	["en"] = "TrophyRace",
-	["sv"] = "TrophyRace",
-	["pt_PT"] = "TrophyRace",
-	["pl"] = "TrophyRace",
-	["es"] = "TrophyRace"
-	}
-
-local goal = {
-	["en"] = "Use your rope to get from start to finish as fast as you can!",
-	["sv"] = "Använd ditt rep för att ta dig från start till mål så fort som möjligt!",
-	["pt_PT"] = "Utilizando a corda, percorre o percurso do inicio ao fim o mais rápido que conseguires!",
-	["pl"] = "Użyj liny by jak najszybciej dotrzec od startu do mety",
-	["es"] = "¡Usa tu cuerda para llegar a la salida lo más rápido que puedas!"
-	}
-
-local done = {
-	["en"] = "You've reached the goal!| |Time: ",
-	["sv"] = "Du har nått målet!| |Tid: ",
-	["pt_PT"] = "Chegaste ao fim!| |Tempo: ",
-	["pl"] = "Dotarłeś do celu!| |Czas: ",
-	["es"] = "¡Has llegado a la meta!| |Tiempo: "
-	}
-
-local eliminated = {
-	["en"] = "Eliminating worst hedgehog this round...| |%s is OUT!",
-	["sv"] = "Eliminerar sämsta igelkott den här rundan...| |%s är UTE!",
-	["pt_PT"] = "A eliminar o pior ouriço da ronda...| |% está FORA!",
-	["pl"] = "Eliminujemy najgorszego jeża tej rundy...| |%s ODPADŁ!",
-	["es"] = "Eliminando al peor erizo de esta ronda...| |¡%s está FUERA!"
-	}
-
-local newbesttime = {
-	["en"] = "NEW fastest lap: ",
-	["sv"] = "NYTT snabbast varv: ",
-	["pt_PT"] = "NOVA volta recorde: ",
-	["pl"] = "NOWE najszybsze okrążenie: ",
-	["es"] = "NUEVA vuelta rápida: "
-	}
-
-local oldbesttime = {
-	["en"] = "Fastest lap: ",
-	["sv"] = "Snabbast varv: ",
-	["pt_PT"] = "Volta mais rápida: ",
-	["pl"] = "Najszybsze okrążenie: ",
-	["es"] = "Vuelta rápida: "
-	}
-local bestclantimes = {
-	["en"] = "Best laps per team: ",
-	["sv"] = "Bästa varv per lag: ",
-	["pt_PT"] = "Melhores voltas por equipa: ",
-	["pl"] = "Najszybsze okrążenie drużyny: ",
-	["es"] = "Mejores tiempos por equipo: "
-	}
-local clantime = {
-	["en"] = "Team %d: ",
-	["sv"] = "Lag %d: ",
-	["pt_PT"] = "Equipa %d: ",
-	["pl"] = "Drużyna %d: ",
-	["es"] = "Equipo %d"
-	}
-
-	local function loc(text)
-	if text == nil then return "**missing**"
-	elseif text[L] == nil then return text["en"]
-	else return text[L]
-	end
-end
-
----------------------------------------------------------------
-
--- store number of hedgehogs
-local numhhs = 0
-
--- store hedgehog gears
-local hhs = {}
-
--- store best time per team
-local clantimes = {}
-
--- store best times
-local times = {}
-
--- in milisseconds
-local maxtime = 99000
-
--- define start area (left, top, width, height)
-local start_area = {1606, 498, 356, 80}
-
--- define goal area (left, top, width, height)
-local goal_area = {2030, 300, 56, 280}
-
--- last active hog
-local lasthog = nil
-
--- active hog reached the goal?
-local reached = false
-
--- hog with best time
-local besthog = nil
-
--- hog with worst time (per round)
-local worsthog = nil
-
--- best time
-local besttime = maxtime + 1
-
--- worst time (per round)
-local worsttime = 0
-
-function onGameInit()
-	GameFlags = gfSolidLand + gfInvulnerable
-	TurnTime = maxtime
-	CaseFreq = 0
-	MinesNum = 0
-	Explosives = 0
-	Delay = 500
-	SuddenDeathTurns = 99999 -- "disable" sudden death
-	Theme = 'Olympics'
-end
-
-function onGameStart()
-	ShowMission(loc(caption), "", loc(goal), -amRope, 0)
-	started = true
-	p=1820
-	for i = 0, numhhs - 1 do
-	p = p + 50	
-	SetGearPosition(hhs[i], p, 0)
-	end
-	
-	for i=0, ClansCount-1 do
-		clantimes[i] = 0
-	end
-end
-
-function onAmmoStoreInit()
-	SetAmmo(amRope, 9, 2, 0)
-end
-
-function onGameTick()
-	if TurnTimeLeft == 1 and CurrentHedgehog ~= nil then
-		SetHealth(CurrentHedgehog, 0)
-		x, y = GetGearPosition(CurrentHedgehog)
-		AddGear(x, y, gtAmmo_Grenade, 0, 0, 0, 0)
-		worsttime = 99999
-		worsthog = nil
-	elseif TurnTimeLeft == maxtime - 1 and CurrentHedgehog ~= nil then
-		if lasthog ~= nil then 
-		SetGearPosition(lasthog, p , 0)
-		end
-		reached = false
-		SetGearPosition(CurrentHedgehog, start_area[1] + start_area[3] / 2, start_area[2] + start_area[4] / 2)
-	elseif CurrentHedgehog ~= nil then
-		x, y = GetGearPosition(CurrentHedgehog)
-		if not reached and x > goal_area[1] and x < goal_area[1] + goal_area[3] and y > goal_area[2] and y < goal_area[2] + goal_area[4] then -- hog is within goal rectangle
-			reached = true
-			local ttime = maxtime - TurnTimeLeft
-			--give it a sound;)
-			if ttime < besttime then
-				PlaySound (sndHomerun)
-			else
-				PlaySound (sndHellish)
-			end
-			for i = 0, numhhs - 1 do
-				if hhs[i] == CurrentHedgehog then
-					times[numhhs] = ttime
-				end
-			end
-				
-			local hscore = "| |"
-			local clan = GetHogClan(CurrentHedgehog)
-			if ttime < clantimes[clan] or clantimes[clan] == 0 then
-				clantimes[clan] = ttime
-			end
-			
-			if ttime < besttime then
-				besttime = ttime
-				besthog = CurrentHedgehog
-				hscore = hscore .. loc(newbesttime)
-			else
-				hscore = hscore .. loc(oldbesttime)
-			end
-			if ttime > worsttime then
-				worsttime = ttime
-				worsthog = CurrentHedgehog
-			end
-			hscore = hscore .. GetHogName(besthog) .. " - " .. (besttime / 1000) .. " s | |" .. loc(bestclantimes)
-			
-			if clan == ClansCount -1 then
-				-- Time for elimination - worst hog is out and the worst hog vars are reset.
-				SetHealth(worsthog, 0)
-				--Place a grenade to make inactive slowest hog active
-				x, y = GetGearPosition(worsthog)
-				AddGear(x, y, gtShell, 0, 0, 0, 0)
-				worsttime = 0
-				worsthog = nil
-				end
-			
-			for i=0, ClansCount -1 do
-				local tt = "" .. (clantimes[i] / 1000) .. " s"
-				if clantimes[i] == 0 then
-					tt = "--"
-				end
-				hscore = hscore .. "|" .. string.format(loc(clantime), i+1) .. tt
-			end
-			
-			ShowMission(loc(caption), "", loc(done) .. (ttime / 1000) .. " s" .. hscore, 0, 0)
-			TurnTimeLeft = 0
-		end
-	end
-end
-
-function onGearAdd(gear)
-	if GetGearType(gear) == gtHedgehog then
-		hhs[numhhs] = gear
-		times[numhhs] = 0
-		numhhs = numhhs + 1
-	elseif GetGearType(gear) == gtRope then -- rope is shot
-		
-	end
-end
-
-function onGearDelete(gear)
-	if GetGearType(gear) == gtRope then -- rope deletion - hog didn't manage to rerope
-		--TurnTimeLeft = 0 -- end turn or not? hm...
-		lasthog = CurrentHedgehog
-		
-	end
-end
+-- Hedgewars - Roperace for 2+ Players
+
+local caption = {
+	["en"] = "TrophyRace",
+	["sv"] = "TrophyRace",
+	["pt_PT"] = "TrophyRace",
+	["pl"] = "TrophyRace",
+	["es"] = "TrophyRace",
+	["pt_BR"] = "TrophyRace"
+	}
+
+local goal = {
+	["en"] = "Use your rope to get from start to finish as fast as you can!",
+	["sv"] = "Använd ditt rep för att ta dig från start till mål så fort som möjligt!",
+	["pt_PT"] = "Utilizando a corda, percorre o percurso do inicio ao fim o mais rápido que conseguires!",
+	["pl"] = "Użyj liny by jak najszybciej dotrzec od startu do mety",
+	["es"] = "¡Usa tu cuerda para llegar a la salida lo más rápido que puedas!",
+	["pt_BR"] = "Use sua corda para ir do início ao fim o mais rápido que você puder!"
+	}
+
+local done = {
+	["en"] = "You've reached the goal!| |Time: ",
+	["sv"] = "Du har nått målet!| |Tid: ",
+	["pt_PT"] = "Chegaste ao fim!| |Tempo: ",
+	["pl"] = "Dotarłeś do celu!| |Czas: ",
+	["es"] = "¡Has llegado a la meta!| |Tiempo: ",
+	["pt_BR"] = "Você alcançou o objetivo!| |Tempo: "
+	}
+
+local eliminated = {
+	["en"] = "Eliminating worst hedgehog this round...| |%s is OUT!",
+	["sv"] = "Eliminerar sämsta igelkott den här rundan...| |%s är UTE!",
+	["pt_PT"] = "A eliminar o pior ouriço da ronda...| |% está FORA!",
+	["pl"] = "Eliminujemy najgorszego jeża tej rundy...| |%s ODPADŁ!",
+	["es"] = "Eliminando al peor erizo de esta ronda...| |¡%s está FUERA!",
+	["pt_BR"] = "Eliminando o ouriço mais lento...| |%s vai para o chuveiro!"
+	}
+
+local newbesttime = {
+	["en"] = "NEW fastest lap: ",
+	["sv"] = "NYTT snabbast varv: ",
+	["pt_PT"] = "NOVA volta recorde: ",
+	["pl"] = "NOWE najszybsze okrążenie: ",
+	["es"] = "NUEVA vuelta rápida: ",
+	["pt_BR"] = "NOVA volta mais rápida: "
+	}
+
+local oldbesttime = {
+	["en"] = "Fastest lap: ",
+	["sv"] = "Snabbast varv: ",
+	["pt_PT"] = "Volta mais rápida: ",
+	["pl"] = "Najszybsze okrążenie: ",
+	["es"] = "Vuelta rápida: ",
+	["pt_BR"] = "Volta mais rápida: "
+	}
+
+local bestclantimes = {
+	["en"] = "Best laps per team: ",
+	["sv"] = "Bästa varv per lag: ",
+	["pt_PT"] = "Melhores voltas por equipa: ",
+	["pl"] = "Najszybsze okrążenie drużyny: ",
+	["es"] = "Mejores tiempos por equipo: ",
+	["pt_BR"] = "Melhor volta por equipe: "
+	}
+
+local clantime = {
+	["en"] = "Team %d: ",
+	["sv"] = "Lag %d: ",
+	["pt_PT"] = "Equipa %d: ",
+	["pl"] = "Drużyna %d: ",
+	["es"] = "Equipo %d",
+	["pt_BR"] = "Equipe %d: "
+	}
+
+local function loc(text)
+	if text == nil then return "**missing**"
+	elseif text[L] == nil then return text["en"]
+	else return text[L]
+	end
+end
+
+---------------------------------------------------------------
+
+-- store number of hedgehogs
+local numhhs = 0
+
+-- store hedgehog gears
+local hhs = {}
+
+-- store best time per team
+local clantimes = {}
+
+-- store best times
+local times = {}
+
+-- in milisseconds
+local maxtime = 99000
+
+-- define start area (left, top, width, height)
+local start_area = {1606, 498, 356, 80}
+
+-- define goal area (left, top, width, height)
+local goal_area = {2030, 300, 56, 280}
+
+-- last active hog
+local lasthog = nil
+
+-- active hog reached the goal?
+local reached = false
+
+-- hog with best time
+local besthog = nil
+
+-- hog with worst time (per round)
+local worsthog = nil
+
+-- best time
+local besttime = maxtime + 1
+
+-- worst time (per round)
+local worsttime = 0
+
+function onGameInit()
+	GameFlags = gfSolidLand + gfInvulnerable
+	TurnTime = maxtime
+	CaseFreq = 0
+	MinesNum = 0
+	Explosives = 0
+	Delay = 500
+	SuddenDeathTurns = 99999 -- "disable" sudden death
+	Theme = 'Olympics'
+end
+
+function onGameStart()
+	ShowMission(loc(caption), "", loc(goal), -amRope, 0)
+	started = true
+	p=1820
+	for i = 0, numhhs - 1 do
+	p = p + 50	
+	SetGearPosition(hhs[i], p, 0)
+	end
+	
+	for i=0, ClansCount-1 do
+		clantimes[i] = 0
+	end
+end
+
+function onAmmoStoreInit()
+	SetAmmo(amRope, 9, 2, 0)
+end
+
+function onGameTick()
+	if TurnTimeLeft == 1 and CurrentHedgehog ~= nil then
+		SetHealth(CurrentHedgehog, 0)
+		x, y = GetGearPosition(CurrentHedgehog)
+		AddGear(x, y, gtAmmo_Grenade, 0, 0, 0, 0)
+		worsttime = 99999
+		worsthog = nil
+	elseif TurnTimeLeft == maxtime - 1 and CurrentHedgehog ~= nil then
+		if lasthog ~= nil then 
+		SetGearPosition(lasthog, p , 0)
+		end
+		reached = false
+		SetGearPosition(CurrentHedgehog, start_area[1] + start_area[3] / 2, start_area[2] + start_area[4] / 2)
+	elseif CurrentHedgehog ~= nil then
+		x, y = GetGearPosition(CurrentHedgehog)
+		if not reached and x > goal_area[1] and x < goal_area[1] + goal_area[3] and y > goal_area[2] and y < goal_area[2] + goal_area[4] then -- hog is within goal rectangle
+			reached = true
+			local ttime = maxtime - TurnTimeLeft
+			--give it a sound;)
+			if ttime < besttime then
+				PlaySound (sndHomerun)
+			else
+				PlaySound (sndHellish)
+			end
+			for i = 0, numhhs - 1 do
+				if hhs[i] == CurrentHedgehog then
+					times[numhhs] = ttime
+				end
+			end
+				
+			local hscore = "| |"
+			local clan = GetHogClan(CurrentHedgehog)
+			if ttime < clantimes[clan] or clantimes[clan] == 0 then
+				clantimes[clan] = ttime
+			end
+			
+			if ttime < besttime then
+				besttime = ttime
+				besthog = CurrentHedgehog
+				hscore = hscore .. loc(newbesttime)
+			else
+				hscore = hscore .. loc(oldbesttime)
+			end
+			if ttime > worsttime then
+				worsttime = ttime
+				worsthog = CurrentHedgehog
+			end
+			hscore = hscore .. GetHogName(besthog) .. " - " .. (besttime / 1000) .. " s | |" .. loc(bestclantimes)
+			
+			if clan == ClansCount -1 then
+				-- Time for elimination - worst hog is out and the worst hog vars are reset.
+				SetHealth(worsthog, 0)
+				--Place a grenade to make inactive slowest hog active
+				x, y = GetGearPosition(worsthog)
+				AddGear(x, y, gtShell, 0, 0, 0, 0)
+				worsttime = 0
+				worsthog = nil
+				end
+			
+			for i=0, ClansCount -1 do
+				local tt = "" .. (clantimes[i] / 1000) .. " s"
+				if clantimes[i] == 0 then
+					tt = "--"
+				end
+				hscore = hscore .. "|" .. string.format(loc(clantime), i+1) .. tt
+			end
+			
+			ShowMission(loc(caption), "", loc(done) .. (ttime / 1000) .. " s" .. hscore, 0, 0)
+			TurnTimeLeft = 0
+		end
+	end
+end
+
+function onGearAdd(gear)
+	if GetGearType(gear) == gtHedgehog then
+		hhs[numhhs] = gear
+		times[numhhs] = 0
+		numhhs = numhhs + 1
+	elseif GetGearType(gear) == gtRope then -- rope is shot
+		
+	end
+end
+
+function onGearDelete(gear)
+	if GetGearType(gear) == gtRope then -- rope deletion - hog didn't manage to rerope
+		--TurnTimeLeft = 0 -- end turn or not? hm...
+		lasthog = CurrentHedgehog
+		
+	end
+end
--- a/share/hedgewars/Data/Missions/Campaign/01#Boot Camp.lua	Sun Nov 07 19:00:41 2010 +0100
+++ b/share/hedgewars/Data/Missions/Campaign/01#Boot Camp.lua	Sun Nov 07 13:19:55 2010 -0500
@@ -9,7 +9,8 @@
 	["pl"] = "Żótodzioby",
 	["sv"] = "Blodiga nybörjare",
 	["es"] = "Reclutas",
-	["pt_PT"] = "Recrutas"
+	["pt_PT"] = "Recrutas",
+	["pt_BR"] = "Maldito Recrutas"
 }
 
 teamnames[1] = {
@@ -18,7 +19,8 @@
 	["pl"] = "Instruktor",
 	["sv"] = "Instruktör",
 	["es"] = "Instructores",
-	["pt_PT"] = "Instrutores"
+	["pt_PT"] = "Instrutores",
+	["pt_BR"] = "Instrutores"
 }
 
 hognames[0] = {
@@ -27,7 +29,8 @@
 	["pl"] = "Joker",
 	["sv"] = "Joker",
 	["es"] = "Joker",
-	["pt_PT"] = "Joker"
+	["pt_PT"] = "Joker",
+	["pt_BR"] = "Comediante"
 }
 
 hognames[1] = {
@@ -36,7 +39,8 @@
 	["pl"] = "Harthog",
 	["sv"] = "Harthog",
 	["es"] = "Harthog",
-	["pt_PT"] = "Harthog"
+	["pt_PT"] = "Harthog",
+	["pt_BR"] = "Harthog"
 }
 
 local caption = {
@@ -45,7 +49,9 @@
 	["pl"] = "Poligon",
 	["sv"] = "Grundutbildning",
 	["es"] = "Campamento militar",
-	["pt_PT"] = "Acampamento militar"
+	["pt_PT"] = "Acampamento militar",
+	["pt_BR"] = "Acampamento Militar"
+
 }
 
 local subcaption = {
@@ -54,7 +60,8 @@
 	["pl"] = "Wykonuj polecenia!",
 	["sv"] = "Följ instruktioner!",
 	["es"] = "¡Sigue las órdenes!",
-	["pt_PT"] = "Segue as instruções!"
+	["pt_PT"] = "Segue as instruções!",
+	["pt_BR"] = "Siga as ordens!"
 }
 
 local goals = {}
@@ -65,7 +72,8 @@
 	["pl"] = "Słuchaj instruktora i wykonuj jego rozkazy!",
 	["sv"] = "Lyssna på din instruktör och gör som han säger!",
 	["es"] = "¡Escucha atentamente a tu instructor de maniobras y sigue sus órdenes!",
-	["pt_PT"] = "Ouve atentamente o teu Instrutor e segue as suas ordens!"
+	["pt_PT"] = "Ouve atentamente o teu Instrutor e segue as suas ordens!",
+	["pt_BR"] = "Escute seu instrutor de escavação e siga seu líder"
 }
 
 goals[1] = {
@@ -74,7 +82,8 @@
 	["pl"] = "Zniszcz cel by ukończyć misję!",
 	["sv"] = "Förstör målet för att avklara uppdraget!",
 	["es"] = "¡Destruye el objetivo para completar esta misión!",
-	["pt_PT"] = "Destrói o alvo para completar esta missão!"
+	["pt_PT"] = "Destrói o alvo para completar esta missão!",
+	["pt_BR"] = "Destrua o alvo para concluir a missão"
 }
 
 goals[2] = {
@@ -83,7 +92,8 @@
 	["pl"] = "Doskonale! Wyszedłeś cało z poligonu!",
 	["sv"] = "Brilliant! Du har klarat av grundutbildningen!",
 	["es"] = "¡Excelente! ¡Has completado la maniobra de hoy!",
-	["pt_PT"] = "Excelente! Completaste o treino para recrutas!"
+	["pt_PT"] = "Excelente! Completaste o treino para recrutas!",
+	["pt_BR"] = "Excelente! Você completou a manobra"
 }
 
 local failed = {
@@ -92,7 +102,8 @@
 	["pl"] = "Przegrałeś! Wykonuj instrukcje poprawnie i strzelaj tylko w podane cele!",
 	["sv"] = "Du har misslyckats! Följ instruktionerna och sjut endast på målen!",
 	["es"] = "¡Has fallado! ¡Sigue las instrucciones y destruye únicamente el objetivo!",
-	["pt_PT"] = "Falhaste! Segue as instruções e destrói apenas o alvo!"
+	["pt_PT"] = "Falhaste! Segue as instruções e destrói apenas o alvo!",
+	["pt_BR"] = "Você falhou! Siga as instruções e atire somente no alvo"
 }
 
 local drill = {}
@@ -103,7 +114,8 @@
 	["pl"] = "Słuchaj mnie gnido!",
 	["sv"] = "Dåså, din mask!",
 	["es"] = "¡Muy bien, escoria!",
-	["pt_PT"] = "Bom trabalho verme!"
+	["pt_PT"] = "Bom trabalho verme!",
+	["pt_BR"] = "Parabéns escória"
 }
 
 drill[1] = {
@@ -112,7 +124,8 @@
 	["pl"] = "Udowodnij, że nie jesteś bezwartościowy.",
 	["sv"] = "Visa att du inte är så värdelös!",
 	["es"] = "Demuéstrame que no eres tan inútil como pareces.",
-	["pt_PT"] = "Prova-me que não és tão inútil como pareces."
+	["pt_PT"] = "Prova-me que não és tão inútil como pareces.",
+	["pt_BR"] = "Mostre que você não é um inútil."
 }
 
 drill[2] = {
@@ -121,7 +134,8 @@
 	["pl"] = "Użyj [lewo] by poruszyć się w lewą stronę!",
 	["sv"] = "Använd [vänster] för att gå åt vänster!",
 	["es"] = "¡Aprieta [izquierda] para desplazarte a la izquierda!",
-	["pt_PT"] = "Carrega [esquerda] para te moveres para a esquerda!"
+	["pt_PT"] = "Carrega [esquerda] para te moveres para a esquerda!",
+	["pt_BR"] = "Use [esquerda] para mover para a esquerda"
 }
 
 drill[3] = {
@@ -130,7 +144,8 @@
 	["pl"] = "Dobzre, Teraz użyj [prawo] by wrócić!",
 	["sv"] = "Bra! Använd nu [höger] för att gå tillbaka!",
 	["es"] = "¡Muy bien! ¡Ahora presiona [derecha] para volver!",
-	["pt_PT"] = "Muito bem! Agora pressiona [direita] para voltar!"
+	["pt_PT"] = "Muito bem! Agora pressiona [direita] para voltar!",
+	["pt_BR"] = "Bom! Agora use [direita] para voltar"
 }
 
 drill[4] = {
@@ -139,7 +154,8 @@
 	["pl"] = "Wspaniale!",
 	["sv"] = "Utmärkt!",
 	["es"] = "¡Excelente!",
-	["pt_PT"] = "Excelente!"
+	["pt_PT"] = "Excelente!",
+	["pt_BR"] = "Excelente!"
 }
 
 drill[5] = {
@@ -148,7 +164,8 @@
 	["pl"] = "Teraz skocz w lewo używając [Enter]",
 	["sv"] = "Hoppa nu åt vänster med hjälp av [enter]!",
 	["es"] = "¡Ahora salta hacia la izquierda usando [intro]!",
-	["pt_PT"] = "Agora salta para a esquerda pressionando [retrocesso]!"
+	["pt_PT"] = "Agora salta para a esquerda pressionando [retrocesso]!",
+	["pt_BR"] = "Agora pule para a esquerda usando [return"
 }
 
 drill[6] = {
@@ -157,7 +174,8 @@
 	["pl"] = "Użyj klawiszy [góra] i [dół] by celować.",
 	["sv"] = "Använd [upp] och [ner] för att sikta!",
 	["es"] = "Presiora [arriba] y [abajo] para apuntar.",
-	["pt_PT"] = "Pressiona [cima] e [baixo] para apontar."
+	["pt_PT"] = "Pressiona [cima] e [baixo] para apontar.",
+	["pt_BR"] = "Pressione [acima] e [abaixo] para mirar."
 }
 
 drill[7] = {
@@ -166,7 +184,8 @@
 	["pl"] = "Przytrzymaj spację by zwiększyć siłę strzału.",
 	["sv"] = "Håll ner [mellanslag] för att få kraft och släpp för att skjuta!",
 	["es"] = "Mantén presionada la [barra espaciadora] para controlar la fuerza del disparo y suéltala para disparar.",
-	["pt_PT"] = "Mantem a [barra de espaços] pressionada para controlar a força do tiro e larga-a para disparar."
+	["pt_PT"] = "Mantem a [barra de espaços] pressionada para controlar a força do tiro e larga-a para disparar.",
+	["pt_BR"] = "Mantenha pressionado [espaço] para aumentar a força do seu tiro e solte para atirar"
 }
 
 drill[8] = {
@@ -175,7 +194,8 @@
 	["pl"] = "Zniszcz cel by by ukończyć trening podstawowy!",
 	["sv"] = "Förstör målet för att avsluta din grundutbildning!",
 	["es"] = "¡Destruye el objetivo para completar el entrenamiento básico!",
-	["pt_PT"] = "Destrói o alvo para completar o treino básico!"
+	["pt_PT"] = "Destrói o alvo para completar o treino básico!",
+	["pt_BR"] = "Destrua o alvo para terminar o treino básico"
 }
 
 local function loc(text)