# HG changeset patch # User koda # Date 1293762581 -3600 # Node ID 5ea3d182415e4327e7584b1aa68197931d232ac3 # Parent 42adc7c11980f677bf4c9d28fc267b8daeceb92b# Parent 68f9b331014a30f7ec5bffee08c20b23fbf3a20d merge and fix my typos diff -r 42adc7c11980 -r 5ea3d182415e ChangeLog.txt --- 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: diff -r 42adc7c11980 -r 5ea3d182415e hedgewars/GSHandlers.inc --- 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 diff -r 42adc7c11980 -r 5ea3d182415e hedgewars/HHHandlers.inc --- 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); diff -r 42adc7c11980 -r 5ea3d182415e hedgewars/uConsts.pas --- 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, diff -r 42adc7c11980 -r 5ea3d182415e hedgewars/uGears.pas --- 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; diff -r 42adc7c11980 -r 5ea3d182415e hedgewars/uGearsRender.pas --- 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); diff -r 42adc7c11980 -r 5ea3d182415e hedgewars/uLandGraphics.pas --- 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 diff -r 42adc7c11980 -r 5ea3d182415e hedgewars/uLandObjects.pas --- 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; diff -r 42adc7c11980 -r 5ea3d182415e hedgewars/uScript.pas --- 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; diff -r 42adc7c11980 -r 5ea3d182415e hedgewars/uStore.pas --- 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 diff -r 42adc7c11980 -r 5ea3d182415e hedgewars/uTypes.pas --- 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 diff -r 42adc7c11980 -r 5ea3d182415e hedgewars/uVariables.pas --- 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; diff -r 42adc7c11980 -r 5ea3d182415e hedgewars/uVisualGears.pas --- 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; diff -r 42adc7c11980 -r 5ea3d182415e hedgewars/uWorld.pas --- 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 diff -r 42adc7c11980 -r 5ea3d182415e misc/hedgewars.desktop --- 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 diff -r 42adc7c11980 -r 5ea3d182415e project_files/HedgewarsMobile/Classes/GameSetup.m --- 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"); diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Graphics/Snow.png Binary file share/hedgewars/Data/Graphics/Snow.png has changed diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Graphics/Snow.svg --- /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> diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Graphics/SuddenDeath/BlueWater.png Binary file share/hedgewars/Data/Graphics/SuddenDeath/BlueWater.png has changed diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Graphics/SuddenDeath/Flake.png Binary file share/hedgewars/Data/Graphics/SuddenDeath/Flake.png has changed diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Graphics/SuddenDeath/SDClouds.png Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDClouds.png has changed diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Graphics/SuddenDeath/SDDroplet.png Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDDroplet.png has changed diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Graphics/SuddenDeath/SDFlake.png Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDFlake.png has changed diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Graphics/SuddenDeath/SDSplash.png Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDSplash.png has changed diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Graphics/SuddenDeath/SDWater.png Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDWater.png has changed diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Locale/de.lua --- 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:"] = "", diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Locale/es.lua --- 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: ", diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Locale/fr.lua --- /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"] = "", + } diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Locale/fr.txt --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Locale/hedgewars_fr.ts --- 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> diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Locale/hedgewars_zh_CN.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> diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Locale/ko.lua --- 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: "] = "", diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Locale/pl.lua --- 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: ", diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Locale/pt_BR.lua --- 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:"] = "", diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Locale/pt_PT.lua --- 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:"] = "", diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Locale/sk.lua --- 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", } diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Locale/stub.lua --- 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: "] = "", diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Locale/sv.lua --- 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: ", diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Locale/zh_CN.lua --- /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"] = "火箭队", + [":("] = "囧", + } diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Locale/zh_CN.txt --- 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) diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Maps/CTF_Blizzard/map.lua --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Maps/Control/map.lua --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Missions/Training/User_Mission_-_Diver.lua --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Art/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Bamboo/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Bath/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Blox/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Brick/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Cake/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Castle/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Cheese/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Christmas/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/City/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Compost/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/CrazyMission/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Deepspace/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Desert/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/EarthRise/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Eyes/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Freeway/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Halloween/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Hell/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Island/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Jungle/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Nature/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Olympics/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Planes/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Sheep/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Snow/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Stage/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/Themes/Underwater/theme.cfg --- 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 diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/misc/hedgewars-mimeinfo.xml --- 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"/> diff -r 42adc7c11980 -r 5ea3d182415e share/hedgewars/Data/misc/hwengine.desktop.in --- 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