--- a/ChangeLog.txt Fri Dec 31 03:22:30 2010 +0100
+++ b/ChangeLog.txt Fri Dec 31 03:29:41 2010 +0100
@@ -25,6 +25,7 @@
+ Reworked management of schemes and weapon sets
+ Will ask before deleting teams, schemes and weapon sets
+ Explosions detach rope from land
+ + Variable rope length in scheme
+ Allow hog speech when not your turn
0.9.13 -> 0.9.14:
--- a/hedgewars/GSHandlers.inc Fri Dec 31 03:22:30 2010 +0100
+++ b/hedgewars/GSHandlers.inc Fri Dec 31 03:29:41 2010 +0100
@@ -233,10 +233,10 @@
AllInactive := false;
Gear^.Y := Gear^.Y + cDrownSpeed;
Gear^.X := Gear^.X + Gear^.dX * cDrownSpeed;
- if (cWaterOpacity > $FE) or (hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater) then
+ if (not SuddenDeathDmg and (cWaterOpacity > $FE)) or (SuddenDeathDmg and (cSDWaterOpacity > $FE)) or (hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater) then
DeleteGear(Gear);
// Create some bubbles (0.5% might be better but causes too few bubbles sometimes)
- if (cWaterOpacity < $FF) and ((GameTicks and $1F) = 0) then
+ if ((not SuddenDeathDmg and (cWaterOpacity < $FF)) or (SuddenDeathDmg and (cSDWaterOpacity < $FF))) and ((GameTicks and $1F) = 0) then
if (Gear^.Kind = gtHedgehog) and (Random(4) = 0) then
AddVisualGear(hwRound(Gear^.X) - Gear^.Radius, hwRound(Gear^.Y) - Gear^.Radius,
vgtBubble)
@@ -563,6 +563,7 @@
move, allpx: Boolean;
s: PSDL_Surface;
p: PLongwordArray;
+ oAlpha, nAlpha: byte;
begin
if GameTicks and $7 = 0 then
begin
@@ -590,49 +591,89 @@
move:= false;
// move back to cloud layer
if yy > cWaterLine then move:= true
- else if ((yy and LAND_HEIGHT_MASK) = 0) and ((xx and LAND_WIDTH_MASK) = 0) and (Land[yy, xx] > 255) then
+ else if ((yy and LAND_HEIGHT_MASK) <> 0) or ((xx and LAND_WIDTH_MASK) <> 0) then move:=true
+ // Solid pixel encountered
+ else if (Land[yy, xx] > 255) then
begin
- // we've collided with land. draw some stuff and get back into the clouds
- move:= true;
- if (CurAmmoGear = nil) or (CurAmmoGear^.Kind <> gtRope) then
+ // If there's room below keep falling
+ if (((yy-1) and LAND_HEIGHT_MASK) = 0) and (Land[yy-1, xx] = 0) then
+ begin
+ X:= X - cWindSpeed * 1600 - dX;
+ end
+ // If there's room below, on the sides, fill the gaps
+ else if (((yy-1) and LAND_HEIGHT_MASK) = 0) and (((xx-(1*hwSign(cWindSpeed))) and LAND_WIDTH_MASK) = 0) and (Land[yy-1, (xx-(1*hwSign(cWindSpeed)))] = 0) then
+ begin
+ X:= X - _0_8 * hwSign(cWindSpeed);
+ Y:= Y - dY - cGravity * vobFallSpeed * 8;
+ end
+ else if (((yy-1) and LAND_HEIGHT_MASK) = 0) and (((xx-(2*hwSign(cWindSpeed))) and LAND_WIDTH_MASK) = 0) and (Land[yy-1, (xx-(2*hwSign(cWindSpeed)))] = 0) then
+ begin
+ X:= X - _0_8 * 2 * hwSign(cWindSpeed);
+ Y:= Y - dY - cGravity * vobFallSpeed * 8;
+ end
+ else if (((yy-1) and LAND_HEIGHT_MASK) = 0) and (((xx+(1*hwSign(cWindSpeed))) and LAND_WIDTH_MASK) = 0) and (Land[yy-1, (xx+(1*hwSign(cWindSpeed)))] = 0) then
+ begin
+ X:= X + _0_8 * hwSign(cWindSpeed);
+ Y:= Y - dY - cGravity * vobFallSpeed * 8;
+ end
+ else if (((yy-1) and LAND_HEIGHT_MASK) = 0) and (((xx+(2*hwSign(cWindSpeed))) and LAND_WIDTH_MASK) = 0) and (Land[yy-1, (xx+(2*hwSign(cWindSpeed)))] = 0) then
+ begin
+ X:= X + _0_8 * 2 * hwSign(cWindSpeed);
+ Y:= Y - dY - cGravity * vobFallSpeed * 8;
+ end
+ else
begin
-////////////////////////////////// TODO - ASK UNC0RR FOR A GOOD HOME FOR THIS ////////////////////////////////////
- if cWindSpeed * 1600 + dX < _0 then i:= -1
- else i:= 1;
- if (yy > 0) and ((Land[yy-1, xx] and $FF00) = 0) then dec(yy)
- else dec(xx, i);
- dec(yy,2);
- dec(xx,i);
- s:= SpritesData[sprSnow].Surface;
- p:= s^.pixels;
- allpx:= true;
- for py:= 0 to Pred(s^.h) do
+ // we've collided with land. draw some stuff and get back into the clouds
+ move:= true;
+ if (CurAmmoGear = nil) or (CurAmmoGear^.Kind <> gtRope) then
begin
- for px:= 0 to Pred(s^.w) do
- if (((yy + py) and LAND_HEIGHT_MASK) = 0) and (((xx + px) and LAND_WIDTH_MASK) = 0) and
- ((Land[yy + py, xx + px] and $FF00) = 0) then
+ ////////////////////////////////// TODO - ASK UNC0RR FOR A GOOD HOME FOR THIS ////////////////////////////////////
+ dec(yy,3);
+ dec(xx,2);
+ s:= SpritesData[sprSnow].Surface;
+ p:= s^.pixels;
+ allpx:= true;
+ for py:= 0 to Pred(s^.h) do
+ begin
+ for px:= 0 to Pred(s^.w) do
+ if (((yy + py) and LAND_HEIGHT_MASK) = 0) and (((xx + px) and LAND_WIDTH_MASK) = 0) then
+ begin
+ if (cReducedQuality and rqBlurryLand) = 0 then
+ begin
+ LandPixels[yy + py, xx + px]:= addBgColor(LandPixels[yy + py, xx + px], p^[px]);
+ Land[yy + py, xx + px]:= Land[yy + py, xx + px] or lfObject;
+ end
+ else
+ begin
+ LandPixels[(yy + py) div 2, (xx + px) div 2]:= addBgColor(LandPixels[(yy + py) div 2, (xx + px) div 2], p^[px]);
+ Land[(yy + py) div 2, (xx + px) div 2]:= Land[(yy + py) div 2, (xx + px) div 2] or lfObject;
+ end;
+ end
+ else allpx:= false;
+ p:= @(p^[s^.pitch shr 2])
+ end;
+
+ for py:= (yy) to (yy+1) do
+ begin
+ for px:= (xx+2) to (xx+3) do
begin
- if (cReducedQuality and rqBlurryLand) = 0 then
- LandPixels[yy + py, xx + px]:= p^[px]
- else
- LandPixels[(yy + py) div 2, (xx + px) div 2]:= p^[px]
- end
- else allpx:= false;
- p:= @(p^[s^.pitch shr 2])
- end;
- if allpx then UpdateLandTexture(xx, 4, yy, 4)
- else if ((yy and LAND_HEIGHT_MASK) = 0) and ((xx and LAND_WIDTH_MASK) = 0) then UpdateLandTexture(xx, 1, yy, 1);
- inc(yy,2);
- inc(xx,i);
- if ((xx and LAND_WIDTH_MASK) = 0) and ((yy and LAND_HEIGHT_MASK) = 0) then Land[yy, xx]:= Land[yy, xx] or lfObject;
- if yy > 0 then
- begin
- Land[yy-1, xx]:= Land[yy-1, xx] or lfObject;
- if ((xx-i and LAND_WIDTH_MASK) = 0) then Land[yy-1, xx-i]:= Land[yy-1, xx-i] or lfObject;
- end;
- if ((xx-i and LAND_WIDTH_MASK) = 0) and ((yy and LAND_HEIGHT_MASK) = 0) then Land[yy, xx-i]:= Land[yy, xx-i] or lfObject
-////////////////////////////////// TODO - ASK UNC0RR FOR A GOOD HOME FOR THIS ////////////////////////////////////
- end
+ Land[py, px]:= lfBasic;
+ end;
+ end;
+
+ if allpx then UpdateLandTexture(xx, Pred(s^.h), yy, Pred(s^.w))
+ else
+ begin
+ UpdateLandTexture(
+ max(0, min(LAND_WIDTH, xx)),
+ min(LAND_WIDTH - xx, Pred(s^.w)),
+ max(0, min(LAND_WIDTH, yy)),
+ min(LAND_HEIGHT - yy, Pred(s^.h))
+ );
+ end;
+ ////////////////////////////////// TODO - ASK UNC0RR FOR A GOOD HOME FOR THIS ////////////////////////////////////
+ end
+ end;
end;
if move then
begin
@@ -851,7 +892,7 @@
dec(Gear^.Health, Gear^.Damage);
Gear^.Damage := 0
end;
- if ((Gear^.State and gstDrowning) <> 0) and (Gear^.Damage < Gear^.Health) and (cWaterOpacity < $FF) then
+ if ((Gear^.State and gstDrowning) <> 0) and (Gear^.Damage < Gear^.Health) and ((not SuddenDeathDmg and (cWaterOpacity < $FF)) or (SuddenDeathDmg and (cSDWaterOpacity < $FF))) then
begin
for i:=(Gear^.Health - Gear^.Damage) * 4 downto 0 do
begin
@@ -2206,14 +2247,16 @@
exit
end;
- if not TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then
- HHGear^.X := HHGear^.X + cWindSpeed * 200;
+ HHGear^.X := HHGear^.X + cWindSpeed * 200;
if (Gear^.Message and gmLeft) <> 0 then HHGear^.X := HHGear^.X - cMaxWindSpeed * 80
else if (Gear^.Message and gmRight) <> 0 then HHGear^.X := HHGear^.X + cMaxWindSpeed * 80;
if (Gear^.Message and gmUp) <> 0 then HHGear^.Y := HHGear^.Y - cGravity * 40
else if (Gear^.Message and gmDown) <> 0 then HHGear^.Y := HHGear^.Y + cGravity * 40;
+ // don't drift into obstacles
+ if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then
+ HHGear^.X := HHGear^.X - int2hwFloat(hwSign(HHGear^.dX));
HHGear^.Y := HHGear^.Y + cGravity * 100;
Gear^.X := HHGear^.X;
Gear^.Y := HHGear^.Y
@@ -2286,9 +2329,13 @@
Gear^.Y := int2hwFloat(topY-300);
Gear^.dX := int2hwFloat(TargetPoint.X - 5 * Gear^.Tag * 15);
- if (int2hwFloat(TargetPoint.Y) - Gear^.Y > _0) then
- Gear^.dX := Gear^.dX - cBombsSpeed * hwSqrt((int2hwFloat(TargetPoint.Y) - Gear^.Y) * 2 /
- cGravity) * Gear^.Tag;
+ // calcs for Napalm Strike, so that it will hit the target (without wind at least :P)
+ if (Gear^.State = 2) then
+ Gear^.dX := Gear^.dX - cBombsSpeed * Gear^.Tag * 1000 // ^.Timer of gtNapalmBomb, make it a constant var if you prefer that :P
+ // calcs for regular falling gears
+ else if (int2hwFloat(TargetPoint.Y) - Gear^.Y > _0) then
+ Gear^.dX := Gear^.dX - cBombsSpeed * hwSqrt((int2hwFloat(TargetPoint.Y) - Gear^.Y) * 2 /
+ cGravity) * Gear^.Tag;
Gear^.Health := 6;
Gear^.doStep := @doStepAirAttackWork;
@@ -2885,6 +2932,9 @@
end;
////////////////////////////////////////////////////////////////////////////////
+procedure doStepDrill(Gear: PGear);
+forward;
+
procedure doStepDrillDrilling(Gear: PGear);
var
t: PGearArray;
@@ -2913,10 +2963,11 @@
if (Gear^.Timer = 0)
or (t^.Count <> 0)
or (not TestCollisionYWithGear(Gear, hwSign(Gear^.dY))
- and not TestCollisionXWithGear(Gear, hwSign(Gear^.dX)))
+ and not TestCollisionXWithGear(Gear, hwSign(Gear^.dX))
+ and ((Gear^.State and gsttmpFlag) = 0))
// CheckLandValue returns true if the type isn't matched
or not CheckLandValue(hwRound(Gear^.X), hwRound(Gear^.Y), lfIndestructible) then
- begin
+ begin
//out of time or exited ground
StopSound(Gear^.SoundChannel);
if (Gear^.State and gsttmpFlag) <> 0 then
@@ -2925,7 +2976,12 @@
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
DeleteGear(Gear);
exit
- end;
+ end
+ else if not TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) and not TestCollisionXWithGear(Gear, hwSign(Gear^.dX)) then
+ begin
+ StopSound(Gear^.SoundChannel);
+ Gear^.doStep := @doStepDrill
+ end;
dec(Gear^.Timer);
end;
@@ -3549,8 +3605,7 @@
////////////////////////////////////////////////////////////////////////////////
procedure doPortalColorSwitch();
-var flags: LongWord;
- CurWeapon: PAmmo;
+var CurWeapon: PAmmo;
begin
if (CurrentHedgehog <> nil)
and (CurrentHedgehog^.Gear <> nil)
@@ -3561,11 +3616,10 @@
CurrentHedgehog^.Gear^.Message := CurrentHedgehog^.Gear^.Message and not gmSwitch;
CurWeapon:= GetAmmoEntry(CurrentHedgehog^);
- flags := CurWeapon^.Timer and not 2;
- if (flags and 1) = 0 then
- CurWeapon^.Timer := flags or 1
+ if CurWeapon^.Pos <> 0 then
+ CurWeapon^.Pos := 0
else
- CurWeapon^.Timer := flags and not 1;
+ CurWeapon^.Pos := 1;
end;
end;
@@ -3834,8 +3888,7 @@
s: hwFloat;
procedure loadNewPortalBall(oldPortal: PGear; destroyGear: Boolean);
-var
- flags: LongWord;
+var
CurWeapon: PAmmo;
begin
if CurrentHedgehog <> nil then
@@ -3844,18 +3897,19 @@
CurWeapon:= GetAmmoEntry(CurrentHedgehog^);
if (CurAmmoType = amPortalGun) then
begin
- flags := CurWeapon^.Timer;
-
- if destroyGear xor ((oldPortal^.Tag and 2) = 0) then
- flags := flags or 1
- else
- flags := flags and not 1;
-
- CurWeapon^.Timer := flags and not 2;
+ if not destroyGear then
+ begin
+ // switch color of ball to opposite of oldPortal
+ if (oldPortal^.Tag and 2) = 0 then
+ CurWeapon^.Pos:= 1
+ else
+ CurWeapon^.Pos:= 0;
+ end;
+
// make the ball visible
+ CurWeapon^.Timer := 0;
end
end;
-
if destroyGear then oldPortal^.Timer:= 0;
end;
@@ -3940,11 +3994,8 @@
newPortal^.Elasticity.isNegative := not newPortal^.Elasticity.isNegative;
// make portal gun look unloaded
- CurWeapon^.Timer := CurWeapon^.Timer or 2;
-
- // set portal to the currently chosen color
- if ((CurWeapon^.Timer and 1) <> 0) then
- newPortal^.Tag := newPortal^.Tag or 2;
+ if (CurWeapon <> nil) and (CurAmmoType = amPortalGun) then
+ CurWeapon^.Timer := CurWeapon^.Timer or 2;
iterator := GearsList;
while iterator <> nil do
--- a/hedgewars/HHHandlers.inc Fri Dec 31 03:22:30 2010 +0100
+++ b/hedgewars/HHHandlers.inc Fri Dec 31 03:29:41 2010 +0100
@@ -223,7 +223,11 @@
amSMine: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtSMine, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0);
amDEagle: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0);
amSineGun: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSineGunShot, 0, xx * _0_5, yy * _0_5, 0);
- amPortalGun: AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6, 0);
+ amPortalGun: begin
+ AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6,
+ // set selected color
+ CurWeapon^.Pos);
+ end;
amSniperRifle: begin
PlaySound(sndSniperReload);
CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0);
--- a/hedgewars/uConsts.pas Fri Dec 31 03:22:30 2010 +0100
+++ b/hedgewars/uConsts.pas Fri Dec 31 03:29:41 2010 +0100
@@ -116,6 +116,7 @@
cCursorEdgesDist : LongInt = 100;
cTeamHealthWidth : LongInt = 128;
cWaterOpacity : byte = $80;
+ cSDWaterOpacity : byte = $80;
cifRandomize = $00000001;
cifTheme = $00000002;
@@ -194,7 +195,7 @@
gfInfAttack = $00100000;
gfResetWeps = $00200000;
gfPerHogAmmo = $00400000;
- gfDisableWind = $00800000; // only lua for now
+ gfDisableWind = $00800000;
gfMoreWind = $01000000;
// NOTE: When adding new game flags, ask yourself
// if a "game start notice" would be useful. If so,
--- a/hedgewars/uGears.pas Fri Dec 31 03:22:30 2010 +0100
+++ b/hedgewars/uGears.pas Fri Dec 31 03:29:41 2010 +0100
@@ -477,7 +477,8 @@
gear^.nImpactSounds:= 1;
gear^.AdvBounce:= 0;
gear^.Radius:= 16;
- gear^.Tag:= 0;
+ // set color
+ gear^.Tag:= 2 * gear^.Timer;
gear^.Timer:= 15000;
gear^.RenderTimer:= false;
gear^.Health:= 100;
@@ -556,7 +557,7 @@
begin
t:= max(Gear^.Damage, Gear^.Health);
Gear^.Damage:= t;
- if (cWaterOpacity < $FF) and (hwRound(Gear^.Y) < cWaterLine + 256) then
+ if ((not SuddenDeathDmg and (cWaterOpacity < $FF)) or (SuddenDeathDmg and (cWaterOpacity < $FF))) and (hwRound(Gear^.Y) < cWaterLine + 256) then
spawnHealthTagForHH(Gear, t);
uStats.HedgehogDamaged(Gear)
end;
@@ -595,6 +596,7 @@
if CurAmmoGear = Gear then CurAmmoGear:= nil;
if FollowGear = Gear then FollowGear:= nil;
+if lastGearByUID = Gear then lastGearByUID := nil;
RemoveGearFromList(Gear);
Dispose(Gear)
end;
@@ -791,9 +793,14 @@
stHealth: begin
if (cWaterRise <> 0) or (cHealthDecrease <> 0) then
begin
- if (TotalRounds = cSuddenDTurns) and not SuddenDeathDmg and not isInMultiShoot then
+ if (TotalRounds = cSuddenDTurns) and not SuddenDeath and not isInMultiShoot then
begin
- SuddenDeathDmg:= true;
+ SuddenDeath:= true;
+ if cHealthDecrease <> 0 then
+ begin
+ SuddenDeathDmg:= true;
+ ChangeToSDClouds
+ end;
AddCaption(trmsg[sidSuddenDeath], cWhiteColor, capgrpGameState);
playSound(sndSuddenDeath);
MusicFN:= SDMusic;
@@ -1778,13 +1785,20 @@
var gear: PGear;
begin
GearByUID:= nil;
+if uid = 0 then exit;
+if (lastGearByUID <> nil) and (lastGearByUID^.uid = uid) then
+ begin
+ GearByUID:= lastGearByUID;
+ exit
+ end;
gear:= GearsList;
while gear <> nil do
begin
if gear^.uid = uid then
begin
- GearByUID:= gear;
- exit
+ lastGearByUID:= gear;
+ GearByUID:= gear;
+ exit
end;
gear:= gear^.NextGear
end
@@ -1832,7 +1846,7 @@
if (x < 4) and (TeamsArray[t] <> nil) then
begin
// if team matches current hedgehog team, default to current hedgehog
- if (i = 0) and (CurrentHedgehog^.Team = TeamsArray[t]) then hh:= CurrentHedgehog
+ if (i = 0) and (CurrentHedgehog <> nil) and (CurrentHedgehog^.Team = TeamsArray[t]) then hh:= CurrentHedgehog
else
begin
// otherwise use the first living hog or the hog amongs the remaining ones indicated by i
@@ -1849,12 +1863,15 @@
inc(j)
end
end;
- if hh <> nil then Gear:= AddVisualGear(0, 0, vgtSpeechBubble);
- if Gear <> nil then
+ if hh <> nil then
begin
- Gear^.Hedgehog:= hh;
- Gear^.Text:= text;
- Gear^.FrameTicks:= x
+ Gear:= AddVisualGear(0, 0, vgtSpeechBubble);
+ if Gear <> nil then
+ begin
+ Gear^.Hedgehog:= hh;
+ Gear^.Text:= text;
+ Gear^.FrameTicks:= x
+ end
end
//else ParseCommand('say ' + text, true)
end
@@ -1873,6 +1890,7 @@
CurAmmoGear:= nil;
GearsList:= nil;
KilledHHs:= 0;
+ SuddenDeath:= false;
SuddenDeathDmg:= false;
SpeechType:= 1;
TrainingTargetGear:= nil;
--- a/hedgewars/uGearsRender.pas Fri Dec 31 03:22:30 2010 +0100
+++ b/hedgewars/uGearsRender.pas Fri Dec 31 03:29:41 2010 +0100
@@ -555,7 +555,7 @@
amPortalGun: if (CurWeapon^.Timer and 2) <> 0 then // Add a new Hedgehog value instead of abusing timer?
DrawRotatedF(sprPortalGun, hx, hy, 0, sign, aangle)
else
- DrawRotatedF(sprPortalGun, hx, hy, 1+(CurWeapon^.Timer and 1), sign, aangle);
+ DrawRotatedF(sprPortalGun, hx, hy, 1+CurWeapon^.Pos, sign, aangle);
amSniperRifle: DrawRotatedF(sprSniperRifle, hx, hy, 0, sign, aangle);
amBlowTorch: DrawRotated(sprHandBlowTorch, hx, hy, sign, aangle);
amCake: DrawRotated(sprHandCake, hx, hy, sign, aangle);
--- a/hedgewars/uLandGraphics.pas Fri Dec 31 03:22:30 2010 +0100
+++ b/hedgewars/uLandGraphics.pas Fri Dec 31 03:29:41 2010 +0100
@@ -27,6 +27,7 @@
Left, Right: LongInt;
end;
+function addBgColor(OldColor, NewColor: LongWord): LongWord;
function SweepDirty: boolean;
function Despeckle(X, Y: LongInt): boolean;
function CheckLandValue(X, Y: LongInt; LandFlag: Word): boolean;
@@ -42,6 +43,31 @@
implementation
uses SDLh, uLandTexture, uVariables, uUtils, uDebug;
+function addBgColor(OldColor, NewColor: LongWord): LongWord;
+// Factor ranges from 0 to 100% NewColor
+var
+ oRed, oBlue, oGreen, oAlpha, nRed, nBlue, nGreen, nAlpha: Byte;
+begin
+ // Get colors
+ oAlpha := (OldColor shr 24) and $FF;
+ oRed := (OldColor shr 16) and $FF;
+ oGreen := (OldColor shr 8) and $FF;
+ oBlue := (OldColor) and $FF;
+
+ nAlpha := (NewColor shr 24) and $FF;
+ nRed := (NewColor shr 16) and $FF;
+ nGreen := (NewColor shr 8) and $FF;
+ nBlue := (NewColor) and $FF;
+
+ // Mix colors
+ nAlpha := min(255, oAlpha + nAlpha);
+ nRed := ((oRed * oAlpha) + (nRed * (255-oAlpha))) div 255;
+ nGreen := ((oGreen * oAlpha) + (nGreen * (255-oAlpha))) div 255;
+ nBlue := ((oBlue * oAlpha) + (nBlue * (255-oAlpha))) div 255;
+
+ addBgColor := (nAlpha shl 24) or (nRed shl 16) or (nGreen shl 8) or (nBlue);
+end;
+
procedure FillCircleLines(x, y, dx, dy: LongInt; Value: Longword);
var i: LongInt;
begin
--- a/hedgewars/uLandObjects.pas Fri Dec 31 03:22:30 2010 +0100
+++ b/hedgewars/uLandObjects.pas Fri Dec 31 03:29:41 2010 +0100
@@ -30,7 +30,7 @@
implementation
uses uStore, uConsts, uConsole, uRandom, uVisualGears, uSound, GLunit,
- uTypes, uVariables, uUtils, uDebug;
+ uTypes, uVariables, uUtils, uDebug, sysutils;
const MaxRects = 512;
MAXOBJECTRECTS = 16;
@@ -366,7 +366,7 @@
end;
procedure ReadThemeInfo(var ThemeObjects: TThemeObjects; var SprayObjects: TSprayObjects);
-var s: shortstring;
+var s, key: shortstring;
f: textfile;
i, ii, numFlakes: LongInt;
c1, c2: TSDL_Color;
@@ -388,77 +388,189 @@
filemode:= 0; // readonly
Reset(f);
-// read sky and explosion border colors
-Readln(f, c1.r, c1.g, c1. b);
-Readln(f, c2.r, c2.g, c2. b);
-// read water gradient colors
-Readln(f, WaterColorArray[0].r, WaterColorArray[0].g, WaterColorArray[0].b);
-Readln(f, WaterColorArray[2].r, WaterColorArray[2].g, WaterColorArray[2].b, cWaterOpacity);
-WaterColorArray[0].a := 255;
-WaterColorArray[2].a := 255;
-WaterColorArray[1]:= WaterColorArray[0];
-WaterColorArray[3]:= WaterColorArray[2];
+ThemeObjects.Count:= 0;
+SprayObjects.Count:= 0;
-glClearColor(c1.r / 255, c1.g / 255, c1.b / 255, 0.99); // sky color
-cExplosionBorderColor:= c2.value or AMask;
+while not eof(f) do
+ begin
+ Readln(f, s);
+ if Length(s) = 0 then continue;
+ if s[1] = ';' then continue;
+
+ i:= Pos('=', s);
+ key:= Trim(Copy(s, 1, i - 1));
+ Delete(s, 1, i);
-ReadLn(f, s);
-if MusicFN = '' then MusicFN:= s;
-
-ReadLn(f, cCloudsNumber);
-
-// TODO - adjust all the theme cloud numbers. This should not be a permanent fix
-//cCloudsNumber:= cCloudsNumber * (LAND_WIDTH div 2048);
-
-// scale number of clouds depending on screen space (two times land width)
-cCloudsNumber:= cCloudsNumber * cScreenSpace div LAND_WIDTH;
-
-Readln(f, ThemeObjects.Count);
-for i:= 0 to Pred(ThemeObjects.Count) do
- begin
- Readln(f, s); // filename
- with ThemeObjects.objs[i] do
+ if key = 'sky' then
+ begin
+ i:= Pos(',', s);
+ c1.r:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ c1.g:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ c1.b:= StrToInt(Trim(s));
+ glClearColor(c1.r / 255, c1.g / 255, c1.b / 255, 0.99);
+ end
+ else if key = 'border' then
+ begin
+ i:= Pos(',', s);
+ c2.r:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ c2.g:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ c2.b:= StrToInt(Trim(s));
+ cExplosionBorderColor:= c2.value or AMask;
+ end
+ else if key = 'water-top' then
+ begin
+ i:= Pos(',', s);
+ WaterColorArray[0].r:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ WaterColorArray[0].g:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ WaterColorArray[0].b:= StrToInt(Trim(s));
+ WaterColorArray[0].a := 255;
+ WaterColorArray[1]:= WaterColorArray[0];
+ end
+ else if key = 'water-bottom' then
+ begin
+ i:= Pos(',', s);
+ WaterColorArray[2].r:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ WaterColorArray[2].g:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ WaterColorArray[2].b:= StrToInt(Trim(s));
+ WaterColorArray[2].a := 255;
+ WaterColorArray[3]:= WaterColorArray[2];
+ end
+ else if key = 'water-opacity' then cWaterOpacity:= StrToInt(Trim(s))
+ else if key = 'music' then MusicFN:= Trim(s)
+ else if key = 'clouds' then
+ begin
+ cCloudsNumber:= StrToInt(Trim(s)) * cScreenSpace div LAND_WIDTH;
+ cSDCloudsNumber:= cCloudsNumber
+ end
+ else if key = 'object' then
+ begin
+ inc(ThemeObjects.Count);
+ with ThemeObjects.objs[Pred(ThemeObjects.Count)] do
begin
- Surf:= LoadImage(Pathz[ptCurrTheme] + '/' + s, ifCritical or ifTransparent or ifIgnoreCaps);
+ i:= Pos(',', s);
+ Surf:= LoadImage(Pathz[ptCurrTheme] + '/' + Trim(Copy(s, 1, i - 1)), ifCritical or ifTransparent or ifIgnoreCaps);
Width:= Surf^.w;
Height:= Surf^.h;
- Read(f, Maxcnt);
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ Maxcnt:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
if (Maxcnt < 1) or (Maxcnt > MAXTHEMEOBJECTS) then OutError('Object''s max count should be between 1 and '+ inttostr(MAXTHEMEOBJECTS) +' (it was '+ inttostr(Maxcnt) +').', true);
with inland do
begin
- Read(f, x, y, w, h);
+ i:= Pos(',', s);
+ x:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ y:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ w:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ h:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
CheckRect(Width, Height, x, y, w, h)
end;
- Read(f, rectcnt);
+ i:= Pos(',', s);
+ rectcnt:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
for ii:= 1 to rectcnt do
with outland[ii] do
begin
- Read(f, x, y, w, h);
+ i:= Pos(',', s);
+ x:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ y:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ w:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ if ii = rectcnt then h:= StrToInt(Trim(s))
+ else
+ begin
+ i:= Pos(',', s);
+ h:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i)
+ end;
CheckRect(Width, Height, x, y, w, h)
end;
- ReadLn(f)
+ end;
+ end
+ else if key = 'spray' then
+ begin
+ inc(SprayObjects.Count);
+ with SprayObjects.objs[Pred(SprayObjects.Count)] do
+ begin
+ i:= Pos(',', s);
+ Surf:= LoadImage(Pathz[ptCurrTheme] + '/' + Trim(Copy(s, 1, i - 1)), ifCritical or ifTransparent or ifIgnoreCaps);
+ Width:= Surf^.w;
+ Height:= Surf^.h;
+ Delete(s, 1, i);
+ Maxcnt:= StrToInt(Trim(s));
end;
+ end
+ else if key = 'flakes' then
+ begin
+ i:= Pos(',', s);
+ vobCount:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ if vobCount > 0 then
+ begin
+ i:= Pos(',', s);
+ vobFramesCount:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ vobFrameTicks:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ vobVelocity:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ vobFallSpeed:= StrToInt(Trim(s));
+ end;
+ end
+ else if key = 'sd-water-top' then
+ begin
+ i:= Pos(',', s);
+ SDWaterColorArray[0].r:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ SDWaterColorArray[0].g:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ SDWaterColorArray[0].b:= StrToInt(Trim(s));
+ SDWaterColorArray[0].a := 255;
+ SDWaterColorArray[1]:= SDWaterColorArray[0];
+ end
+ else if key = 'sd-water-bottom' then
+ begin
+ i:= Pos(',', s);
+ SDWaterColorArray[2].r:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ SDWaterColorArray[2].g:= StrToInt(Trim(Copy(s, 1, i - 1)));
+ Delete(s, 1, i);
+ SDWaterColorArray[2].b:= StrToInt(Trim(s));
+ SDWaterColorArray[2].a := 255;
+ SDWaterColorArray[3]:= SDWaterColorArray[2];
+ end
+ else if key = 'sd-water-opacity' then cSDWaterOpacity:= StrToInt(Trim(s))
+ else if key = 'sd-clouds' then cSDCloudsNumber:= StrToInt(Trim(s)) * cScreenSpace div LAND_WIDTH
+ else if key = 'sd-flakes' then continue //TODO: make :P
end;
-// sprays
-Readln(f, SprayObjects.Count);
-for i:= 0 to Pred(SprayObjects.Count) do
- begin
- Readln(f, s); // filename
- with SprayObjects.objs[i] do
- begin
- Surf:= LoadImage(Pathz[ptCurrTheme] + '/' + s, ifCritical or ifTransparent or ifIgnoreCaps);
- Width:= Surf^.w;
- Height:= Surf^.h;
- ReadLn(f, Maxcnt)
- end;
- end;
-
-// snowflakes
-Readln(f, vobCount);
-if vobCount > 0 then
- Readln(f, vobFramesCount, vobFrameTicks, vobVelocity, vobFallSpeed);
-
// adjust amount of flakes scaled by screen space
vobCount:= longint(vobCount);
numFlakes:= vobCount * cScreenSpace div LAND_WIDTH;
--- a/hedgewars/uScript.pas Fri Dec 31 03:22:30 2010 +0100
+++ b/hedgewars/uScript.pas Fri Dec 31 03:29:41 2010 +0100
@@ -272,6 +272,7 @@
t:= lua_tointeger(L, 7);
gear:= AddGear(x, y, gt, s, dx, dy, t);
+ lastGearByUID:= gear;
lua_pushinteger(L, gear^.uid)
end;
lc_addgear:= 1; // 1 return value
@@ -311,8 +312,12 @@
s:= lua_tointeger(L, 4);
c:= lua_toboolean(L, 5);
- vg:= AddVisualGear(x, y, vgt, s, c);
- if vg <> nil then lua_pushinteger(L, vg^.uid)
+ vg:= AddVisualGear(x, y, vgt, s, c);
+ if vg <> nil then
+ begin
+ lastVisualGearByUID:= vg;
+ lua_pushinteger(L, vg^.uid)
+ end
else lua_pushinteger(L, 0)
end;
lc_addvisualgear:= 1; // 1 return value
@@ -358,6 +363,11 @@
lua_pushinteger(L, vg^.Timer);
lua_pushinteger(L, vg^.Tint);
end
+ else
+ begin
+ lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L);
+ lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L)
+ end
end;
lc_getvisualgearvalues:= 10;
end;
--- a/hedgewars/uStore.pas Fri Dec 31 03:22:30 2010 +0100
+++ b/hedgewars/uStore.pas Fri Dec 31 03:29:41 2010 +0100
@@ -274,7 +274,7 @@
for ii:= Low(TSprite) to High(TSprite) do
with SpritesData[ii] do
// FIXME - add a sprite attribute
- if ((cReducedQuality and rqNoBackground) = 0) or (not (ii in [sprSky, sprSkyL, sprSkyR, sprHorizont, sprHorizontL, sprHorizontR, sprFlake, sprSplash, sprDroplet])) then // FIXME: hack
+ if ((cReducedQuality and rqNoBackground) = 0) or (not (ii in [sprSky, sprSkyL, sprSkyR, sprHorizont, sprHorizontL, sprHorizontR, sprFlake, sprSplash, sprDroplet, sprSDSplash, sprSDDroplet]) or (((Theme = 'Snow') or (Theme = 'Christmas')) and ((ii = sprFlake) or (ii = sprSDFlake)))) then // FIXME: hack
begin
if AltPath = ptNone then
if ii in [sprHorizontL, sprHorizontR, sprSkyL, sprSkyR] then // FIXME: hack
--- a/hedgewars/uTypes.pas Fri Dec 31 03:22:30 2010 +0100
+++ b/hedgewars/uTypes.pas Fri Dec 31 03:29:41 2010 +0100
@@ -52,7 +52,8 @@
sprCheese, sprHandCheese, sprHandFlamethrower, sprChunk, sprNote,
sprSMineOff, sprSMineOn, sprHandSMine, sprHammer,
sprHandResurrector, sprCross, sprAirDrill, sprNapalmBomb,
- sprBulletHit, sprSnowball, sprHandSnowball, sprSnow, sprSDFlake, sprSDWater
+ sprBulletHit, sprSnowball, sprHandSnowball, sprSnow,
+ sprSDFlake, sprSDWater, sprSDCloud, sprSDSplash, sprSDDroplet
);
// Gears that interact with other Gears and/or Land
--- a/hedgewars/uVariables.pas Fri Dec 31 03:22:30 2010 +0100
+++ b/hedgewars/uVariables.pas Fri Dec 31 03:29:41 2010 +0100
@@ -66,6 +66,7 @@
cHealthDecrease : LongInt;
cCloudsNumber : LongInt;
+ cSDCloudsNumber : LongInt;
cTagsMask : byte;
zoom : GLfloat;
@@ -562,10 +563,16 @@
Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSnowball
(FileName: 'Snow'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil;
Width: 4; Height: 4; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSnow
- (FileName: 'Flake'; Path: ptSuddenDeath; AltPath: ptNone; Texture: nil; Surface: nil;
+ (FileName: 'SDFlake'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil;
Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSDFlake
- (FileName: 'BlueWater'; Path: ptSuddenDeath; AltPath: ptNone; Texture: nil; Surface: nil;
- Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: true; getImageDimensions: true) // sprSDWater
+ (FileName: 'SDWater'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil;
+ Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: true; getImageDimensions: true),// sprSDWater
+ (FileName: 'SDClouds'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil;
+ Width: 256; Height:128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprSDCloud
+ (FileName: 'SDSplash'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil;
+ Width: 80; Height: 50; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSDSplash
+ (FileName: 'SDDroplet'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil;
+ Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true)// sprSDDroplet
);
@@ -2038,10 +2045,12 @@
LandBackSurface: PSDL_Surface;
digest: shortstring;
CurAmmoGear: PGear;
+ lastGearByUID: PGear;
GearsList: PGear;
AllInactive: boolean;
PrvInactive: boolean;
KilledHHs: Longword;
+ SuddenDeath: Boolean;
SuddenDeathDmg: Boolean;
SpeechType: Longword;
SpeechText: shortstring;
@@ -2095,6 +2104,7 @@
VisualGearsList: PVisualGear;
+ lastVisualGearByUID: PVisualGear;
vobFrameTicks, vobFramesCount, vobCount: Longword;
vobVelocity, vobFallSpeed: LongInt;
@@ -2151,6 +2161,9 @@
procedure initModule;
begin
+ lastVisualGearByUID:= nil;
+ lastGearByUID:= nil;
+
Pathz:= cPathz;
{* REFERENCE
4096 -> $FFFFF000
@@ -2158,27 +2171,27 @@
1024 -> $FFFFFC00
512 -> $FFFFFE00 *}
if (cReducedQuality and rqLowRes) <> 0 then
- begin
+ begin
LAND_WIDTH:= 2048;
LAND_HEIGHT:= 1024;
LAND_WIDTH_MASK:= $FFFFF800;
LAND_HEIGHT_MASK:= $FFFFFC00;
- end
+ end
else
- begin
+ begin
LAND_WIDTH:= 4096;
LAND_HEIGHT:= 2048;
LAND_WIDTH_MASK:= $FFFFF000;
LAND_HEIGHT_MASK:= $FFFFF800
- end;
+ end;
- SDWaterColorArray[0].r := 184;
- SDWaterColorArray[0].g := 152;
- SDWaterColorArray[0].b := 195;
+ SDWaterColorArray[0].r := 182;
+ SDWaterColorArray[0].g := 144;
+ SDWaterColorArray[0].b := 201;
SDWaterColorArray[0].a := 255;
- SDWaterColorArray[2].r := 152;
- SDWaterColorArray[2].g := 120;
- SDWaterColorArray[2].b := 163;
+ SDWaterColorArray[2].r := 150;
+ SDWaterColorArray[2].g := 112;
+ SDWaterColorArray[2].b := 169;
SDWaterColorArray[2].a := 255;
SDWaterColorArray[1]:= SDWaterColorArray[0];
SDWaterColorArray[3]:= SDWaterColorArray[2];
@@ -2188,8 +2201,8 @@
cDrownSpeed.QWordValue := 257698038; // 0.06
cDrownSpeedf := 0.06;
cMaxWindSpeed.QWordValue:= 1073742; // 0.00025
- cWindSpeed.QWordValue := 429496; // 0.0001
- cWindSpeedf := 0.0001;
+ cWindSpeed.QWordValue := 0; // 0.0
+ cWindSpeedf := 0.0;
cGravity := cMaxWindSpeed * 2;
cGravityf := 0.00025 * 2;
cDamageModifier := _1;
@@ -2223,6 +2236,7 @@
cMinesTime := 3000;
cMaxAIThinkTime := 9000;
cCloudsNumber := 9;
+ cSDCloudsNumber := 9;
cHealthCaseProb := 35;
cHealthCaseAmount := 25;
cWaterRise := 47;
--- a/hedgewars/uVisualGears.pas Fri Dec 31 03:22:30 2010 +0100
+++ b/hedgewars/uVisualGears.pas Fri Dec 31 03:29:41 2010 +0100
@@ -32,6 +32,7 @@
procedure DeleteVisualGear(Gear: PVisualGear);
function VisualGearByUID(uid : Longword) : PVisualGear;
procedure AddClouds;
+procedure ChangeToSDClouds;
procedure AddDamageTag(X, Y, Damage, Color: LongWord);
implementation
@@ -328,6 +329,8 @@
if Gear^.PrevGear <> nil then Gear^.PrevGear^.NextGear:= Gear^.NextGear
else VisualGearsList:= Gear^.NextGear;
+ if lastVisualGearByUID = Gear then lastVisualGearByUID:= nil;
+
Dispose(Gear);
end;
@@ -392,7 +395,10 @@
DrawRotatedF(sprSDFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle)
else
DrawRotatedF(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle);
- vgtCloud: DrawSprite(sprCloud, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame);
+ vgtCloud: if SuddenDeathDmg then
+ DrawSprite(sprSDCloud, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame)
+ else
+ DrawSprite(sprCloud, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame);
end;
if Gear^.Tint <> $FFFFFFFF then Tint($FF,$FF,$FF,$FF);
Gear:= Gear^.NextGear
@@ -481,8 +487,14 @@
end;
DrawRotatedF(sprEgg, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle);
end;
- vgtSplash: DrawSprite(sprSplash, round(Gear^.X) + WorldDx - 40, round(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37));
- vgtDroplet: DrawSprite(sprDroplet, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame);
+ vgtSplash: if SuddenDeathDmg then
+ DrawSprite(sprSDSplash, round(Gear^.X) + WorldDx - 40, round(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37))
+ else
+ DrawSprite(sprSplash, round(Gear^.X) + WorldDx - 40, round(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37));
+ vgtDroplet: if SuddenDeathDmg then
+ DrawSprite(sprSDDroplet, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame)
+ else
+ DrawSprite(sprDroplet, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame);
vgtBeeTrace: begin
if Gear^.FrameTicks < $FF then
Tint($FF, $FF, $FF, Gear^.FrameTicks div 2)
@@ -521,13 +533,20 @@
var vg: PVisualGear;
begin
VisualGearByUID:= nil;
+if uid = 0 then exit;
+if (lastVisualGearByUID <> nil) and (lastVisualGearByUID^.uid = uid) then
+ begin
+ VisualGearByUID:= lastVisualGearByUID;
+ exit
+ end;
vg:= VisualGearsList;
while vg <> nil do
begin
if vg^.uid = uid then
begin
- VisualGearByUID:= vg;
- exit
+ lastVisualGearByUID:= vg;
+ VisualGearByUID:= vg;
+ exit
end;
vg:= vg^.NextGear
end
@@ -540,6 +559,24 @@
AddVisualGear(cLeftScreenBorder + i * cScreenSpace div (cCloudsNumber + 1), LAND_HEIGHT-1184, vgtCloud)
end;
+procedure ChangeToSDClouds;
+var i: LongInt;
+ vg, tmp: PVisualGear;
+begin
+if cCloudsNumber = cSDCloudsNumber then exit;
+vg:= VisualGearsList;
+while vg <> nil do
+ if vg^.Kind = vgtCloud then
+ begin
+ tmp:= vg^.NextGear;
+ DeleteVisualGear(vg);
+ vg:= tmp
+ end
+ else vg:= vg^.NextGear;
+for i:= 0 to cSDCloudsNumber - 1 do
+ AddVisualGear(cLeftScreenBorder + i * cScreenSpace div (cSDCloudsNumber + 1), LAND_HEIGHT-1184, vgtCloud)
+end;
+
procedure initModule;
begin
VisualGearsList:= nil;
--- a/hedgewars/uWorld.pas Fri Dec 31 03:22:30 2010 +0100
+++ b/hedgewars/uWorld.pas Fri Dec 31 03:29:41 2010 +0100
@@ -651,7 +651,10 @@
DrawVisualGears(2);
- DrawWater(cWaterOpacity, 0);
+ if SuddenDeathDmg then
+ DrawWater(cSDWaterOpacity, 0)
+ else
+ DrawWater(cWaterOpacity, 0);
// Waves
DrawWaves( 1, 25 - WorldDx div 9, - cWaveHeight, 12);
@@ -660,9 +663,15 @@
begin
//DrawWater(cWaterOpacity, - offsetY div 40);
DrawWaves(-1, 50 + WorldDx div 6, - cWaveHeight - offsetY div 40, 8);
- DrawWater(cWaterOpacity, - offsetY div 20);
+ if SuddenDeathDmg then
+ DrawWater(cSDWaterOpacity, - offsetY div 20)
+ else
+ DrawWater(cWaterOpacity, - offsetY div 20);
DrawWaves( 1, 75 - WorldDx div 4, - cWaveHeight - offsetY div 20, 2);
- DrawWater(cWaterOpacity, - offsetY div 10);
+ if SuddenDeathDmg then
+ DrawWater(cSDWaterOpacity, - offsetY div 10)
+ else
+ DrawWater(cWaterOpacity, - offsetY div 10);
DrawWaves( -1, 25 + WorldDx div 3, - cWaveHeight - offsetY div 10, 0);
end
else
--- a/misc/hedgewars.desktop Fri Dec 31 03:22:30 2010 +0100
+++ b/misc/hedgewars.desktop Fri Dec 31 03:29:41 2010 +0100
@@ -5,13 +5,15 @@
Name=Hedgewars
GenericName=Fighting Hedgehogs
GenericName[de]=Kämpfende Igel
+GenericName[es]=Batallas entre erizos
+GenericName[fr]=Bataille de hérissons
+GenericName[ko]=고슴도치 싸우기
+GenericName[it]=Ricci combattenti
+GenericName[pl]=Walczące jeże
+GenericName[pt]=Batalhas entre ouriços
GenericName[ru]=Битвы ежей
-GenericName[pl]=Walczące jeże
GenericName[sk]=Bojujúci ježkovia
GenericName[sv]=Stridande igelkottar
-GenericName[es]=Batallas entre erizos
-GenericName[it]=Ricci combattenti
-GenericName[pt]=Batalhas entre ouriços
Icon=hedgewars.png
Exec=hedgewars
Terminal=false
--- a/project_files/HedgewarsMobile/Classes/GameSetup.m Fri Dec 31 03:22:30 2010 +0100
+++ b/project_files/HedgewarsMobile/Classes/GameSetup.m Fri Dec 31 03:29:41 2010 +0100
@@ -352,20 +352,20 @@
if (self.statsArray == nil)
self.statsArray = [[NSMutableArray alloc] initWithCapacity:statMaxCapacity];
NSString *tempStr = [NSString stringWithUTF8String:&buffer[2]];
- NSString *srg = [[tempStr componentsSeparatedByString:@" "] objectAtIndex:0];
- int index = [srg length] + 3;
+ NSString *arg = [[tempStr componentsSeparatedByString:@" "] objectAtIndex:0];
+ int index = [arg length] + 3;
switch (buffer[1]) {
case 'r': // winning team
[self.statsArray insertObject:[NSString stringWithUTF8String:&buffer[2]] atIndex:0];
break;
case 'D': // best shot
- [self.statsArray addObject:[NSString stringWithFormat:@"The best shot award was won by %s with %@ points", &buffer[index], srg]];
+ [self.statsArray addObject:[NSString stringWithFormat:@"The best shot award was won by %s with %@ points", &buffer[index], arg]];
break;
case 'k': // best hedgehog
- [self.statsArray addObject:[NSString stringWithFormat:@"The best killer is %s with %@ kills in a turn", &buffer[index], srg]];
+ [self.statsArray addObject:[NSString stringWithFormat:@"The best killer is %s with %@ kills in a turn", &buffer[index], arg]];
break;
case 'K': // number of hogs killed
- [self.statsArray addObject:[NSString stringWithFormat:@"A total of %@ hedgehog(s) were killed during this round", srg]];
+ [self.statsArray addObject:[NSString stringWithFormat:@"A total of %@ hedgehog(s) were killed during this round", arg]];
break;
case 'H': //something about team health
break;
@@ -374,13 +374,13 @@
case 'P': // player postion
break;
case 's': // self damage
- [self.statsArray addObject:[NSString stringWithFormat:@"%s thought it's good to shoot his own hedgehogs with %@ points", &buffer[index], srg]];
+ [self.statsArray addObject:[NSString stringWithFormat:@"%s thought it's good to shoot his own hedgehogs with %@ points", &buffer[index], arg]];
break;
case 'S': // friendly fire
- [self.statsArray addObject:[NSString stringWithFormat:@"%s killed %@ of his own hedgehogs", &buffer[2], srg]];
+ [self.statsArray addObject:[NSString stringWithFormat:@"%s killed %@ of his own hedgehogs", &buffer[index], arg]];
break;
case 'B': // turn skipped
- [self.statsArray addObject:[NSString stringWithFormat:@"%s was scared and skipped turn %@ times", &buffer[2], srg]];
+ [self.statsArray addObject:[NSString stringWithFormat:@"%s was scared and skipped turn %@ times", &buffer[index], arg]];
break;
default:
DLog(@"Unhandled stat message, see statsPage.cpp");
Binary file share/hedgewars/Data/Graphics/Snow.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Graphics/Snow.svg Fri Dec 31 03:29:41 2010 +0100
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.0 r9654"
+ width="5"
+ height="5"
+ sodipodi:docname="Snow.svg"
+ inkscape:export-filename="/mnt/y/src/hedgewars/share/hedgewars/Data/Graphics/Snow.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6">
+ <linearGradient
+ id="linearGradient3757">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3759" />
+ <stop
+ id="stop3765"
+ offset="0.47515857"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ style="stop-color:#cedcea;stop-opacity:1;"
+ offset="1"
+ id="stop3761" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3757"
+ id="radialGradient3763"
+ cx="2.9785273"
+ cy="2.015959"
+ fx="2.9785273"
+ fy="2.015959"
+ r="2.6945455"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1016"
+ inkscape:window-height="770"
+ id="namedview4"
+ showgrid="false"
+ inkscape:zoom="45.254834"
+ inkscape:cx="3.4892683"
+ inkscape:cy="1.3238902"
+ inkscape:window-x="169"
+ inkscape:window-y="99"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:url(#radialGradient3763);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path2987"
+ sodipodi:cx="2.76"
+ sodipodi:cy="2.8036363"
+ sodipodi:rx="2.6945455"
+ sodipodi:ry="2.6945455"
+ d="m 5.4545455,2.8036363 a 2.6945455,2.6945455 0 1 1 -5.38909102,0 2.6945455,2.6945455 0 1 1 5.38909102,0 z"
+ transform="matrix(0.92780025,0,0,0.92780025,-0.06072869,-0.10121454)" />
+</svg>
Binary file share/hedgewars/Data/Graphics/SuddenDeath/BlueWater.png has changed
Binary file share/hedgewars/Data/Graphics/SuddenDeath/Flake.png has changed
Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDClouds.png has changed
Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDDroplet.png has changed
Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDFlake.png has changed
Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDSplash.png has changed
Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDWater.png has changed
--- a/share/hedgewars/Data/Locale/de.lua Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Locale/de.lua Fri Dec 31 03:29:41 2010 +0100
@@ -52,8 +52,7 @@
-- ["Listen up, maggot!!"] = "",
-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESS"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["NEW fastest lap: "] = "",
-- ["NO JUMPING"] = "",
["Not So Friendly Match"] = "Kein-so-Freundschaftsspiel", -- Basketball, Knockball
@@ -62,11 +61,11 @@
-- ["Operation Diver"] = "",
-- ["Opposing Team: "] = "",
-- ["Pathetic Hog #%d"] = "",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
-- ["Poison"] = "",
-- ["Random Weapons"] = "",
-- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
-- ["RULES OF THE GAME [Press ESC to view]"] = "",
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
-- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
-- ["See ya!"] = "",
["Shotgun Team"] = "Entrenamiento con escopeta",
@@ -87,7 +86,7 @@
-- ["T_T"] = "",
-- ["Unit 3378"] = "",
-- ["Use your rope to get from start to finish as fast as you can!"] = "",
--- ["Victory for the"] = "",
+-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag
-- ["You have SCORED!!"] = "",
-- ["You've failed. Try again."] = "",
-- ["You've reached the goal!| |Time:"] = "",
--- a/share/hedgewars/Data/Locale/es.lua Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Locale/es.lua Fri Dec 31 03:29:41 2010 +0100
@@ -52,8 +52,7 @@
["Listen up, maggot!!"] = "¡Atento, escoria!",
-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["MISSION FAILED"] = "MISIÓN FALLIDA", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
- ["MISSION SUCCESSFUL"] = "MISIÓN COMPLETADA", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
- ["MISSION SUCCESS"] = "MISIÓN COMPLETADA", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION SUCCESSFUL"] = "MISIÓN COMPLETADA", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["NEW fastest lap: "] = "NUEVA vuelta rápida: ",
["NO JUMPING"] = "PROHIBIDO SALTAR",
["Not So Friendly Match"] = "Partido no-tan-amistoso", -- Basketball, Knockball
@@ -62,6 +61,7 @@
["Operation Diver"] = "Buzo",
["Opposing Team: "] = "Equipo enemigo: ",
["Pathetic Hog #%d"] = "Erizo patético #%d",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
["Poison"] = "Veneno",
["Random Weapons"] = "Armas aleatorias",
[" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "- Vuelve a tu base con la bandera enemiga para anotar un punto | - El equipo que anote 3 puntos gana | - Sólo se puede anotar si tu propia bandera está en tu base | - Los erizos resucitan cuando mueren",
@@ -87,7 +87,7 @@
["T_T"] = "T_T",
["Unit 3378"] = "Unidad 3378",
["Use your rope to get from start to finish as fast as you can!"] = "¡Usa tu cuerda para llegar a la salida lo más rápido que puedas!",
- ["Victory for the"] = "La victoria es para",
+ ["Victory for the "] = "La victoria es para", -- CTF_Blizzard, Capture_the_Flag
["You have SCORED!!"] = "¡Has anotado!",
["You've failed. Try again."] = "Has fracasado. Inténtalo de nuevo.",
["You've reached the goal!| |Time: "] = "¡Has llegado a la meta!| |Tiempo: ",
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Locale/fr.lua Fri Dec 31 03:29:41 2010 +0100
@@ -0,0 +1,94 @@
+locale = {
+-- [":("] = "",
+-- ["!!!"] = "",
+ ["A game of luck"] = "Un jeu de chance",
+ ["Aiming Practice"] = "Entrainement de tir", --Bazooka, Shotgun, SniperRifle
+ ["Bat balls at your enemies and|push them into the sea!"] = "Frappez vos ennemis à la batte|et envoyez-les à la mer !",
+ ["Bat your opponents through the|baskets and out of the map!"] = "Frappez vos ennemis à la batte|, marquez des paniers ou envoyez-les à la mer !",
+ ["Bazooka Training"] = "Entrainement au Bazooka",
+ ["Best laps per team: "] = "Meilleur temps par équipe",
+ ["Bloody Rookies"] = "Nouvelles recrues", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree
+-- ["Boom!"] = "",
+ ["by mikade"] = "par mikade", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
+ ["CAPTURE THE FLAG"] = "Capturez le drapeau !",
+ ["Codename: Teamwork"] = "Nom de code : Travail d'équipe",
+ ["Congratulations!"] = "Félicitations !",
+ ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Félicitations ! Vous avez éliminé toutes les cibles|pendant le temps alloué.", --Bazooka, Shotgun, SniperRifle
+ ["CONTROL"] = "Domination",
+ ["Control pillars to score points."] = "Contrôlez les piliers pour marquer des points",
+ ["CONTROL v0.3"] = "Domination v0.3",
+-- ["CTF_BLIZZARD"] = "",
+ ["CUSTOM BUILD 0.2"] = "Compilation 0.2",
+ ["Cybernetic Empire"] = "Empire cybernétique",
+ ["DAMMIT, ROOKIE!"] = "Et merde, recrue",
+ ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "Et merde, recrue ! Dégage de me tête !",
+ ["Dangerous Ducklings"] = "Canetons dangereux",
+ ["Eliminate all enemies"] = "Éliminez tous les ennemis",
+ ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Éliminez toutes les cibles avant d'être à cours de temps.|Vos munitions sont illimitées pour cette mission.", --Bazooka, Shotgun, SniperRifle
+ ["Eliminate Poison before the time runs out"] = "Éliminez tout le Poison avant d'être à cours de temps.",
+ ["Eliminate the Blue Team"] = "Éliminez l'équipe bleue",
+ ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "Éliminez l'unité 3378|- Résistance Futile doit survivre",
+ ["Enjoy the swim..."] = "Profitez du bain ...",
+ ["Fastest lap: "] = "Meilleur tour : ",
+ ["Feeble Resistance"] = "Résistance Futile",
+ ["Flag captured!"] = "Drapeau capturé !",
+ ["Flag respawned!"] = "Drapeau réapparu",
+ ["Flag returned!"] = "Drapeau récupéré",
+ ["Flags will be placed where each team ends their turn."] = "Les Drapeaux seront placès là où chaque équipe terminera son tour.",
+ ["GAME OVER!"] = "Fin du jeu ! ",
+ ["Game Started!"] = "Début du jeu ! ",
+ ["Get on over there and take him out!"] = "Viens par ici et débarrasse-toi de lui ! ",
+-- ["Goal:"] = "",
+-- ["GO! GO! GO!"] = "",
+ ["Good birdy......"] = "Gentil oiseau ...",
+ ["Good luck out there!"] = "Bonne chance pour sortir d'ici",
+-- ["Hedgewars-Basketball"] = "",
+-- ["Hedgewars-Knockball"] = "",
+-- ["Hmmm..."] = "",
+ ["Hooray!"] = "Hourra ! ",
+ ["Hunter"] = "Chasseur", --Bazooka, Shotgun, SniperRifle
+ ["Instructor"] = "Instructeur", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings
+ ["- Jumping is disabled"] = "Saut désactivé",
+ ["Listen up, maggot!!"] = "Écoutez, asticots",
+-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION FAILED"] = "Mission échouée", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION SUCCESSFUL"] = "Mission réussie", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["NEW fastest lap: "] = "Nouveau meilleur temps",
+ ["NO JUMPING"] = "PAS DE SAUT",
+ ["Not So Friendly Match"] = "Match pas si amical", -- Basketball, Knockball
+ ["Oh no! Just try again!"] = "Eh non ! Essayez encore ! ", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["Oh no! Time's up! Just try again."] = "Eh non ! Temps écoulé ! Essayez encore ! ", --Bazooka, Shotgun, SniperRifle
+-- ["Operation Diver"] = "",
+ ["Opposing Team: "] = "Équipe opposée",
+ ["Pathetic Hog #%d"] = "Hérisson pathétique #%d",
+ ["points"] = "points", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
+ ["Poison"] = "Poison",
+ ["Random Weapons"] = "Armes aléatoires",
+ [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "Ramenez le drapeau ennemi à votre base pour marquer | -La première équipe à 3 captures gagne | - Vous marquez uniquement si votre drapeau est dans votre base | - Les hérissons vont lâcher le drapeau s'ils sont tués ou noyés | - Les drapeaux lâchés peuvent être ramenés ou recapturés | - Les hérissons réapparaissent quand ils sont tués",
+ ["RULES OF THE GAME [Press ESC to view]"] = "RÈGLES DU JEU | [Appuyez Échap pour voir]",
+-- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
+ ["See ya!"] = "Bye bye",
+ ["Shotgun Team"] = "Équipe de choc",
+ ["Shotgun Training"] = "Entrainement au fusil",
+ ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s est dehors et l'équipe %d| reçoit une pénalité ! | |Score : ", -- Basketball, Knockball
+ ["%s is out and Team %d|scored a point!| |Score:"] = "%s est dehors et l'équipe %d| reçoit un point ! | |Score : ", -- Basketball, Knockball
+ ["Sniper Training"] = "Entrainement au fusil de sniper",
+-- ["Sniperz"] = "",
+ ["Spooky Tree"] = "Arbre fantomatique",
+ ["Team %d: "] = "Équipe %d : ",
+ ["Team Scores:"] = "Score de l'équipe",
+ ["That was pointless."] = "C'était inutile.",
+ ["The enemy is hiding out on yonder ducky!"] = "L'ennemi se cache là-bas sur le canard !",
+ ["The flag will respawn next round."] = "Le drapeau va réapparaitre au prochain tour",
+ ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "Il y a eu un mélange avec votre équipement et maintenant| vous devrez utiliser ce qui vous arrivera dans les mains !",
+ ["Toxic Team"] = "Équipe toxique", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+-- ["TrophyRace"] = "",
+-- ["T_T"] = "",
+ ["Unit 3378"] = "Unité 3378",
+ ["Use your rope to get from start to finish as fast as you can!"] = "Utilisez votre Corde Ninja pour aller du début à la fin aussi vite que vous pouvez !",
+ ["Victory for the "] = "Victoire pour ", -- CTF_Blizzard, Capture_the_Flag
+ ["You have SCORED!!"] = "Vous avez marqué !",
+ ["You've failed. Try again."] = "Vous avez échoué. Essayez encore.",
+ ["You've reached the goal!| |Time: "] = "Vous avez atteins le but !| |Temps : ",
+-- ["'Zooka Team"] = "",
+ }
--- a/share/hedgewars/Data/Locale/fr.txt Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Locale/fr.txt Fri Dec 31 03:29:41 2010 +0100
@@ -42,6 +42,16 @@
00:39=Soucoupe Volante
00:40=Cocktail Molotov
00:41=Piaf
+00:42=Fusil à portails
+00:43=Attaque du Piano
+00:44=Vieux Limburger
+00:45=Fusil Sinus (bêta)
+00:46=Lance-flammes
+00:47=Mines adhésives
+00:48=Marteau
+00:49=Resurrecteur
+00:50=Attaque perforante
+00:51=Boule de terre
01:00=C'est parti !
01:01=Round ex-aequo
@@ -137,7 +147,7 @@
02:01=%1 est parti visiter l'aquarium
02:01=%1 a trouvé la cité perdue d'Atlantide
02:01=%1 se propose pour le rôle principal de Bioshock 3
-02:01=Ta paggaie pour chiens aurait pû servir, %1
+02:01=Ta pagaie pour chiens aurait pû servir, %1
02:01=%1 aurait dû acheter un jet ski
02:01=%1 n'aime pas les sports aquatiques
02:01=%1 va faire des bulles pour toujours
@@ -178,7 +188,7 @@
02:02=Que la bataille du jour commence !
02:02=Que la bataille de l'heure commence !
02:02=Faites de votre mieux !
-02:02=Detruisez l'ennemi !
+02:02=Détruisez l'ennemi !
02:02=Bonne chance !
02:02=Amusez-vous bien !
02:02=Combattez avec honneur !
@@ -265,7 +275,7 @@
02:08=%1 est une vache !
02:08=%1 attend la mort subite
02:08=%1 n'est pas du genre bagarreur
-02:08=%1 réflechit au sens de la vie
+02:08=%1 réfléchit au sens de la vie
02:08=%1 n'était pas un bon tireur de toutes manières
02:08=%1 ne voulait pas rejoindre l'armée au début
02:08=Arrête de perdre ton temps, %1
@@ -299,7 +309,7 @@
02:09=%1 montre à l'ennemi de quoi il est capable
02:09=%1 ne peut pas être parfait tout le temps
02:09=Ne t'inquiète pas %1, personne p'est narfait
-02:09=%1 a fait cela totallement intentionnellement
+02:09=%1 a fait cela totalement intentionnellement
02:09=Je ne le dirais à personne, %1
02:09=C'est embarrassant !
02:09=Je suis sûr que personne n'a vu cela %1
@@ -397,7 +407,15 @@
04:38= Le fusil à lunettes peut être une de armes les plus dévastatrices|de tout votre arsenal, toutefois il est totalement inefficace|en combat rapproché. Les dommages qu'il cause augmentent suivant|la distance de la cible.|Attaque : Tirez (deux fois)
04:39=Volez vers d'autres secteurs de la carte en utilisant une soucoupe|volante. Ce moyen de transport pas facile à dompter est capable de vous|emporter vers presque tous les lieux du champ de bataille|Attaque : Activer|Haut/Gauche/Droite : appliquez la force dans une direction
04:40=Mettez le feu à un territoire en utilisant cette bouteille remplie|de liquide inflammable.|Attaque : maintenez pour tirer avec plus de force
-04:41=Une arme naturelle qui peut suffire à dégommer même la soucoupe|volante. Le piaf peut transporter votre hérisson et|balancer de soeufs sur vos ennemis !|Attaque : Activez et larguez des oeufs|Haut/Gauche/Droite: voltigez vers une direction.
+04:41=Une arme naturelle qui peut suffire à dégommer même la soucoupe|volante. Le piaf peut transporter votre hérisson et|balancer des œufs sur vos ennemis !|Attaque : Activez et larguez des œufs|Haut/Gauche/Droite: voltigez vers une direction.
+04:42=Ce fusil à portails est capable de vous transporter instantanément,| ainsi que vos ennemis ou des armes entre deux points du terrain. |Utilisez-le intelligemment et votre campagne sera un ... GRAND SUCCÈS !|Attaque : Crée un portail|Modificateur : Change la couleur du portail
+04:43=Faites de vos débuts musicaux un succès explosif !| Lâchez un piano depuis les cieux, mais attention ... quelqu'un doit|jouer dessus, et cela pourrait lui coûter sa vie !|Curseur : Choix de la cible|F1-F9 : Jouer du piano
+04:44=Ce n'est pas juste un fromage, c'est une arme biologique !|Il ne provoquera de gros dommages une fois que le compteur|atteindra zéro mais il empoisonnera tous les malchanceux touchés par l'odeur !|1-5 : Lancez le minuteur de la grenade|Attaque : maintenez pour la lancer avec plus de force
+04:45=Tous ces cours de physique ont finalement payé,|lancez une onde Sinus dévastatrice à vos ennemis.|Attention au recul ! (cette arme est incomplète)|Attaque : Activez
+04:46=Recouvrez vos ennemis de sifflantes flammes liquides.|Hauts les cœurs !|Attaque : Activez|Haut/Bas : Continuez à viser|Droite/Gauche : Changer la puissance de tir
+04:47=Doublez le fun avec deux mines, piquantes, furtives et collantes.|Provoquez une réaction en chaine ou défendez-vous ! (ou les deux)|Attaque : maintenez pour tirer avec plus de force (deux fois)
+04:48=Pourquoi les taupes auraient tous le fun ?|Un bon coup de ce marteau enlèvera un tiers de la santé du hérisson et l'enverra dans le sol|Attaque : Activez
+04:49=Ressuscite vos amis !Mais méfiez-vous, cela ressuscite également vos ennemis.|Attaque : Maintenez attaque pressée pour ressusciter lentement|Haut : Accélérer la résurrection
; Game goal strings
05:00=Modes de jeu
--- a/share/hedgewars/Data/Locale/hedgewars_fr.ts Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_fr.ts Fri Dec 31 03:29:41 2010 +0100
@@ -9,7 +9,7 @@
</message>
<message>
<source>copy of</source>
- <translation type="unfinished"></translation>
+ <translation>Copier à partir de ...</translation>
</message>
</context>
<context>
@@ -46,18 +46,18 @@
</message>
<message>
<source>When this option is enabled selecting a game scheme will auto-select a weapon</source>
- <translation type="unfinished"></translation>
+ <translation>Quand cette option est active choisir des paramètres de jeu sélectionnera les armes</translation>
</message>
</context>
<context>
<name>HWChatWidget</name>
<message>
<source>%1 *** %2 has been removed from your ignore list</source>
- <translation>%1 *** %2 a été enlevé de la liste des personnes ignorées</translation>
+ <translation>%1 *** %2 a été enlevé de votre liste de personnes ignorées</translation>
</message>
<message>
<source>%1 *** %2 has been added to your ignore list</source>
- <translation>%1 *** %2 a été ajouté dans la liste des personnes ignorées</translation>
+ <translation>%1 *** %2 a été ajouté dans votre liste de personnes ignorées</translation>
</message>
<message>
<source>%1 *** %2 has been removed from your friends list</source>
@@ -92,7 +92,7 @@
</message>
<message>
<source>Please select record from the list above</source>
- <translation>Veuillez sélectionner une partie dans la liste ci-dessus</translation>
+ <translation>Veuillez sélectionner une partie enregistrée dans la liste ci-dessus</translation>
</message>
<message>
<source>DefaultTeam</source>
@@ -101,12 +101,12 @@
<message>
<source>Hedgewars Demo File</source>
<comment>File Types</comment>
- <translation type="unfinished"></translation>
+ <translation>Fichier de démonstration d'Hedgewars</translation>
</message>
<message>
<source>Hedgewars Save File</source>
<comment>File Types</comment>
- <translation type="unfinished"></translation>
+ <translation>Fichier de sauvegarde d'Hedgewars</translation>
</message>
</context>
<context>
@@ -156,7 +156,7 @@
</message>
<message>
<source>Wacky</source>
- <translation>Farpelu</translation>
+ <translation>Farfelu</translation>
</message>
<message>
<source>Type</source>
@@ -188,11 +188,11 @@
</message>
<message>
<source>Seed</source>
- <translation type="unfinished"></translation>
+ <translation>Graine</translation>
</message>
<message>
<source>Set</source>
- <translation type="unfinished"></translation>
+ <translation>Valider</translation>
</message>
</context>
<context>
@@ -244,7 +244,7 @@
<translation type="obsolete">Votre pseudo %1 est
enregistré sur Hedgewars.org
Veuillez fournir votre mot de passe
-ou choisir un nouveau pseudo:</translation>
+ou choisir un nouveau pseudo :</translation>
</message>
<message>
<source>%1 *** %2 has joined the room</source>
@@ -267,7 +267,10 @@
registered on Hedgewars.org
Please provide your password below
or pick another nickname in game config:</source>
- <translation type="unfinished"></translation>
+ <translation>Votre pseudo %1 est
+enregistré sur Hedgewars.org
+Veuillez fournir votre mot de passe
+ou choisir un nouveau pseudo :</translation>
</message>
</context>
<context>
@@ -289,31 +292,31 @@
</message>
<message>
<source>Clear Accounts Cache</source>
- <translation>Vider le cache de comptes</translation>
+ <translation>Vider le cache des comptes</translation>
</message>
<message>
<source>Fetch data</source>
- <translation type="unfinished"></translation>
+ <translation>Récupérer les données</translation>
</message>
<message>
<source>Server message for latest version:</source>
- <translation type="unfinished"></translation>
+ <translation>Message du serveur pour la dernière version : </translation>
</message>
<message>
<source>Server message for previous versions:</source>
- <translation type="unfinished"></translation>
+ <translation>Message du serveur pour la version précédente : </translation>
</message>
<message>
<source>Latest version protocol number:</source>
- <translation type="unfinished"></translation>
+ <translation>Numéro de la dernière version du protocole : </translation>
</message>
<message>
<source>MOTD preview:</source>
- <translation type="unfinished"></translation>
+ <translation>Prévisualisation du MOTD</translation>
</message>
<message>
<source>Set data</source>
- <translation type="unfinished"></translation>
+ <translation>Enregistrer les données</translation>
</message>
</context>
<context>
@@ -327,31 +330,31 @@
<name>PageDrawMap</name>
<message>
<source>Undo</source>
- <translation type="unfinished"></translation>
+ <translation>Annuler</translation>
</message>
<message>
<source>Clear</source>
- <translation type="unfinished"></translation>
+ <translation>Effacer</translation>
</message>
<message>
<source>Load</source>
- <translation type="unfinished">Charger</translation>
+ <translation>Charger</translation>
</message>
<message>
<source>Save</source>
- <translation type="unfinished"></translation>
+ <translation>Enregistrer</translation>
</message>
<message>
<source>Load drawn map</source>
- <translation type="unfinished"></translation>
+ <translation>Charger une carte dessinée</translation>
</message>
<message>
<source>Drawn Maps (*.hwmap);;All files (*.*)</source>
- <translation type="unfinished"></translation>
+ <translation>Cartes dessinées (*.hwmap);;Tous les fichiers (*.*)</translation>
</message>
<message>
<source>Save drawn map</source>
- <translation type="unfinished"></translation>
+ <translation>Enregistrer une carte dessinée</translation>
</message>
</context>
<context>
@@ -387,59 +390,59 @@
</message>
<message>
<source>Details</source>
- <translation type="unfinished"></translation>
+ <translation>Détails</translation>
</message>
<message>
<source>Health graph</source>
- <translation type="unfinished"></translation>
+ <translation>Courbes de santé-</translation>
</message>
<message>
<source>Ranking</source>
- <translation type="unfinished"></translation>
+ <translation>Rang</translation>
</message>
<message>
<source>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</source>
- <translation type="unfinished"></translation>
+ <translation>Le prix du meilleur tir a été décerné à <b>%1</b> avec <b>%2</b> points.</translation>
</message>
<message numerus="yes">
<source>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</source>
- <translation type="unfinished">
- <numerusform></numerusform>
- <numerusform></numerusform>
+ <translation>
+ <numerusform>Le meilleur tueur est <b>%1</b> avec <b>%2</b> mort dans un tour.</numerusform>
+ <numerusform>Le meilleur tueur est <b>%1</b> avec <b>%2</b> morts dans un tour.</numerusform>
</translation>
</message>
<message numerus="yes">
<source>A total of <b>%1</b> hedgehog(s) were killed during this round.</source>
- <translation type="unfinished">
- <numerusform></numerusform>
- <numerusform></numerusform>
+ <translation>
+ <numerusform>Un total de <b>%1</b> hérisson a été tué durant ce tour.</numerusform>
+ <numerusform>Un total de <b>%1</b> hérissons ont été tués durant ce tour.</numerusform>
</translation>
</message>
<message numerus="yes">
<source>(%1 kill)</source>
<translation type="unfinished">
- <numerusform></numerusform>
+ <numerusform>(%1 Tue)</numerusform>
<numerusform></numerusform>
</translation>
</message>
<message numerus="yes">
<source><b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.</source>
- <translation type="unfinished">
- <numerusform></numerusform>
- <numerusform></numerusform>
+ <translation>
+ <numerusform><b>%1</b> pense que c'est bien de tirer sur ses propres hérissons pour <b>%2</b> point.</numerusform>
+ <numerusform><b>%1</b> pense que c'est bien de tirer sur ses propres hérissons pour <b>%2</b> points.</numerusform>
</translation>
</message>
<message numerus="yes">
<source><b>%1</b> killed <b>%2</b> of his own hedgehogs.</source>
- <translation type="unfinished">
- <numerusform></numerusform>
+ <translation>
+ <numerusform><b>%1</b> a tué <b>%2</b> de ses propres hérissons.</numerusform>
<numerusform></numerusform>
</translation>
</message>
<message numerus="yes">
<source><b>%1</b> was scared and skipped turn <b>%2</b> times.</source>
- <translation type="unfinished">
- <numerusform></numerusform>
+ <translation>
+ <numerusform><b>%1</b> a eu peur et a passé son tour <b>%2</b> fois.</numerusform>
<numerusform></numerusform>
</translation>
</message>
@@ -457,247 +460,247 @@
<message>
<source>Simply pick the same color as a friend to play together as a team. Each of you will still control his or her own hedgehogs but they'll win or lose together.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Choisissez la même couleur qu'un ami pour jouer dans la même équipe. Chacun de vous continuera à contrôler son ou ses hérissons mais ils gagneront ou perdront ensembles.</translation>
</message>
<message>
<source>Some weapons might do only low damage but they can be a lot more devastating in the right situation. Try to use the Desert Eagle to knock multiple hedgehogs into the water.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Certaines armes peuvent occasionner seulement de faibles dommages mais être beaucoup plus dévastatrices dans la situation adéquate. Essayez le Révolver pour envoyer plusieurs hérissons à l'eau.</translation>
</message>
<message>
<source>If you're unsure what to do and don't want to waste ammo, skip one round. But don't let too much time pass as there will be Sudden Death!</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Si vous ne savez pas quoi faire et ne voulez pas gaspiller de munitions, passez un tour. Mais ne laissez pas trop filer le temps ou ce sera la Mort Subite !</translation>
</message>
<message>
<source>If you'd like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Si vous voulez empêcher les autres d'utiliser votre pseudo sur le serveur officiel, créez un compte sur http://www.hedgewars.org/.</translation>
</message>
<message>
<source>You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Assez du mode par défaut ? Essayez une des missions - elles offrent différents types de jeu suivant votre choix.</translation>
</message>
<message>
<source>By default the game will always record the last game played as a demo. Select 'Local Game' and pick the 'Demos' button on the lower right corner to play or manage them.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Par défaut le jeu enregistre la dernière partie jouée comme une démonstration. Sélectionnez « Jeu en local » puis « Démonstrations » en bas à droite pour les visionner ou les gérer.</translation>
</message>
<message>
<source>Hedgewars is Open Source and Freeware we create in our spare time. If you've got problems, ask on our forums but please don't expect 24/7 support!</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Hedgewars est un jeu libre et gratuit créé sur notre temps libre. Si vous avez des problèmes, demandez sur nos forums mais n'attendez pas de support 24h/24.</translation>
</message>
<message>
<source>Hedgewars is Open Source and Freeware we create in our spare time. If you like it, help us with a small donation or contribute your own work!</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Hedgewars est un jeu libre et gratuit créé sur notre temps libre. Si vous l'aimez, aidez-nous avec un petit don ou contribuez par votre travail !</translation>
</message>
<message>
<source>Hedgewars is Open Source and Freeware we create in our spare time. Share it with your family and friends as you like!</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Hedgewars est un jeu libre et gratuit créé sur notre temps libre. Partagez-le avec votre famille et vos amis comme vous le voulez !</translation>
</message>
<message>
<source>From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>De temps en temps il y aura des tournois officiels. Les évènements à venir seront annoncés sur http://www.hedgewars.org/ quelques jours à l'avance.</translation>
</message>
<message>
<source>Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us!</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Hedgewars est disponible dans de nombreuses langues. Si la traduction dans votre langue est partielle ou obsolète, contactez-nous !</translation>
</message>
<message>
<source>Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Hedgewars peux être exécuté sur de nombreux systèmes d'exploitation différents, incluant Microsoft Windows, Mac OS X et Linux. </translation>
</message>
<message>
<source>Always remember you're able to set up your own games in local and network/online play. You're not restricted to the 'Simple Game' option.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Souvenez-vous que vous pouvez créer votre propres parties en local et en ligne. Vous n'est pas limités aux options de jeu par défaut.</translation>
</message>
<message>
<source>While playing you should give yourself a short break at least once an hour.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Vous devriez faire une petite pause au moins une fois par heure.</translation>
</message>
<message>
<source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Si votre carte graphique ne peut pas fournir d'accélération matérielle pour OpenGL, essayez le mode de faible qualité pour améliorer les performances.</translation>
</message>
<message>
<source>We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know!</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Nous sommes ouverts aux suggestions et au critiques constructives. Si vous n'aimez pas quelque chose ou avez une grande idée, contactez-nous !</translation>
</message>
<message>
<source>Especially while playing online be polite and always remember there might be some minors playing with or against you as well!</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Particulièrement quand vous jouez en ligne soyez polis et pensez que certains joueurs avec vous peuvent être mineurs.</translation>
</message>
<message>
<source>Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game!</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Les modes de jeu spéciaux comme « Vampirisme » ou « Karma » vous permettent de développer de nouvelles tactiques. Essayez-les en parties personnalisées !</translation>
</message>
<message>
<source>The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>La version Windows d'Hedgewars fonctionne avec Xfire. Pensez à ajouter Hedgewars dans la liste de jeu pour que vous amis vous voient jouer.</translation>
</message>
<message>
<source>You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Vous ne devriez jamais installer Hedgewars sur des ordinateurs ne vous appartenant pas (école, université, travail, etc...). Demandez au responsable !</translation>
</message>
<message>
<source>Hedgewars can be perfect for short games during breaks. Just ensure you don't add too many hedgehogs or use an huge map. Reducing time and health might help as well.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Hedgewars peut être parfait pour des parties courtes pendant une pause. Assurez-vous juste de ne pas avoir mis trop de hérissons ou de ne pas utiliser une carte énorme. Réduire le temps ou la santé peuvent aider également.</translation>
</message>
<message>
<source>No hedgehogs were harmed in making this game.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Aucun hérisson n'a été blessé durant la conception de ce jeu.</translation>
</message>
<message>
<source>Hedgewars is Open Source and Freeware we create in our spare time. If someone sold you the game, you should try get a refund!</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Hedgewars est un jeu libre et gratuit créé sur notre temps libre. Si quelqu'un vous l'a vendu, vous devriez vous faire rembourser !</translation>
</message>
<message>
<source>Connect one or more gamepads before starting the game to be able to assign their controls to your teams.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Branchez une ou plusieurs manettes avant de lancer le jeu pour pouvoir contrôler vos équipes avec.</translation>
</message>
<message>
<source>Create an account on %1 to keep others from using your most favourite nickname while playing on the official server.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Créer un compte sur %1 vous permet d'empêcher les autres d'utiliser votre pseudo favori sur le serveur officiel.</translation>
</message>
<message>
<source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Si votre carte graphique ne peut pas fournir d'accélération matérielle pour OpenGL, essayez d'installer les drivers associés.</translation>
</message>
<message>
<source>There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Il y a différents types de saut disponibles. Pressez [high jump] deux fois pour faire un très haut saut un peu en arrière.</translation>
</message>
<message>
<source>Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Peur de tomber d'une falaise ? Maintenez [precise] pour tourner [left] ou [right] sans bouger.</translation>
</message>
<message>
<source>Some weapons require special strategies or just lots of training, so don't give up on a particular tool if you miss an enemy once.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Certaines armes demandent de la stratégie ou juste beaucoup d'entrainement, alors ne laissez pas tomber une arme si vous avez raté une fois un ennemi.</translation>
</message>
<message>
<source>Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>La plupart des armes ne fonctionnent pas une fois qu'elles ont touché l'eau. L'Abeille Missile ou le Gâteau sont des exceptions.</translation>
</message>
<message>
<source>The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Le Old Limbuger cause seulement une petite explosion. En revanche le vent affecte le petit nuage empoisonné qui peut contaminer de nombreux hérissons à la fois.</translation>
</message>
<message>
<source>The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">L'attaque du Piano est la plus dévastatrice des attaques aériennes. Vous perdrez le hérisson qui la lance, donc il y a une contrepartie énorme.</translation>
</message>
<message>
<source>The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>L'Abeille Missile peut être délicate à utiliser. Son rayon de courbure dépend de sa vitesse, alors essayer de ne pas l'utiliser à pleine puissance.</translation>
</message>
<message>
<source>Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Les Mines adhésives sont l'outil parfait pour créer de petites réactions en chaines envoyant les ennemis dans des situations délicates ... ou dans l'eau.</translation>
</message>
<message>
<source>The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Le Marteau est plus efficace utilisé sur des ponts ou des poutrelles. Les hérissons touchés vont passer à travers le sol.</translation>
</message>
<message>
<source>If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Si vous êtes coincés derrière un hérisson ennemi, utilisez le Marteau pour vous libérer sans subir les dégâts d'une explosion.</translation>
</message>
<message>
<source>The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>La distance maximale que le Gâteau peux parcourir dépend du terrain qu'il doit franchir. Utiliser [attack] pour le faire exploser avant.</translation>
</message>
<message>
<source>The Flame Thrower is a weapon but it can be used for tunnel digging as well.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Le Lance-flammes est une arme mais peut aussi être utilisé pour creuser un tunnel.</translation>
</message>
<message>
<source>Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Utilisez la grenade infernale pour empêcher temporairement des hérissons de traverser du terrain comme un tunnel ou une plate-forme.</translation>
</message>
<message>
<source>Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Vous voulez savoir qui est derrière le jeu ? Cliquez sur le logo Hedgewars dans le menu principal pour voir les crédits.</translation>
</message>
<message>
<source>Feel free to draw your own graves, hats, flags or even maps and themes! But note that you'll have to share them somewhere to use them online.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Soyez libre de dessiner vos propres tombes, chapeaux, drapeaux ou même cartes et thèmes ! Mais pour les utiliser en ligne vous devrez les partager quelque part.</translation>
</message>
<message>
<source>Really want to wear a specific hat? Donate to us and receive an exclusive hat of your choice!</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Vous voulez vraiment un chapeau spécifique ? Faites un don et recevez un chapeau exclusif de votre choix.</translation>
</message>
<message>
<source>Keep your video card drivers up to date to avoid issues playing the game.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Conservez les pilotes de votre carte graphique à jour pour éviter les problèmes en jouant.</translation>
</message>
<message>
<source>You can find your Hedgewars configuration files under "My Documents\Hedgewars". Create backups or take the files with you, but don't edit them by hand.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Vous pouvez trouver vos fichiers de configuration Hedgewars sous « Mes Documents\Hedgewars ». Créez des sauvegardes ou prenez les fichiers avec vous, mais ne les modifiez pas à la main !</translation>
</message>
<message>
<source>You're able to associate Hedgewars related files (savegames and demo recordings) with the game to launch them right from your favorite file or internet browser.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Vous pouvez associer les fichiers relatifs à Hedgewars (parties enregistrées ou démonstrations) au jeu pour les lancer depuis votre navigateur de fichiers ou internet.</translation>
</message>
<message>
<source>Like Hedgewars? Become a fan on %1 or follow us on %2!</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Vous aimez Hedgewars ? Devenez un fan sur %1 ou suivez-nous sur %2 !</translation>
</message>
<message>
<source>Want to save ropes? Release the rope in mid air and then shoot again. As long as you don't touch the ground you'll reuse your rope without wasting ammo!</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Envie d'économiser des Cordes Ninja ? Relâchez la Corde Ninja en l'air et tirez à nouveau. Du moment que vous ne touchez pas le sol, vous réutiliserez votre Corde Ninja sans gaspiller de munitions.</translation>
</message>
<message>
<source>You can find your Hedgewars configuration files under "Library/Application Support/Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Vous pouvez trouver vos fichiers de configuration Hedgewars sous « Library/Application Support/Hedgewars » dans votre répertoire personnel. Créez des sauvegardes ou prenez les fichiers avec vous, mais ne les modifiez pas à la main !</translation>
</message>
<message>
<source>You can find your Hedgewars configuration files under ".hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source>
<comment>Tips</comment>
- <translation type="unfinished"></translation>
+ <translation>Vous pouvez trouver vos fichiers de configuration Hedgewars sous « .hedgewars » dans votre répertoire personnel. Créez des sauvegardes ou prenez les fichiers avec vous, mais ne les modifiez pas à la main !</translation>
</message>
</context>
<context>
@@ -748,35 +751,35 @@
</message>
<message>
<source>Delete team</source>
- <translation type="unfinished"></translation>
+ <translation>Supprimer une équipe</translation>
</message>
<message>
<source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source>
- <translation type="unfinished"></translation>
+ <translation>Vous ne pouvez pas modifier d'équipe depuis la sélection d'équipes. Retournez au manu principal pour ajouter, modifier ou supprimer des équipes.</translation>
</message>
<message>
<source>New scheme</source>
- <translation type="unfinished"></translation>
+ <translation>Nouveaux paramètres</translation>
</message>
<message>
<source>Edit scheme</source>
- <translation type="unfinished"></translation>
+ <translation>Modifier paramètres</translation>
</message>
<message>
<source>Delete scheme</source>
- <translation type="unfinished"></translation>
+ <translation>Supprimer paramètres</translation>
</message>
<message>
<source>New weapon set</source>
- <translation type="unfinished"></translation>
+ <translation>Nouvel ensemble d'armes</translation>
</message>
<message>
<source>Edit weapon set</source>
- <translation type="unfinished"></translation>
+ <translation>Modifier un ensemble d'armes</translation>
</message>
<message>
<source>Delete weapon set</source>
- <translation type="unfinished"></translation>
+ <translation>Supprimer un ensemble d'armes</translation>
</message>
</context>
<context>
@@ -896,36 +899,36 @@
</message>
<message>
<source>Random Maze</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Labyrinthe aléatoire</translation>
</message>
<message>
<source>State:</source>
- <translation type="unfinished"></translation>
+ <translation>État : </translation>
</message>
<message>
<source>Rules:</source>
- <translation type="unfinished"></translation>
+ <translation>Règles : </translation>
</message>
<message>
<source>Weapons:</source>
- <translation type="unfinished"></translation>
+ <translation>Armes : </translation>
</message>
<message>
<source>Search:</source>
- <translation type="unfinished"></translation>
+ <translation>Recherche : </translation>
</message>
<message>
<source>Clear</source>
- <translation type="unfinished"></translation>
+ <translation>Effacer</translation>
</message>
<message>
<source>Warning</source>
- <translation type="unfinished"></translation>
+ <translation>Attention</translation>
</message>
<message>
<source>The game you are trying to join has started.
Do you still want to join the room?</source>
- <translation type="unfinished"></translation>
+ <translation>Vous voulez rejoindre une partie qui a déjà commencée. Voulez-vous tout de même rejoindre la salle ?</translation>
</message>
</context>
<context>
@@ -992,59 +995,59 @@
</message>
<message>
<source>Order of play is random instead of in room order.</source>
- <translation type="unfinished"></translation>
+ <translation>Ordre de jeu aléatoire plutôt que par ordre dans la salle.</translation>
</message>
<message>
<source>Play with a King. If he dies, your side dies.</source>
- <translation type="unfinished"></translation>
+ <translation>Jouez avec un Roi. S'il meurs, votre côté perds.</translation>
</message>
<message>
<source>Take turns placing your hedgehogs before the start of play.</source>
- <translation type="unfinished"></translation>
+ <translation>Placez vos hérissons chacun à votre tour avant de commencer à jouer.</translation>
</message>
<message>
<source>Ammo is shared between all teams that share a colour.</source>
- <translation type="unfinished"></translation>
+ <translation>Les munitions sont partagées parmi les équipes de même couleur.</translation>
</message>
<message>
<source>Disable girders when generating random maps.</source>
- <translation type="unfinished"></translation>
+ <translation>Désactiver les poutres en générant des cartes aléatoires.</translation>
</message>
<message>
<source>Disable land objects when generating random maps.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Désactiver les objets de terrain en générant des cartes aléatoires.</translation>
</message>
<message>
<source>AI respawns on death.</source>
- <translation type="unfinished"></translation>
+ <translation>L'IA ressuscite à chaque mort.</translation>
</message>
<message>
<source>All (living) hedgehogs are fully restored at the end of turn</source>
- <translation type="unfinished"></translation>
+ <translation>Tous les hérissons (vivants) sont soignés complètement à la fin du tour.</translation>
</message>
<message>
<source>Attacking does not end your turn.</source>
- <translation type="unfinished"></translation>
+ <translation>Attaquer ne termine pas votre tour.</translation>
</message>
<message>
<source>Weapons are reset to starting values each turn.</source>
- <translation type="unfinished"></translation>
+ <translation>Les armes sont réinitialisées aux valeurs de départ à la fin de chaque tour.</translation>
</message>
<message>
<source>Each hedgehog has its own ammo. It does not share with the team.</source>
- <translation type="unfinished"></translation>
+ <translation>Chaque hérisson a ses propres munitions. Il ne les partage pas avec son équipe.</translation>
</message>
<message>
<source>You will not have to worry about wind anymore.</source>
- <translation type="unfinished"></translation>
+ <translation>Vous n'aurez plus jamais à vous soucier du vent.</translation>
</message>
<message>
<source>Wind will affect almost everything.</source>
- <translation type="unfinished"></translation>
+ <translation>Le vent affectera quasiment tout.</translation>
</message>
<message>
<source>Copy</source>
- <translation type="unfinished"></translation>
+ <translation>Copier</translation>
</message>
</context>
<context>
@@ -1059,11 +1062,11 @@
</message>
<message>
<source>New</source>
- <translation type="unfinished">Nouveau</translation>
+ <translation>Nouveau</translation>
</message>
<message>
<source>Copy</source>
- <translation type="unfinished"></translation>
+ <translation>Copier</translation>
</message>
</context>
<context>
@@ -1090,7 +1093,7 @@
</message>
<message>
<source>Campaign Mode (...). IN DEVELOPMENT</source>
- <translation type="unfinished"></translation>
+ <translation>Mode Campagne (...). EN DÉVELOPPEMENT</translation>
</message>
</context>
<context>
@@ -1121,23 +1124,23 @@
</message>
<message>
<source>Follow</source>
- <translation type="unfinished"></translation>
+ <translation>Suivre</translation>
</message>
<message>
<source>Ignore</source>
- <translation type="unfinished"></translation>
+ <translation>Ignorer</translation>
</message>
<message>
<source>Add friend</source>
- <translation type="unfinished"></translation>
+ <translation>Ajouter un ami</translation>
</message>
<message>
<source>Unignore</source>
- <translation type="unfinished"></translation>
+ <translation>Ne plus ignorer</translation>
</message>
<message>
<source>Remove friend</source>
- <translation type="unfinished"></translation>
+ <translation>Retirer un ami</translation>
</message>
</context>
<context>
@@ -1180,19 +1183,19 @@
</message>
<message>
<source>Show ammo menu tooltips</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Montrer le menu d'aide des munitions.</translation>
</message>
<message>
<source>Enable frontend sounds</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Activer les sons du menu principal</translation>
</message>
<message>
<source>Enable frontend music</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Activer la musique du menu principal</translation>
</message>
<message>
<source>Frontend effects</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Effets du menu principal</translation>
</message>
</context>
<context>
@@ -1211,19 +1214,19 @@
</message>
<message>
<source>(System default)</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Réglage du système</translation>
</message>
<message>
<source>generated maze...</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Labyrinthe généré</translation>
</message>
<message>
<source>Mission</source>
- <translation type="unfinished"></translation>
+ <translation>Mission</translation>
</message>
<message>
<source>Community</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Communauté</translation>
</message>
<message>
<source>Any</source>
@@ -1235,7 +1238,7 @@
</message>
<message>
<source>In progress</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">En cours</translation>
</message>
<message>
<source>Default</source>
@@ -1243,7 +1246,7 @@
</message>
<message>
<source>hand drawn map...</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Carte dessinée</translation>
</message>
</context>
<context>
@@ -1278,7 +1281,7 @@
</message>
<message>
<source>Weapons</source>
- <translation type="obsolete">Armes</translation>
+ <translation>Armes</translation>
</message>
<message>
<source>Game Modifiers</source>
@@ -1290,15 +1293,15 @@
</message>
<message>
<source>Team Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Réglages de l'équipe</translation>
</message>
<message>
<source>Misc</source>
- <translation type="unfinished"></translation>
+ <translation>Divers</translation>
</message>
<message>
<source>Schemes and Weapons</source>
- <translation type="unfinished"></translation>
+ <translation>Paramètres et Armes</translation>
</message>
</context>
<context>
@@ -1405,11 +1408,11 @@
</message>
<message>
<source>% Dud Mines</source>
- <translation type="unfinished"></translation>
+ <translation>% de Mines défectueuses</translation>
</message>
<message>
<source>Name</source>
- <translation type="unfinished"></translation>
+ <translation>Nom</translation>
</message>
<message>
<source>Type</source>
@@ -1417,59 +1420,59 @@
</message>
<message>
<source>Grave</source>
- <translation type="unfinished"></translation>
+ <translation>Tombe</translation>
</message>
<message>
<source>Flag</source>
- <translation type="unfinished"></translation>
+ <translation>Drapeau</translation>
</message>
<message>
<source>Voice</source>
- <translation type="unfinished"></translation>
+ <translation>Voix</translation>
</message>
<message>
<source>Locale</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Langue</translation>
</message>
<message>
<source>Restart game to apply</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Relancez le jeu pour appliquer</translation>
</message>
<message>
<source>Explosives</source>
- <translation type="unfinished"></translation>
+ <translation>Explosifs</translation>
</message>
<message>
<source>Tip: </source>
- <translation type="unfinished"></translation>
+ <translation>Conseil : </translation>
</message>
<message>
<source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source>
- <translation type="unfinished"></translation>
+ <translation>Cette version de développement est un travail en cours, il peut ne pas être compatible avec les autres versions du jeu. Certaines fonctionnalités peuvent être cassées ou incomplètes.</translation>
</message>
<message>
<source>Quality</source>
- <translation type="unfinished"></translation>
+ <translation>Qualité</translation>
</message>
<message>
<source>% Health Crates</source>
- <translation type="unfinished"></translation>
+ <translation>% Caisses de Santé</translation>
</message>
<message>
<source>Health in Crates</source>
- <translation type="unfinished"></translation>
+ <translation>Santé dans les Caisses</translation>
</message>
<message>
<source>Sudden Death Water Rise</source>
- <translation type="unfinished"></translation>
+ <translation>Montée de l'eau à la Mort Subite</translation>
</message>
<message>
<source>Sudden Death Health Decrease</source>
- <translation type="unfinished"></translation>
+ <translation>Perte de Santé à la Mort Subite</translation>
</message>
<message>
<source>% Rope Length</source>
- <translation type="unfinished"></translation>
+ <translation>% longueur de la Corde Ninja</translation>
</message>
<message>
<source>Gameplay</source>
@@ -1530,39 +1533,39 @@
</message>
<message>
<source>Can not overwrite default weapon set '%1'!</source>
- <translation type="unfinished"></translation>
+ <translation>Impossible d'enregistrer sur le set d'armes par défaut.</translation>
</message>
<message>
<source>All file associations have been set.</source>
- <translation type="unfinished"></translation>
+ <translation>Toutes les associations d'extensions de fichiers ont été effectuées.</translation>
</message>
<message>
<source>File association failed.</source>
- <translation type="unfinished"></translation>
+ <translation>Les associations d'extensions de fichiers ont échoué.</translation>
</message>
<message>
<source>Teams</source>
- <translation type="unfinished">Équipes</translation>
+ <translation>Équipes</translation>
</message>
<message>
<source>Really delete this team?</source>
- <translation type="unfinished"></translation>
+ <translation>Voulez-vous vraiment effacer cette équipe ?</translation>
</message>
<message>
<source>Schemes</source>
- <translation type="unfinished"></translation>
+ <translation>Paramètres de jeu</translation>
</message>
<message>
<source>Can not delete default scheme '%1'!</source>
- <translation type="unfinished"></translation>
+ <translation>Impossible d'effacer les paramètres de jeu par défaut.</translation>
</message>
<message>
<source>Really delete this game scheme?</source>
- <translation type="unfinished"></translation>
+ <translation>Voulez-vous vraiment effacer ces paramètres de jeu ?</translation>
</message>
<message>
<source>Can not delete default weapon set '%1'!</source>
- <translation type="unfinished"></translation>
+ <translation>Impossible d'effacer le set d'armes par défaut.</translation>
</message>
</context>
<context>
@@ -1652,15 +1655,15 @@
</message>
<message>
<source>Random Team</source>
- <translation type="unfinished"></translation>
+ <translation>Équipes aléatoires</translation>
</message>
<message>
<source>Associate file extensions</source>
- <translation type="unfinished"></translation>
+ <translation>Associer les extensions de fichiers</translation>
</message>
<message>
<source>more</source>
- <translation type="unfinished"></translation>
+ <translation>plus</translation>
</message>
</context>
<context>
@@ -1706,19 +1709,19 @@
</message>
<message>
<source>Ammo in boxes</source>
- <translation type="unfinished"></translation>
+ <translation>Munitions dans les caisses</translation>
</message>
<message>
<source>Delays</source>
- <translation type="unfinished"></translation>
+ <translation>Délais</translation>
</message>
<message>
<source>new</source>
- <translation type="unfinished"></translation>
+ <translation>Nouveau</translation>
</message>
<message>
<source>copy of</source>
- <translation type="unfinished"></translation>
+ <translation>Copie de</translation>
</message>
</context>
<context>
@@ -1780,59 +1783,59 @@
</message>
<message>
<source>Add Mines</source>
- <translation type="obsolete">Ajouter des Mines</translation>
+ <translation>Ajouter des Mines</translation>
</message>
<message>
<source>Random Order</source>
- <translation type="unfinished"></translation>
+ <translation>Ordre aléatoire</translation>
</message>
<message>
<source>King</source>
- <translation type="unfinished"></translation>
+ <translation>Roi</translation>
</message>
<message>
<source>Place Hedgehogs</source>
- <translation type="unfinished"></translation>
+ <translation>Placer les hérissons</translation>
</message>
<message>
<source>Clan Shares Ammo</source>
- <translation type="unfinished"></translation>
+ <translation>Les Clans partagent les munitions</translation>
</message>
<message>
<source>Disable Girders</source>
- <translation type="unfinished"></translation>
+ <translation>Désactiver les poutres</translation>
</message>
<message>
<source>Disable Land Objects</source>
- <translation type="unfinished"></translation>
+ <translation>Désactiver les objets de terrain</translation>
</message>
<message>
<source>AI Survival Mode</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Mode de survie de l'IA</translation>
</message>
<message>
<source>Reset Health</source>
- <translation type="unfinished"></translation>
+ <translation>Réinitialiser la Santé</translation>
</message>
<message>
<source>Unlimited Attacks</source>
- <translation type="unfinished"></translation>
+ <translation>Attaques illimitées</translation>
</message>
<message>
<source>Reset Weapons</source>
- <translation type="unfinished"></translation>
+ <translation>Réinitialiser les Armes</translation>
</message>
<message>
<source>Per Hedgehog Ammo</source>
- <translation type="unfinished"></translation>
+ <translation>Munitions par hérisson</translation>
</message>
<message>
<source>Disable Wind</source>
- <translation type="unfinished"></translation>
+ <translation>Désactiver le vent</translation>
</message>
<message>
<source>More Wind</source>
- <translation type="unfinished"></translation>
+ <translation>Davantage de vent</translation>
</message>
</context>
<context>
@@ -2103,7 +2106,7 @@
</message>
<message>
<source>Hat</source>
- <translation type="unfinished">Bouton directionnel</translation>
+ <translation type="unfinished">Chapeau</translation>
</message>
<message>
<source>(Left)</source>
@@ -2403,7 +2406,7 @@
</message>
<message>
<source>Clear</source>
- <translation type="unfinished"></translation>
+ <translation>Effacer</translation>
</message>
</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Fri Dec 31 03:29:41 2010 +0100
@@ -9,7 +9,22 @@
</message>
<message>
<source>copy of</source>
- <translation type="unfinished"></translation>
+ <translation>备份</translation>
+ </message>
+</context>
+<context>
+ <name>DrawMapWidget</name>
+ <message>
+ <source>File error</source>
+ <translation>文件错误</translation>
+ </message>
+ <message>
+ <source>Cannot open file '%1' for writing</source>
+ <translation>无法打开文件 '%1' 写入</translation>
+ </message>
+ <message>
+ <source>Cannot read file '%1'</source>
+ <translation>无法读取文件 '%1'</translation>
</message>
</context>
<context>
@@ -187,11 +202,11 @@
</message>
<message>
<source>Seed</source>
- <translation type="unfinished"></translation>
+ <translation>作种</translation>
</message>
<message>
<source>Set</source>
- <translation type="unfinished"></translation>
+ <translation>设定</translation>
</message>
</context>
<context>
@@ -329,31 +344,31 @@
<name>PageDrawMap</name>
<message>
<source>Undo</source>
- <translation type="unfinished"></translation>
+ <translation>取消</translation>
</message>
<message>
<source>Clear</source>
- <translation type="unfinished"></translation>
+ <translation>清除</translation>
</message>
<message>
<source>Load</source>
- <translation type="unfinished">读取</translation>
+ <translation>读取</translation>
</message>
<message>
<source>Save</source>
- <translation type="unfinished"></translation>
+ <translation>保存</translation>
</message>
<message>
<source>Load drawn map</source>
- <translation type="unfinished"></translation>
+ <translation>读取已经绘制的地图</translation>
</message>
<message>
<source>Drawn Maps (*.hwmap);;All files (*.*)</source>
- <translation type="unfinished"></translation>
+ <translation>绘制的地图 (*.hwmap);;全部文件 (*.*)</translation>
</message>
<message>
<source>Save drawn map</source>
- <translation type="unfinished"></translation>
+ <translation>保存绘制的地图</translation>
</message>
</context>
<context>
@@ -1083,7 +1098,7 @@
</message>
<message>
<source>Copy</source>
- <translation type="unfinished"></translation>
+ <translation>备份</translation>
</message>
</context>
<context>
@@ -1102,7 +1117,7 @@
</message>
<message>
<source>Copy</source>
- <translation type="unfinished"></translation>
+ <translation>备份</translation>
</message>
</context>
<context>
@@ -1310,7 +1325,7 @@
</message>
<message>
<source>hand drawn map...</source>
- <translation type="unfinished"></translation>
+ <translation>手绘地图</translation>
</message>
</context>
<context>
@@ -1540,7 +1555,7 @@
</message>
<message>
<source>Gameplay</source>
- <translation type="unfinished"></translation>
+ <translation>游戏</translation>
</message>
</context>
<context>
--- a/share/hedgewars/Data/Locale/ko.lua Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Locale/ko.lua Fri Dec 31 03:29:41 2010 +0100
@@ -28,7 +28,6 @@
-- ["Eliminate Poison before the time runs out"] = "",
-- ["Eliminate the Blue Team"] = "",
-- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "",
--- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "",
-- ["Enjoy the swim..."] = "",
-- ["Fastest lap: "] = "",
-- ["Feeble Resistance"] = "",
@@ -53,8 +52,7 @@
-- ["Listen up, maggot!!"] = "",
-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESS"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["NEW fastest lap: "] = "",
-- ["NO JUMPING"] = "",
-- ["Not So Friendly Match"] = "", -- Basketball, Knockball
@@ -63,11 +61,10 @@
-- ["Operation Diver"] = "",
-- ["Opposing Team: "] = "",
-- ["Pathetic Hog #%d"] = "",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
-- ["Poison"] = "",
-- ["Random Weapons"] = "",
-- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
--- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
-- ["RULES OF THE GAME [Press ESC to view]"] = "",
-- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
-- ["See ya!"] = "",
@@ -89,7 +86,7 @@
-- ["T_T"] = "",
-- ["Unit 3378"] = "",
-- ["Use your rope to get from start to finish as fast as you can!"] = "",
--- ["Victory for the"] = "",
+-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag
-- ["You have SCORED!!"] = "",
-- ["You've failed. Try again."] = "",
-- ["You've reached the goal!| |Time: "] = "",
--- a/share/hedgewars/Data/Locale/pl.lua Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Locale/pl.lua Fri Dec 31 03:29:41 2010 +0100
@@ -20,8 +20,8 @@
["CTF_BLIZZARD"] = "Śnieżyca",
["CUSTOM BUILD 0.2"] = "Wersja 0.2",
["Cybernetic Empire"] = "Cybernetyczne Imperium",
+ ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "Młody!!! Złaź z mojej głowy!!!",
["DAMMIT, ROOKIE!"] = "Żółtodziobie!",
- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "Młody!!! Złaź z mojej głowy!!!",
["Dangerous Ducklings"] = "Niebezpieczne Kaczory",
["Eliminate all enemies"] = "Wyeliminuj wszystkich przeciwników",
["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Zniszcz wszystkie cele zanim upłynie czas.|W tej misji masz nieskończoną ilość amunicji.",
@@ -53,7 +53,6 @@
["|- Mines Time:"] = "|- Czas detonacji min:",
["MISSION FAILED"] = "MISJA ZAKOŃCZONA NIEPOWODZENIEM",
["MISSION SUCCESSFUL"] = "MISJA POWIODŁA SIĘ",
- ["MISSION SUCCESS"] = "MISJA POWIODŁA SIĘ",
["NEW fastest lap: "] = "NOWE najszybsze okrążenie: ",
["NO JUMPING"] = "BEZ SKAKANIA",
["Not So Friendly Match"] = "Mecz Nie-Do-Końca Towarzyski",
@@ -62,6 +61,7 @@
["Operation Diver"] = "Operacja Nurek",
["Opposing Team: "] = "Przeciwna drużyna",
["Pathetic Hog #%d"] = "Załosny Jeż #%d",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
["Poison"] = "Truciciel",
["Random Weapons"] = "Losowe uzbrojenie",
[" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = " - Przynieś flagę wroga do swojej bazy by zdobyć punkt | - Pierwszy kto zrobi to 3 razy, wygrywa | - Punkt zdobywasz tylko gdy twoja flaga znajduje się w bazie | - Jeże upuszczą flagę gdy zostaną zabite bądź utopione | - Upuszczona flaga może być przywrócona lub przechwycona ponownie | - Jeże odradzają się po śmierci",
@@ -86,7 +86,7 @@
["T_T"] = "T_T",
["Unit 3378"] = "Jednostka 3378",
["Use your rope to get from start to finish as fast as you can!"] = "Użyj liny by jak najszybciej dotrzec od startu do mety",
- ["Victory for the"] = "Zwycięstwo przypadło",
+ ["Victory for the "] = "Zwycięstwo przypadło",
["You have SCORED!!"] = "Zdobyłeś PUNKT",
["You've failed. Try again."] = "Przegrałeś. Spróbuj jeszcze raz",
["You've reached the goal!| |Time: "] = "Dotarłeś do celu!| |Czas: ",
--- a/share/hedgewars/Data/Locale/pt_BR.lua Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Locale/pt_BR.lua Fri Dec 31 03:29:41 2010 +0100
@@ -52,8 +52,7 @@
-- ["Listen up, maggot!!"] = "",
-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESS"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["NEW fastest lap: "] = "NOVA volta mais rápida: ",
-- ["NO JUMPING"] = "",
["Not So Friendly Match"] = "Partida não muito amigável", -- Basketball, Knockball
@@ -62,11 +61,11 @@
-- ["Operation Diver"] = "",
-- ["Opposing Team: "] = "",
-- ["Pathetic Hog #%d"] = "",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
-- ["Poison"] = "",
-- ["Random Weapons"] = "",
-- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
-- ["RULES OF THE GAME [Press ESC to view]"] = "",
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
-- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
-- ["See ya!"] = "",
["Shotgun Team"] = "Carabineiros",
@@ -87,7 +86,7 @@
-- ["T_T"] = "",
-- ["Unit 3378"] = "",
["Use your rope to get from start to finish as fast as you can!"] = "Use sua corda para ir do início ao fim o mais rápido que você puder!",
--- ["Victory for the"] = "",
+-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag
-- ["You have SCORED!!"] = "",
-- ["You've failed. Try again."] = "",
-- ["You've reached the goal!| |Time:"] = "",
--- a/share/hedgewars/Data/Locale/pt_PT.lua Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Locale/pt_PT.lua Fri Dec 31 03:29:41 2010 +0100
@@ -52,8 +52,7 @@
-- ["Listen up, maggot!!"] = "",
-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESS"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["NEW fastest lap: "] = "NOVA volta recorde: ",
-- ["NO JUMPING"] = "",
["Not So Friendly Match"] = "Partida não muito amigável", -- Basketball, Knockball
@@ -62,11 +61,11 @@
-- ["Operation Diver"] = "",
-- ["Opposing Team: "] = "",
-- ["Pathetic Hog #%d"] = "",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
-- ["Poison"] = "",
-- ["Random Weapons"] = "",
-- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
-- ["RULES OF THE GAME [Press ESC to view]"] = "",
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
-- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
-- ["See ya!"] = "",
["Shotgun Team"] = "Caçadores",
@@ -87,7 +86,7 @@
-- ["T_T"] = "",
-- ["Unit 3378"] = "",
["Use your rope to get from start to finish as fast as you can!"] = "Utilizando a corda, percorre o percurso do inicio ao fim o mais rápido que conseguires!",
--- ["Victory for the"] = "",
+-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag
-- ["You have SCORED!!"] = "",
-- ["You've failed. Try again."] = "",
-- ["You've reached the goal!| |Time:"] = "",
--- a/share/hedgewars/Data/Locale/sk.lua Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Locale/sk.lua Fri Dec 31 03:29:41 2010 +0100
@@ -1,96 +1,95 @@
locale = {
--- [":("] = "",
--- ["!!!"] = "",
--- ["A game of luck"] = "",
+ [":("] = "",
+ ["!!!"] = "",
+ ["A game of luck"] = "Hra o šťastí",
["Aiming Practice"] = "Tréning presnosti", --Bazooka, Shotgun, SniperRifle
["Bat balls at your enemies and|push them into the sea!"] = "Loptami triafajte vašich nepriateľov|a zhoďte ich tak do mora!",
["Bat your opponents through the|baskets and out of the map!"] = "Odpálkujte vašich súperov do koša|a von z mapy!",
["Bazooka Training"] = "Tréning s bazukou",
["Best laps per team: "] = "Najrýchlejšie kolá podľa tímov: ",
--- ["Bloody Rookies"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree
--- ["Boom!"] = "",
--- ["by mikade"] = "", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
--- ["CAPTURE THE FLAG"] = "",
--- ["Codename: Teamwork"] = "",
--- ["Congratulations!"] = "",
+ ["Bloody Rookies"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree
+ ["Boom!"] = "Bum!",
+ ["by mikade"] = "napísal mikade", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
+ ["CAPTURE THE FLAG"] = "ZMOCNITE SA VLAJKY",
+ ["Codename: Teamwork"] = "Kódové meno: Teamová práca",
+ ["Congratulations!"] = "Gratulujem!",
["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Gratulujem! Zneškodnili ste všetky ciele|v stanovenom čase.", --Bazooka, Shotgun, SniperRifle
--- ["CONTROL"] = "",
--- ["Control pillars to score points."] = "",
--- ["CONTROL v0.3"] = "",
--- ["CTF_BLIZZARD"] = "",
--- ["CUSTOM BUILD 0.2"] = "",
--- ["Cybernetic Empire"] = "",
--- ["DAMMIT, ROOKIE!"] = "",
--- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "",
--- ["Dangerous Ducklings"] = "",
--- ["Eliminate all enemies"] = "",
+ ["CONTROL"] = "OVLÁDNUTIE",
+ ["Control pillars to score points."] = "Ovládnite piliere, aby ste skórovali",
+ ["CONTROL v0.3"] = "OVLÁDNUTIE v0.3",
+ ["CTF_BLIZZARD"] = "CTF_METELICA",
+ ["CUSTOM BUILD 0.2"] = "VLASTNÉ ZOSTAVENIE 0.2",
+ ["Cybernetic Empire"] = "Kybertnetické impérium",
+ ["DAMMIT, ROOKIE!"] = "Prekliaty zelenáč!",
+ ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "Do kelu s tebou, zelenáč! Okamžite mi zlez z hlavy!",
+ ["Dangerous Ducklings"] = "Nebezpečné kačiatka",
+ ["Eliminate all enemies"] = "Zneškodnite všetkých nepriateľov",
["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Zneškodnite všetky ciele pred vypršaním času.|Na túto misiu máte neobmedzené množstvo streliva.", --Bazooka, Shotgun, SniperRifle
--- ["Eliminate Poison before the time runs out"] = "",
--- ["Eliminate the Blue Team"] = "",
--- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "",
--- ["Enjoy the swim..."] = "",
+ ["Eliminate Poison before the time runs out"] = "Zneškodnite Poisona pred tým, ako vyprší čas",
+ ["Eliminate the Blue Team"] = "Zneškodnite modrý tím",
+ ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Zneškodnite Jednotku 3378|- Slabý odpor musí prežiť",
+ ["Enjoy the swim..."] = "Užite si plávanie...",
["Fastest lap: "] = "Najrýchlejšie kolo: ",
--- ["Feeble Resistance"] = "",
--- ["Flag captured!"] = "",
--- ["Flag respawned!"] = "",
--- ["Flag returned!"] = "",
--- ["Flags will be placed where each team ends their turn."] = "",
--- ["GAME OVER!"] = "",
--- ["Game Started!"] = "",
--- ["Get on over there and take him out!"] = "",
--- ["Goal:"] = "",
--- ["GO! GO! GO!"] = "",
--- ["Good birdy......"] = "",
--- ["Good luck out there!"] = "",
+ ["Feeble Resistance"] = "Slabý odpor",
+ ["Flag captured!"] = "Získaná vlajka!",
+ ["Flag respawned!"] = "Vlajka obnovená!",
+ ["Flag returned!"] = "Vlajka vrátená!",
+ ["Flags will be placed where each team ends their turn."] = "Vlajky budu umiestnené po skončení tohto ťahu",
+ ["GAME OVER!"] = "KONIEC HRY!",
+ ["Game Started!"] = "Hra začala!",
+ ["Get on over there and take him out!"] = "Okamžite poď sem a dostaň ho!",
+ ["Goal:"] = "Cieľ:",
+ ["GO! GO! GO!"] = "POĎ! POĎ! POĎ!",
+ ["Good birdy......"] = "Dobrý vtáčik......",
+ ["Good luck out there!"] = "Veľa šťastia!",
["Hedgewars-Basketball"] = "Hedgewars-Basketbal",
["Hedgewars-Knockball"] = "Hedgewars-Knockball",
--- ["Hmmm..."] = "",
--- ["Hooray!"] = "",
+ ["Hmmm..."] = "Hmm..",
+ ["Hooray!"] = "Hurá!",
["Hunter"] = "Lovec", --Bazooka, Shotgun, SniperRifle
--- ["Instructor"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings
--- ["- Jumping is disabled"] = "",
--- ["Listen up, maggot!!"] = "",
--- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESS"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["Inštruktor"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings
+ ["- Jumping is disabled"] = "- Skákanie je vypnuté",
+ ["Listen up, maggot!!"] = "Počúvaj, ty biedny červ!",
+ ["|- Mines Time:"] = "|- Časovač pre míny:", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION FAILED"] = "MISIA NEÚSPEŠNÁ", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION SUCCESSFUL"] = "MISIA ÚSPEŠNÁ", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["NEW fastest lap: "] = "NOVÉ najrýchlejšie kolo: ",
--- ["NO JUMPING"] = "",
+ ["NO JUMPING"] = "ŽIADNE SKÁKANIE",
["Not So Friendly Match"] = "Nie tak celkom priateľský zápas", -- Basketball, Knockball
--- ["Oh no! Just try again!"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
- ["Oh no! Time's up! Just try again."] = "Ale nie! Čas vypršal! Tak to skúste znovu.", --Bazooka, Shotgun, SniperRifle
--- ["Operation Diver"] = "",
--- ["Opposing Team: "] = "",
--- ["Pathetic Hog #%d"] = "",
--- ["Poison"] = "",
--- ["Random Weapons"] = "",
--- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
--- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
--- ["See ya!"] = "",
+ ["Oh no! Just try again!"] = "Áále nie! Tak to skúste znovu!", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["Oh no! Time's up! Just try again."] = "Áále nie! Čas vypršal! Tak to skúste znovu.", --Bazooka, Shotgun, SniperRifle
+ ["Operation Diver"] = "Operácia Potápač",
+ ["Opposing Team: "] = "Nepriateľský tím",
+ ["Pathetic Hog #%d"] = "Žalostný ježko #%d",
+ ["points"] = "body", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
+ ["Poison"] = "Poison",
+ ["Random Weapons"] = "Náhodné zbrane",
+ [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = " - Skórujete prinesením nepriateľskej vlajky do vašej základne | - Prvý tím, ktorý dosiahne 3 body, vyhráva | - Skórujete len vtedy, keď je máte svoju vlajku v základni | - Spadnuté vlajky môžu byť vrátené na základňu alebo sa ich môže zmocniť súpere | - Ježkovia po smrti ožiujú",
+ ["RULES OF THE GAME [Press ESC to view]"] = "PRAVIDLÁ HRY [Stlačte Esc pre ich zobrazenie]",
+ ["sec"] = "sek", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
+ ["See ya!"] = "Tak zatiaľ!",
["Shotgun Team"] = "Shotgun tím",
["Shotgun Training"] = "Tréning s brokovnicou",
["%s is out and Team %d|scored a penalty!| |Score:"] = "%s je mimo hru a tím %d|dostal trestný bod!| |Skóre:", -- Basketball, Knockball
["%s is out and Team %d|scored a point!| |Score:"] = "%s je mimo hru a tím %d|získal bod!| |Skóre:", -- Basketball, Knockball
["Sniper Training"] = "Tréning pre ostreľovačov",
["Sniperz"] = "Ostreľovači",
--- ["Spooky Tree"] = "",
+ ["Spooky Tree"] = "Strašidelný strom",
["Team %d: "] = "Tím %d: ",
--- ["Team Scores:"] = "",
--- ["That was pointless."] = "",
--- ["The enemy is hiding out on yonder ducky!"] = "",
--- ["The flag will respawn next round."] = "",
--- ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "",
--- ["Toxic Team"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["Team Scores:"] = "Tím skóruje:",
+ ["That was pointless."] = "To bolo zbytočné.",
+ ["The enemy is hiding out on yonder ducky!"] = "Nepriateľ sa schováva na tamtej kačičke!",
+ ["The flag will respawn next round."] = "V ďalšom kole sa obnoví vlajka.",
+ ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "Niekto rozhádzal vašu výbavu a teraz|musíte použiť len to, čo vám ostalo!",
+ ["Toxic Team"] = "Toxic tím", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["TrophyRace"] = "Preteky o trofej",
--- ["T_T"] = "",
--- ["Unit 3378"] = "",
+ ["T_T"] = "T_T",
+ ["Unit 3378"] = "Jednotka 3378",
["Use your rope to get from start to finish as fast as you can!"] = "Použite lano na presun zo štartovnej pozície do cieľa tak rýchlo, ako to len viete!",
--- ["Victory for the"] = "",
--- ["You have SCORED!!"] = "",
--- ["You've failed. Try again."] = "",
--- ["You've reached the goal!| |Time:"] = "",
+ ["Victory for the "] = "Víťazstvo pre", -- CTF_Blizzard, Capture_the_Flag
+ ["You have SCORED!!"] = "SKÓROVALI ste!!",
+ ["You've failed. Try again."] = "Neuspeli ste. Skúste to znova.",
+ ["You've reached the goal!| |Time:"] = "Dosiahli ste cieľ!| |Čas:",
["You've reached the goal!| |Time: "] = "Dosiahli ste cieľ!| |Čas: ",
["'Zooka Team"] = "Bazuka tím",
}
--- a/share/hedgewars/Data/Locale/stub.lua Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Locale/stub.lua Fri Dec 31 03:29:41 2010 +0100
@@ -28,7 +28,6 @@
-- ["Eliminate Poison before the time runs out"] = "",
-- ["Eliminate the Blue Team"] = "",
-- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "",
--- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "",
-- ["Enjoy the swim..."] = "",
-- ["Fastest lap: "] = "",
-- ["Feeble Resistance"] = "",
@@ -53,8 +52,7 @@
-- ["Listen up, maggot!!"] = "",
-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESS"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["NEW fastest lap: "] = "",
-- ["NO JUMPING"] = "",
-- ["Not So Friendly Match"] = "", -- Basketball, Knockball
@@ -63,11 +61,10 @@
-- ["Operation Diver"] = "",
-- ["Opposing Team: "] = "",
-- ["Pathetic Hog #%d"] = "",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
-- ["Poison"] = "",
-- ["Random Weapons"] = "",
-- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
--- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
-- ["RULES OF THE GAME [Press ESC to view]"] = "",
-- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
-- ["See ya!"] = "",
@@ -89,7 +86,7 @@
-- ["T_T"] = "",
-- ["Unit 3378"] = "",
-- ["Use your rope to get from start to finish as fast as you can!"] = "",
--- ["Victory for the"] = "",
+-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag
-- ["You have SCORED!!"] = "",
-- ["You've failed. Try again."] = "",
-- ["You've reached the goal!| |Time: "] = "",
--- a/share/hedgewars/Data/Locale/sv.lua Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Locale/sv.lua Fri Dec 31 03:29:41 2010 +0100
@@ -52,8 +52,7 @@
["Listen up, maggot!!"] = "Hör här, ynkrygg!!",
["|- Mines Time:"] = "|- Mintid:", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["MISSION FAILED"] = "UPPDRAG MISSLYCKADES", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
- ["MISSION SUCCESSFUL"] = "UPPDRAG SLUTFÖRT", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
- ["MISSION SUCCESS"] = "UPPDRAG LYCKADES", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION SUCCESSFUL"] = "UPPDRAG SLUTFÖRT", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["NEW fastest lap: "] = "NYTT snabbast varv: ",
["NO JUMPING"] = "INGET HOPPANDE",
["Not So Friendly Match"] = "En inte så vänlig match", -- Basketball, Knockball
@@ -62,6 +61,7 @@
["Operation Diver"] = "Operationens dykare",
["Opposing Team: "] = "Motståndarlag: ",
["Pathetic Hog #%d"] = "Patetisk kott #%d",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
["Poison"] = "Gift",
["Random Weapons"] = "Slumpade vapen",
[" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = " - Återvänd med fiendens flagga till din bas för att ta poäng | - Första laget till tre vinner | - Du kan bara ta poäng när din egen flagga är i basen | - Kottar tappar flaggan när de dödas eller drunknar | - Tappade flaggor kan tas tillbaka eller fångas | - Kottar kommer tillbaka när de dör",
@@ -86,7 +86,7 @@
["T_T"] = "T_T",
["Unit 3378"] = "Enhet 3378",
["Use your rope to get from start to finish as fast as you can!"] = "Använd ditt rep för att ta dig från start till mål så fort som möjligt!",
- ["Victory for the"] = "Vinst för",
+ ["Victory for the "] = "Vinst för", -- CTF_Blizzard, Capture_the_Flag
["You have SCORED!!"] = "Du har tagit poäng!",
["You've failed. Try again."] = "Du har misslyckats. Försök igen.",
["You've reached the goal!| |Time: "] = "Du har nått målet!| |Tid: ",
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Locale/zh_CN.lua Fri Dec 31 03:29:41 2010 +0100
@@ -0,0 +1,98 @@
+locale = {
+ ["!!!"] = "!!!",
+ ["A game of luck"] = "运气游戏",
+ ["Aiming Practice"] = "瞄准练习", --火箭筒、霰弹枪、狙击枪
+ ["Bat balls at your enemies and|push them into the sea!"] = "发射棒球将敌人击打入水",
+ ["Bat your opponents through the|baskets and out of the map!"] = "把敌人击出场地——对准栏框",
+ ["Bazooka Training"] = "火箭筒训练",
+ ["Best laps per team: "] = "每一队最佳速度:",
+ ["Bloody Rookies"] = "雉儿飞", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree
+-- ["Boom!"] =
+ ["by mikade"] = "mikade撰写", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
+ ["CAPTURE THE FLAG"] = "抢旗子",
+ ["Codename: Teamwork"] = "代号:团队行动",
+ ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "恭喜!你在规定时限内清零全部目标。", --Bazooka, Shotgun, SniperRifle
+ ["Congratulations!"] = "恭喜",
+ ["Control pillars to score points."] = "控制支柱得分",
+ ["CONTROL v0.3"] = "控制 v0.3",
+ ["CONTROL"] = "控制",
+-- ["CTF_BLIZZARD"] =
+ ["CUSTOM BUILD 0.2"] = "自定义建设 0.2",
+ ["Cybernetic Empire"] = "自动化帝国",
+ ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "新人,别让我看到",
+ ["DAMMIT, ROOKIE!"] = "新人",
+ ["Dangerous Ducklings"] = "危险的小鸭子",
+ ["Eliminate all enemies"] = "解决全部对手",
+ ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "时间限制内清除全部目标。弹药无限。", --Bazooka, Shotgun, SniperRifle
+ ["Eliminate Poison before the time runs out"] = "时间限制内清除毒素。",
+ ["Eliminate the Blue Team"] = "解决蓝色队伍",
+ ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- 打倒 3378 |-反抗者必须存活",
+ ["Enjoy the swim..."] = "游水愉快",
+ ["Fastest lap: "] = "最快记录:",
+ ["Feeble Resistance"] = "反抗者",
+ ["Flag captured!"] = "夺旗得分!",
+ ["Flag respawned!"] = "旗帜重生!",
+ ["Flag returned!"] = "旗帜归还!",
+ ["Flags will be placed where each team ends their turn."] = "旗帜会被放置在每个队伍回合结束时所在的地方。",
+ ["GAME OVER!"] = "结束了!",
+ ["Game Started!"] = "开始",
+ ["Get on over there and take him out!"] = "上去把它拉下来!",
+-- ["Goal:"] =
+ ["GO! GO! GO!"] = "上!",
+ ["Good birdy......"] = "乖鸟儿",
+ ["Good luck out there!"] = "祝好运",
+ ["Hedgewars-Basketball"] = "刺猬大作战-篮球计划",
+ ["Hedgewars-Knockball"] = "刺猬大作战-击球计划",
+ ["Hmmm..."] = "呃...",
+ ["Hooray!"] = "呼!",
+ ["Hunter"] = "猎人", --Bazooka, Shotgun, SniperRifle
+ ["Instructor"] = "引导员", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings
+ ["- Jumping is disabled"] = "- 跳跃禁止",
+ ["Listen up, maggot!!"] = "听好,小子!!",
+-- ["|- Mines Time:"] =
+ ["MISSION FAILED"] = "任务失败", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION SUCCESSFUL"] = "任务成功", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["NEW fastest lap: "] = "新记录",
+ ["NO JUMPING"] = "不准跳",
+ ["Not So Friendly Match"] = "非友善对抗", -- Basketball, Knockball
+ ["Oh no! Just try again!"] = "不!重新再来。", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["Oh no! Time's up! Just try again."] = "不!到点了,需要重新来。", --Bazooka, Shotgun, SniperRifle
+ ["Operation Diver"] = "水下行动",
+-- ["Opposing Team: "] =
+ ["Opposing Team:"] = "对方队伍",
+ ["Pathetic Hog #1"] = "可怜刺猬一号",
+ ["Pathetic Hog #2"] = "可怜刺猬二号",
+-- ["Pathetic Hog #%d"] =
+-- ["points"] =
+-- ["Poison"] =
+ ["Random Weapons"] = "随机武器",
+-- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] =
+ ["- Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "-带回敌人旗帜得分| -第一支3次夺旗队伍获胜| - 只有旗帜在己方基地才算| -带旗刺猬消逝则旗帜落下| -落下的旗帜使用方式不变| -损失的刺猬瞬间还原",
+ ["RULES OF THE GAME [Press ESC to view]"] = "游戏规则 [按下 ESC键 查看]",
+-- ["sec"] =
+ ["See ya!"] = "再见!",
+ ["Shotgun Team"] = "霰弹枪队",
+ ["Shotgun Training"] = "霰弹枪训练",
+ ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s 出局, %d 惩罚分数!", -- Basketball, Knockball
+ ["%s is out and Team %d|scored a point!| |Score:"] = "%s 出局, %d 得分!", -- Basketball, Knockball
+ ["Sniper Training"] = "狙击训练",
+ ["Sniperz"] = "狙击手",
+ ["Spooky Tree"] = "怪树",
+ ["Team %d: "] = "队伍 %d",
+ ["Team Scores:"] = "队伍得分:",
+-- ["That was pointless."] =
+ ["The enemy is hiding out on yonder ducky!"] = "敌人藏在那边!",
+-- ["The flag will respawn next round."] =
+ ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "现阶段装备混用,只能最大|程度地用好到手的玩具。",
+ ["Toxic Team"] = "腐坏的队伍", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["TrophyRace"] = "竞速",
+ ["T_T"] = "T_T",
+ ["Unit 3378"] = "3378",
+ ["Use your rope to get from start to finish as fast as you can!"] = "抓起绳子飞向目的地,越快越好。",
+ ["Victory for the "] = "胜利属于",
+ ["You have SCORED!!"] = "得分",
+ ["You've failed. Try again."] = "失败了。再尝试吧。",
+ ["You've reached the goal!| |Time: "] = "目标达成| |时间:",
+ ["'Zooka Team"] = "火箭队",
+ [":("] = "囧",
+ }
--- a/share/hedgewars/Data/Locale/zh_CN.txt Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Locale/zh_CN.txt Fri Dec 31 03:29:41 2010 +0100
@@ -2,10 +2,10 @@
00:00=手榴弹
00:01=集束炸弹
-00:02=反坦克火箭筒
+00:02=火箭筒
00:03=归巢的蜜蜂
00:04=霰弹枪
-00:05=鹤嘴锤
+00:05=大锤
00:06=跳过回合
00:07=绳索
00:08=地雷
@@ -14,11 +14,11 @@
00:11=球棒
00:12=升龙拳
00:13=秒
-00:14=空降
+00:14=降落伞
00:15=空袭
00:16=地雷空袭
00:17=喷灯
-00:18=建设工具
+00:18=钢梁
00:19=传送
00:20=切换刺猬
00:21=迫击炮
@@ -30,19 +30,19 @@
00:27=地狱礼花
00:28=钻头火箭
00:29=弹珠炮
-00:30=汽油弹
+00:30=汽油弹空袭
00:31=遥控轰炸机
00:32=低重力
-00:33=额外伤害
+00:33=增强伤害
00:34=无敌
00:35=加时
00:36=激光瞄准
00:37=吸血
00:38=狙击枪
-00:39=飞盘
+00:39=UFO
00:40=燃烧瓶
00:41=鸟儿
-00:42=移动传送器
+00:42=传送器
00:43=飞来的钢琴
00:44=毒奶酪
00:45=正弦能量炮
@@ -51,6 +51,7 @@
00:48=大锤
00:49=复苏
00:50=电钻空袭
+00:51=土块
01:00=开战!
01:01=平局
@@ -473,7 +474,7 @@
;02:06=Shiny new toys!
02:06=新玩具!
;02:06=A mysterious box!
-02:06=谜的箱子...
+02:06=神秘的箱子!
; New utility crate
; 02:07=Tooltime!
@@ -700,7 +701,7 @@
03:39=移动工具
03:40=燃烧弹
;03:41=Huge fan of Squawks
-03:41=噪音
+03:41=粉丝的呼喊
;03:42=I'm making a note here...
03:42=我将在此记录...
; the misspelled "Beethoven" is intentional (-> to beat)
--- a/share/hedgewars/Data/Maps/CTF_Blizzard/map.lua Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Maps/CTF_Blizzard/map.lua Fri Dec 31 03:29:41 2010 +0100
@@ -1,754 +1,756 @@
---------------------------------
--- CTF_BLIZZARD 0.4
---------------------------------
-
----------
--- 0.2
----------
-
--- disabled super weapons
-
--- theme modifications
-
--- improved hog placement system: teams can now be put
--- in any order and be of any size
-
----------
--- 0.3
----------
-
--- In this version:
-
--- changed starting weapons
--- changed crate drop contents and rate of drops
-
--- completely removed super weapons and super weapon scripts
-
--- removed custom respawning
--- removed set respawn points
-
--- added AIRespawn-esque respawning
--- added simple left vs right respawn points
-
--- added non-lethal poison to flag carriers as an indicator
-
--- improved flag mechanics and player-flag feedback
--- flag now instantly respawns if you kill enemy hog and return it,
--- or if the flag falls in water, _BUT_ not if it is blown up
-
----------
--- 0.4
----------
-
--- tweaked crate drop rates and crate contents
--- improved the teleporters, they should now be able to handle rope... hopefully
--- updated SetEffect calls to be in line with 0.9.15 definitions
--- added visual gears when hogs respawn
--- added visual gears when hogs teleport
--- added visual gear to track flag and flag carriers
--- removed poisoning of flag carriers
--- removed health adjustments for flag carriers due to aforementioned poisons
-
----------
--- 0.5
----------
-
--- added translation support, hopefully
--- added ctf rules
--- added effects to the teleporters
--- added aura round spawning area
--- changed the aura around the flag carrier / flag to an aura and added some support for this
--- changed things so the seed is no longer always the same...
-
-
-loadfile(GetDataPath() .. "Scripts/Locale.lua")()
-
----------------------------------------------------------------
-----------lots of bad variables and things
-----------because someone is too lazy
-----------to read about tables properly
------------------- "Oh well, they probably have the memory"
-
-local actionReset = 0 -- used in CheckTeleporters()
-
-local roundsCounter = 0 -- used to determine when to spawn more crates
- -- currently every 6 TURNS, should this work
- -- on ROUNDS instead?
-local effectTimer = 0
-
---------------------------
--- hog and team tracking variales
---------------------------
-
-local numhhs = 0 -- store number of hedgehogs
-local hhs = {} -- store hedgehog gears
-
-local numTeams -- store the number of teams in the game
-local teamNameArr = {} -- store the list of teams
-local teamSize = {} -- store how many hogs per team
-local teamIndex = {} -- at what point in the hhs{} does each team begin
-
--------------------
--- flag variables
--------------------
-
-local fGear = {} -- pointer to the case gears that represent the flag
-local fThief = {} -- pointer to the hogs who stole the flags
-local fIsMissing = {} -- have the flags been destroyed or captured
-local fNeedsRespawn = {} -- do the flags need to be respawned
-local fCaptures = {} -- the team "scores" how many captures
-local fSpawnX = {} -- spawn X for flags
-local fSpawnY = {} -- spawn Y for flags
-
-local fThiefX = {}
-local fThiefY = {}
-local FTTC = 0 -- flag thief tracker counter
---local fThiefsHealed = false
-
-local fSpawnC = {}
-local fCirc = {} -- flag/carrier marker circles
-local fCol = {} -- colour of the clans
-
-local vCircX = {}
-local vCircY = {}
-local vCircMinA = {}
-local vCircMaxA = {}
-local vCircType = {}
-local vCircPulse = {}
-local vCircFuckAll = {}
-local vCircRadius = {}
-local vCircWidth = {}
-local vCircCol = {}
-
-
---------------------------------
---zone and teleporter variables
---------------------------------
-
-local redTel
-local orangeTel
---local areaArr = {} -- no longer used
-
-local zXMin = {}
-local zWidth = {}
-local zYMin = {}
-local zHeight = {}
-local zOccupied = {}
-local zCount = 0
-
-------------------------
--- zone methods
-------------------------
--- see on gameTick also
-
-function ManageTeleporterEffects()
- effectTimer = effectTimer + 1
- if effectTimer > 50 then -- 100
- effectTimer = 0
-
- for i = 0,1 do
- eX = 10 + zXMin[i] + GetRandom(zWidth[i]-10)
- eY = 50 + zYMin[i] + GetRandom(zHeight[i]-110)
-
- -- steam and smoke and DUST look good, smokering looks trippy
- -- smoketrace and eviltrace are not effected by wind?
- -- chunk is a LR falling gear
- tempE = AddVisualGear(eX, eY, vgtDust, 0, false)
- g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(tempE)
- SetVisualGearValues(tempE, eX, eY, g3, g4, g5, g6, g7, g8, g9, fCol[i])
- end
- end
-end
-
-function CreateZone(xMin, yMin, width, height)
-
-
- zXMin[zCount] = xMin
- zYMin[zCount] = yMin
- zWidth[zCount] = width
- zHeight[zCount] = height
- zOccupied[zCount] = false
- zCount = zCount + 1
-
- return (zCount-1)
-
-end
-
-function GearIsInZone(gear, zI)
-
- if (GetX(gear) > zXMin[zI]) and (GetX(gear) < (zXMin[zI]+zWidth[zI])) and (GetY(gear) > zYMin[zI]) and (GetY(gear) < (zYMin[zI]+zHeight[zI])) then
- zOccupied[zI] = true
- else
- zOccupied[zI] = false
- end
-
- return zOccupied[zI]
-
-end
-
-------------------------
---flag methods
-------------------------
-
-function CheckScore(teamID)
-
- if teamID == 0 then
- alt = 1
- winner = "Red"
-
- elseif teamID == 1 then
- alt = 0
- winner = "Blue"
- end
-
- if fCaptures[teamID] == 2 then
- for i = 0, (numhhs-1) do
- if GetHogClan(hhs[i]) == alt then
- SetEffect(hhs[i], heResurrectable, false)
- SetHealth(hhs[i],0)
- end
- end
- --ShowMission("GAME OVER!", "Victory for the " .. winner .. " Team!", "Hooray!", 0, 0)
- ShowMission(loc("GAME OVER!"), loc("Victory for the ") .. GetHogTeamName(CurrentHedgehog), loc("Hooray!"), 0, 0)
- end
-
-end
-
-function HandleRespawns()
-
- for i = 0, 1 do
-
- if fNeedsRespawn[i] == true then
- fGear[i] = SpawnAmmoCrate(fSpawnX[i],fSpawnY[i],amSkip)
- --fGear[i] = SpawnHealthCrate(fSpawnX[i],fSpawnY[i])
- fNeedsRespawn[i] = false
- fIsMissing[i] = false -- new, this should solve problems of a respawned flag being "returned" when a player tries to score
- AddCaption(loc("Flag respawned!"))
- end
-
- end
-
-end
-
-function FlagDeleted(gear)
-
- if (gear == fGear[0]) then
- wtf = 0
- bbq = 1
- elseif (gear == fGear[1]) then
- wtf = 1
- bbq = 0
- end
-
- --ShowMission("OH HAI!", "FlagDeleted was called", "Oh noes!", -amBazooka, 0)
-
- if CurrentHedgehog ~= nil then
-
- --ShowMission("GUESS WAT?", "I'm not nil", "Oh noes!", -amBazooka, 0)
- --if the player picks up the flag
- if CheckDistance(CurrentHedgehog, fGear[wtf]) < 1600 then
-
- fGear[wtf] = nil -- the flag has now disappeared and we shouldnt be pointing to it
-
- -- player has successfully captured the enemy flag
- if (GetHogClan(CurrentHedgehog) == wtf) and (CurrentHedgehog == fThief[bbq]) and (fIsMissing[wtf] == false) then
- fIsMissing[wtf] = false
- fNeedsRespawn[wtf] = true
- fIsMissing[bbq] = false
- fNeedsRespawn[bbq] = true
- fCaptures[wtf] = fCaptures[wtf] +1 --fCaptures[wtf]
-
- --ShowMission(loc("You have SCORED!!"), "Red Team: " .. fCaptures[0], "Blue Team: " .. fCaptures[1], -amBazooka, 0)
- ShowMission(loc("You have SCORED!!"), GetHogTeamName(CurrentHedgehog) .. ": " .. fCaptures[wtf], loc("Opposing Team: ") .. fCaptures[bbq], 0, 0)
-
- PlaySound(sndVictory)
- --SetEffect(fThief[bbq], hePoisoned, false)
- fThief[bbq] = nil -- player no longer has the enemy flag
- CheckScore(wtf)
-
- --if the player is returning the flag
- elseif GetHogClan(CurrentHedgehog) == wtf then
-
- fNeedsRespawn[wtf] = true
-
- -- NEW ADDIITON, does this work? Should make it possible to return your flag and then score in the same turn
- if fIsMissing[wtf] == true then
- HandleRespawns() -- this will set fIsMissing[wtf] to false :)
- AddCaption(loc("Flag returned!"))
- elseif fIsMissing[wtf] == false then
- AddCaption(loc("That was pointless.") .. loc("The flag will respawn next round."))
- end
-
- --fIsMissing[wtf] = false
- --ShowMission("Flag returned!", "Hooray", "", -amBazooka, 0)
-
- --if the player is taking the enemy flag
- elseif GetHogClan(CurrentHedgehog) == bbq then
- fIsMissing[wtf] = true
- for i = 0,numhhs-1 do
- if CurrentHedgehog == hhs[i] then
- fThief[wtf] = hhs[i]
- --SetEffect(fThief[wtf], hePoisoned, true)
- end
- end
-
- AddCaption(loc("Flag captured!"))
-
- else --below line doesnt usually get called
- AddCaption("Hmm... that wasn't supposed to happen...")
-
- end
-
- -- if flag has been destroyed, probably
- else
-
- if GetY(fGear[wtf]) > 2025 then
- fGear[wtf] = nil
- fIsMissing[wtf] = true
- fNeedsRespawn[wtf] = true
- HandleRespawns()
- else
- fGear[wtf] = nil
- fIsMissing[wtf] = true
- fNeedsRespawn[wtf] = true
- AddCaption(loc("Boom!") .. " " .. loc("The flag will respawn next round."))
- end
-
- end
-
- -- if flag has been destroyed deep underwater and player is now nil
- -- probably only gets called if the flag thief drowns himself
- -- otherwise the above one will work fine
- else
- --ShowMission("NIL PLAYER!", "Oh snap", "Oh noes!", -amBazooka, 0)
- fGear[wtf] = nil
- fIsMissing[wtf] = true
- fNeedsRespawn[wtf] = true
- AddCaption(loc("The flag will respawn next round."))
- end
-
-end
-
-function FlagThiefDead(gear)
-
- if (gear == fThief[0]) then
- wtf = 0
- bbq = 1
- elseif (gear == fThief[1]) then
- wtf = 1
- bbq = 0
- end
-
- if fThief[wtf] ~= nil then
- --SetEffect(fThief[wtf], hePoisoned, false)
- fGear[wtf] = SpawnAmmoCrate(fThiefX[wtf],fThiefY[wtf]-50,amSkip)
- AddVisualGear(fThiefX[wtf], fThiefY[wtf], vgtBigExplosion, 0, false)
- fThief[wtf] = nil
- end
-
-end
-
-function HandleCircles()
-
- for i = 0, 1 do
- if fIsMissing[i] == false then -- draw a circle at the flag's spawning place
- --SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], 20, 200, 0, 0, 100, 33, 2, fCol[i])
- SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
- elseif (fIsMissing[i] == true) and (fNeedsRespawn[i] == false) then
- if fThief[i] ~= nil then -- draw circle round flag carrier
- --SetVisualGearValues(fCirc[i], fThiefX[i], fThiefY[i], 20, 200, 0, 0, 100, 33, 2, fCol[i])
- SetVisualGearValues(fCirc[i], fThiefX[i], fThiefY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
- elseif fThief[i] == nil then -- draw cirle round dropped flag
- --SetVisualGearValues(fCirc[i], GetX(fGear[i]), GetY(fGear[i]), 20, 200, 0, 0, 100, 33, 2, fCol[i])
- SetVisualGearValues(fCirc[i], GetX(fGear[i]),GetY(fGear[i]), vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
- end
- end
-
- if fNeedsRespawn[i] == true then -- if the flag has been destroyed, no need for a circle
- SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], 20, 200, 0, 0, 100, 0, 0, fCol[i])
- end
- end
-
-end
-
-------------------------
--- general methods
-------------------------
-
-function CheckDistance(gear1, gear2)
-
- g1X, g1Y = GetGearPosition(gear1)
- g2X, g2Y = GetGearPosition(gear2)
-
- g1X = g1X - g2X
- g1Y = g1Y - g2Y
- z = (g1X*g1X) + (g1Y*g1Y)
-
- --dist = math.sqrt(z)
-
- dist = z
-
- return dist
-
-end
-
-function CheckTeleporters()
-
- teleportActive = false
-
- if (GearIsInZone(CurrentHedgehog, redTel) == true) and (GetHogClan(CurrentHedgehog) == 0) then
- teleportActive = true
- destinationX = 1402
- destinationY = 321
- elseif (GearIsInZone(CurrentHedgehog, orangeTel) == true) and (GetHogClan(CurrentHedgehog) == 1) then
- teleportActive = true
- destinationX = 2692
- destinationY = 321
- end
-
- if teleportActive == true then
- if actionReset == 0 then
- SetGearMessage(CurrentHedgehog, gmAttack)
- --AddCaption(actionReset .. ";" .. "attack")
- elseif actionReset == 10 then
- SetGearMessage(CurrentHedgehog, 0)
- --AddCaption(actionReset .. ";" .. "reset")
- elseif actionReset == 20 then
- AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtBigExplosion, 0, false)
- SetGearPosition(CurrentHedgehog,destinationX,destinationY)
- AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtBigExplosion, 0, false)
- --AddCaption(actionReset .. ";" .. "teleport")
- end
-
- actionReset = actionReset + 1
- if actionReset >= 30 then
- actionReset = 0
- end
-
- end
-
-end
-
-function RebuildTeamInfo()
-
-
- -- make a list of individual team names
- for i = 0, 5 do
- teamNameArr[i] = i
- teamSize[i] = 0
- teamIndex[i] = 0
- end
- numTeams = 0
-
- for i = 0, (numhhs-1) do
-
- z = 0
- unfinished = true
- while(unfinished == true) do
-
- newTeam = true
- tempHogTeamName = GetHogTeamName(hhs[i]) -- this is the new name
-
- if tempHogTeamName == teamNameArr[z] then
- newTeam = false
- unfinished = false
- end
-
- z = z + 1
-
- if z == TeamsCount then
- unfinished = false
- if newTeam == true then
- teamNameArr[numTeams] = tempHogTeamName
- numTeams = numTeams + 1
- end
- end
-
- end
-
- end
-
- -- find out how many hogs per team, and the index of the first hog in hhs
- for i = 0, numTeams-1 do
-
- for z = 0, numhhs-1 do
- if GetHogTeamName(hhs[z]) == teamNameArr[i] then
- if teamSize[i] == 0 then
- teamIndex[i] = z -- should give starting index
- end
- teamSize[i] = teamSize[i] + 1
- --add a pointer so this hog appears at i in hhs
- end
- end
-
- end
-
-end
-
-function HandleCrateDrops()
-
- roundsCounter = roundsCounter +1
-
- if roundsCounter == 5 then
-
- roundsCounter = 0
-
- r = GetRandom(8)
- if r == 0 then
- SpawnUtilityCrate(0,0,amSwitch)
- elseif r == 1 then
- SpawnUtilityCrate(0,0,amTeleport)
- elseif r == 2 then
- SpawnUtilityCrate(0,0,amJetpack)
- elseif r == 3 then
- SpawnUtilityCrate(0,0,amExtraTime)
- elseif r == 4 then
- SpawnUtilityCrate(0,0,amGirder)
- elseif r == 5 then
- SpawnAmmoCrate(0,0,amDynamite)
- elseif r == 6 then
- SpawnAmmoCrate(0,0,amFlamethrower)
- elseif r == 7 then
- SpawnUtilityCrate(0,0,amPortalGun)
- end
-
- end
-
-end
-
-------------------------
--- game methods
-------------------------
-
-function onGameInit()
-
- -- Things we don't modify here will use their default values.
- GameFlags = gfDivideTeams -- Game settings and rules
- TurnTime = 30000 -- (was 30) The time the player has to move each round (in ms)
- CaseFreq = 0 -- The frequency of crate drops
- MinesNum = 0 -- The number of mines being placed
- MinesTime = 2000
- Explosives = 0 -- The number of explosives being placed
- Delay = 10 -- The delay between each round
- SuddenDeathTurns = 99 -- suddendeath is off, effectively
- Map = "Blizzard" -- The map to be played
- Theme = "Snow" -- The theme to be used "Nature"
-
-end
-
-
-function onGameStart()
-
- --ShowMission(loc(caption), loc(subcaption), loc(goal), 0, 0)
- ShowMission(loc("CTF_BLIZZARD") .. " 0.5", loc("by mikade"), loc(" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"), 0, 0)
-
-
- -- initialize teleporters
- redTel = CreateZone(342,1316,42,449) -- red teleporter
- orangeTel = CreateZone(3719,1330,45,449) -- orange teleporter
-
-
- --new improved placement schematics aw yeah
- RebuildTeamInfo()
- --ShowMission("Team Info Rebuilt", "Here you go:", "TeamCount: " .. TeamsCount .. "|" .. teamNameArr[0] .. ": " .. teamSize[0] .. " Hogs|" .. teamNameArr[1] .. ": " .. teamSize[1] .. " Hogs|" .. teamNameArr[2] .. ": " .. teamSize[2] .. " Hogs|", 0, 0)
- team1Placed = 0
- team2Placed = 0
- for i = 0, (TeamsCount-1) do
- for g = teamIndex[i], (teamIndex[i]+teamSize[i]-1) do
- if GetHogClan(hhs[g]) == 0 then
- SetGearPosition(hhs[g],1403+ ((team1Placed+1)*50),1570)
- team1Placed = team1Placed +1
- if team1Placed > 6 then
- team1Placed = 0
- end
- elseif GetHogClan(hhs[g]) == 1 then
- SetGearPosition(hhs[g],2230+ ((team2Placed+1)*50),1570)
- team2Placed = team2Placed +1
- if team2Placed > 6 then
- team2Placed = 0
- end
- end
- end
- end
-
-
-
- --spawn starting ufos and or super weapons
- SpawnAmmoCrate(2048,1858,amJetpack)
- --SpawnUtilityCrate(2048,1858,amExtraTime)
-
- --set flag spawn points and spawn the flags
- fSpawnX[0] = 957
- fSpawnY[0] = 1747
- fSpawnX[1] = 3123
- fSpawnY[1] = 1747
-
- for i = 0, 1 do
- fGear[i] = SpawnAmmoCrate(fSpawnX[i],fSpawnY[i],amSkip)
- fCirc[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true)
- fCol[i] = GetClanColor(i)
-
- fSpawnC[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true)
- SetVisualGearValues(fSpawnC[i], fSpawnX[i],fSpawnY[i], 10, 200, 1, 10, 0, 300, 5, fCol[i])
-
-
- fIsMissing[i] = false
- fNeedsRespawn[i] = false
- fCaptures[i] = 0
-
- vCircMinA[i] = 20
- vCircMaxA[i] = 255
- vCircType[i] = 1
- vCircPulse[i] = 10
- vCircFuckAll[i] = 0
- vCircRadius[i] = 150
- vCircWidth[i] = 5
- vCircCol[i] = fCol[i]
-
- SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
-
- end
-
-end
-
-
-function onNewTurn()
-
- if lastTeam ~= GetHogTeamName(CurrentHedgehog) then
- lastTeam = GetHogTeamName(CurrentHedgehog)
- end
-
- for i = 0, 1 do
- if fThief[i] ~= nil then
- --adjust = 5 + GetHealth(fThief[i])
- --SetHealth(fThief[i], adjust)
- --AddCaption('Helped out the flag poisoned flag thiefs')
- end
- end
-
- --AddCaption("Handling respawns")
- HandleRespawns()
- HandleCrateDrops()
-
- --myC = AddVisualGear(GetX(CurrentHedgehog),GetY(CurrentHedgehog),vgtCircle,0,true)
- --SetVisualGearValues(myC, GetX(CurrentHedgehog),GetY(CurrentHedgehog), 20, 200, 0, 0, 100, 50, 3, GetClanColor(GetHogClan(CurrentHedgehog)))
-
-end
-
-function onGameTick()
-
- -- onRessurect calls AFTER you have resurrected,
- -- so keeping track of x,y a few milliseconds before
- -- is useful
- --FTTC = FTTC + 1
- --if FTTC == 100 then
- -- FTTC = 0
- for i = 0,1 do
- if fThief[i] ~= nil then
- fThiefX[i] = GetX(fThief[i])
- fThiefY[i] = GetY(fThief[i])
- end
- end
- --end
-
- -- things we wanna check often
- if (CurrentHedgehog ~= nil) then
- --AddCaption(GetX(CurrentHedgehog) .. "; " .. GetY(CurrentHedgehog))
- --AddCaption("Checking Teleporters")
- CheckTeleporters()
- end
-
- HandleCircles()
- ManageTeleporterEffects()
-
-end
-
-
-function onAmmoStoreInit()
-
- SetAmmo(amDrill,9,0,0,0)
- SetAmmo(amMortar,9,0,0,0)
-
- SetAmmo(amGrenade,9,0,0,0)
- SetAmmo(amClusterBomb,4,0,0,0)
-
- --SetAmmo(amDEagle, 4, 0, 0, 0)
- SetAmmo(amShotgun, 9, 0, 0, 0)
- SetAmmo(amFlamethrower, 1, 0, 0, 1)
-
- SetAmmo(amFirePunch, 9, 0, 0, 0)
- SetAmmo(amBaseballBat, 2, 0, 0, 0)
-
- SetAmmo(amDynamite,2,0,0,1)
- SetAmmo(amSMine,4,0,0,0)
-
- SetAmmo(amBlowTorch, 9, 0, 0, 0)
- SetAmmo(amPickHammer, 9, 0, 0, 0)
- SetAmmo(amGirder, 2, 0, 0, 2)
- SetAmmo(amPortalGun, 2, 0, 0, 2)
-
- SetAmmo(amParachute, 9, 0, 0, 0)
- SetAmmo(amRope, 9, 0, 0, 0)
- SetAmmo(amTeleport, 1, 0, 0, 1)
- SetAmmo(amJetpack, 1, 0, 0, 1)
-
- SetAmmo(amSwitch, 2, 0, 0, 1)
- SetAmmo(amExtraTime,1,0,0,1)
- SetAmmo(amLowGravity,1,0,0,0)
- SetAmmo(amSkip, 9, 0, 0, 0)
-
-end
-
-
-function onGearResurrect(gear)
-
- --AddCaption("A gear has been resurrected!")
-
- -- mark the flag thief as dead if he needed a respawn
- for i = 0,1 do
- if gear == fThief[i] then
- FlagThiefDead(gear)
- end
- end
-
- -- place hogs belonging to each clan either left or right side of map
- if GetHogClan(gear) == 0 then
- FindPlace(gear, false, 0, 2048)
- elseif GetHogClan(gear) == 1 then
- FindPlace(gear, false, 2048, LAND_WIDTH)
- end
-
- AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false)
-
-end
-
-function onGearDamage(gear, damage)
-
- -- >_< damn, occurs too fast, before the hog has finished moving / updated his health
- --if GetGearType(gear) == gtHedgehog then
- -- if damage > GetHealth(gear) then
- -- AddVisualGear(GetX(gear), GetY(gear), vgtExplosion, 0, false)
- -- end
- --end
-
-end
-
-function onGearAdd(gear)
-
- if GetGearType(gear) == gtHedgehog then
-
- hhs[numhhs] = gear
- numhhs = numhhs + 1
- SetEffect(gear, heResurrectable, true)
-
- end
-
-end
-
-function onGearDelete(gear)
-
- if (gear == fGear[0]) or (gear == fGear[1]) then
- FlagDeleted(gear)
- end
-
-end
+--------------------------------
+-- CTF_BLIZZARD 0.4
+--------------------------------
+
+---------
+-- 0.2
+---------
+
+-- disabled super weapons
+
+-- theme modifications
+
+-- improved hog placement system: teams can now be put
+-- in any order and be of any size
+
+---------
+-- 0.3
+---------
+
+-- In this version:
+
+-- changed starting weapons
+-- changed crate drop contents and rate of drops
+
+-- completely removed super weapons and super weapon scripts
+
+-- removed custom respawning
+-- removed set respawn points
+
+-- added AIRespawn-esque respawning
+-- added simple left vs right respawn points
+
+-- added non-lethal poison to flag carriers as an indicator
+
+-- improved flag mechanics and player-flag feedback
+-- flag now instantly respawns if you kill enemy hog and return it,
+-- or if the flag falls in water, _BUT_ not if it is blown up
+
+---------
+-- 0.4
+---------
+
+-- tweaked crate drop rates and crate contents
+-- improved the teleporters, they should now be able to handle rope... hopefully
+-- updated SetEffect calls to be in line with 0.9.15 definitions
+-- added visual gears when hogs respawn
+-- added visual gears when hogs teleport
+-- added visual gear to track flag and flag carriers
+-- removed poisoning of flag carriers
+-- removed health adjustments for flag carriers due to aforementioned poisons
+
+---------
+-- 0.5
+---------
+
+-- added translation support, hopefully
+-- added ctf rules
+-- added effects to the teleporters
+-- added aura round spawning area
+-- changed the aura around the flag carrier / flag to an aura and added some support for this
+-- changed things so the seed is no longer always the same...
+
+
+loadfile(GetDataPath() .. "Scripts/Locale.lua")()
+
+---------------------------------------------------------------
+----------lots of bad variables and things
+----------because someone is too lazy
+----------to read about tables properly
+------------------ "Oh well, they probably have the memory"
+
+local actionReset = 0 -- used in CheckTeleporters()
+
+local roundsCounter = 0 -- used to determine when to spawn more crates
+ -- currently every 6 TURNS, should this work
+ -- on ROUNDS instead?
+local effectTimer = 0
+
+--------------------------
+-- hog and team tracking variales
+--------------------------
+
+local numhhs = 0 -- store number of hedgehogs
+local hhs = {} -- store hedgehog gears
+
+local numTeams -- store the number of teams in the game
+local teamNameArr = {} -- store the list of teams
+local teamSize = {} -- store how many hogs per team
+local teamIndex = {} -- at what point in the hhs{} does each team begin
+
+-------------------
+-- flag variables
+-------------------
+
+local fGear = {} -- pointer to the case gears that represent the flag
+local fThief = {} -- pointer to the hogs who stole the flags
+local fIsMissing = {} -- have the flags been destroyed or captured
+local fNeedsRespawn = {} -- do the flags need to be respawned
+local fCaptures = {} -- the team "scores" how many captures
+local fSpawnX = {} -- spawn X for flags
+local fSpawnY = {} -- spawn Y for flags
+
+local fThiefX = {}
+local fThiefY = {}
+local FTTC = 0 -- flag thief tracker counter
+--local fThiefsHealed = false
+
+local fSpawnC = {}
+local fCirc = {} -- flag/carrier marker circles
+local fCol = {} -- colour of the clans
+
+local vCircX = {}
+local vCircY = {}
+local vCircMinA = {}
+local vCircMaxA = {}
+local vCircType = {}
+local vCircPulse = {}
+local vCircFuckAll = {}
+local vCircRadius = {}
+local vCircWidth = {}
+local vCircCol = {}
+
+
+--------------------------------
+--zone and teleporter variables
+--------------------------------
+
+local redTel
+local orangeTel
+--local areaArr = {} -- no longer used
+
+local zXMin = {}
+local zWidth = {}
+local zYMin = {}
+local zHeight = {}
+local zOccupied = {}
+local zCount = 0
+
+------------------------
+-- zone methods
+------------------------
+-- see on gameTick also
+
+function ManageTeleporterEffects()
+ effectTimer = effectTimer + 1
+ if effectTimer > 50 then -- 100
+ effectTimer = 0
+
+ for i = 0,1 do
+ eX = 10 + zXMin[i] + GetRandom(zWidth[i]-10)
+ eY = 50 + zYMin[i] + GetRandom(zHeight[i]-110)
+
+ -- steam and smoke and DUST look good, smokering looks trippy
+ -- smoketrace and eviltrace are not effected by wind?
+ -- chunk is a LR falling gear
+ tempE = AddVisualGear(eX, eY, vgtDust, 0, false)
+ if tempE ~= 0 then
+ g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(tempE)
+ SetVisualGearValues(tempE, eX, eY, g3, g4, g5, g6, g7, g8, g9, fCol[i])
+ end
+ end
+ end
+end
+
+function CreateZone(xMin, yMin, width, height)
+
+
+ zXMin[zCount] = xMin
+ zYMin[zCount] = yMin
+ zWidth[zCount] = width
+ zHeight[zCount] = height
+ zOccupied[zCount] = false
+ zCount = zCount + 1
+
+ return (zCount-1)
+
+end
+
+function GearIsInZone(gear, zI)
+
+ if (GetX(gear) > zXMin[zI]) and (GetX(gear) < (zXMin[zI]+zWidth[zI])) and (GetY(gear) > zYMin[zI]) and (GetY(gear) < (zYMin[zI]+zHeight[zI])) then
+ zOccupied[zI] = true
+ else
+ zOccupied[zI] = false
+ end
+
+ return zOccupied[zI]
+
+end
+
+------------------------
+--flag methods
+------------------------
+
+function CheckScore(teamID)
+
+ if teamID == 0 then
+ alt = 1
+ winner = "Red"
+
+ elseif teamID == 1 then
+ alt = 0
+ winner = "Blue"
+ end
+
+ if fCaptures[teamID] == 2 then
+ for i = 0, (numhhs-1) do
+ if GetHogClan(hhs[i]) == alt then
+ SetEffect(hhs[i], heResurrectable, false)
+ SetHealth(hhs[i],0)
+ end
+ end
+ --ShowMission("GAME OVER!", "Victory for the " .. winner .. " Team!", "Hooray!", 0, 0)
+ ShowMission(loc("GAME OVER!"), loc("Victory for the ") .. GetHogTeamName(CurrentHedgehog), loc("Hooray!"), 0, 0)
+ end
+
+end
+
+function HandleRespawns()
+
+ for i = 0, 1 do
+
+ if fNeedsRespawn[i] == true then
+ fGear[i] = SpawnAmmoCrate(fSpawnX[i],fSpawnY[i],amSkip)
+ --fGear[i] = SpawnHealthCrate(fSpawnX[i],fSpawnY[i])
+ fNeedsRespawn[i] = false
+ fIsMissing[i] = false -- new, this should solve problems of a respawned flag being "returned" when a player tries to score
+ AddCaption(loc("Flag respawned!"))
+ end
+
+ end
+
+end
+
+function FlagDeleted(gear)
+
+ if (gear == fGear[0]) then
+ wtf = 0
+ bbq = 1
+ elseif (gear == fGear[1]) then
+ wtf = 1
+ bbq = 0
+ end
+
+ --ShowMission("OH HAI!", "FlagDeleted was called", "Oh noes!", -amBazooka, 0)
+
+ if CurrentHedgehog ~= nil then
+
+ --ShowMission("GUESS WAT?", "I'm not nil", "Oh noes!", -amBazooka, 0)
+ --if the player picks up the flag
+ if CheckDistance(CurrentHedgehog, fGear[wtf]) < 1600 then
+
+ fGear[wtf] = nil -- the flag has now disappeared and we shouldnt be pointing to it
+
+ -- player has successfully captured the enemy flag
+ if (GetHogClan(CurrentHedgehog) == wtf) and (CurrentHedgehog == fThief[bbq]) and (fIsMissing[wtf] == false) then
+ fIsMissing[wtf] = false
+ fNeedsRespawn[wtf] = true
+ fIsMissing[bbq] = false
+ fNeedsRespawn[bbq] = true
+ fCaptures[wtf] = fCaptures[wtf] +1 --fCaptures[wtf]
+
+ --ShowMission(loc("You have SCORED!!"), "Red Team: " .. fCaptures[0], "Blue Team: " .. fCaptures[1], -amBazooka, 0)
+ ShowMission(loc("You have SCORED!!"), GetHogTeamName(CurrentHedgehog) .. ": " .. fCaptures[wtf], loc("Opposing Team: ") .. fCaptures[bbq], 0, 0)
+
+ PlaySound(sndVictory)
+ --SetEffect(fThief[bbq], hePoisoned, false)
+ fThief[bbq] = nil -- player no longer has the enemy flag
+ CheckScore(wtf)
+
+ --if the player is returning the flag
+ elseif GetHogClan(CurrentHedgehog) == wtf then
+
+ fNeedsRespawn[wtf] = true
+
+ -- NEW ADDIITON, does this work? Should make it possible to return your flag and then score in the same turn
+ if fIsMissing[wtf] == true then
+ HandleRespawns() -- this will set fIsMissing[wtf] to false :)
+ AddCaption(loc("Flag returned!"))
+ elseif fIsMissing[wtf] == false then
+ AddCaption(loc("That was pointless.") .. loc("The flag will respawn next round."))
+ end
+
+ --fIsMissing[wtf] = false
+ --ShowMission("Flag returned!", "Hooray", "", -amBazooka, 0)
+
+ --if the player is taking the enemy flag
+ elseif GetHogClan(CurrentHedgehog) == bbq then
+ fIsMissing[wtf] = true
+ for i = 0,numhhs-1 do
+ if CurrentHedgehog == hhs[i] then
+ fThief[wtf] = hhs[i]
+ --SetEffect(fThief[wtf], hePoisoned, true)
+ end
+ end
+
+ AddCaption(loc("Flag captured!"))
+
+ else --below line doesnt usually get called
+ AddCaption("Hmm... that wasn't supposed to happen...")
+
+ end
+
+ -- if flag has been destroyed, probably
+ else
+
+ if GetY(fGear[wtf]) > 2025 then
+ fGear[wtf] = nil
+ fIsMissing[wtf] = true
+ fNeedsRespawn[wtf] = true
+ HandleRespawns()
+ else
+ fGear[wtf] = nil
+ fIsMissing[wtf] = true
+ fNeedsRespawn[wtf] = true
+ AddCaption(loc("Boom!") .. " " .. loc("The flag will respawn next round."))
+ end
+
+ end
+
+ -- if flag has been destroyed deep underwater and player is now nil
+ -- probably only gets called if the flag thief drowns himself
+ -- otherwise the above one will work fine
+ else
+ --ShowMission("NIL PLAYER!", "Oh snap", "Oh noes!", -amBazooka, 0)
+ fGear[wtf] = nil
+ fIsMissing[wtf] = true
+ fNeedsRespawn[wtf] = true
+ AddCaption(loc("The flag will respawn next round."))
+ end
+
+end
+
+function FlagThiefDead(gear)
+
+ if (gear == fThief[0]) then
+ wtf = 0
+ bbq = 1
+ elseif (gear == fThief[1]) then
+ wtf = 1
+ bbq = 0
+ end
+
+ if fThief[wtf] ~= nil then
+ --SetEffect(fThief[wtf], hePoisoned, false)
+ fGear[wtf] = SpawnAmmoCrate(fThiefX[wtf],fThiefY[wtf]-50,amSkip)
+ AddVisualGear(fThiefX[wtf], fThiefY[wtf], vgtBigExplosion, 0, false)
+ fThief[wtf] = nil
+ end
+
+end
+
+function HandleCircles()
+
+ for i = 0, 1 do
+ if fIsMissing[i] == false then -- draw a circle at the flag's spawning place
+ --SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], 20, 200, 0, 0, 100, 33, 2, fCol[i])
+ SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
+ elseif (fIsMissing[i] == true) and (fNeedsRespawn[i] == false) then
+ if fThief[i] ~= nil then -- draw circle round flag carrier
+ --SetVisualGearValues(fCirc[i], fThiefX[i], fThiefY[i], 20, 200, 0, 0, 100, 33, 2, fCol[i])
+ SetVisualGearValues(fCirc[i], fThiefX[i], fThiefY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
+ elseif fThief[i] == nil then -- draw cirle round dropped flag
+ --SetVisualGearValues(fCirc[i], GetX(fGear[i]), GetY(fGear[i]), 20, 200, 0, 0, 100, 33, 2, fCol[i])
+ SetVisualGearValues(fCirc[i], GetX(fGear[i]),GetY(fGear[i]), vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
+ end
+ end
+
+ if fNeedsRespawn[i] == true then -- if the flag has been destroyed, no need for a circle
+ SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], 20, 200, 0, 0, 100, 0, 0, fCol[i])
+ end
+ end
+
+end
+
+------------------------
+-- general methods
+------------------------
+
+function CheckDistance(gear1, gear2)
+
+ g1X, g1Y = GetGearPosition(gear1)
+ g2X, g2Y = GetGearPosition(gear2)
+
+ g1X = g1X - g2X
+ g1Y = g1Y - g2Y
+ z = (g1X*g1X) + (g1Y*g1Y)
+
+ --dist = math.sqrt(z)
+
+ dist = z
+
+ return dist
+
+end
+
+function CheckTeleporters()
+
+ teleportActive = false
+
+ if (GearIsInZone(CurrentHedgehog, redTel) == true) and (GetHogClan(CurrentHedgehog) == 0) then
+ teleportActive = true
+ destinationX = 1402
+ destinationY = 321
+ elseif (GearIsInZone(CurrentHedgehog, orangeTel) == true) and (GetHogClan(CurrentHedgehog) == 1) then
+ teleportActive = true
+ destinationX = 2692
+ destinationY = 321
+ end
+
+ if teleportActive == true then
+ if actionReset == 0 then
+ SetGearMessage(CurrentHedgehog, gmAttack)
+ --AddCaption(actionReset .. ";" .. "attack")
+ elseif actionReset == 10 then
+ SetGearMessage(CurrentHedgehog, 0)
+ --AddCaption(actionReset .. ";" .. "reset")
+ elseif actionReset == 20 then
+ AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtBigExplosion, 0, false)
+ SetGearPosition(CurrentHedgehog,destinationX,destinationY)
+ AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtBigExplosion, 0, false)
+ --AddCaption(actionReset .. ";" .. "teleport")
+ end
+
+ actionReset = actionReset + 1
+ if actionReset >= 30 then
+ actionReset = 0
+ end
+
+ end
+
+end
+
+function RebuildTeamInfo()
+
+
+ -- make a list of individual team names
+ for i = 0, 5 do
+ teamNameArr[i] = i
+ teamSize[i] = 0
+ teamIndex[i] = 0
+ end
+ numTeams = 0
+
+ for i = 0, (numhhs-1) do
+
+ z = 0
+ unfinished = true
+ while(unfinished == true) do
+
+ newTeam = true
+ tempHogTeamName = GetHogTeamName(hhs[i]) -- this is the new name
+
+ if tempHogTeamName == teamNameArr[z] then
+ newTeam = false
+ unfinished = false
+ end
+
+ z = z + 1
+
+ if z == TeamsCount then
+ unfinished = false
+ if newTeam == true then
+ teamNameArr[numTeams] = tempHogTeamName
+ numTeams = numTeams + 1
+ end
+ end
+
+ end
+
+ end
+
+ -- find out how many hogs per team, and the index of the first hog in hhs
+ for i = 0, numTeams-1 do
+
+ for z = 0, numhhs-1 do
+ if GetHogTeamName(hhs[z]) == teamNameArr[i] then
+ if teamSize[i] == 0 then
+ teamIndex[i] = z -- should give starting index
+ end
+ teamSize[i] = teamSize[i] + 1
+ --add a pointer so this hog appears at i in hhs
+ end
+ end
+
+ end
+
+end
+
+function HandleCrateDrops()
+
+ roundsCounter = roundsCounter +1
+
+ if roundsCounter == 5 then
+
+ roundsCounter = 0
+
+ r = GetRandom(8)
+ if r == 0 then
+ SpawnUtilityCrate(0,0,amSwitch)
+ elseif r == 1 then
+ SpawnUtilityCrate(0,0,amTeleport)
+ elseif r == 2 then
+ SpawnUtilityCrate(0,0,amJetpack)
+ elseif r == 3 then
+ SpawnUtilityCrate(0,0,amExtraTime)
+ elseif r == 4 then
+ SpawnUtilityCrate(0,0,amGirder)
+ elseif r == 5 then
+ SpawnAmmoCrate(0,0,amDynamite)
+ elseif r == 6 then
+ SpawnAmmoCrate(0,0,amFlamethrower)
+ elseif r == 7 then
+ SpawnUtilityCrate(0,0,amPortalGun)
+ end
+
+ end
+
+end
+
+------------------------
+-- game methods
+------------------------
+
+function onGameInit()
+
+ -- Things we don't modify here will use their default values.
+ GameFlags = gfDivideTeams -- Game settings and rules
+ TurnTime = 30000 -- (was 30) The time the player has to move each round (in ms)
+ CaseFreq = 0 -- The frequency of crate drops
+ MinesNum = 0 -- The number of mines being placed
+ MinesTime = 2000
+ Explosives = 0 -- The number of explosives being placed
+ Delay = 10 -- The delay between each round
+ SuddenDeathTurns = 99 -- suddendeath is off, effectively
+ Map = "Blizzard" -- The map to be played
+ Theme = "Snow" -- The theme to be used "Nature"
+
+end
+
+
+function onGameStart()
+
+ --ShowMission(loc(caption), loc(subcaption), loc(goal), 0, 0)
+ ShowMission(loc("CTF_BLIZZARD") .. " 0.5", loc("by mikade"), loc(" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"), 0, 0)
+
+
+ -- initialize teleporters
+ redTel = CreateZone(342,1316,42,449) -- red teleporter
+ orangeTel = CreateZone(3719,1330,45,449) -- orange teleporter
+
+
+ --new improved placement schematics aw yeah
+ RebuildTeamInfo()
+ --ShowMission("Team Info Rebuilt", "Here you go:", "TeamCount: " .. TeamsCount .. "|" .. teamNameArr[0] .. ": " .. teamSize[0] .. " Hogs|" .. teamNameArr[1] .. ": " .. teamSize[1] .. " Hogs|" .. teamNameArr[2] .. ": " .. teamSize[2] .. " Hogs|", 0, 0)
+ team1Placed = 0
+ team2Placed = 0
+ for i = 0, (TeamsCount-1) do
+ for g = teamIndex[i], (teamIndex[i]+teamSize[i]-1) do
+ if GetHogClan(hhs[g]) == 0 then
+ SetGearPosition(hhs[g],1403+ ((team1Placed+1)*50),1570)
+ team1Placed = team1Placed +1
+ if team1Placed > 6 then
+ team1Placed = 0
+ end
+ elseif GetHogClan(hhs[g]) == 1 then
+ SetGearPosition(hhs[g],2230+ ((team2Placed+1)*50),1570)
+ team2Placed = team2Placed +1
+ if team2Placed > 6 then
+ team2Placed = 0
+ end
+ end
+ end
+ end
+
+
+
+ --spawn starting ufos and or super weapons
+ SpawnAmmoCrate(2048,1858,amJetpack)
+ --SpawnUtilityCrate(2048,1858,amExtraTime)
+
+ --set flag spawn points and spawn the flags
+ fSpawnX[0] = 957
+ fSpawnY[0] = 1747
+ fSpawnX[1] = 3123
+ fSpawnY[1] = 1747
+
+ for i = 0, 1 do
+ fGear[i] = SpawnAmmoCrate(fSpawnX[i],fSpawnY[i],amSkip)
+ fCirc[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true)
+ fCol[i] = GetClanColor(i)
+
+ fSpawnC[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true)
+ SetVisualGearValues(fSpawnC[i], fSpawnX[i],fSpawnY[i], 10, 200, 1, 10, 0, 300, 5, fCol[i])
+
+
+ fIsMissing[i] = false
+ fNeedsRespawn[i] = false
+ fCaptures[i] = 0
+
+ vCircMinA[i] = 20
+ vCircMaxA[i] = 255
+ vCircType[i] = 1
+ vCircPulse[i] = 10
+ vCircFuckAll[i] = 0
+ vCircRadius[i] = 150
+ vCircWidth[i] = 5
+ vCircCol[i] = fCol[i]
+
+ SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
+
+ end
+
+end
+
+
+function onNewTurn()
+
+ if lastTeam ~= GetHogTeamName(CurrentHedgehog) then
+ lastTeam = GetHogTeamName(CurrentHedgehog)
+ end
+
+ for i = 0, 1 do
+ if fThief[i] ~= nil then
+ --adjust = 5 + GetHealth(fThief[i])
+ --SetHealth(fThief[i], adjust)
+ --AddCaption('Helped out the flag poisoned flag thiefs')
+ end
+ end
+
+ --AddCaption("Handling respawns")
+ HandleRespawns()
+ HandleCrateDrops()
+
+ --myC = AddVisualGear(GetX(CurrentHedgehog),GetY(CurrentHedgehog),vgtCircle,0,true)
+ --SetVisualGearValues(myC, GetX(CurrentHedgehog),GetY(CurrentHedgehog), 20, 200, 0, 0, 100, 50, 3, GetClanColor(GetHogClan(CurrentHedgehog)))
+
+end
+
+function onGameTick()
+
+ -- onRessurect calls AFTER you have resurrected,
+ -- so keeping track of x,y a few milliseconds before
+ -- is useful
+ --FTTC = FTTC + 1
+ --if FTTC == 100 then
+ -- FTTC = 0
+ for i = 0,1 do
+ if fThief[i] ~= nil then
+ fThiefX[i] = GetX(fThief[i])
+ fThiefY[i] = GetY(fThief[i])
+ end
+ end
+ --end
+
+ -- things we wanna check often
+ if (CurrentHedgehog ~= nil) then
+ --AddCaption(GetX(CurrentHedgehog) .. "; " .. GetY(CurrentHedgehog))
+ --AddCaption("Checking Teleporters")
+ CheckTeleporters()
+ end
+
+ HandleCircles()
+ ManageTeleporterEffects()
+
+end
+
+
+function onAmmoStoreInit()
+
+ SetAmmo(amDrill,9,0,0,0)
+ SetAmmo(amMortar,9,0,0,0)
+
+ SetAmmo(amGrenade,9,0,0,0)
+ SetAmmo(amClusterBomb,4,0,0,0)
+
+ --SetAmmo(amDEagle, 4, 0, 0, 0)
+ SetAmmo(amShotgun, 9, 0, 0, 0)
+ SetAmmo(amFlamethrower, 1, 0, 0, 1)
+
+ SetAmmo(amFirePunch, 9, 0, 0, 0)
+ SetAmmo(amBaseballBat, 2, 0, 0, 0)
+
+ SetAmmo(amDynamite,2,0,0,1)
+ SetAmmo(amSMine,4,0,0,0)
+
+ SetAmmo(amBlowTorch, 9, 0, 0, 0)
+ SetAmmo(amPickHammer, 9, 0, 0, 0)
+ SetAmmo(amGirder, 2, 0, 0, 2)
+ SetAmmo(amPortalGun, 2, 0, 0, 2)
+
+ SetAmmo(amParachute, 9, 0, 0, 0)
+ SetAmmo(amRope, 9, 0, 0, 0)
+ SetAmmo(amTeleport, 1, 0, 0, 1)
+ SetAmmo(amJetpack, 1, 0, 0, 1)
+
+ SetAmmo(amSwitch, 2, 0, 0, 1)
+ SetAmmo(amExtraTime,1,0,0,1)
+ SetAmmo(amLowGravity,1,0,0,0)
+ SetAmmo(amSkip, 9, 0, 0, 0)
+
+end
+
+
+function onGearResurrect(gear)
+
+ --AddCaption("A gear has been resurrected!")
+
+ -- mark the flag thief as dead if he needed a respawn
+ for i = 0,1 do
+ if gear == fThief[i] then
+ FlagThiefDead(gear)
+ end
+ end
+
+ -- place hogs belonging to each clan either left or right side of map
+ if GetHogClan(gear) == 0 then
+ FindPlace(gear, false, 0, 2048)
+ elseif GetHogClan(gear) == 1 then
+ FindPlace(gear, false, 2048, LAND_WIDTH)
+ end
+
+ AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false)
+
+end
+
+function onGearDamage(gear, damage)
+
+ -- >_< damn, occurs too fast, before the hog has finished moving / updated his health
+ --if GetGearType(gear) == gtHedgehog then
+ -- if damage > GetHealth(gear) then
+ -- AddVisualGear(GetX(gear), GetY(gear), vgtExplosion, 0, false)
+ -- end
+ --end
+
+end
+
+function onGearAdd(gear)
+
+ if GetGearType(gear) == gtHedgehog then
+
+ hhs[numhhs] = gear
+ numhhs = numhhs + 1
+ SetEffect(gear, heResurrectable, true)
+
+ end
+
+end
+
+function onGearDelete(gear)
+
+ if (gear == fGear[0]) or (gear == fGear[1]) then
+ FlagDeleted(gear)
+ end
+
+end
--- a/share/hedgewars/Data/Maps/Control/map.lua Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Maps/Control/map.lua Fri Dec 31 03:29:41 2010 +0100
@@ -200,7 +200,9 @@
if CurrentHedgehog ~= nil then
if cOwnerClan[i] == GetHogClan(CurrentHedgehog) then
g = AddVisualGear(vCircX[i], vCircY[i], vgtHealthTag, 100, False)
- SetVisualGearValues(g, vCircX[i], vCircY[i], 0, 0, 0, 0, 0, teamScore[cOwnerClan[i]], 1500, GetClanColor(cOwnerClan[i]))
+ if g ~= 0 then
+ SetVisualGearValues(g, vCircX[i], vCircY[i], 0, 0, 0, 0, 0, teamScore[cOwnerClan[i]], 1500, GetClanColor(cOwnerClan[i]))
+ end
end
end
end
--- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Diver.lua Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Diver.lua Fri Dec 31 03:29:41 2010 +0100
@@ -87,7 +87,7 @@
function onGearDelete(gear)
if (gear == enemy) and (GameOver == false) then
- ShowMission(loc("Operation Diver"), loc("MISSION SUCCESS"), loc("Congratulations!"), 0, 0)
+ ShowMission(loc("Operation Diver"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0)
elseif gear == player then
ShowMission(loc("Operation Diver"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0)
GameOver = true
--- a/share/hedgewars/Data/Themes/Art/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Art/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,18 +1,11 @@
-7 13 40
-13 17 22
-$01 $3b $66
-$01 $3b $66 $80
-Art.ogg
-0
-4
-Soup
-3 3 220 130 18 1 0 0 142 150
-Mona
-2 0 190 191 8 1 0 0 191 150
-Schrei
-1 0 345 130 1 1 0 0 160 175
-Zeit
-2 0 153 45 5 1 90 20 106 105
-0
-0
-30 0 0 0
+sky = 7, 13, 40
+border = 13, 17, 22
+water-top = $01, $3b, $66
+water-bottom = $01, $3b, $66
+water-opacity = $80
+music = Art.ogg
+clouds = 0
+object = Soup, 3, 3, 220, 130, 18, 1, 0, 0, 142, 150
+object = Mona, 2, 0, 190, 191, 8, 1, 0, 0, 191, 150
+object = Schrei, 1, 0, 345, 130, 1, 1, 0, 0, 160, 175
+object = Zeit, 2, 0, 153, 45, 5, 1, 90, 20, 106, 105
--- a/share/hedgewars/Data/Themes/Bamboo/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Bamboo/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,18 +1,12 @@
-117 141 186
-143 171 80
-$54 $5C $9D
-$34 $3C $7D $80
-oriental.ogg
-9
-4
-Flower
-3 65 258 80 2 1 0 0 240 215
-Bamboo
-3 65 258 80 2 1 0 0 240 215
-Bamboo2
-3 65 258 80 2 1 0 0 240 215
-Bamboo3
-3 65 258 80 2 1 0 0 240 215
-0
-100
-1 1000 50 50
+sky = 117, 141, 186
+border = 143, 171, 80
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = oriental.ogg
+clouds = 9
+object = Flower, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+object = Bamboo, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+object = Bamboo2, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+object = Bamboo3, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+flakes = 100, 1, 1000, 50, 50
--- a/share/hedgewars/Data/Themes/Bath/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Bath/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,22 +1,14 @@
-255 255 237
-173 182 247
-$54 $5C $9D
-$34 $3C $7D $80
-bath.ogg
-15
-6
-Toothbrush
-3 120 245 8 15 1 90 6 65 220
-Toothbrush_g
-3 85 243 10 11 1 89 13 97 211
-Toothbrush_b
-3 113 245 8 15 1 84 6 66 218
-Duck
-3 102 253 20 4 1 48 142 150 107
-Duck2
-3 50 94 16 4 1 5 15 101 72
-Bubble
-3 37 78 3 2 1 0 0 77 44
-0
-100
-1 0 0 10
+sky = 255, 255, 237
+border = 173, 182, 247
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = bath.ogg
+clouds = 15
+object = Toothbrush, 3, 120, 245, 8, 15, 1, 90, 6, 65, 220
+object = Toothbrush_g, 3, 85, 243, 10, 11, 1, 89, 13, 97, 211
+object = Toothbrush_b, 3, 113, 245, 8, 15, 1, 84, 6, 66, 218
+object = Duck, 3, 102, 253, 20, 4, 1, 48, 142, 150, 107
+object = Duck2, 3, 50, 94, 16, 4, 1, 5, 15, 101, 72
+object = Bubble, 3, 37, 78, 3, 2, 1, 0, 0, 77, 44
+flakes = 100, 1, 0, 0, 10
--- a/share/hedgewars/Data/Themes/Blox/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Blox/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,10 +1,8 @@
-179 243 243
-128 128 128
-$54 $5C $9D
-$34 $3C $7D $80
-Nature.ogg
-0
-0
-0
-100
-2 500 100 300
+sky = 179, 243, 243
+border = 128, 128, 128
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = Nature.ogg
+clouds = 0
+flakes = 100, 2, 500, 100, 300
--- a/share/hedgewars/Data/Themes/Brick/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Brick/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,35 +1,21 @@
-11 21 80
-155 155 155
-$51 $5B $60
-$22 $2F $36 $80
-Brick.ogg
-9
-9
-plant1
-1 83 215 92 35 1 0 0 250 190
-plant2
-2 0 115 70 40 1 8 0 60 100
-plant3
-2 0 115 70 40 1 8 0 60 100
-plant4
-2 20 200 25 5 1 0 0 70 140
-plant5
-2 240 22 17 43 1 8 21 227 80
-plant6
-1 83 225 92 25 1 0 0 250 200
-plant7
-2 20 200 25 5 1 0 0 70 140
-plant8
-5 45 0 10 10 1 0 50 109 155
-plant9
-2 20 200 25 5 1 0 0 70 140
-3
-spray1
-2
-spray2
-2
-spray3
-2
-0
-20
-30 50 50 250
+sky = 11, 21, 80
+border = 155, 155, 155
+water-top = $51, $5B, $60
+water-bottom = $22, $2F, $36
+water-opacity = $80
+music = Brick.ogg
+clouds = 9
+object = plant1, 1, 83, 215, 92, 35, 1, 0, 0, 250, 190
+object = plant2, 2, 0, 115, 70, 40, 1, 8, 0, 60, 100
+object = plant3, 2, 0, 115, 70, 40, 1, 8, 0, 60, 100
+object = plant4, 2, 20, 200, 25, 5, 1, 0, 0, 70, 140
+object = plant5, 2, 240, 22, 17, 43, 1, 8, 21, 227, 80
+object = plant6, 1, 83, 225, 92, 25, 1, 0, 0, 250, 200
+object = plant7, 2, 20, 200, 25, 5, 1, 0, 0, 70, 140
+object = plant8, 5, 45, 0, 10, 10, 1, 0, 50, 109, 155
+object = plant9, 2, 20, 200, 25, 5, 1, 0, 0, 70, 140
+spray = spray1, 2
+spray = spray2, 2
+spray = spray3, 2
+;Should this theme have flakes? they where disabled
+;flakes = 20, 30, 50, 50, 250
--- a/share/hedgewars/Data/Themes/Cake/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Cake/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,18 +1,12 @@
-0 0 51
-255 200 90
-$FF $DF $E1
-$FF $DF $E1 $80
-snow.ogg
-9
-4
-plant1
-3 83 215 92 35 1 0 0 250 190
-plant2
-3 118 115 41 20 1 0 0 159 110
-plant3
-3 0 115 70 40 1 8 0 60 100
-plant4
-3 20 200 25 5 1 0 0 70 150
-0
-20
-100 0 30 250
+sky = 0, 0, 51
+border = 255, 200, 90
+water-top = $FF, $DF, $E1
+water-bottom = $FF, $DF, $E1
+water-opacity = $80
+music = snow.ogg
+clouds = 9
+object = plant1, 3, 83, 215, 92, 35, 1, 0, 0, 250, 190
+object = plant2, 3, 118, 115, 41, 20, 1, 0, 0, 159, 110
+object = plant3, 3, 0, 115, 70, 40, 1, 8, 0, 60, 100
+object = plant4, 3, 20, 200, 25, 5, 1, 0, 0, 70, 150
+flakes = 20, 100, 0, 30, 250
--- a/share/hedgewars/Data/Themes/Castle/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Castle/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,18 +1,12 @@
-45 53 57
-145 145 145
-81 91 96
-81 91 96 $80
-Castle.ogg
-5
-4
-Spear
-3 65 258 175 2 1 0 0 240 215
-Shield
-3 0 165 163 2 1 0 0 163 140
-Sword
-3 240 22 17 43 1 8 21 227 80
-Axe
-3 25 195 90 65 1 40 5 195 175
-0
-25
-3 99999999 0 750
+sky = 45, 53, 57
+border = 145, 145, 145
+water-top = 81, 91, 96
+water-bottom = 81, 91, 96
+water-opacity = $80
+music = Castle.ogg
+clouds = 5
+object = Spear, 3, 65, 258, 175, 2, 1, 0, 0, 240, 215
+object = Shield, 3, 0, 165, 163, 2, 1, 0, 0, 163, 140
+object = Sword, 3, 240, 22, 17, 43, 1, 8, 21, 227, 80
+object = Axe, 3, 25, 195, 90, 65, 1, 40, 5, 195, 175
+flakes = 25, 3, 99999999, 0, 750
--- a/share/hedgewars/Data/Themes/Cheese/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Cheese/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,19 +1,12 @@
-16 5 27
-240 175 32
-$54 $5C $9D
-$34 $3C $7D $80
-EarthRise.ogg
-9
-5
-cheese
-3 60 80 55 30 1 0 0 140 70
-mouseright
-3 85 162 60 20 1 6 6 200 140
-mouseleft
-3 60 162 63 20 1 6 6 200 140
-knife
-3 90 130 50 20 1 140 0 160 110
-fork
-3 240 130 10 30 1 0 0 170 120
-0
-0
+sky = 16, 5, 27
+border = 240, 175, 32
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = EarthRise.ogg
+clouds = 9
+object = cheese, 3, 60, 80, 55, 30, 1, 0, 0, 140, 70
+object = mouseright, 3, 85, 162, 60, 20, 1, 6, 6, 200, 140
+object = mouseleft, 3, 60, 162, 63, 20, 1, 6, 6, 200, 140
+object = knife, 3, 90, 130, 50, 20, 1, 140, 0, 160, 110
+object = fork, 3, 240, 130, 10, 30, 1, 0, 0, 170, 120
--- a/share/hedgewars/Data/Themes/Christmas/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Christmas/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,26 +1,16 @@
-9 14 45
-141 151 213
-$54 $5C $9D
-$34 $3C $7D $80
-snow.ogg
-9
-6
-reindeer
-1 90 232 94 12 2 55 60 90 73 80 134 105 64
-tree
-1 238 706 36 9 2 122 355 208 293 164 168 82 154
-plant2
-3 0 85 25 25 2 0 0 170 70 50 70 120 40
-plant3
-3 26 0 48 1 1 25 15 50 60
-plant4
-3 45 4 1 45 1 20 45 20 60
-Snowman
-1 38 283 119 14 1 38 21 124 216
-2
-holly
-4
-holly2
-4
-100
-3 99999999 100 300
+sky = 9, 14, 45
+border = 141, 151, 213
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = snow.ogg
+clouds = 9
+object = reindeer, 1, 90, 232, 94, 12, 2, 55, 60, 90, 73, 80, 134, 105, 64
+object = tree, 1, 238, 706, 36, 9, 2, 122, 355, 208, 293, 164, 168, 82, 154
+object = plant2, 3, 0, 85, 25, 25, 2, 0, 0, 170, 70, 50, 70, 120, 40
+object = plant3, 3, 26, 0, 48, 1, 1, 25, 15, 50, 60
+object = plant4, 3, 45, 4, 1, 45, 1, 20, 45, 20, 60
+object = Snowman, 1, 38, 283, 119, 14, 1, 38, 21, 124, 216
+spray = holly, 4
+spray = holly2, 4
+flakes = 100, 3, 99999999, 100, 300
--- a/share/hedgewars/Data/Themes/City/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/City/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,19 +1,12 @@
-21 20 38
-128 0 0
-$54 $5C $9D
-$34 $3C $7D
-$80
-City.ogg
-45
-4
-plant1
-3 200 344 54 2 1 0 0 160 215
-plant2
-3 32 165 65 2 1 0 0 163 140
-plant3
-3 45 0 14 1 1 23 9 54 57
-plant4
-3 99 8 1 38 1 42 7 42 103
-0
-1500
-0 0 0 2000
+sky = 21, 20, 38
+border = 128, 0, 0
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = City.ogg
+clouds = 45
+object = plant1, 3, 200, 344, 54, 2, 1, 0, 0, 160, 215
+object = plant2, 3, 32, 165, 65, 2, 1, 0, 0, 163, 140
+object = plant3, 3, 45, 0, 14, 1, 1, 23, 9, 54, 57
+object = plant4, 3, 99, 8, 1, 38, 1, 42, 7, 42, 103
+flakes = 1500, 0, 0, 0, 2000
--- a/share/hedgewars/Data/Themes/Compost/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Compost/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,34 +1,20 @@
-92 151 253
-52 38 23
-$41 $23 $12
-$33 $21 $9 $FF
-Compost.ogg
-16
-8
-Eggshell1
-3 48 92 78 37 1 0 0 125 47
-Eggshell2
-3 40 65 80 50 1 0 0 120 50
-Onion1
-3 0 65 90 30 1 0 0 75 50
-Onion2
-3 35 80 75 40 2 0 0 30 50 0 36 30 50
-Cucumber1
-3 0 100 75 40 1 80 0 89 95
-Cucumber2
-3 0 70 125 45 1 0 0 70 55
-Carrot1
-3 65 0 40 30 1 0 100 100 100
-Carrot2
-3 0 30 40 35 1 80 65 100 100
-4
-Cucumber3
-1
-Cucumber4
-1
-Carrot3
-1
-Carrot4
-1
-100
-1 130 0 5
+sky = 92, 151, 253
+border = 52, 38, 23
+water-top = $41, $23, $12
+water-bottom = $33, $21, $9
+water-opacity = $FF
+music = Compost.ogg
+clouds = 16
+object = Eggshell1, 3, 48, 92, 78, 37, 1, 0, 0, 125, 47
+object = Eggshell2, 3, 40, 65, 80, 50, 1, 0, 0, 120, 50
+object = Onion1, 3, 0, 65, 90, 30, 1, 0, 0, 75, 50
+object = Onion2, 3, 35, 80, 75, 40, 2, 0, 0, 30, 50, 0, 36, 30, 50
+object = Cucumber1, 3, 0, 100, 75, 40, 1, 80, 0, 89, 95
+object = Cucumber2, 3, 0, 70, 125, 45, 1, 0, 0, 70, 55
+object = Carrot1, 3, 65, 0, 40, 30, 1, 0, 100, 100, 100
+object = Carrot2, 3, 0, 30, 40, 35, 1, 80, 65, 100, 100
+spray = Cucumber3, 1
+spray = Cucumber4, 1
+spray = Carrot3, 1
+spray = Carrot4, 1
+flakes = 100, 1, 130, 0, 5
--- a/share/hedgewars/Data/Themes/CrazyMission/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/CrazyMission/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,9 +1,7 @@
-20 23 24
-20 23 24
-21 57 76
-21 57 76 $80
-snow.ogg
-4
-0
-0
-0
\ No newline at end of file
+sky = 20, 23, 24
+border = 20, 23, 24
+water-top = 21, 57, 76
+water-bottom = 21, 57, 76
+water-opacity = $80
+music = snow.ogg
+clouds = 4
--- a/share/hedgewars/Data/Themes/Deepspace/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Deepspace/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,9 +1,9 @@
-0 0 0
-175 177 75
-$2B $2B $2B
-$2A $2A $2A $CC
-hell.ogg
-9
-0
-0
-50
+sky = 0, 0, 0
+border = 175, 177, 75
+water-top = $2B, $2B, $2B
+water-bottom = $2A, $2A, $2A
+water-opacity = $CC
+music = hell.ogg
+clouds = 9
+flakes = 50, 1, 1000, 50, 50
+;1, 1000, 50, 50 are copied from bamboo theme, as these numbers are required
--- a/share/hedgewars/Data/Themes/Desert/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Desert/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,26 +1,15 @@
-116 239 255
-242 230 124
-$3E $7B $94
-$35 $69 $85 $80
-Desert.ogg
-9
-7
-sand
-4 9 3 4 4 2 1 1 7 27 9 31 5 6
-sandR
-4 4 3 4 4 2 9 1 7 27 3 31 5 6
-buzzard
-1 17 318 4 21 1 51 91 289 241
-cobra
-1 65 230 57 4 1 28 0 206 202
-cactus
-3 27 440 73 10 1 0 0 258 384
-rock1
-2 75 108 73 12 1 0 0 173 99
-rock2
-5 7 18 10 1 1 0 0 24 12
-1
-cowskull
-2
-0
-1 9999 50 10
+sky = 116, 239, 255
+border = 242, 230, 124
+water-top = $3E, $7B, $94
+water-bottom = $35, $69, $85
+water-opacity = $80
+music = Desert.ogg
+clouds = 9
+object = sand, 4, 9, 3, 4, 4, 2, 1, 1, 7, 27, 9, 31, 5, 6
+object = sandR, 4, 4, 3, 4, 4, 2, 9, 1, 7, 27, 3, 31, 5, 6
+object = buzzard, 1, 17, 318, 4, 21, 1, 51, 91, 289, 241
+object = cobra, 1, 65, 230, 57, 4, 1, 28, 0, 206, 202
+object = cactus, 3, 27, 440, 73, 10, 1, 0, 0, 258, 384
+object = rock1, 2, 75, 108, 73, 12, 1, 0, 0, 173, 99
+object = rock2, 5, 7, 18, 10, 1, 1, 0, 0, 24, 12
+spray = cowskull, 2
--- a/share/hedgewars/Data/Themes/EarthRise/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/EarthRise/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,14 +1,10 @@
-0 0 0
-106 106 106
-$54 $5C $9D
-$34 $3C $7D $80
-EarthRise.ogg
-0
-2
-Rock
-3 65 258 175 2 1 0 0 240 215
-RockShort
-3 0 165 163 2 1 0 0 163 140
-0
-20
-1 0 20 0
+sky = 0, 0, 0
+border = 106, 106, 106
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = EarthRise.ogg
+clouds = 0
+object = Rock, 3, 65, 258, 175, 2, 1, 0, 0, 240, 215
+object = RockShort, 3, 0, 165, 163, 2, 1, 0, 0, 163, 140
+flakes = 20, 1, 0, 20, 0
--- a/share/hedgewars/Data/Themes/Eyes/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Eyes/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,9 +1,9 @@
-0 0 0
-175 177 75
-$2B $2B $2B
-$2A $2A $2A $CC
-hell.ogg
-9
-0
-0
-50
+sky = 0, 0, 0
+border = 175, 177, 75
+water-top = $2B, $2B, $2B
+water-bottom = $2A, $2A, $2A
+water-opacity = $CC
+music = hell.ogg
+clouds = 9
+flakes = 50, 1, 1000, 50, 50
+;1, 1000, 50, 50 are copied from bamboo theme, as these numbers are required
--- a/share/hedgewars/Data/Themes/Freeway/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Freeway/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,22 +1,14 @@
-99 51 43
-70 58 55
-$54 $5C $9D
-$34 $3C $7D $80
-Freeway.ogg
-9
-2
-Tire
-3 83 215 92 35 1 0 0 250 190
-AppleSmall
-3 40 0 25 1 1 0 35 100 65
-4
-TireDirt
-2
-AppleDirt
-5
-FishDirt
-4
-BottleDirt
-4
-200
-1 0 0 0
+sky = 99, 51, 43
+border = 70, 58, 55
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = Freeway.ogg
+clouds = 9
+object = Tire, 3, 83, 215, 92, 35, 1, 0, 0, 250, 190
+object = AppleSmall, 3, 40, 0, 25, 1, 1, 0, 35, 100, 65
+spray = TireDirt, 2
+spray = AppleDirt, 5
+spray = FishDirt, 4
+spray = BottleDirt, 4
+flakes = 200, 1, 0, 0, 0
--- a/share/hedgewars/Data/Themes/Halloween/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Halloween/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,14 +1,10 @@
-16 3 8
-116 0 100
-37 91 31
-44 84 40 $80
-Halloween.ogg
-9
-2
-Rock
-3 65 258 175 2 1 0 0 240 215
-RockShort
-3 0 165 163 2 1 0 0 163 140
-0
-20
-7 130 0 5
+sky = 16, 3, 8
+border = 116, 0, 100
+water-top = 37, 91, 31
+water-bottom = 44, 84, 40
+water-opacity = $80
+music = Halloween.ogg
+clouds = 9
+object = Rock, 3, 65, 258, 175, 2, 1, 0, 0, 240, 215
+object = RockShort, 3, 0, 165, 163, 2, 1, 0, 0, 163, 140
+flakes = 20, 7, 130, 0, 5
--- a/share/hedgewars/Data/Themes/Hell/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Hell/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,18 +1,12 @@
-10 10 10
-245 118 0
-$A7 $0B $0C
-$A1 $0A $0A $80
-hell.ogg
-9
-4
-plant1
-3 83 215 92 35 1 0 0 250 190
-plant2
-3 118 115 41 20 1 0 0 159 110
-plant3
-3 0 115 70 40 1 8 0 60 100
-plant4
-3 20 200 25 5 1 0 0 70 150
-0
-20
-30 0 0 250
+sky = 10, 10, 10
+border = 245, 118, 0
+water-top = $A7, $0B, $0C
+water-bottom = $A1, $0A, $0A
+water-opacity = $80
+music = hell.ogg
+clouds = 9
+object = plant1, 3, 83, 215, 92, 35, 1, 0, 0, 250, 190
+object = plant2, 3, 118, 115, 41, 20, 1, 0, 0, 159, 110
+object = plant3, 3, 0, 115, 70, 40, 1, 8, 0, 60, 100
+object = plant4, 3, 20, 200, 25, 5, 1, 0, 0, 70, 150
+flakes = 20, 30, 0, 0, 250
--- a/share/hedgewars/Data/Themes/Island/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Island/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,20 +1,13 @@
-21 20 38
-242 230 124
-$54 $5C $9D
-$34 $3C $7D $80
-pirate.ogg
-9
-5
-anchor
-3 65 258 80 2 1 0 0 240 215
-plant1
-3 10 192 60 2 1 33 0 149 152
-plant2
-3 55 218 30 2 1 0 0 240 175
-plant3
-3 20 0 60 1 1 0 15 100 44
-plant4
-3 78 5 2 60 1 0 0 65 110
-0
-100
-2 500 100 300
+sky = 21, 20, 38
+border = 242, 230, 124
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = pirate.ogg
+clouds = 9
+object = anchor, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+object = plant1, 3, 10, 192, 60, 2, 1, 33, 0, 149, 152
+object = plant2, 3, 55, 218, 30, 2, 1, 0, 0, 240, 175
+object = plant3, 3, 20, 0, 60, 1, 1, 0, 15, 100, 44
+object = plant4, 3, 78, 5, 2, 60, 1, 0, 0, 65, 110
+flakes = 100, 2, 500, 100, 300
--- a/share/hedgewars/Data/Themes/Jungle/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Jungle/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,30 +1,18 @@
-141 149 164
-75 103 25
-$A7 $6A $32
-$B3 $78 $1B $80
-oriental.ogg
-20
-7
-PalmTree
-1 141 225 25 5 1 0 0 230 190
-Flowers
-1 5 65 180 5 1 0 0 150 50
-Liana
-2 0 0 25 10 1 0 40 25 160
-Monkey
-1 20 145 60 5 1 0 0 130 130
-Snake
-1 30 95 40 5 1 0 0 110 75
-FernRight
-2 0 0 20 70 1 40 0 165 70
-FernLeft
-2 185 0 20 70 1 0 0 165 70
-3
-FlowerRed
-2
-FlowerBlue
-2
-Spider
-2
-100
-1 1000 50 50
+sky = 141, 149, 164
+border = 75, 103, 25
+water-top = $A7, $6A, $32
+water-bottom = $B3, $78, $1B
+water-opacity = $80
+music = oriental.ogg
+clouds = 20
+object = PalmTree, 1, 141, 225, 25, 5, 1, 0, 0, 230, 190
+object = Flowers, 1, 5, 65, 180, 5, 1, 0, 0, 150, 50
+object = Liana, 2, 0, 0, 25, 10, 1, 0, 40, 25, 160
+object = Monkey, 1, 20, 145, 60, 5, 1, 0, 0, 130, 130
+object = Snake, 1, 30, 95, 40, 5, 1, 0, 0, 110, 75
+object = FernRight, 2, 0, 0, 20, 70, 1, 40, 0, 165, 70
+object = FernLeft, 2, 185, 0, 20, 70, 1, 0, 0, 165, 70
+spray = FlowerRed, 2
+spray = FlowerBlue, 2
+spray = Spider, 2
+flakes = 100, 1, 1000, 50, 50
--- a/share/hedgewars/Data/Themes/Nature/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Nature/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,33 +1,19 @@
-19 18 82
-176 51 0
-$54 $5C $9D
-$34 $3C $7D
-$80
-Nature.ogg
-9
-11
-plant1
-3 65 258 80 2 1 0 0 240 215
-plant2
-3 21 163 33 15 1 60 62 87 95
-plant3
-3 40 0 25 1 1 0 35 100 65
-plant4
-3 98 10 2 25 1 0 0 70 110
-mole
-1 0 129 161 71 1 13 0 142 99
-mole2
-1 0 129 161 71 1 13 0 142 99
-mole3
-1 0 129 161 71 1 13 0 142 99
-butterfly
-1 43 176 56 6 1 21 14 91 46
-snail
-3 51 94 52 3 1 0 0 135 87
-mushroom
-3 14 77 24 2 1 0 0 76 73
-mushroom2
-3 24 78 48 7 2 0 0 80 36 15 38 57 30
-0
-55
-40 99999999 30 200
+sky = 19, 18, 82
+border = 176, 51, 0
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = Nature.ogg
+clouds = 9
+object = plant1, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+object = plant2, 3, 21, 163, 33, 15, 1, 60, 62, 87, 95
+object = plant3, 3, 40, 0, 25, 1, 1, 0, 35, 100, 65
+object = plant4, 3, 98, 10, 2, 25, 1, 0, 0, 70, 110
+object = mole, 1, 0, 129, 161, 71, 1, 13, 0, 142, 99
+object = mole2, 1, 0, 129, 161, 71, 1, 13, 0, 142, 99
+object = mole3, 1, 0, 129, 161, 71, 1, 13, 0, 142, 99
+object = butterfly, 1, 43, 176, 56, 6, 1, 21, 14, 91, 46
+object = snail, 3, 51, 94, 52, 3, 1, 0, 0, 135, 87
+object = mushroom, 3, 14, 77, 24, 2, 1, 0, 0, 76, 73
+object = mushroom2, 3, 24, 78, 48, 7, 2, 0, 0, 80, 36, 15, 38, 57, 30
+flakes = 55, 40, 99999999, 30, 200
--- a/share/hedgewars/Data/Themes/Olympics/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Olympics/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,19 +1,12 @@
-177 190 216
-204 200 168
-$54 $5C $9D
-$34 $3C $7D
-$80
-Olympics.ogg
-9
-4
-Statue
-3 42 258 115 2 1 0 0 165 240
-Column01
-3 21 258 80 2 1 0 0 110 240
-Column02
-3 12 258 76 2 1 0 0 110 240
-Column03
-3 3 173 84 2 1 0 0 90 155
-0
-50
-1 1000 0 10
+sky = 177, 190, 216
+border = 204, 200, 168
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = Olympics.ogg
+clouds = 9
+object = Statue, 3, 42, 258, 115, 2, 1, 0, 0, 165, 240
+object = Column01, 3, 21, 258, 80, 2, 1, 0, 0, 110, 240
+object = Column02, 3, 12, 258, 76, 2, 1, 0, 0, 110, 240
+object = Column03, 3, 3, 173, 84, 2, 1, 0, 0, 90, 155
+flakes = 50, 1, 1000, 0, 10
--- a/share/hedgewars/Data/Themes/Planes/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Planes/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,9 +1,7 @@
-21 20 38
-177 175 49
-$54 $5C $9D
-$34 $3C $7D $80
-City.ogg
-9
-0
-0
-0
+sky = 21, 20, 38
+border = 177, 175, 49
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = City.ogg
+clouds = 9
--- a/share/hedgewars/Data/Themes/Sheep/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Sheep/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,40 +1,23 @@
-66 71 141
-0 88 0
-$54 $5C $9D
-$34 $3C $7D $80
-Sheep.ogg
-4
-7
-fleur
-3 45 127 50 3 1 0 0 120 105
-mouton1
-3 88 222 122 4 1 0 0 275 200
-mouton2
-3 84 245 125 20 1 0 0 275 200
-mouton3
-3 152 255 176 15 1 0 0 440 230
-mouton4
-3 148 245 162 20 1 0 0 440 205
-barriere
-3 34 190 300 10 1 0 0 381 140
-rocher
-3 16 90 69 3 1 0 0 110 65
-8
-grass
-7
-grass2
-7
-grassp
-7
-grassp2
-7
-fleurland
-7
-fleurland2
-7
-fleurland3
-7
-fleurland4
-7
-20
-1000 1000 25 1
+sky = 66, 71, 141
+border = 0, 88, 0
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = Sheep.ogg
+clouds = 4
+object = fleur, 3, 45, 127, 50, 3, 1, 0, 0, 120, 105
+object = mouton1, 3, 88, 222, 122, 4, 1, 0, 0, 275, 200
+object = mouton2, 3, 84, 245, 125, 20, 1, 0, 0, 275, 200
+object = mouton3, 3, 152, 255, 176, 15, 1, 0, 0, 440, 230
+object = mouton4, 3, 148, 245, 162, 20, 1, 0, 0, 440, 205
+object = barriere, 3, 34, 190, 300, 10, 1, 0, 0, 381, 140
+object = rocher, 3, 16, 90, 69, 3, 1, 0, 0, 110, 65
+spray = grass, 7
+spray = grass2, 7
+spray = grassp, 7
+spray = grassp2, 7
+spray = fleurland, 7
+spray = fleurland2, 7
+spray = fleurland3, 7
+spray = fleurland4, 7
+flakes = 20, 1000, 1000, 25, 1
--- a/share/hedgewars/Data/Themes/Snow/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Snow/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,18 +1,12 @@
-21 20 38
-141 151 213
-$54 $5C $9D
-$34 $3C $7D $80
-snow.ogg
-9
-4
-plant1
-3 65 258 80 2 1 0 0 240 215
-plant2
-3 0 85 25 25 2 0 0 170 70 50 70 120 40
-plant3
-3 26 0 48 1 1 25 15 50 60
-plant4
-3 45 4 1 45 1 20 45 20 60
-0
-100
-3 99999999 100 300
+sky = 21, 20, 38
+border = 141, 151, 213
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = snow.ogg
+clouds = 9
+object = plant1, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+object = plant2, 3, 0, 85, 25, 25, 2, 0, 0, 170, 70, 50, 70, 120, 40
+object = plant3, 3, 26, 0, 48, 1, 1, 25, 15, 50, 60
+object = plant4, 3, 45, 4, 1, 45, 1, 20, 45, 20, 60
+flakes = 100, 3, 99999999, 100, 300
--- a/share/hedgewars/Data/Themes/Stage/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Stage/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,30 +1,18 @@
-0 0 0
-106 106 106
-72 105 127
-37 76 91 128
-Rock.ogg
-0
-6
-MicR
-1 0 28 7 24 1 25 0 125 52
-MicL
-1 145 27 5 25 1 0 0 110 52
-Bass
-1 243 373 20 5 1 0 0 330 310
-Light
-1 10 0 65 10 1 0 42 140 122
-Box
-1 0 170 150 8 1 0 0 150 145
-drum
-1 0 202 239 4 1 39 0 200 150
-4
-poster1
-2
-poster2
-2
-poster3
-2
-poster4
-2
-100
-3 99999999 10 20
+sky = 0, 0, 0
+border = 106, 106, 106
+water-top = 72, 105, 127
+water-bottom = 37, 76, 91
+water-opacity = 128
+music = Rock.ogg
+clouds = 0
+object = MicR, 1, 0, 28, 7, 24, 1, 25, 0, 125, 52
+object = MicL, 1, 145, 27, 5, 25, 1, 0, 0, 110, 52
+object = Bass, 1, 243, 373, 20, 5, 1, 0, 0, 330, 310
+object = Light, 1, 10, 0, 65, 10, 1, 0, 42, 140, 122
+object = Box, 1, 0, 170, 150, 8, 1, 0, 0, 150, 145
+object = drum, 1, 0, 202, 239, 4, 1, 39, 0, 200, 150
+spray = poster1, 2
+spray = poster2, 2
+spray = poster3, 2
+spray = poster4, 2
+flakes = 100, 3, 99999999, 10, 20
--- a/share/hedgewars/Data/Themes/Underwater/theme.cfg Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/Themes/Underwater/theme.cfg Fri Dec 31 03:29:41 2010 +0100
@@ -1,20 +1,13 @@
-255 255 255
-123 148 220
-0 0 0
-0 0 0 $FF
-underwater.ogg
-9
-5
-anchor
-3 65 258 80 2 1 0 0 240 215
-clam
-3 60 131 16 2 1 0 0 150 117
-crab
-3 78 256 96 2 1 3 60 237 155
-coral
-3 10 193 38 32 2 128 66 66 94 39 0 88 167
-coral2
-3 119 146 23 22 1 5 0 123 130
-0
-20
-20 150 0 5
+sky = 255, 255, 255
+border = 123, 148, 220
+water-top = 0, 0, 0
+water-bottom = 0, 0, 0
+water-opacity = $FF
+music = underwater.ogg
+clouds = 9
+object = anchor, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+object = clam, 3, 60, 131, 16, 2, 1, 0, 0, 150, 117
+object = crab, 3, 78, 256, 96, 2, 1, 3, 60, 237, 155
+object = coral, 3, 10, 193, 38, 32, 2, 128, 66, 66, 94, 39, 0, 88, 167
+object = coral2, 3, 119, 146, 23, 22, 1, 5, 0, 123, 130
+flakes = 20, 20, 150, 0, 5
--- a/share/hedgewars/Data/misc/hedgewars-mimeinfo.xml Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/misc/hedgewars-mimeinfo.xml Fri Dec 31 03:29:41 2010 +0100
@@ -8,13 +8,14 @@
-->
<comment>Hedgewars Demo</comment>
<comment xml:lang="de">Hedgewars Demo</comment>
- <comment xml:lang="fr">Hedgewars Démonstration</comment>
+ <comment xml:lang="es">Demo de Hedgewars</comment>
+ <comment xml:lang="fr">Démonstration d'Hedgewars</comment>
+ <comment xml:lang="it">Demo di Hedgewars</comment>
+ <comment xml:lang="ko">헤즈와스 데모</comment>
<comment xml:lang="pl">Demo gry Hedgewars</comment>
+ <comment xml:lang="pt">Hedgewars Demo</comment>
<comment xml:lang="sk">Demo hry Hedgewars</comment>
<comment xml:lang="sv">Demo för Hedgewars</comment>
- <comment xml:lang="es">Demo de Hedgewars</comment>
- <comment xml:lang="it">Demo di Hedgewars</comment>
- <comment xml:lang="pt">Hedgewars Demo</comment>
<magic priority="50">
<match required="yes" type="byte" offset="0" value="2"/>
<match required="yes" type="big16" offset="1" value="21572"/>
@@ -26,12 +27,14 @@
<!--<generic-icon name="applications-games"/>-->
<comment>Hedgewars Save</comment>
<comment xml:lang="de">Hedgewars gespeichertes Spiel</comment>
+ <comment xml:lang="es">Partida guardada de Hedgewars</comment>
+ <comment xml:lang="fr">Parties enregistrées d'Hedgewars</comment>
+ <comment xml:lang="ko">헤즈와스 저장된 게임</comment>
+ <comment xml:lang="it">Partita salvata di Hedgewars</comment>
<comment xml:lang="pl">Zapis gry Hedgewars</comment>
+ <comment xml:lang="pt">Partida guardada de Hedgewars</comment>
<comment xml:lang="sk">Uložená hra Hedgewars</comment>
<comment xml:lang="sv">Sparfil för Hedgewars</comment>
- <comment xml:lang="es">Partida guardada de Hedgewars</comment>
- <comment xml:lang="it">Partita salvata di Hedgewars</comment>
- <comment xml:lang="pt">Partida guardada de Hedgewars</comment>
<magic priority="50">
<match required="yes" type="byte" offset="0" value="2"/>
<match required="yes" type="big16" offset="1" value="21587"/>
--- a/share/hedgewars/Data/misc/hwengine.desktop.in Fri Dec 31 03:22:30 2010 +0100
+++ b/share/hedgewars/Data/misc/hwengine.desktop.in Fri Dec 31 03:29:41 2010 +0100
@@ -5,13 +5,14 @@
Name=Hedgewars Engine
GenericName=Hedgewars engine, for playback of saves and demos
GenericName[de]=Hedgewars engine, für die Wiedergabe von gespeicherten Spielen und Demos
+GenericName[es]=Motor del juego Hedgewars, reproduce demos y partidas guardadas
+GenericName[fr]=Moteur graphique d'Hedgewars, pour revoir les parties enregistrées et de démonstration.
+GenericName[it]=Motore grafico di Hedgewars, riproduce le demo e riprende le partite salvate
GenericName[pl]=Silnik gry Hedgewars do odtwarzania dem i zapisów gier
+GenericName[pt]=Motor de jogo Hedgewars, para reprodução de jogos guardados e demos
+GenericName[ru]=Движок Hedgewars для проигрывания сохранённых игр и демок
GenericName[sk]=Engine hry Hedgewars, pre prehrávanie uložených hier a demo súborov
GenericName[sv]=Hedgewarsmotorn, för att öppna demo- och sparfiler
-GenericName[es]=Motor del juego Hedgewars, reproduce demos y partidas guardadas
-GenericName[it]=Motore grafico di Hedgewars, riproduce le demo e riprende le partite salvate
-GenericName[pt]=Motor de jogo Hedgewars, para reprodução de jogos guardados e demos
-GenericName[ru]=Движок Hedgewars для проигрывания сохранённых игр и демок
Icon=hedgewars.png
Exec=${CMAKE_INSTALL_PREFIX}/bin/hwengine ${HEDGEWARS_DATADIR}/hedgewars/Data %f
Path=/tmp