# 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 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + 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 @@ copy of - + Copier à partir de ... @@ -46,18 +46,18 @@ When this option is enabled selecting a game scheme will auto-select a weapon - + Quand cette option est active choisir des paramètres de jeu sélectionnera les armes HWChatWidget %1 *** %2 has been removed from your ignore list - %1 *** %2 a été enlevé de la liste des personnes ignorées + %1 *** %2 a été enlevé de votre liste de personnes ignorées %1 *** %2 has been added to your ignore list - %1 *** %2 a été ajouté dans la liste des personnes ignorées + %1 *** %2 a été ajouté dans votre liste de personnes ignorées %1 *** %2 has been removed from your friends list @@ -92,7 +92,7 @@ Please select record from the list above - Veuillez sélectionner une partie dans la liste ci-dessus + Veuillez sélectionner une partie enregistrée dans la liste ci-dessus DefaultTeam @@ -101,12 +101,12 @@ Hedgewars Demo File File Types - + Fichier de démonstration d'Hedgewars Hedgewars Save File File Types - + Fichier de sauvegarde d'Hedgewars @@ -156,7 +156,7 @@ Wacky - Farpelu + Farfelu Type @@ -188,11 +188,11 @@ Seed - + Graine Set - + Valider @@ -244,7 +244,7 @@ Votre pseudo %1 est enregistré sur Hedgewars.org Veuillez fournir votre mot de passe -ou choisir un nouveau pseudo: +ou choisir un nouveau pseudo : %1 *** %2 has joined the room @@ -267,7 +267,10 @@ registered on Hedgewars.org Please provide your password below or pick another nickname in game config: - + Votre pseudo %1 est +enregistré sur Hedgewars.org +Veuillez fournir votre mot de passe +ou choisir un nouveau pseudo : @@ -289,31 +292,31 @@ Clear Accounts Cache - Vider le cache de comptes + Vider le cache des comptes Fetch data - + Récupérer les données Server message for latest version: - + Message du serveur pour la dernière version : Server message for previous versions: - + Message du serveur pour la version précédente : Latest version protocol number: - + Numéro de la dernière version du protocole : MOTD preview: - + Prévisualisation du MOTD Set data - + Enregistrer les données @@ -327,31 +330,31 @@ PageDrawMap Undo - + Annuler Clear - + Effacer Load - Charger + Charger Save - + Enregistrer Load drawn map - + Charger une carte dessinée Drawn Maps (*.hwmap);;All files (*.*) - + Cartes dessinées (*.hwmap);;Tous les fichiers (*.*) Save drawn map - + Enregistrer une carte dessinée @@ -387,59 +390,59 @@ Details - + Détails Health graph - + Courbes de santé- Ranking - + Rang The best shot award was won by <b>%1</b> with <b>%2</b> pts. - + Le prix du meilleur tir a été décerné à <b>%1</b> avec <b>%2</b> points. The best killer is <b>%1</b> with <b>%2</b> kills in a turn. - - - + + Le meilleur tueur est <b>%1</b> avec <b>%2</b> mort dans un tour. + Le meilleur tueur est <b>%1</b> avec <b>%2</b> morts dans un tour. A total of <b>%1</b> hedgehog(s) were killed during this round. - - - + + Un total de <b>%1</b> hérisson a été tué durant ce tour. + Un total de <b>%1</b> hérissons ont été tués durant ce tour. (%1 kill) - + (%1 Tue) <b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts. - - - + + <b>%1</b> pense que c'est bien de tirer sur ses propres hérissons pour <b>%2</b> point. + <b>%1</b> pense que c'est bien de tirer sur ses propres hérissons pour <b>%2</b> points. <b>%1</b> killed <b>%2</b> of his own hedgehogs. - - + + <b>%1</b> a tué <b>%2</b> de ses propres hérissons. <b>%1</b> was scared and skipped turn <b>%2</b> times. - - + + <b>%1</b> a eu peur et a passé son tour <b>%2</b> fois. @@ -457,247 +460,247 @@ 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. Tips - + 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. 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. Tips - + 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. 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! Tips - + 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 ! If you'd like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/. Tips - + Si vous voulez empêcher les autres d'utiliser votre pseudo sur le serveur officiel, créez un compte sur http://www.hedgewars.org/. You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked. Tips - + Assez du mode par défaut ? Essayez une des missions - elles offrent différents types de jeu suivant votre choix. 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. Tips - + 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. 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! Tips - + 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. 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! Tips - + 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 ! Hedgewars is Open Source and Freeware we create in our spare time. Share it with your family and friends as you like! Tips - + Hedgewars est un jeu libre et gratuit créé sur notre temps libre. Partagez-le avec votre famille et vos amis comme vous le voulez ! From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance. Tips - + 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. Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us! Tips - + Hedgewars est disponible dans de nombreuses langues. Si la traduction dans votre langue est partielle ou obsolète, contactez-nous ! Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux. Tips - + Hedgewars peux être exécuté sur de nombreux systèmes d'exploitation différents, incluant Microsoft Windows, Mac OS X et Linux. 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. Tips - + 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. While playing you should give yourself a short break at least once an hour. Tips - + Vous devriez faire une petite pause au moins une fois par heure. If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance. Tips - + 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. We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know! Tips - + Nous sommes ouverts aux suggestions et au critiques constructives. Si vous n'aimez pas quelque chose ou avez une grande idée, contactez-nous ! Especially while playing online be polite and always remember there might be some minors playing with or against you as well! Tips - + Particulièrement quand vous jouez en ligne soyez polis et pensez que certains joueurs avec vous peuvent être mineurs. Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game! Tips - + Les modes de jeu spéciaux comme « Vampirisme » ou « Karma » vous permettent de développer de nouvelles tactiques. Essayez-les en parties personnalisées ! The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing. Tips - + La version Windows d'Hedgewars fonctionne avec Xfire. Pensez à ajouter Hedgewars dans la liste de jeu pour que vous amis vous voient jouer. You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead! Tips - + Vous ne devriez jamais installer Hedgewars sur des ordinateurs ne vous appartenant pas (école, université, travail, etc...). Demandez au responsable ! 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. Tips - + 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. No hedgehogs were harmed in making this game. Tips - + Aucun hérisson n'a été blessé durant la conception de ce jeu. Hedgewars is Open Source and Freeware we create in our spare time. If someone sold you the game, you should try get a refund! Tips - + Hedgewars est un jeu libre et gratuit créé sur notre temps libre. Si quelqu'un vous l'a vendu, vous devriez vous faire rembourser ! Connect one or more gamepads before starting the game to be able to assign their controls to your teams. Tips - + Branchez une ou plusieurs manettes avant de lancer le jeu pour pouvoir contrôler vos équipes avec. Create an account on %1 to keep others from using your most favourite nickname while playing on the official server. Tips - + Créer un compte sur %1 vous permet d'empêcher les autres d'utiliser votre pseudo favori sur le serveur officiel. If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers. Tips - + Si votre carte graphique ne peut pas fournir d'accélération matérielle pour OpenGL, essayez d'installer les drivers associés. There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump. Tips - + 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. Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving. Tips - + Peur de tomber d'une falaise ? Maintenez [precise] pour tourner [left] ou [right] sans bouger. 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. Tips - + 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. Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this. Tips - + 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. The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once. Tips - + 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. The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well. Tips - + 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. The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power. Tips - + 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. Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water. Tips - + 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. The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground. Tips - + Le Marteau est plus efficace utilisé sur des ponts ou des poutrelles. Les hérissons touchés vont passer à travers le sol. If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion. Tips - + 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. The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early. Tips - + La distance maximale que le Gâteau peux parcourir dépend du terrain qu'il doit franchir. Utiliser [attack] pour le faire exploser avant. The Flame Thrower is a weapon but it can be used for tunnel digging as well. Tips - + Le Lance-flammes est une arme mais peut aussi être utilisé pour creuser un tunnel. Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms. Tips - + Utilisez la grenade infernale pour empêcher temporairement des hérissons de traverser du terrain comme un tunnel ou une plate-forme. Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits. Tips - + Vous voulez savoir qui est derrière le jeu ? Cliquez sur le logo Hedgewars dans le menu principal pour voir les crédits. 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. Tips - + 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. Really want to wear a specific hat? Donate to us and receive an exclusive hat of your choice! Tips - + Vous voulez vraiment un chapeau spécifique ? Faites un don et recevez un chapeau exclusif de votre choix. Keep your video card drivers up to date to avoid issues playing the game. Tips - + Conservez les pilotes de votre carte graphique à jour pour éviter les problèmes en jouant. 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. Tips - + 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 ! 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. Tips - + 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. Like Hedgewars? Become a fan on %1 or follow us on %2! Tips - + Vous aimez Hedgewars ? Devenez un fan sur %1 ou suivez-nous sur %2 ! 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! Tips - + 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. 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. Tips - + 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 ! 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. Tips - + 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 ! @@ -748,35 +751,35 @@ Delete team - + Supprimer une équipe You can't edit teams from team selection. Go back to main menu to add, edit or delete teams. - + Vous ne pouvez pas modifier d'équipe depuis la sélection d'équipes. Retournez au manu principal pour ajouter, modifier ou supprimer des équipes. New scheme - + Nouveaux paramètres Edit scheme - + Modifier paramètres Delete scheme - + Supprimer paramètres New weapon set - + Nouvel ensemble d'armes Edit weapon set - + Modifier un ensemble d'armes Delete weapon set - + Supprimer un ensemble d'armes @@ -896,36 +899,36 @@ Random Maze - + Labyrinthe aléatoire State: - + État : Rules: - + Règles : Weapons: - + Armes : Search: - + Recherche : Clear - + Effacer Warning - + Attention The game you are trying to join has started. Do you still want to join the room? - + Vous voulez rejoindre une partie qui a déjà commencée. Voulez-vous tout de même rejoindre la salle ? @@ -992,59 +995,59 @@ Order of play is random instead of in room order. - + Ordre de jeu aléatoire plutôt que par ordre dans la salle. Play with a King. If he dies, your side dies. - + Jouez avec un Roi. S'il meurs, votre côté perds. Take turns placing your hedgehogs before the start of play. - + Placez vos hérissons chacun à votre tour avant de commencer à jouer. Ammo is shared between all teams that share a colour. - + Les munitions sont partagées parmi les équipes de même couleur. Disable girders when generating random maps. - + Désactiver les poutres en générant des cartes aléatoires. Disable land objects when generating random maps. - + Désactiver les objets de terrain en générant des cartes aléatoires. AI respawns on death. - + L'IA ressuscite à chaque mort. All (living) hedgehogs are fully restored at the end of turn - + Tous les hérissons (vivants) sont soignés complètement à la fin du tour. Attacking does not end your turn. - + Attaquer ne termine pas votre tour. Weapons are reset to starting values each turn. - + Les armes sont réinitialisées aux valeurs de départ à la fin de chaque tour. Each hedgehog has its own ammo. It does not share with the team. - + Chaque hérisson a ses propres munitions. Il ne les partage pas avec son équipe. You will not have to worry about wind anymore. - + Vous n'aurez plus jamais à vous soucier du vent. Wind will affect almost everything. - + Le vent affectera quasiment tout. Copy - + Copier @@ -1059,11 +1062,11 @@ New - Nouveau + Nouveau Copy - + Copier @@ -1090,7 +1093,7 @@ Campaign Mode (...). IN DEVELOPMENT - + Mode Campagne (...). EN DÉVELOPPEMENT @@ -1121,23 +1124,23 @@ Follow - + Suivre Ignore - + Ignorer Add friend - + Ajouter un ami Unignore - + Ne plus ignorer Remove friend - + Retirer un ami @@ -1180,19 +1183,19 @@ Show ammo menu tooltips - + Montrer le menu d'aide des munitions. Enable frontend sounds - + Activer les sons du menu principal Enable frontend music - + Activer la musique du menu principal Frontend effects - + Effets du menu principal @@ -1211,19 +1214,19 @@ (System default) - + Réglage du système generated maze... - + Labyrinthe généré Mission - + Mission Community - + Communauté Any @@ -1235,7 +1238,7 @@ In progress - + En cours Default @@ -1243,7 +1246,7 @@ hand drawn map... - + Carte dessinée @@ -1278,7 +1281,7 @@ Weapons - Armes + Armes Game Modifiers @@ -1290,15 +1293,15 @@ Team Settings - + Réglages de l'équipe Misc - + Divers Schemes and Weapons - + Paramètres et Armes @@ -1405,11 +1408,11 @@ % Dud Mines - + % de Mines défectueuses Name - + Nom Type @@ -1417,59 +1420,59 @@ Grave - + Tombe Flag - + Drapeau Voice - + Voix Locale - + Langue Restart game to apply - + Relancez le jeu pour appliquer Explosives - + Explosifs Tip: - + Conseil : 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! - + 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. Quality - + Qualité % Health Crates - + % Caisses de Santé Health in Crates - + Santé dans les Caisses Sudden Death Water Rise - + Montée de l'eau à la Mort Subite Sudden Death Health Decrease - + Perte de Santé à la Mort Subite % Rope Length - + % longueur de la Corde Ninja Gameplay @@ -1530,39 +1533,39 @@ Can not overwrite default weapon set '%1'! - + Impossible d'enregistrer sur le set d'armes par défaut. All file associations have been set. - + Toutes les associations d'extensions de fichiers ont été effectuées. File association failed. - + Les associations d'extensions de fichiers ont échoué. Teams - Équipes + Équipes Really delete this team? - + Voulez-vous vraiment effacer cette équipe ? Schemes - + Paramètres de jeu Can not delete default scheme '%1'! - + Impossible d'effacer les paramètres de jeu par défaut. Really delete this game scheme? - + Voulez-vous vraiment effacer ces paramètres de jeu ? Can not delete default weapon set '%1'! - + Impossible d'effacer le set d'armes par défaut. @@ -1652,15 +1655,15 @@ Random Team - + Équipes aléatoires Associate file extensions - + Associer les extensions de fichiers more - + plus @@ -1706,19 +1709,19 @@ Ammo in boxes - + Munitions dans les caisses Delays - + Délais new - + Nouveau copy of - + Copie de @@ -1780,59 +1783,59 @@ Add Mines - Ajouter des Mines + Ajouter des Mines Random Order - + Ordre aléatoire King - + Roi Place Hedgehogs - + Placer les hérissons Clan Shares Ammo - + Les Clans partagent les munitions Disable Girders - + Désactiver les poutres Disable Land Objects - + Désactiver les objets de terrain AI Survival Mode - + Mode de survie de l'IA Reset Health - + Réinitialiser la Santé Unlimited Attacks - + Attaques illimitées Reset Weapons - + Réinitialiser les Armes Per Hedgehog Ammo - + Munitions par hérisson Disable Wind - + Désactiver le vent More Wind - + Davantage de vent @@ -2103,7 +2106,7 @@ Hat - Bouton directionnel + Chapeau (Left) @@ -2403,7 +2406,7 @@ Clear - + Effacer 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 @@ copy of - + 备份 + + + + DrawMapWidget + + File error + 文件错误 + + + Cannot open file '%1' for writing + 无法打开文件 '%1' 写入 + + + Cannot read file '%1' + 无法读取文件 '%1' @@ -187,11 +202,11 @@ Seed - + 作种 Set - + 设定 @@ -329,31 +344,31 @@ PageDrawMap Undo - + 取消 Clear - + 清除 Load - 读取 + 读取 Save - + 保存 Load drawn map - + 读取已经绘制的地图 Drawn Maps (*.hwmap);;All files (*.*) - + 绘制的地图 (*.hwmap);;全部文件 (*.*) Save drawn map - + 保存绘制的地图 @@ -1083,7 +1098,7 @@ Copy - + 备份 @@ -1102,7 +1117,7 @@ Copy - + 备份 @@ -1310,7 +1325,7 @@ hand drawn map... - + 手绘地图 @@ -1540,7 +1555,7 @@ Gameplay - + 游戏 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 @@ --> Hedgewars Demo Hedgewars Demo - Hedgewars Démonstration + Demo de Hedgewars + Démonstration d'Hedgewars + Demo di Hedgewars + 헤즈와스 데모 Demo gry Hedgewars + Hedgewars Demo Demo hry Hedgewars Demo för Hedgewars - Demo de Hedgewars - Demo di Hedgewars - Hedgewars Demo @@ -26,12 +27,14 @@ Hedgewars Save Hedgewars gespeichertes Spiel + Partida guardada de Hedgewars + Parties enregistrées d'Hedgewars + 헤즈와스 저장된 게임 + Partita salvata di Hedgewars Zapis gry Hedgewars + Partida guardada de Hedgewars Uložená hra Hedgewars Sparfil för Hedgewars - Partida guardada de Hedgewars - Partita salvata di Hedgewars - Partida guardada de Hedgewars 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