laser beam by nemo reworked a bit by me
authorunc0rr
Mon, 02 Mar 2009 21:13:07 +0000
changeset 1854 6e05013899b2
parent 1853 5618915f9ea4
child 1855 a2a9b8544ecc
laser beam by nemo reworked a bit by me
QTfrontend/hwconsts.cpp.in
hedgewars/HHHandlers.inc
hedgewars/uAIAmmoTests.pas
hedgewars/uConsts.pas
hedgewars/uGears.pas
hedgewars/uLocale.pas
hedgewars/uMisc.pas
hedgewars/uStore.pas
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	Mon Mar 02 17:33:49 2009 +0000
+++ b/QTfrontend/hwconsts.cpp.in	Mon Mar 02 21:13:07 2009 +0000
@@ -29,7 +29,7 @@
 QStringList * Themes;
 QStringList * mapList;
 
-QString * cDefaultAmmoStore = new QString("93919294221991210322351110012011111");
+QString * cDefaultAmmoStore = new QString("939192942219912103223511100120111111");
 
 QColor * color1 = new QColor(221,   0,   0);
 QColor * color2 = new QColor( 67, 118, 233);
--- a/hedgewars/HHHandlers.inc	Mon Mar 02 17:33:49 2009 +0000
+++ b/hedgewars/HHHandlers.inc	Mon Mar 02 21:13:07 2009 +0000
@@ -185,6 +185,7 @@
                       //amInvulnerable: State:= State or gstNoDamage;
                       amInvulnerable: Invulnerable:= true;
                       amExtraTime: TurnTimeLeft:= TurnTimeLeft + 30000;
+                      amLaserSight: cLaserSighting:= true;
                   end;
 
         uStats.AmmoUsed(Ammo^[CurSlot, CurAmmo].AmmoType);
--- a/hedgewars/uAIAmmoTests.pas	Mon Mar 02 17:33:49 2009 +0000
+++ b/hedgewars/uAIAmmoTests.pas	Mon Mar 02 21:13:07 2009 +0000
@@ -79,7 +79,8 @@
 			(proc: nil;              flags: 0), // amLowGravity
 			(proc: nil;              flags: 0), // amExtraDamage
 			(proc: nil;              flags: 0), // amInvulnerable
-			(proc: nil;              flags: 0) // amExtraTime
+			(proc: nil;              flags: 0), // amExtraTime
+			(proc: nil;              flags: 0) // amLaserSight
 			);
 
 const BadTurn = Low(LongInt) div 4;
--- a/hedgewars/uConsts.pas	Mon Mar 02 17:33:49 2009 +0000
+++ b/hedgewars/uConsts.pas	Mon Mar 02 21:13:07 2009 +0000
@@ -83,7 +83,8 @@
 			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, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime);
+			amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill, amBallgun, 
+            amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime, amLaserSight);
 
 	THWFont = (fnt16, fntBig, fntSmall);
 
@@ -1246,6 +1247,26 @@
 			isDamaging: false;
 			SkipTurns: 0;
 			PosCount: 1;
+			PosSprite: sprWater),
+			(NameId: sidLaserSight;
+			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: amLaserSight);
+			Slot: 7;
+			TimeAfterTurn: 0;
+			minAngle: 0;
+			maxAngle: 0;
+			isDamaging: false;
+			SkipTurns: 0;
+			PosCount: 1;
 			PosSprite: sprWater)
 			);
 
--- a/hedgewars/uGears.pas	Mon Mar 02 17:33:49 2009 +0000
+++ b/hedgewars/uGears.pas	Mon Mar 02 21:13:07 2009 +0000
@@ -598,13 +598,13 @@
 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?
-*)
+//Purpose, to reset all transient attributes toggled by a utility.
+//If any of these are set as permanent toggles in the frontend, that needs to be checked and skipped here.
 procedure ResetUtilities;
 begin
     cGravity:= cMaxWindSpeed;
     cDamageModifier:= _1;
+    cLaserSighting:= false;
     if (CurrentHedgehog^.Gear <> nil) then
         CurrentHedgehog^.Gear^.Invulnerable:= false;
 end;
@@ -636,8 +636,8 @@
 procedure DrawHH(Gear: PGear);
 var t: LongInt;
 	amt: TAmmoType;
-	hx, hy, m: LongInt;
-	aAngle, dAngle: real;
+	hx, hy, cx, cy, tx, ty, m: LongInt;
+	lx, ly, dx, dy, aAngle, dAngle: real;
 	defaultPos, HatVisible: boolean;
 begin
 if (Gear^.State and gstHHDeath) <> 0 then
@@ -655,7 +655,7 @@
 			hwSign(Gear^.dX),
 			1,
 			7,
-			0);
+			0, Gear^.Invulnerable);
 	defaultPos:= false
 	end else
 
@@ -665,7 +665,7 @@
 			hwSign(Gear^.dX),
 			2,
 			0,
-			0);
+			0, Gear^.Invulnerable);
 	defaultPos:= false
 	end else
 
@@ -705,7 +705,7 @@
 						m,
 						1,
 						0,
-						DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + dAngle);
+						DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + dAngle, Gear^.Invulnerable);
 				defaultPos:= false
 				end;
 			gtBlowTorch: begin
@@ -714,7 +714,7 @@
 						hwSign(Gear^.dX),
 						3,
 						PHedgehog(Gear^.Hedgehog)^.visStepPos div 2,
-						0);
+						0, Gear^.Invulnerable);
 				defaultPos:= false
 				end;
 			gtShover: DrawRotated(sprHandBaseball, hx, hy, hwSign(Gear^.dX), aangle + 180);
@@ -723,7 +723,7 @@
 						hwSign(Gear^.dX),
 						1,
 						4,
-						0);
+						0, Gear^.Invulnerable);
 				defaultPos:= false
 				end;
 			gtPickHammer,
@@ -743,7 +743,7 @@
 							hwSign(Gear^.dX),
 							1,
 							6,
-							0)
+							0, Gear^.Invulnerable)
 				else
 					DrawRotatedF(sprKamikaze,
 							hwRound(Gear^.X) + WorldDx,
@@ -760,7 +760,7 @@
 							hwSign(Gear^.dX),
 							2,
 							2,
-							0)
+							0, Gear^.Invulnerable)
 				else
 					begin
 					DrawRotatedF(sprDress,
@@ -783,7 +783,7 @@
 						hwSign(Gear^.dX),
 						0,
 						4,
-						0);
+						0, Gear^.Invulnerable);
 				defaultPos:= false
 			end
 		end
@@ -796,13 +796,13 @@
 			- hwSign(Gear^.dX),
 			1,
 			1,
-			0)
+			0, Gear^.Invulnerable)
 		else
 		DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy,
 			hwSign(Gear^.dX),
 			1,
 			1,
-			0);
+			0, Gear^.Invulnerable);
 	defaultPos:= false
 	end else
 
@@ -812,7 +812,7 @@
 			hwSign(Gear^.dX),
 			0,
 			PHedgehog(Gear^.Hedgehog)^.visStepPos div 2,
-			0);
+			0, Gear^.Invulnerable);
 		defaultPos:= false;
 		HatVisible:= true
 		end
@@ -854,18 +854,18 @@
 						hwSign(Gear^.dX),
 						1,
 						2,
-						0);
+						0, Gear^.Invulnerable);
 			amBlowTorch: DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy,
 						hwSign(Gear^.dX),
 						1,
 						3,
-						0);
+						0, Gear^.Invulnerable);
 			amTeleport: DrawRotatedF(sprTeleport, hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, 0, hwSign(Gear^.dX), 0);
 			amKamikaze: DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy,
 						hwSign(Gear^.dX),
 						1,
 						5,
-						0);
+						0, Gear^.Invulnerable);
 			amWhip: DrawRotatedF(sprWhip,
 						hwRound(Gear^.X) + 1 + WorldDx,
 						hwRound(Gear^.Y) - 3 + WorldDy,
@@ -877,12 +877,13 @@
 				hwSign(Gear^.dX),
 				0,
 				4,
-				0);
+				0, Gear^.Invulnerable);
 			
 			HatVisible:= true;
 			with PHedgehog(Gear^.Hedgehog)^ do
 				if (HatTex <> nil)
-				and (HatVisibility > 0) then
+				and (HatVisibility > 0)
+                and (not Gear^.Invulnerable) then
 					DrawTextureF(HatTex,
 						HatVisibility,
 						hwRound(Gear^.X) + 1 + WorldDx,
@@ -909,7 +910,7 @@
 			hwSign(Gear^.dX),
 			2,
 			1,
-			Gear^.DirAngle);
+			Gear^.DirAngle, Gear^.Invulnerable);
 		defaultPos:= false
 		end else
 
@@ -920,13 +921,13 @@
 				- hwSign(Gear^.dX),
 				1,
 				1,
-				0)
+				0, Gear^.Invulnerable)
 			else
 			DrawHedgehog(hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy,
 				hwSign(Gear^.dX),
 				1,
 				1,
-				0);
+				0, Gear^.Invulnerable);
 			defaultPos:= false
 		end;
 	end;
@@ -952,7 +953,7 @@
 		if HatVisibility > 0.0 then
 			HatVisibility:= HatVisibility - 0.2;
 	
-	if (HatTex <> nil)
+	if (HatTex <> nil) and (not Gear^.Invulnerable)
 	and (HatVisibility > 0) then
 		if DefaultPos then
 			DrawTextureF(HatTex,
@@ -1007,12 +1008,67 @@
 				else
 				if ShowCrosshair and ((Gear^.State and (gstAttacked or gstAnimation)) = 0) then
 					begin
+(* These calculations are a little complex for a few reasons:
+   1: I need to draw the laser from weapon origin to nearest land
+   2: I need to start the beam outside the hedgie for attractiveness. 
+      I can't do the calc from there, or it accumulates more error visible in a deagle shot.
+   3: I need to extend the beam beyond land. 
+   This routine perhaps should be pushed into uStore or somesuch instead of continuuing the increase in size of this function.
+   Additionally, using crosshairs, amusingly, makes the laser imprecise to about   0.05% of a deagle shot.  This means that if you are firing across an entire 4096px map your laser will be a few pixels off of the the deagle shot.  This is still a lot more accurate than real laser sights - feel free to change if it bothers you.
+*)
+					if cLaserSighting then
+						begin
+						lx:= hwRound(Gear^.X);
+						ly:= hwRound(Gear^.Y);
+						dx:= hwSign(Gear^.dX) * Sin(Gear^.Angle * pi / cMaxAngle);
+						dy:= - Cos(Gear^.Angle * pi / cMaxAngle);
+						lx:= lx + dx * 16;
+						ly:= ly + dy * 16;
+
+						dx:= dx * 4;
+						dy:= dy * 4;
+
+						tx:= round(lx);
+						ty:= round(ly);
+						hx:= tx;
+						hy:= ty;
+						while ((ty and LAND_HEIGHT_MASK) = 0) and
+							((tx and LAND_WIDTH_MASK) = 0) and
+							(Land[ty, tx] = 0) do
+							begin
+							lx:= lx + dx;
+							ly:= ly + dy;
+							tx:= round(lx);
+							ty:= round(ly)
+							end;
+						// reached edge of land. assume infinite beam. Extend it way out past camera
+						if ((ty and LAND_HEIGHT_MASK) <> 0) or ((tx and LAND_WIDTH_MASK) <> 0) then
+							begin
+							lx:= lx + dx * (LAND_WIDTH div 4);
+							ly:= ly + dy * (LAND_WIDTH div 4)
+							end;
+						
+						//if (abs(lx-tx)>8) or (abs(ly-ty)>8) then
+							begin
+							glDisable(GL_TEXTURE_2D);
+							glEnable(GL_LINE_SMOOTH);
+							glBegin(GL_LINES);
+							glColor4ub($FF, $00, $00, $C0);
+							glVertex2i(hx + WorldDx, hy + WorldDy);
+							glVertex2i(tx + WorldDx, ty + WorldDy);
+							glEnd();
+							glColor4f(1, 1, 1, 1);
+							glEnable(GL_TEXTURE_2D);
+							glDisable(GL_LINE_SMOOTH);
+							end;
+						end;
+					// draw crossahair
 					if ((Gear^.State and gstHHHJump) <> 0) then m:= -1 else m:= 1;
+					cx:= Round(hwRound(Gear^.X) + hwSign(Gear^.dX) * m * Sin(Gear^.Angle*pi/cMaxAngle) * 80);
+					cy:= Round(hwRound(Gear^.Y) - Cos(Gear^.Angle*pi/cMaxAngle) * 80);
 					DrawRotatedTex(Team^.CrosshairTex,
-							12, 12,
-							Round(hwRound(Gear^.X) + hwSign(Gear^.dX) * m * Sin(Gear^.Angle*pi/cMaxAngle) * 80) + WorldDx,
-							Round(hwRound(Gear^.Y) - Cos(Gear^.Angle*pi/cMaxAngle) * 80) + WorldDy, 0,
-							hwSign(Gear^.dX) * (Gear^.Angle * 180.0) / cMaxAngle)
+							12, 12, cx+WorldDx, cy+WorldDy, 0,
+							hwSign(Gear^.dX) * (Gear^.Angle * 180.0) / cMaxAngle);
 					end
 			end
 	end
@@ -1242,9 +1298,11 @@
 						if (Mask and EXPLNoDamage) = 0 then
 							begin
                             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)
+                                begin
+							    inc(Gear^.Damage, dmg);
+							    if Gear^.Kind = gtHedgehog then
+								    AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), dmg, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color);
+                                end;
 							end;
 						if ((Mask and EXPLDoNotTouchHH) = 0) or (Gear^.Kind <> gtHedgehog) then
 							begin
@@ -1286,11 +1344,12 @@
 			gtMine,
 			gtCase,
 			gtTarget: begin
-                    if (not Gear^.Invulnerable) then
+                    if (not t^.Invulnerable) then
+                        begin
 					    inc(t^.Damage, dmg);
-
-					if t^.Kind = gtHedgehog then
-						AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), dmg, PHedgehog(t^.Hedgehog)^.Team^.Clan^.Color);
+					    if t^.Kind = gtHedgehog then
+						    AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), dmg, PHedgehog(t^.Hedgehog)^.Team^.Clan^.Color);
+                        end;
 
 					DeleteCI(t);
 					t^.dX:= t^.dX + Gear^.dX * dmg * _0_01 + SignAs(cHHKick, Gear^.dX);
@@ -1326,10 +1385,13 @@
 			gtTarget,
 			gtCase: begin
 					if (Ammo^.Kind = gtDrill) then begin Ammo^.Timer:= 0; exit; end;
-					inc(t^.ar[i]^.Damage, Damage);
+                    if (not t^.ar[i]^.Invulnerable) then
+                        begin
+					    inc(t^.ar[i]^.Damage, Damage);
 
-					if (t^.ar[i]^.Kind = gtHedgehog) and (Damage > 0) then
-						AddDamageTag(hwRound(t^.ar[i]^.X), hwRound(t^.ar[i]^.Y), Damage, PHedgehog(t^.ar[i]^.Hedgehog)^.Team^.Clan^.Color);
+                        if (t^.ar[i]^.Kind = gtHedgehog) and (Damage > 0) then
+                            AddDamageTag(hwRound(t^.ar[i]^.X), hwRound(t^.ar[i]^.Y), Damage, PHedgehog(t^.ar[i]^.Hedgehog)^.Team^.Clan^.Color);
+                        end;
 
 					DeleteCI(t^.ar[i]);
 					t^.ar[i]^.dX:= Ammo^.dX * Power * _0_01;
--- a/hedgewars/uLocale.pas	Mon Mar 02 17:33:49 2009 +0000
+++ b/hedgewars/uLocale.pas	Mon Mar 02 21:13:07 2009 +0000
@@ -24,7 +24,8 @@
 			sidParachute, sidAirAttack, sidMineStrike, sidBlowTorch,
 			sidGirder, sidTeleport, sidSwitch, sidMortar, sidWhip,
 			sidKamikaze, sidCake, sidSeduction, sidWatermelon,
-			sidHellishBomb, sidDrill, sidBallgun, sidNapalm, sidRCPlane, sidLowGravity, sidExtraDamage, sidInvulnerable, sidExtraTime);
+			sidHellishBomb, sidDrill, sidBallgun, sidNapalm, sidRCPlane, 
+            sidLowGravity, sidExtraDamage, sidInvulnerable, sidExtraTime, sidLaserSight);
 
 	TMsgStrId = (sidStartFight, sidDraw, sidWinner, sidVolume, sidPaused,
 			sidConfirm, sidSuddenDeath);
--- a/hedgewars/uMisc.pas	Mon Mar 02 17:33:49 2009 +0000
+++ b/hedgewars/uMisc.pas	Mon Mar 02 21:13:07 2009 +0000
@@ -97,6 +97,7 @@
 	cWindSpeed,
 	cGravity: hwFloat;
 	cDamageModifier: hwFloat;
+	cLaserSighting: boolean;
 
 	flagMakeCapture: boolean = false;
 
@@ -424,6 +425,7 @@
 cWindSpeed.QWordValue:=     429496;// 0.0001
 cGravity:= cMaxWindSpeed;
 cDamageModifier:= _1;
+cLaserSighting:= false;
 
 {$IFDEF DEBUGFILE}
 {$I-}
--- a/hedgewars/uStore.pas	Mon Mar 02 17:33:49 2009 +0000
+++ b/hedgewars/uStore.pas	Mon Mar 02 21:13:07 2009 +0000
@@ -35,7 +35,7 @@
 procedure DrawRotatedTex(Tex: PTexture; hw, hh, X, Y, Dir: LongInt; Angle: real);
 procedure DrawCentered(X, Top: LongInt; Source: PTexture);
 procedure DrawFromRect(X, Y: LongInt; r: PSDL_Rect; SourceTexture: PTexture);
-procedure DrawHedgehog(X, Y: LongInt; Dir: LongInt; Pos, Step: LongWord; Angle: real);
+procedure DrawHedgehog(X, Y: LongInt; Dir: LongInt; Pos, Step: LongWord; Angle: real; Invulnerable: boolean);
 procedure DrawFillRect(r: TSDL_Rect);
 function  RenderStringTex(s: string; Color: Longword; font: THWFont): PTexture;
 procedure RenderHealth(var Hedgehog: THedgehog);
@@ -496,7 +496,7 @@
 DrawTexture(X - Source^.w div 2, Top, Source)
 end;
 
-procedure DrawHedgehog(X, Y: LongInt; Dir: LongInt; Pos, Step: LongWord; Angle: real);
+procedure DrawHedgehog(X, Y: LongInt; Dir: LongInt; Pos, Step: LongWord; Angle: real; Invulnerable: boolean);
 var l, r, t, b: real;
 begin
 
@@ -522,6 +522,9 @@
 
 glBegin(GL_QUADS);
 
+if Invulnerable then // twiddling the channels a bit. perhaps a pixmap or something would be better.
+    glColor4ub($CC, $FF, $0, $C0);
+
 glTexCoord2f(l, t);
 glVertex2i(-16, -16);
 
@@ -534,7 +537,9 @@
 glTexCoord2f(l, b);
 glVertex2i(-16, 16);
 
+
 glEnd();
+glColor4f(1,1,1,1);
 
 glPopMatrix
 end;
--- a/share/hedgewars/Data/Locale/bg.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/bg.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=Бой!
 01:01=Равен рунд
--- a/share/hedgewars/Data/Locale/cs.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/cs.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=Do boje!
 01:01=Kolo nerozhodně
--- a/share/hedgewars/Data/Locale/de.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/de.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=Auf in die Schlacht!
 01:01=Unentschieden
--- a/share/hedgewars/Data/Locale/en.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/en.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=Let's fight!
 01:01=Round draw
--- a/share/hedgewars/Data/Locale/es.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/es.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=Luchad!
 01:01=Empate
--- a/share/hedgewars/Data/Locale/fi.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/fi.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=Taistelu alkakoon!
 01:01=Tasapeli
--- a/share/hedgewars/Data/Locale/fr.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/fr.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Plus de Dégâts
 00:34=Invulnérable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=C'est parti!
 01:01=Round ex aequo
--- a/share/hedgewars/Data/Locale/it.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/it.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=Combattiamo!
 01:01=Round in parità
--- a/share/hedgewars/Data/Locale/pl.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/pl.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=Walczmy!
 01:01=Remis
--- a/share/hedgewars/Data/Locale/pt-br.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/pt-br.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=Hora de lutar!
 01:01=Partida empatou
--- a/share/hedgewars/Data/Locale/ru.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/ru.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=Вперёд к победе!
 01:01=Ничья
--- a/share/hedgewars/Data/Locale/sk.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/sk.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=Do boja!
 01:01=Remíza
--- a/share/hedgewars/Data/Locale/sv.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/sv.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=Nu kör vi!
 01:01=Oavgjort
--- a/share/hedgewars/Data/Locale/tr.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/tr.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=Savaş başlasın!
 01:01=Beraberlik
--- a/share/hedgewars/Data/Locale/uk.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/uk.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=Уперед до перемоги!
 01:01=Нічия
--- a/share/hedgewars/Data/Locale/zh.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/zh.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -34,6 +34,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=戰鬥開始!
 01:01=平手
--- a/share/hedgewars/Data/Locale/zh_CN.txt	Mon Mar 02 17:33:49 2009 +0000
+++ b/share/hedgewars/Data/Locale/zh_CN.txt	Mon Mar 02 21:13:07 2009 +0000
@@ -36,6 +36,7 @@
 00:33=Extra Damage
 00:34=Invulnerable
 00:35=Extra Time
+00:36=Laser Sight
 
 01:00=战斗啦!
 01:01=平手