4 utilities by nemo
authorunc0rr
Sun, 01 Mar 2009 17:24:25 +0000
changeset 1849 2a989e5abda6
parent 1848 1eb88d41ccc6
child 1850 a0332e79fdc9
4 utilities by nemo
QTfrontend/hwconsts.cpp.in
hedgewars/CCHandlers.inc
hedgewars/GSHandlers.inc
hedgewars/HHHandlers.inc
hedgewars/uAIAmmoTests.pas
hedgewars/uAmmos.pas
hedgewars/uConsts.pas
hedgewars/uGears.pas
hedgewars/uLand.pas
hedgewars/uLandGraphics.pas
hedgewars/uLocale.pas
hedgewars/uMisc.pas
share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png
share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png
share/hedgewars/Data/Locale/bg.txt
share/hedgewars/Data/Locale/cs.txt
share/hedgewars/Data/Locale/de.txt
share/hedgewars/Data/Locale/en.txt
share/hedgewars/Data/Locale/es.txt
share/hedgewars/Data/Locale/fi.txt
share/hedgewars/Data/Locale/fr.txt
share/hedgewars/Data/Locale/it.txt
share/hedgewars/Data/Locale/pl.txt
share/hedgewars/Data/Locale/pt-br.txt
share/hedgewars/Data/Locale/ru.txt
share/hedgewars/Data/Locale/sk.txt
share/hedgewars/Data/Locale/sv.txt
share/hedgewars/Data/Locale/tr.txt
share/hedgewars/Data/Locale/uk.txt
share/hedgewars/Data/Locale/zh.txt
share/hedgewars/Data/Locale/zh_CN.txt
--- a/QTfrontend/hwconsts.cpp.in	Fri Feb 27 21:40:13 2009 +0000
+++ b/QTfrontend/hwconsts.cpp.in	Sun Mar 01 17:24:25 2009 +0000
@@ -29,7 +29,7 @@
 QStringList * Themes;
 QStringList * mapList;
 
-QString * cDefaultAmmoStore = new QString("9391929422199121032235111001201");
+QString * cDefaultAmmoStore = new QString("93919294221991210322351110012011111");
 
 QColor * color1 = new QColor(221,   0,   0);
 QColor * color2 = new QColor( 67, 118, 233);
--- a/hedgewars/CCHandlers.inc	Fri Feb 27 21:40:13 2009 +0000
+++ b/hedgewars/CCHandlers.inc	Sun Mar 01 17:24:25 2009 +0000
@@ -364,14 +364,14 @@
 begin
 if (s[0] <> #1) or CheckNoTeamOrHH then exit;
 
-if TAmmoType(s[1]) > High(TAmmoType) then exit;
+if TAmmoType(LongInt(s[1])-33) > High(TAmmoType) then exit;
 
 if not CurrentTeam^.ExtDriven then SendIPC('w' + s);
 
 with CurrentHedgehog^.Gear^ do
      begin
      Message:= Message or gm_Weapon;
-     MsgParam:= byte(s[1])
+     MsgParam:= byte(LongInt(s[1])-33)
      end
 end;
 
--- a/hedgewars/GSHandlers.inc	Fri Feb 27 21:40:13 2009 +0000
+++ b/hedgewars/GSHandlers.inc	Sun Mar 01 17:24:25 2009 +0000
@@ -40,6 +40,7 @@
 procedure CheckHHDamage(Gear: PGear);
 var dmg: Longword;
 begin
+if(Gear^.Invulnerable) then exit;
 if _0_4 < Gear^.dY then
 	begin
 	if _0_6 < Gear^.dY then
@@ -1704,7 +1705,7 @@
 	while gi <> nil do
 		begin
 		dmg:= cakeDmg * 2 - hwRound(Distance(gi^.X - Gear^.X, gi^.Y - Gear^.Y));
-		if (dmg > 1) and (gi^.Kind = gtHedgehog) then
+		if (dmg > 1) and (gi^.Kind = gtHedgehog) and (not gi^.Invulnerable) then
 			gi^.State:= gi^.State or gstWinner;
 		gi:= gi^.NextGear
 		end;
--- a/hedgewars/HHHandlers.inc	Fri Feb 27 21:40:13 2009 +0000
+++ b/hedgewars/HHHandlers.inc	Sun Mar 01 17:24:25 2009 +0000
@@ -179,6 +179,12 @@
                        amNapalm: AddGear(Ammo^[CurSlot, CurAmmo].Pos, 0, gtAirAttack, 2, _0, _0, 0);
                         amDrill: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtDrill, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0);
                         amBallgun: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun,  0, xx * _0_5, yy * _0_5, 0);
+                      amLowGravity: cGravity:= cMaxWindSpeed / 2;
+                      amExtraDamage: cDamageModifier:= _1_5;
+                      //this flag unfortunately gets cleared too often for true invulnerability, although it seemed like the natural choice
+                      //amInvulnerable: State:= State or gstNoDamage;
+                      amInvulnerable: Invulnerable:= true;
+                      amExtraTime: TurnTimeLeft:= TurnTimeLeft + 30000;
                   end;
 
         uStats.AmmoUsed(Ammo^[CurSlot, CurAmmo].AmmoType);
@@ -193,9 +199,9 @@
            end else begin
            if not CurrentTeam^.ExtDriven and
              ((Ammo^[CurSlot, CurAmmo].Propz and ammoprop_Power) <> 0) then SendIPC('a');
-           AfterAttack
+           AfterAttack;
            end
-        end else Message:= Message and not gm_Attack
+        end else Message:= Message and not gm_Attack;
      end
 end;
 
@@ -204,15 +210,25 @@
 with CurrentHedgehog^.Gear^,
 		CurrentHedgehog^ do
 	begin
-		Inc(AttacksNum);
-		State:= State and not gstAttacking;
-		if (Ammo^[CurSlot, CurAmmo].NumPerTurn >= AttacksNum) or
-		((GameFlags and gfMultiWeapon) <> 0) then isInMultiShoot:= true
-		else begin
-		TurnTimeLeft:= Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].TimeAfterTurn;
-		State:= State or gstAttacked;
-		OnUsedAmmo(CurrentHedgehog^)
-		end;
+	State:= State and not gstAttacking;
+    if ((Ammo^[CurSlot, CurAmmo].Propz) and ammoprop_Utility) = 0 then
+        begin
+        Inc(AttacksNum);
+        if (Ammo^[CurSlot, CurAmmo].NumPerTurn >= AttacksNum) or
+        ((GameFlags and gfMultiWeapon) <> 0) then 
+            isInMultiShoot:= true
+        else 
+            begin
+            TurnTimeLeft:= Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].TimeAfterTurn;
+            State:= State or gstAttacked;
+            OnUsedAmmo(CurrentHedgehog^);
+            end;
+        end
+    else
+       begin
+       OnUsedAmmo(CurrentHedgehog^);
+       ApplyAmmoChanges(CurrentHedgehog^);
+       end;
 	AttackBar:= 0;
 	end
 end;
--- a/hedgewars/uAIAmmoTests.pas	Fri Feb 27 21:40:13 2009 +0000
+++ b/hedgewars/uAIAmmoTests.pas	Sun Mar 01 17:24:25 2009 +0000
@@ -75,7 +75,11 @@
 			(proc: nil;              flags: 0), // amNapalm
 			(proc: nil;              flags: 0),  // amDrill
 			(proc: nil;              flags: 0),  // amBallgun
-			(proc: nil;              flags: 0)  // amRCPlane
+			(proc: nil;              flags: 0), // amRCPlane
+			(proc: nil;              flags: 0), // amLowGravity
+			(proc: nil;              flags: 0), // amExtraDamage
+			(proc: nil;              flags: 0), // amInvulnerable
+			(proc: nil;              flags: 0) // amExtraTime
 			);
 
 const BadTurn = Low(LongInt) div 4;
--- a/hedgewars/uAmmos.pas	Fri Feb 27 21:40:13 2009 +0000
+++ b/hedgewars/uAmmos.pas	Sun Mar 01 17:24:25 2009 +0000
@@ -225,7 +225,7 @@
 
 procedure SetWeapon(weap: TAmmoType);
 begin
-ParseCommand('/setweap ' + char(weap), true)
+ParseCommand('/setweap ' + char(LongInt(weap)+33), true)
 end;
 
 procedure DisableSomeWeapons;
--- a/hedgewars/uConsts.pas	Fri Feb 27 21:40:13 2009 +0000
+++ b/hedgewars/uConsts.pas	Sun Mar 01 17:24:25 2009 +0000
@@ -83,7 +83,7 @@
 			amSkip, amRope, amMine, amDEagle, amDynamite, amFirePunch, amWhip,
 			amBaseballBat, amParachute, amAirAttack, amMineStrike, amBlowTorch,
 			amGirder, amTeleport, amSwitch, amMortar, amKamikaze, amCake,
-			amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill, amBallgun, amRCPlane);
+			amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill, amBallgun, amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime);
 
 	THWFont = (fnt16, fntBig, fntSmall);
 
@@ -220,7 +220,7 @@
 	gmAllStoppable = gm_Left or gm_Right or gm_Up or gm_Down or gm_Attack or gm_Precise;
 
 	cMaxSlotIndex       = 8;
-	cMaxSlotAmmoIndex   = 3;
+	cMaxSlotAmmoIndex   = 4;
 
 	ammoprop_Timerable    = $00000001;
 	ammoprop_Power        = $00000002;
@@ -233,6 +233,7 @@
 	ammoprop_AltAttack    = $00000200;
 	ammoprop_AltUse       = $00000400;
 	ammoprop_NotBorder    = $00000800;
+	ammoprop_Utility      = $00001000;
 
 	AMMO_INFINITE = 9;
 
@@ -1165,6 +1166,86 @@
 			isDamaging: true;
 			SkipTurns: 4;
 			PosCount: 1;
+			PosSprite: sprWater),
+			(NameId: sidLowGravity;
+			NameTex: nil;
+			Probability: 200;
+			NumberInCase: 1;
+			Ammo: (Propz: ammoprop_NoCrosshair or
+						  ammoprop_DontHold or
+                          ammoprop_Utility;
+					Count: 1;
+					NumPerTurn: 0;
+					Timer: 0;
+					Pos: 0;
+					AmmoType: amLowGravity);
+			Slot: 8;
+			TimeAfterTurn: 0;
+			minAngle: 0;
+			maxAngle: 0;
+			isDamaging: false;
+			SkipTurns: 0;
+			PosCount: 1;
+			PosSprite: sprWater),
+			(NameId: sidExtraDamage;
+			NameTex: nil;
+			Probability: 200;
+			NumberInCase: 1;
+			Ammo: (Propz: ammoprop_NoCrosshair or
+						  ammoprop_DontHold or
+                          ammoprop_Utility;
+					Count: 1;
+					NumPerTurn: 0;
+					Timer: 0;
+					Pos: 0;
+					AmmoType: amExtraDamage);
+			Slot: 8;
+			TimeAfterTurn: 0;
+			minAngle: 0;
+			maxAngle: 0;
+			isDamaging: false;
+			SkipTurns: 0;
+			PosCount: 1;
+			PosSprite: sprWater),
+			(NameId: sidInvulnerable;
+			NameTex: nil;
+			Probability: 200;
+			NumberInCase: 1;
+			Ammo: (Propz: ammoprop_NoCrosshair or
+						  ammoprop_DontHold or
+                          ammoprop_Utility;
+					Count: 1;
+					NumPerTurn: 0;
+					Timer: 0;
+					Pos: 0;
+					AmmoType: amInvulnerable);
+			Slot: 8;
+			TimeAfterTurn: 0;
+			minAngle: 0;
+			maxAngle: 0;
+			isDamaging: false;
+			SkipTurns: 0;
+			PosCount: 1;
+			PosSprite: sprWater),
+			(NameId: sidExtraTime;
+			NameTex: nil;
+			Probability: 200;
+			NumberInCase: 1;
+			Ammo: (Propz: ammoprop_NoCrosshair or
+						  ammoprop_DontHold or
+                          ammoprop_Utility;
+					Count: 1;
+					NumPerTurn: 0;
+					Timer: 0;
+					Pos: 0;
+					AmmoType: amExtraTime);
+			Slot: 7;
+			TimeAfterTurn: 0;
+			minAngle: 0;
+			maxAngle: 0;
+			isDamaging: false;
+			SkipTurns: 0;
+			PosCount: 1;
 			PosSprite: sprWater)
 			);
 
--- a/hedgewars/uGears.pas	Fri Feb 27 21:40:13 2009 +0000
+++ b/hedgewars/uGears.pas	Sun Mar 01 17:24:25 2009 +0000
@@ -28,6 +28,7 @@
 	TGear = record
 			NextGear, PrevGear: PGear;
 			Active: Boolean;
+			Invulnerable: Boolean;
 			Ammo : PAmmo;
 			State : Longword;
 			X : hwFloat;
@@ -57,6 +58,7 @@
 
 function  AddGear(X, Y: LongInt; Kind: TGearType; State: Longword; dX, dY: hwFloat; Timer: LongWord): PGear;
 procedure ProcessGears;
+procedure ResetUtilities;
 procedure SetAllToActive;
 procedure SetAllHHToActive;
 procedure DrawGears;
@@ -421,30 +423,34 @@
 
 function CheckNoDamage: boolean; // returns TRUE in case of no damaged hhs
 var Gear: PGear;
+    dmg: LongInt;
 begin
 CheckNoDamage:= true;
 Gear:= GearsList;
 while Gear <> nil do
 	begin
 	if Gear^.Kind = gtHedgehog then
-		if Gear^.Damage <> 0 then
-		begin
-		CheckNoDamage:= false;
-		uStats.HedgehogDamaged(Gear);
+        begin
+		if (Gear^.Damage <> 0) and
+		(not Gear^.Invulnerable) then
+		    begin
+            CheckNoDamage:= false;
+            uStats.HedgehogDamaged(Gear);
+            dmg:= HwRound(int2HwFloat(Gear^.Damage) * cDamageModifier);
+            if Gear^.Health < dmg then
+                Gear^.Health:= 0
+            else
+                dec(Gear^.Health, dmg);
 
-		if Gear^.Health < Gear^.Damage then
-			Gear^.Health:= 0
-		else
-			dec(Gear^.Health, Gear^.Damage);
+            AddGear(hwRound(Gear^.X), hwRound(Gear^.Y) - cHHRadius - 12,
+                    gtHealthTag, dmg, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog;
 
-		AddGear(hwRound(Gear^.X), hwRound(Gear^.Y) - cHHRadius - 12,
-				gtHealthTag, Gear^.Damage, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog;
+            RenderHealth(PHedgehog(Gear^.Hedgehog)^);
+            RecountTeamHealth(PHedgehog(Gear^.Hedgehog)^.Team);
 
-		RenderHealth(PHedgehog(Gear^.Hedgehog)^);
-		RecountTeamHealth(PHedgehog(Gear^.Hedgehog)^.Team);
-
-		Gear^.Damage:= 0
-		end;
+		    end;
+	    Gear^.Damage:= 0;
+        end;
 	Gear:= Gear^.NextGear
 	end;
 end;
@@ -557,6 +563,7 @@
 	stNTurn: begin
 			if isInMultiShoot then isInMultiShoot:= false
 			else begin
+            ResetUtilities;
 			ParseCommand('/nextturn', true);
 			SwitchHedgehog;
 
@@ -591,6 +598,17 @@
 inc(GameTicks)
 end;
 
+(* Purpose, to reset all transient attributes toggled by a utility.  Right now that is just Low Gravity and Extra Damage and Invulnerability.
+Other possibilities include: Laser Sight... more?
+*)
+procedure ResetUtilities;
+begin
+    cGravity:= cMaxWindSpeed;
+    cDamageModifier:= _1;
+    if (CurrentHedgehog^.Gear <> nil) then
+        CurrentHedgehog^.Gear^.Invulnerable:= false;
+end;
+
 procedure SetAllToActive;
 var t: PGear;
 begin
@@ -1223,7 +1241,8 @@
 						//{$IFDEF DEBUGFILE}AddFileLog('Damage: ' + inttostr(dmg));{$ENDIF}
 						if (Mask and EXPLNoDamage) = 0 then
 							begin
-							inc(Gear^.Damage, dmg);
+                            if not Gear^.Invulnerable then
+							   inc(Gear^.Damage, dmg);
 							if Gear^.Kind = gtHedgehog then
 								AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), dmg, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color)
 							end;
@@ -1267,7 +1286,8 @@
 			gtMine,
 			gtCase,
 			gtTarget: begin
-					inc(t^.Damage, dmg);
+                    if (not Gear^.Invulnerable) then
+					    inc(t^.Damage, dmg);
 
 					if t^.Kind = gtHedgehog then
 						AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), dmg, PHedgehog(t^.Hedgehog)^.Team^.Clan^.Color);
--- a/hedgewars/uLand.pas	Fri Feb 27 21:40:13 2009 +0000
+++ b/hedgewars/uLand.pas	Sun Mar 01 17:24:25 2009 +0000
@@ -642,7 +642,12 @@
     for y:= 0 to Pred(tmpsurf^.h) do
         begin
         for x:= 0 to Pred(tmpsurf^.w) do
-            Land[cpY + y, cpX + x]:= p^[x];
+            begin
+            if (($FF000000 and p^[x]) = 0) then  // Tiy was having trouble generating transparent black
+                Land[cpY + y, cpX + x]:= 0
+            else    
+                Land[cpY + y, cpX + x]:= p^[x];
+            end;
         p:= @(p^[tmpsurf^.pitch div 4]);
         end;
   
--- a/hedgewars/uLandGraphics.pas	Fri Feb 27 21:40:13 2009 +0000
+++ b/hedgewars/uLandGraphics.pas	Sun Mar 01 17:24:25 2009 +0000
@@ -135,19 +135,19 @@
 begin
 if ((y + dy) and LAND_HEIGHT_MASK) = 0 then
     for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do 
-        if Land[y + dy, i] <> COLOR_INDESTRUCTIBLE then
+        if Land[y + dy, i] = COLOR_LAND then
             LandPixels[y + dy, i]:= 0;
 if ((y - dy) and LAND_HEIGHT_MASK) = 0 then
     for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do 
-        if Land[y - dy, i] <> COLOR_INDESTRUCTIBLE then
+        if Land[y - dy, i] = COLOR_LAND then
              LandPixels[y - dy, i]:= 0;
 if ((y + dx) and LAND_HEIGHT_MASK) = 0 then
     for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do 
-        if Land[y + dx, i] <> COLOR_INDESTRUCTIBLE then
+        if Land[y + dx, i] = COLOR_LAND then
             LandPixels[y + dx, i]:= 0;
 if ((y - dx) and LAND_HEIGHT_MASK) = 0 then
     for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do 
-        if Land[y - dx, i] <> COLOR_INDESTRUCTIBLE then
+        if Land[y - dx, i] = COLOR_LAND then
              LandPixels[y - dx, i]:= 0;
 end;
 
@@ -191,8 +191,6 @@
 procedure DrawExplosion(X, Y, Radius: LongInt);
 var dx, dy, ty, tx, d: LongInt;
 begin
-FillRoundInLand(X, Y, Radius, 0);
-
   dx:= 0;
   dy:= Radius;
   d:= 3 - 2 * Radius;
@@ -208,6 +206,8 @@
      inc(dx)
      end;
   if (dx = dy) then FillLandCircleLines0(x, y, dx, dy);
+  // FillRoundInLand after erasing land pixels to allow Land 0 check for mask.png to function
+  FillRoundInLand(X, Y, Radius, 0);
   inc(Radius, 4);
   dx:= 0;
   dy:= Radius;
@@ -239,7 +239,7 @@
     begin
     for ty:= max(y - Radius, 0) to min(y + Radius, LAND_HEIGHT) do
         for tx:= max(0, ar^[i].Left - Radius) to min(LAND_WIDTH, ar^[i].Right + Radius) do
-            if Land[ty, tx] <> COLOR_INDESTRUCTIBLE then
+            if Land[ty, tx] = COLOR_LAND then
                 LandPixels[ty, tx]:= 0;
     inc(y, dY)
     end;
--- a/hedgewars/uLocale.pas	Fri Feb 27 21:40:13 2009 +0000
+++ b/hedgewars/uLocale.pas	Sun Mar 01 17:24:25 2009 +0000
@@ -24,7 +24,7 @@
 			sidParachute, sidAirAttack, sidMineStrike, sidBlowTorch,
 			sidGirder, sidTeleport, sidSwitch, sidMortar, sidWhip,
 			sidKamikaze, sidCake, sidSeduction, sidWatermelon,
-			sidHellishBomb, sidDrill, sidBallgun, sidNapalm, sidRCPlane);
+			sidHellishBomb, sidDrill, sidBallgun, sidNapalm, sidRCPlane, sidLowGravity, sidExtraDamage, sidInvulnerable, sidExtraTime);
 
 	TMsgStrId = (sidStartFight, sidDraw, sidWinner, sidVolume, sidPaused,
 			sidConfirm, sidSuddenDeath);
--- a/hedgewars/uMisc.pas	Fri Feb 27 21:40:13 2009 +0000
+++ b/hedgewars/uMisc.pas	Sun Mar 01 17:24:25 2009 +0000
@@ -96,6 +96,7 @@
 	cMaxWindSpeed,
 	cWindSpeed,
 	cGravity: hwFloat;
+	cDamageModifier: hwFloat;
 
 	flagMakeCapture: boolean = false;
 
@@ -422,6 +423,7 @@
 cMaxWindSpeed.QWordValue:= 2147484;// 0.0005
 cWindSpeed.QWordValue:=     429496;// 0.0001
 cGravity:= cMaxWindSpeed;
+cDamageModifier:= _1;
 
 {$IFDEF DEBUGFILE}
 {$I-}
Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png has changed
Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png has changed
--- a/share/hedgewars/Data/Locale/bg.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/bg.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Ballgun
 00:30=Napalm
 00:31=RCPlane
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=Бой!
 01:01=Равен рунд
--- a/share/hedgewars/Data/Locale/cs.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/cs.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Ballgun
 00:30=Napalm
 00:31=RC Letadlo
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=Do boje!
 01:01=Kolo nerozhodně
--- a/share/hedgewars/Data/Locale/de.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/de.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Ballpistole
 00:30=Napalm
 00:31=RC Flugzeug
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=Auf in die Schlacht!
 01:01=Unentschieden
--- a/share/hedgewars/Data/Locale/en.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/en.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Ballgun
 00:30=Napalm
 00:31=RC Plane
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=Let's fight!
 01:01=Round draw
--- a/share/hedgewars/Data/Locale/es.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/es.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Lanzapelotas
 00:30=Napalm
 00:31=Avión teledirigido
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=Luchad!
 01:01=Empate
--- a/share/hedgewars/Data/Locale/fi.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/fi.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Palloase
 00:30=Napalmi
 00:31=Kauko-ohjattava lentokone
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=Taistelu alkakoon!
 01:01=Tasapeli
--- a/share/hedgewars/Data/Locale/fr.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/fr.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Ballgun
 00:30=Napalm
 00:31=Avion télécommandé
+00:32=La Faible Gravité
+00:33=Plus de Dégâts
+00:34=Invulnérable
+00:35=Extra Time
 
 01:00=C'est parti!
 01:01=Round ex aequo
--- a/share/hedgewars/Data/Locale/it.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/it.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Sparapalle
 00:30=Napalm
 00:31=Aereo Radiocomandato
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=Combattiamo!
 01:01=Round in parità
--- a/share/hedgewars/Data/Locale/pl.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/pl.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Pistolet na kulki
 00:30=Napalm
 00:31=Radiowy samolocik
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=Walczmy!
 01:01=Remis
--- a/share/hedgewars/Data/Locale/pt-br.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/pt-br.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Ballgun
 00:30=Napalm
 00:31=RCPlane
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=Hora de lutar!
 01:01=Partida empatou
--- a/share/hedgewars/Data/Locale/ru.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/ru.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Шаромёт
 00:30=Напалм
 00:31=RC самолёт
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=Вперёд к победе!
 01:01=Ничья
--- a/share/hedgewars/Data/Locale/sk.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/sk.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Loptičkový guľomet
 00:30=Napalm
 00:31=Bezpilotný bombardér
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=Do boja!
 01:01=Remíza
--- a/share/hedgewars/Data/Locale/sv.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/sv.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Luftgevär
 00:30=Napalm
 00:31=RCPlane
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=Nu kör vi!
 01:01=Oavgjort
--- a/share/hedgewars/Data/Locale/tr.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/tr.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Top Silahı
 00:30=Napalm
 00:31=Uzaktan Kumandalı Uçak
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=Savaş başlasın!
 01:01=Beraberlik
--- a/share/hedgewars/Data/Locale/uk.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/uk.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Ballgun
 00:30=Napalm
 00:31=RCPlane
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=Уперед до перемоги!
 01:01=Нічия
--- a/share/hedgewars/Data/Locale/zh.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/zh.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -30,6 +30,10 @@
 00:29=Ballgun
 00:30=Napalm
 00:31=RCPlane
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=戰鬥開始!
 01:01=平手
--- a/share/hedgewars/Data/Locale/zh_CN.txt	Fri Feb 27 21:40:13 2009 +0000
+++ b/share/hedgewars/Data/Locale/zh_CN.txt	Sun Mar 01 17:24:25 2009 +0000
@@ -32,6 +32,10 @@
 00:29=Ballgun
 00:30=燃烧弹
 00:31=轰炸机
+00:32=Low Gravity
+00:33=Extra Damage
+00:34=Invulnerable
+00:35=Extra Time
 
 01:00=战斗啦!
 01:01=平手