# HG changeset patch # User koda # Date 1295302972 -3600 # Node ID 9a0f5377c529f4985d08a96d75899a17331d6f5c # Parent 673f74c89687de84afd64d30d39aeb415aa9d162# Parent 9f20a38a385a391516804cdadf024b430476b496 merge latest 0.9.15 changes into head diff -r 9f20a38a385a -r 9a0f5377c529 .hgtags --- a/.hgtags Mon Jan 17 08:37:43 2011 +0100 +++ b/.hgtags Mon Jan 17 23:22:52 2011 +0100 @@ -32,3 +32,4 @@ 29ab0d49c3e6e72a7633d0bd316ae533db15c65d 0.9.15 0000000000000000000000000000000000000000 0.9.15 29ab0d49c3e6e72a7633d0bd316ae533db15c65d 0.9.15-release +5ea3d182415e4327e7584b1aa68197931d232ac3 Hedgewars-iOS-1.2.2 diff -r 9f20a38a385a -r 9a0f5377c529 CMakeLists.txt --- a/CMakeLists.txt Mon Jan 17 08:37:43 2011 +0100 +++ b/CMakeLists.txt Mon Jan 17 23:22:52 2011 +0100 @@ -8,7 +8,7 @@ ENDIF() #detect Mercurial revision (if present) -#set(version_suffix "-dev") #UNSET THIS VARIABLE AT RELEASE TIME +set(version_suffix "-dev") #UNSET THIS VARIABLE AT RELEASE TIME IF(version_suffix MATCHES "-dev") set(HW_DEV true) IF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.hg) @@ -31,7 +31,7 @@ set(CPACK_PACKAGE_VERSION_MAJOR "0") set(CPACK_PACKAGE_VERSION_MINOR "9") -set(CPACK_PACKAGE_VERSION_PATCH "15${version_suffix}") +set(CPACK_PACKAGE_VERSION_PATCH "16${version_suffix}") #forbid in-tree building #IF (${CMAKE_SOURCE_DIR} MATCHES ${CMAKE_BINARY_DIR}) @@ -168,7 +168,7 @@ set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") -set(HEDGEWARS_PROTO_VER 37) +set(HEDGEWARS_PROTO_VER 38) if(WITH_SERVER) message(STATUS "Server is going to be built! Make sure you have GHC installed") @@ -242,13 +242,14 @@ "release$" "Debug$" "Release$" - "proto.inc$" - "hwconsts.cpp$" - "playlist.inc$" + "proto\\\\.inc$" + "hwconsts\\\\.cpp$" + "playlist\\\\.inc$" "CPack" - "cmake_install.cmake$" - "config.inc$" - "hwengine.desktop$" + "cmake_install\\\\.cmake$" + "config\\\\.inc$" + "hwengine\\\\.desktop$" + "CMakeCache\\\\.txt$" # "^${CMAKE_CURRENT_SOURCE_DIR}/misc/libopenalbridge" "^${CMAKE_CURRENT_SOURCE_DIR}/project_files/HedgewarsMobile/" "^${CMAKE_CURRENT_SOURCE_DIR}/bin/[a-z]" diff -r 9f20a38a385a -r 9a0f5377c529 ChangeLog.txt --- a/ChangeLog.txt Mon Jan 17 08:37:43 2011 +0100 +++ b/ChangeLog.txt Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 QTfrontend/about.cpp --- a/QTfrontend/about.cpp Mon Jan 17 08:37:43 2011 +0100 +++ b/QTfrontend/about.cpp Mon Jan 17 23:22:52 2011 +0100 @@ -117,6 +117,7 @@ "Finnish: Nina Kuisma <ninnnu@gmail.com>
" "French: Antoine Turmel <geekshadow@gmail.com>
" "German: Peter Hüwe <PeterHuewe@gmx.de>, Mario Liebisch <mario.liebisch@gmail.com>
" + "Greek: <talos_kriti@yahoo.gr>" "Italian: Luca Bonora <bonora.luca@gmail.com>
" "Japanese: ADAM Etienne <etienne.adam@gmail.com>
" "Korean: Anthony Bellew <webmaster@anthonybellew.com>
" diff -r 9f20a38a385a -r 9a0f5377c529 QTfrontend/ammoSchemeModel.cpp --- a/QTfrontend/ammoSchemeModel.cpp Mon Jan 17 08:37:43 2011 +0100 +++ b/QTfrontend/ammoSchemeModel.cpp Mon Jan 17 23:22:52 2011 +0100 @@ -188,7 +188,7 @@ << QVariant(false) // disable land objects 17 << QVariant(false) // AI survival 18 << QVariant(false) // inf. attack 19 - << QVariant(false) // reset weps 20 + << QVariant(true) // reset weps 20 << QVariant(false) // per hog ammo 21 << QVariant(false) // no wind 22 << QVariant(false) // more wind 23 diff -r 9f20a38a385a -r 9a0f5377c529 QTfrontend/gameuiconfig.cpp --- a/QTfrontend/gameuiconfig.cpp Mon Jan 17 08:37:43 2011 +0100 +++ b/QTfrontend/gameuiconfig.cpp Mon Jan 17 23:22:52 2011 +0100 @@ -93,7 +93,7 @@ { QDir teamdir; teamdir.cd(cfgdir->absolutePath() + "/Teams"); - QStringList teamslist = teamdir.entryList(QStringList("*.hwt")); + QStringList teamslist = teamdir.entryList(QStringList("*.hwt"),QDir::Files|QDir::Hidden); QStringList cleanedList; for (QStringList::Iterator it = teamslist.begin(); it != teamslist.end(); ++it ) { QString tmpTeamStr=(*it).replace(QRegExp("^(.*)\\.hwt$"), "\\1"); @@ -183,7 +183,7 @@ quint32 rqNoBackground = 0x00000004; // don't draw background quint32 rqSimpleRope = 0x00000008; // avoid drawing rope quint32 rq2DWater = 0x00000010; // disabe 3D water effect - quint32 rqFancyBoom = 0x00000020; // no fancy explosion effects + quint32 rqAntiBoom = 0x00000020; // no fancy explosion effects quint32 rqKillFlakes = 0x00000040; // no flakes quint32 rqSlowMenu = 0x00000080; // ammomenu appears with no animation quint32 rqPlainSplash = 0x00000100; // no droplets @@ -204,15 +204,15 @@ break; case 2: result |= rqBlurryLand | rqKillFlakes | rqPlainSplash | rq2DWater | - rqFancyBoom | rqSlowMenu; + rqAntiBoom | rqSlowMenu; break; case 1: result |= rqBlurryLand | rqKillFlakes | rqPlainSplash | rq2DWater | - rqFancyBoom | rqSlowMenu | rqSimpleRope | rqDesyncVBlank; + rqAntiBoom | rqSlowMenu | rqSimpleRope | rqDesyncVBlank; break; case 0: result |= rqBlurryLand | rqKillFlakes | rqPlainSplash | rq2DWater | - rqFancyBoom | rqSlowMenu | rqSimpleRope | rqDesyncVBlank | + rqAntiBoom | rqSlowMenu | rqSimpleRope | rqDesyncVBlank | rqNoBackground | rqClampLess; break; default: diff -r 9f20a38a385a -r 9a0f5377c529 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Mon Jan 17 08:37:43 2011 +0100 +++ b/QTfrontend/hwform.cpp Mon Jan 17 23:22:52 2011 +0100 @@ -545,7 +545,7 @@ GoBack(); if (curid == ID_PAGE_ROOMSLIST) NetDisconnect(); - if (curid == ID_PAGE_NETGAME) hwnet->partRoom(); + if (curid == ID_PAGE_NETGAME && hwnet) hwnet->partRoom(); // need to work on this, can cause invalid state for admin quit trying to prevent bad state message on kick //if (curid == ID_PAGE_NETGAME && (!game || game->gameState != gsStarted)) hwnet->partRoom(); @@ -980,7 +980,7 @@ if (wBackground) wBackground->startAnimation(); if (hwnet) hwnet->gameFinished(); } - if (gameState == gsHalted) close(); + if (gameState == gsHalted) close(); }; } } diff -r 9f20a38a385a -r 9a0f5377c529 QTfrontend/pages.cpp --- a/QTfrontend/pages.cpp Mon Jan 17 08:37:43 2011 +0100 +++ b/QTfrontend/pages.cpp Mon Jan 17 23:22:52 2011 +0100 @@ -1306,6 +1306,8 @@ compString = "Random Map"; } else if (a == 5 && compString == "+maze+") { compString = "Random Maze"; + } else if (a == 5 && compString == "+drawn+") { + compString = "Drawn Map"; } if (compString.contains(searchText->text(), Qt::CaseInsensitive)) { found = true; diff -r 9f20a38a385a -r 9a0f5377c529 gameServer/hedgewars-server.cabal --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gameServer/hedgewars-server.cabal Mon Jan 17 23:22:52 2011 +0100 @@ -0,0 +1,33 @@ +Name: hedgewars-server +Version: 0.1 +Synopsis: hedgewars server +Description: hedgewars server +Homepage: http://www.hedgewars.org/ +License: GPL-2 +Author: unC0Rr +Maintainer: unC0Rr@hedgewars.org +Category: Game +Build-type: Simple +Cabal-version: >=1.2 + + +Executable hedgewars-server + main-is: hedgewars-server.hs + + Build-depends: + base >= 4, + unix, + containers, + array, + bytestring, + network-bytestring, + network, + time, + stm, + mtl, + dataenc, + hslogger, + process, + utf8-string + + ghc-options: -O2 \ No newline at end of file diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/GSHandlers.inc Mon Jan 17 23:22:52 2011 +0100 @@ -176,7 +176,15 @@ procedure CheckCollision(Gear: PGear); inline; begin - if TestCollisionXwithGear(Gear, hwSign(Gear^.X)) or TestCollisionYwithGear(Gear, hwSign(Gear^.Y) + if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) or TestCollisionYwithGear(Gear, hwSign(Gear^.dY) + ) + then Gear^.State := Gear^.State or gstCollision + else Gear^.State := Gear^.State and not gstCollision +end; + +procedure CheckCollisionWithLand(Gear: PGear); inline; +begin + if TestCollisionX(Gear, hwSign(Gear^.dX)) or TestCollisionY(Gear, hwSign(Gear^.dY) ) then Gear^.State := Gear^.State or gstCollision else Gear^.State := Gear^.State and not gstCollision @@ -207,7 +215,7 @@ //else // PlaySound(sndOw1, Gear^.Hedgehog^.Team^.voicepack); - ApplyDamage(Gear, dmg, dsFall); + ApplyDamage(Gear, CurrentHedgehog, dmg, dsFall); end end; @@ -233,10 +241,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) @@ -367,7 +375,7 @@ begin CheckCollision(Gear); if (Gear^.State and gstCollision) <> 0 then - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLDontDraw or EXPLNoGfx); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, Gear^.Hedgehog, EXPLDontDraw or EXPLNoGfx); end; if (Gear^.Kind = gtGasBomb) and ((GameTicks mod 200) = 0) then @@ -380,13 +388,13 @@ if Gear^.Timer = 0 then begin case Gear^.Kind of - gtBomb: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); - gtBall: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 40, EXPLAutoSound); + gtBomb: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound); + gtBall: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 40, Gear^.Hedgehog, EXPLAutoSound); gtClusterBomb: begin x := hwRound(Gear^.X); y := hwRound(Gear^.Y); - doMakeExplosion(x, y, 20, EXPLAutoSound); + doMakeExplosion(x, y, 20, Gear^.Hedgehog, EXPLAutoSound); for i:= 0 to 4 do begin dX := rndSign(GetRandom * _0_1) + Gear^.dX / 5; @@ -398,7 +406,7 @@ begin x := hwRound(Gear^.X); y := hwRound(Gear^.Y); - doMakeExplosion(x, y, 75, EXPLAutoSound); + doMakeExplosion(x, y, 75, Gear^.Hedgehog, EXPLAutoSound); for i:= 0 to 5 do begin dX := rndSign(GetRandom * _0_1) + Gear^.dX / 5; @@ -410,7 +418,7 @@ begin x := hwRound(Gear^.X); y := hwRound(Gear^.Y); - doMakeExplosion(x, y, 90, EXPLAutoSound); + doMakeExplosion(x, y, 90, Gear^.Hedgehog, EXPLAutoSound); for i:= 0 to 127 do begin @@ -424,7 +432,7 @@ end; gtGasBomb: begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, Gear^.Hedgehog, EXPLAutoSound); for i:= 0 to 2 do begin x:= GetRandom(60); @@ -501,7 +509,7 @@ doStepFallingGear(Gear); if (Gear^.State and gstCollision) <> 0 then begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Timer, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Timer, Gear^.Hedgehog, EXPLAutoSound); DeleteGear(Gear); exit end; @@ -520,7 +528,7 @@ doStepFallingGear(Gear); if (Gear^.State and gstCollision) <> 0 then begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound); DeleteGear(Gear); exit end; @@ -563,6 +571,7 @@ move, allpx: Boolean; s: PSDL_Surface; p: PLongwordArray; + oAlpha, nAlpha: byte; begin if GameTicks and $7 = 0 then begin @@ -590,49 +599,86 @@ 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] <> 0) 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 -////////////////////////////////// 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 + 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 + // if there's an hog/object below do nothing + else if ((((yy+1) and LAND_HEIGHT_MASK) = 0) and ((Land[yy+1, xx] and $FF) <> 0)) + then move:=true + else + 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 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 - 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 + ////////////////////////////////// TODO - ASK UNC0RR FOR A GOOD HOME FOR THIS //////////////////////////////////// + dec(yy,3); + dec(xx,1); + 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)) and ((Land[yy + py, xx + px] and $FF) = 0) then + begin + Land[yy + py, xx + px]:= Land[yy + py, xx + px] or lfObject; + if (cReducedQuality and rqBlurryLand) = 0 then + begin + LandPixels[yy + py, xx + px]:= addBgColor(LandPixels[yy + py, xx + px], p^[px]); + end + else + begin + LandPixels[(yy + py) div 2, (xx + px) div 2]:= addBgColor(LandPixels[(yy + py) div 2, (xx + px) div 2], p^[px]); + end; + end + else allpx:= false; + p:= @(p^[s^.pitch shr 2]) + end; + + + Land[py, px+1]:= lfBasic; + + 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 @@ -720,7 +766,7 @@ if ((Gear^.State and gstCollision) <> 0) or (Gear^.Timer = 0) then begin StopSound(Gear^.SoundChannel); - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound); DeleteGear(Gear); end; end; @@ -734,7 +780,7 @@ CheckCollision(Gear); if (Gear^.State and gstCollision) <> 0 then begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound); DeleteGear(Gear); exit end; @@ -851,7 +897,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 @@ -1037,7 +1083,7 @@ if (Gear^.Timer mod 33) = 0 then begin HHGear^.State := HHGear^.State or gstNoDamage; - doMakeExplosion(x, y + 7, 6, EXPLDontDraw); + doMakeExplosion(x, y + 7, 6, Gear^.Hedgehog, EXPLDontDraw); HHGear^.State := HHGear^.State and not gstNoDamage end; @@ -1316,19 +1362,19 @@ if (GameFlags and gfMoreWind) <> 0 then HHGear^.dX := HHGear^.dX + cWindSpeed / HHGear^.Density; end; + // vector between hedgehog and rope attaching point ropeDx := HHGear^.X - Gear^.X; - // vector between hedgehog and rope attaching point ropeDy := HHGear^.Y - Gear^.Y; mdX := ropeDx + HHGear^.dX; mdY := ropeDy + HHGear^.dY; len := _1 / Distance(mdX, mdY); + // rope vector plus hedgehog direction vector normalized mdX := mdX * len; - // rope vector plus hedgehog direction vector normalized mdY := mdY * len; + // for visual purposes only Gear^.dX := mdX; - // for visual purposes only Gear^.dY := mdY; ///// @@ -1456,35 +1502,45 @@ HHGear^.dY := HHGear^.dY * len; end; - haveCollision:= false; - if RopePoints.Count > 0 then - begin - ly:= hwRound(RopePoints.ar[0].Y); - lx:= hwRound(RopePoints.ar[0].X) - end - else if Gear^.Elasticity.QWordValue > 0 then - begin - ly:= hwRound(Gear^.Y); - lx:= hwRound(Gear^.X) - end; -(* // just in case it turns out we have rounding problems - i:= -1; - while not haveCollision and (i < 2) do + haveCollision:= ((hwRound(Gear^.Y) and LAND_HEIGHT_MASK) = 0) and ((hwRound(Gear^.X) and LAND_WIDTH_MASK) = 0) and ((Land[hwRound(Gear^.Y), hwRound(Gear^.X)] and $FF00) <> 0); + + if not haveCollision then begin - j:= -1; - while not haveCollision and (j < 2) do + // backup gear location + tx:= Gear^.X; + ty:= Gear^.Y; + + if RopePoints.Count > 0 then + begin + // set gear location to the remote end of the rope, the attachment point + Gear^.X:= RopePoints.ar[0].X; + Gear^.Y:= RopePoints.ar[0].Y; + end; + + CheckCollisionWithLand(Gear); + // if we haven't found any collision yet then check the otheer side too + if (Gear^.State and gstCollision) = 0 then begin - haveCollision:= ((((ly + i) and LAND_HEIGHT_MASK) = 0) and - (((lx + j) and LAND_WIDTH_MASK) = 0) and - ((Land[ly + i, lx + j] and $FF00) <> 0)); - inc(j) + Gear^.dX.isNegative:= not Gear^.dX.isNegative; + Gear^.dY.isNegative:= not Gear^.dY.isNegative; + CheckCollisionWithLand(Gear); + Gear^.dX.isNegative:= not Gear^.dX.isNegative; + Gear^.dY.isNegative:= not Gear^.dY.isNegative; end; - inc(i) - end; *) - if ((Gear^.Message and gmAttack) <> 0) or - (((ly and LAND_HEIGHT_MASK) = 0) and - ((lx and LAND_WIDTH_MASK) = 0) and - ((Land[ly, lx] and $FF00) = 0)) then + + haveCollision:= (Gear^.State and gstCollision) <> 0; + + // restore gear location + Gear^.X:= tx; + Gear^.Y:= ty; + end; + + // if the attack key is pressed, lose rope contact as well + if (Gear^.Message and gmAttack) <> 0 then + haveCollision:= false; + + if not haveCollision then + begin if (Gear^.State and gsttmpFlag) <> 0 then with Gear^.Hedgehog^ do begin @@ -1494,10 +1550,11 @@ else DeleteMe end - else + end else if (Gear^.State and gsttmpFlag) = 0 then Gear^.State := Gear^.State or gsttmpFlag; + end; procedure doStepRopeAttach(Gear: PGear); @@ -1574,9 +1631,7 @@ end; end; - if ((hwRound(Gear^.Y) and LAND_HEIGHT_MASK) = 0) and ((hwRound(Gear^.X) and LAND_WIDTH_MASK) = 0) and ((Land[hwRound(Gear^.Y), hwRound(Gear^.X)] and $FF00) <> 0) then - Gear^.State:= Gear^.State or gstCollision - else Gear^.State:= Gear^.State and not gstCollision; + CheckCollisionWithLand(Gear); if (Gear^.State and gstCollision) <> 0 then if Gear^.Elasticity < _10 then @@ -1655,7 +1710,7 @@ (cMineDudPercent = 0) or (getRandom(100) > cMineDudPercent) then begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound); DeleteGear(Gear) end else @@ -1706,7 +1761,7 @@ if (Gear^.Timer and $FF) = 0 then PlaySound(sndMineTick); if Gear^.Timer = 0 then begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, Gear^.Hedgehog, EXPLAutoSound); DeleteGear(Gear); exit end; @@ -1726,7 +1781,7 @@ makeHogsWorry(Gear^.X, Gear^.Y, 75); if Gear^.Timer = 0 then begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 75, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 75, Gear^.Hedgehog, EXPLAutoSound); DeleteGear(Gear); exit end; @@ -1819,6 +1874,7 @@ k: TGearType; exBoom: boolean; dX, dY: HWFloat; + hog: PHedgehog; begin k := Gear^.Kind; exBoom := false; @@ -1855,18 +1911,20 @@ begin x := hwRound(Gear^.X); y := hwRound(Gear^.Y); + hog:= Gear^.Hedgehog; + DeleteGear(Gear); // <-- delete gear! if k = gtCase then begin - doMakeExplosion(x, y, 25, EXPLAutoSound); + doMakeExplosion(x, y, 25, hog, EXPLAutoSound); for i:= 0 to 63 do AddGear(x, y, gtFlame, 0, _0, _0, 0); end else if k = gtExplosives then begin - doMakeExplosion(x, y, 75, EXPLAutoSound); + doMakeExplosion(x, y, 75, hog, EXPLAutoSound); for i:= 0 to 31 do begin dX := AngleCos(i * 64) * _0_5 * (getrandom + _1); @@ -1917,28 +1975,12 @@ if (Gear^.Tag = 0) and (Gear^.Timer < 1000) then inc(Gear^.Timer) else if Gear^.Tag = 1 then - begin - Gear^.Tag := 2; - if (TrainingFlags and tfTimeTrial) <> 0 then - begin - inc(TurnTimeLeft, TrainingTimeInc); - - if TrainingTimeInc > TrainingTimeInM then - dec(TrainingTimeInc, TrainingTimeInD); - if TurnTimeLeft > TrainingTimeMax then - TurnTimeLeft := TrainingTimeMax; - end; - end + Gear^.Tag := 2 else if Gear^.Tag = 2 then if Gear^.Timer > 0 then dec(Gear^.Timer) else begin - if (TrainingFlags and tfTargetRespawn) <> 0 then - begin - TrainingTargetGear := AddGear(0, 0, gtTarget, 0, _0, _0, 0); - FindPlace(TrainingTargetGear, false, 0, LAND_WIDTH); - end; DeleteGear(Gear); exit; end; @@ -2067,7 +2109,7 @@ AmmoShove(Gear, 4, 150); Gear^.Radius := 1; end - else if ((GameTicks and $3) = 3) then doMakeExplosion(gX, gY, 6, 0);//, EXPLNoDamage); + else if ((GameTicks and $3) = 3) then doMakeExplosion(gX, gY, 6, Gear^.Hedgehog, 0);//, EXPLNoDamage); //DrawExplosion(gX, gY, 4); if ((GameTicks and $7) = 0) and (Random(2) = 0) then for i:= 1 to Random(2)+1 do @@ -2206,14 +2248,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 +2330,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; @@ -2302,7 +2350,7 @@ doStepFallingGear(Gear); if (Gear^.State and gstCollision) <> 0 then begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, Gear^.Hedgehog, EXPLAutoSound); DeleteGear(Gear); performRumble(); exit @@ -2501,7 +2549,7 @@ doStepFallingGear(Gear); if (Gear^.State and gstCollision) <> 0 then begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, Gear^.Hedgehog, EXPLAutoSound); Gear^.dX.isNegative := not dxn; Gear^.dY.isNegative := not dyn; @@ -2571,7 +2619,7 @@ if Gear^.Health < Gear^.Damage then begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, Gear^.Hedgehog, EXPLAutoSound); AfterAttack; DeleteGear(Gear); DeleteGear(HHGear); @@ -2631,7 +2679,7 @@ inc(Gear^.Tag); if Gear^.Tag < 2250 then exit; - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), cakeDmg, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), cakeDmg, Gear^.Hedgehog, EXPLAutoSound); AfterAttack; DeleteGear(Gear) end; @@ -2885,6 +2933,9 @@ end; //////////////////////////////////////////////////////////////////////////////// +procedure doStepDrill(Gear: PGear); +forward; + procedure doStepDrillDrilling(Gear: PGear); var t: PGearArray; @@ -2913,19 +2964,25 @@ 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 - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound) + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, Gear^.Hedgehog, EXPLAutoSound) else - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, 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; @@ -2967,9 +3024,9 @@ begin //explode right on contact with HH if (Gear^.State and gsttmpFlag) <> 0 then - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound) + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, Gear^.Hedgehog, EXPLAutoSound) else - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound); DeleteGear(Gear); exit; end; @@ -3037,11 +3094,6 @@ begin AllInactive := false; - if ((TrainingFlags and tfRCPlane) = 0) and (Gear^.Timer > 0) then dec(Gear^.Timer); - - if ((TrainingFlags and tfRCPlane) <> 0) and ((TrainingFlags and tfTimeTrial) <> 0 ) and ( - TimeTrialStartTime = 0) then TimeTrialStartTime := RealTicks; - HHGear := Gear^.Hedgehog^.Gear; FollowGear := Gear; @@ -3084,73 +3136,44 @@ Gear^.X := Gear^.X + Gear^.dX; Gear^.Y := Gear^.Y + Gear^.dY; - if (TrainingFlags and tfRCPlane) = 0 then + if (GameTicks and $FF) = 0 then + if Gear^.Timer < 3500 then + AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEvilTrace) + else + AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); + + if ((HHGear^.Message and gmAttack) <> 0) and (Gear^.Health <> 0) then begin - if (GameTicks and $FF) = 0 then - if Gear^.Timer < 3500 then - AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEvilTrace) - else - AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); - - if ((HHGear^.Message and gmAttack) <> 0) and (Gear^.Health <> 0) then - begin - HHGear^.Message := HHGear^.Message and not gmAttack; - AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAirBomb, 0, Gear^.dX * _0_5, Gear^.dY * - _0_5, 0); - dec(Gear^.Health) - end; - - if ((HHGear^.Message and gmLJump) <> 0) - and ((Gear^.State and gsttmpFlag) = 0) then - begin - Gear^.State := Gear^.State or gsttmpFlag; - PauseMusic; - playSound(sndRideOfTheValkyries); - end; - - // pickup bonuses - t := CheckGearNear(Gear, gtCase, 36, 36); - if t <> nil then - PickUp(HHGear, t); - end - else + HHGear^.Message := HHGear^.Message and not gmAttack; + AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAirBomb, 0, Gear^.dX * _0_5, Gear^.dY * + _0_5, 0); + dec(Gear^.Health) + end; + + if ((HHGear^.Message and gmLJump) <> 0) + and ((Gear^.State and gsttmpFlag) = 0) then begin - if (GameTicks and $FF) = 0 then - AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); - - // pickup targets - t := CheckGearNear(Gear, gtTarget, 36, 36); - if t <> nil then - begin - if t^.Tag <> 0 then // collect it only once - exit; - PlaySound(sndShotgunReload); - t^.Tag := 1; - TrainingTargetGear := nil; - // remove target cursor - exit; - end; - - if (TurnTimeLeft > 0) then - dec(TurnTimeLeft) + Gear^.State := Gear^.State or gsttmpFlag; + PauseMusic; + playSound(sndRideOfTheValkyries); end; + // pickup bonuses + t := CheckGearNear(Gear, gtCase, 36, 36); + if t <> nil then + PickUp(HHGear, t); + CheckCollision(Gear); - if ((Gear^.State and gstCollision) <> 0) or (((TrainingFlags and tfRCPlane) <> 0) and ( - TurnTimeLeft = 0)) - or CheckGearDrowning(Gear) then + if ((Gear^.State and gstCollision) <> 0) or CheckGearDrowning(Gear) then begin - if ((TrainingFlags and tfRCPlane) <> 0) and ((TrainingFlags and tfTimeTrial) <> 0 ) and ( - TimeTrialStopTime = 0) then TimeTrialStopTime := RealTicks; StopSound(Gear^.SoundChannel); StopSound(sndRideOfTheValkyries); ResumeMusic; - if ((Gear^.State and gstCollision) <> 0) or (((TrainingFlags and tfRCPlane) <> 0) and ( - TurnTimeLeft = 0)) then + if ((Gear^.State and gstCollision) <> 0) then begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, Gear^.Hedgehog, EXPLAutoSound); for i:= 0 to 32 do begin dX := AngleCos(i * 64) * _0_5 * (GetRandom + _1); @@ -3165,10 +3188,6 @@ CurAmmoGear := nil; if (GameFlags and gfInfAttack) = 0 then TurnTimeLeft := 14 * 125; - if (TrainingFlags and tfRCPlane) <> 0 then - TurnTimeLeft := 0; - // HACK: RCPlane training allows unlimited plane starts in last 2 seconds - HHGear^.Message := 0; ParseCommand('/taunt '#1, true) end @@ -3529,7 +3548,7 @@ if (Gear^.State and gstCollision) <> 0 then begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, EXPLPoisoned, $C0E0FFE0); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, Gear^.Hedgehog, EXPLPoisoned, $C0E0FFE0); PlaySound(sndEggBreak); AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEgg); vg := AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEgg); @@ -3549,8 +3568,7 @@ //////////////////////////////////////////////////////////////////////////////// procedure doPortalColorSwitch(); -var flags: LongWord; - CurWeapon: PAmmo; +var CurWeapon: PAmmo; begin if (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) @@ -3561,11 +3579,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 +3851,7 @@ s: hwFloat; procedure loadNewPortalBall(oldPortal: PGear; destroyGear: Boolean); -var - flags: LongWord; +var CurWeapon: PAmmo; begin if CurrentHedgehog <> nil then @@ -3844,18 +3860,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 +3957,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 @@ -4040,9 +4054,9 @@ begin r0 := GetRandom(21); r1 := GetRandom(21); - doMakeExplosion(hwRound(Gear^.X) - 30 - r0, hwRound(Gear^.Y) + 40, 40 + r1, 0); - doMakeExplosion(hwRound(Gear^.X) + 30 + r1, hwRound(Gear^.Y) + 40, 40 + r0, 0); - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 80 + r0, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X) - 30 - r0, hwRound(Gear^.Y) + 40, 40 + r1, Gear^.Hedgehog, 0); + doMakeExplosion(hwRound(Gear^.X) + 30 + r1, hwRound(Gear^.Y) + 40, 40 + r0, Gear^.Hedgehog, 0); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 80 + r0, Gear^.Hedgehog, EXPLAutoSound); for r0:= 0 to 4 do AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtNote); Gear^.dY := odY * -1 + cGravity * 2; @@ -4283,7 +4297,7 @@ Gear^.dX := Gear^.dX + cWindSpeed / 4; Gear^.dY := Gear^.dY + cGravity / 100; if (GameTicks mod 250) = 0 then - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLDontDraw or EXPLNoGfx or EXPLNoDamage or EXPLDoNotTouchAny or EXPLPoisoned); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, Gear^.Hedgehog, EXPLDontDraw or EXPLNoGfx or EXPLNoDamage or EXPLDoNotTouchAny or EXPLPoisoned); AllInactive:= false; end; @@ -4311,7 +4325,7 @@ if (tmp^.Kind = gtHedgehog) then begin //tmp^.State:= tmp^.State or gstFlatened; - ApplyDamage(tmp, tmp^.Health div 3, dsUnknown); + ApplyDamage(tmp, CurrentHedgehog, tmp^.Health div 3, dsUnknown); //DrawTunnel(tmp^.X, tmp^.Y - _1, _0, _0_5, cHHRadius * 6, cHHRadius * 3); tmp2:= AddGear(hwRound(tmp^.X), hwRound(tmp^.Y), gtHammerHit, 0, _0, _0, 0); tmp2^.Hedgehog:= tmp^.Hedgehog; @@ -4534,7 +4548,7 @@ doStepFallingGear(Gear); if (Gear^.Timer > 0) and ((Gear^.State and gstCollision) <> 0) then begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, Gear^.Hedgehog, EXPLAutoSound); gX := hwRound(Gear^.X); gY := hwRound(Gear^.Y); for i:= 0 to 10 do @@ -4551,7 +4565,7 @@ end; if (Gear^.Timer = 0) then begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, Gear^.Hedgehog, EXPLAutoSound); for i:= -19 to 19 do FollowGear := AddGear(hwRound(Gear^.X) + i div 3, hwRound(Gear^.Y), gtFlame, 0, _0_001 * i, _0, 0); DeleteGear(Gear); diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/HHHandlers.inc Mon Jan 17 23:22:52 2011 +0100 @@ -100,6 +100,8 @@ Hedgehog: PHedgehog; s: boolean; begin +s:= false; + weap:= TAmmoType(Gear^.MsgParam); Hedgehog:= Gear^.Hedgehog; @@ -223,7 +225,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); @@ -398,7 +404,7 @@ if Gear^.Timer = 1 then begin Gear^.State:= Gear^.State or gstNoDamage; - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, CurrentHedgehog, EXPLAutoSound); AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtGrave, 0, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog; DeleteGear(Gear); SetAllToActive diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/VGSHandlers.inc --- a/hedgewars/VGSHandlers.inc Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/VGSHandlers.inc Mon Jan 17 23:22:52 2011 +0100 @@ -24,14 +24,23 @@ with Gear^ do begin inc(FrameTicks, Steps); - if FrameTicks > vobFrameTicks then + if not SuddenDeathDmg and (FrameTicks > vobFrameTicks) then begin dec(FrameTicks, vobFrameTicks); inc(Frame); if Frame = vobFramesCount then Frame:= 0 + end + else if SuddenDeathDmg and (FrameTicks > vobSDFrameTicks) then + begin + dec(FrameTicks, vobSDFrameTicks); + inc(Frame); + if Frame = vobSDFramesCount then Frame:= 0 end; X:= X + (cWindSpeedf * 200 + dX + tdX) * Steps; - Y:= Y + (dY + tdY + cGravityf * vobFallSpeed) * Steps; + if SuddenDeathDmg then + Y:= Y + (dY + tdY + cGravityf * vobSDFallSpeed) * Steps + else + Y:= Y + (dY + tdY + cGravityf * vobFallSpeed) * Steps; Angle:= Angle + dAngle * Steps; if Angle > 360 then Angle:= Angle - 360 @@ -663,8 +672,8 @@ else dec(tmp); if tmp < round(dX) then tdY:= 1; if tmp > round(dY) then tdY:= -1; - if tmp > 255 then tmp := 255; - if tmp < 0 then tmp := 0; + if tmp > 255 then tmp := 255; + if tmp < 0 then tmp := 0; Gear^.Tint:= (Gear^.Tint and $FFFFFF00) or tmp end end diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/hwengine.pas Mon Jan 17 23:22:52 2011 +0100 @@ -60,6 +60,7 @@ gsStart: begin if HasBorder then DisableSomeWeapons; AddClouds; + AddFlakes; AssignHHCoords; AddMiscGears; StoreLoad; diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uAmmos.pas --- a/hedgewars/uAmmos.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uAmmos.pas Mon Jan 17 23:22:52 2011 +0100 @@ -94,7 +94,6 @@ Ammoz[a].Probability:= probability[byte(ammoProbability[ord(a)]) - byte('0')]; Ammoz[a].SkipTurns:= (byte(ammoDelay[ord(a)]) - byte('0')); Ammoz[a].NumberInCase:= (byte(ammoReinforcement[ord(a)]) - byte('0')); - if (TrainingFlags and tfIgnoreDelays) <> 0 then Ammoz[a].SkipTurns:= 0; cnt:= byte(ammoLoadout[ord(a)]) - byte('0'); // avoid things we already have infinite number if cnt = 9 then @@ -320,15 +319,12 @@ with CurWeapon^ do begin - if AmmoType <> amNothing then - begin - s:= trammo[Ammoz[AmmoType].NameId]; - if (Count <> AMMO_INFINITE) and not (Hedgehog.Team^.ExtDriven or (Hedgehog.BotLevel > 0)) then - s:= s + ' (' + IntToStr(Count) + ')'; - if (Propz and ammoprop_Timerable) <> 0 then - s:= s + ', ' + IntToStr(Timer div 1000) + ' ' + trammo[sidSeconds]; - AddCaption(s, Team^.Clan^.Color, capgrpAmmoinfo); - end; + s:= trammo[Ammoz[AmmoType].NameId]; + if (Count <> AMMO_INFINITE) and not (Hedgehog.Team^.ExtDriven or (Hedgehog.BotLevel > 0)) then + s:= s + ' (' + IntToStr(Count) + ')'; + if (Propz and ammoprop_Timerable) <> 0 then + s:= s + ', ' + IntToStr(Timer div 1000) + ' ' + trammo[sidSeconds]; + AddCaption(s, Team^.Clan^.Color, capgrpAmmoinfo); if (Propz and ammoprop_NeedTarget) <> 0 then begin Gear^.State:= Gear^.State or gstHHChooseTarget; diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uCaptions.pas --- a/hedgewars/uCaptions.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uCaptions.pas Mon Jan 17 23:22:52 2011 +0100 @@ -39,14 +39,11 @@ grp: TCapGroup; offset: LongInt; begin - {$IFDEF IPHONEOS} +{$IFDEF IPHONEOS} offset:= 40; - {$ELSE} - if ((TrainingFlags and tfTimeTrial) <> 0) and (TimeTrialStartTime > 0) then - offset:= 48 - else - offset:= 8; - {$ENDIF} +{$ELSE} + offset:= 8; +{$ENDIF} for grp:= Low(TCapGroup) to High(TCapGroup) do with Captions[grp] do diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uCollisions.pas --- a/hedgewars/uCollisions.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uCollisions.pas Mon Jan 17 23:22:52 2011 +0100 @@ -44,6 +44,7 @@ function TestCollisionXKick(Gear: PGear; Dir: LongInt): boolean; function TestCollisionYKick(Gear: PGear; Dir: LongInt): boolean; +function TestCollisionX(Gear: PGear; Dir: LongInt): boolean; function TestCollisionY(Gear: PGear; Dir: LongInt): boolean; function TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt): boolean; @@ -289,6 +290,24 @@ Gear^.X:= Gear^.X - ShiftX; Gear^.Y:= Gear^.Y - int2hwFloat(ShiftY) end; +function TestCollisionX(Gear: PGear; Dir: LongInt): boolean; +var x, y, i: LongInt; +begin +x:= hwRound(Gear^.X); +if Dir < 0 then x:= x - Gear^.Radius + else x:= x + Gear^.Radius; +if (x and LAND_WIDTH_MASK) = 0 then + begin + y:= hwRound(Gear^.Y) - Gear^.Radius + 1; + i:= y + Gear^.Radius * 2 - 2; + repeat + if (y and LAND_HEIGHT_MASK) = 0 then + if Land[y, x] > 255 then exit(true); + inc(y) + until (y > i); + end; +TestCollisionX:= false +end; function TestCollisionY(Gear: PGear; Dir: LongInt): boolean; var x, y, i: LongInt; diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uCommandHandlers.pas --- a/hedgewars/uCommandHandlers.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uCommandHandlers.pas Mon Jan 17 23:22:52 2011 +0100 @@ -589,7 +589,6 @@ RegisterVariable('minesnum', vtLongInt, @cLandMines , false); RegisterVariable('explosives',vtLongInt,@cExplosives , false); RegisterVariable('gmflags' , vtLongInt, @GameFlags , false); - RegisterVariable('trflags' , vtLongInt, @TrainingFlags , false); RegisterVariable('turntime', vtLongInt, @cHedgehogTurnTime, false); RegisterVariable('minestime',vtLongInt, @cMinesTime , false); RegisterVariable('fort' , vtCommand, @chFort , false); diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uConsts.pas Mon Jan 17 23:22:52 2011 +0100 @@ -69,7 +69,7 @@ rqNoBackground= $00000004; // don't draw background rqSimpleRope = $00000008; // draw rope using lines only rq2DWater = $00000010; // disable 3D water effect - rqFancyBoom = $00000020; // no fancy explosion effects + rqAntiBoom = $00000020; // no fancy explosion effects rqKillFlakes = $00000040; // no flakes rqSlowMenu = $00000080; // ammomenu appears with no animation rqPlainSplash = $00000100; // no droplets @@ -116,6 +116,7 @@ cCursorEdgesDist : LongInt = 100; cTeamHealthWidth : LongInt = 128; cWaterOpacity : byte = $80; + cSDWaterOpacity : byte = $80; cifRandomize = $00000001; cifTheme = $00000002; @@ -162,14 +163,6 @@ cSendEmptyPacketTime = 1000; trigTurns = $80000001; - // Training Flags - tfNone = $00000000; - tfTimeTrial = $00000001; - tfRCPlane = $00000002; - tfSpawnTargets = $00000004; - tfIgnoreDelays = $00000008; - tfTargetRespawn = $00000010; - gfAny = $FFFFFFFF; gfOneClanMode = $00000001; // used in trainings gfMultiWeapon = $00000002; // used in trainings @@ -194,7 +187,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, @@ -252,7 +245,7 @@ ammoprop_NotBorder = $00000800; ammoprop_Utility = $00001000; ammoprop_Effect = $00002000; - ammoprop_NoRoundEnd=$10000000; + ammoprop_NoRoundEnd = $10000000; AMMO_INFINITE = 100; diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uGears.pas Mon Jan 17 23:22:52 2011 +0100 @@ -29,7 +29,7 @@ procedure ResurrectHedgehog(gear: PGear); procedure ProcessGears; procedure EndTurnCleanup; -procedure ApplyDamage(Gear: PGear; Damage: Longword; Source: TDamageSource); +procedure ApplyDamage(Gear: PGear; AttackerHog: PHedgehog; Damage: Longword; Source: TDamageSource); procedure SetAllToActive; procedure SetAllHHToActive; procedure DrawGears; @@ -50,8 +50,7 @@ uCommands, uUtils, uTextures, uRenderUtils, uGearsRender, uCaptions, uDebug, uLandTexture; -procedure doMakeExplosion(X, Y, Radius: LongInt; Mask: LongWord); forward; -procedure doMakeExplosion(X, Y, Radius: LongInt; Mask, Tint: LongWord); forward; +procedure doMakeExplosion(X, Y, Radius: LongInt; AttackingHog: PHedgehog; Mask: Longword; const Tint: LongWord = $FFFFFFFF); forward; procedure AmmoShove(Ammo: PGear; Damage, Power: LongInt); forward; //procedure AmmoFlameWork(Ammo: PGear); forward; function GearsNear(X, Y: hwFloat; Kind: TGearType; r: LongInt): TPGearArray; forward; @@ -205,7 +204,7 @@ gear^.ImpactSound:= sndNone; gear^.nImpactSounds:= 0; -if CurrentTeam <> nil then +if CurrentHedgehog <> nil then begin gear^.Hedgehog:= CurrentHedgehog; gear^.IntersectGear:= CurrentHedgehog^.Gear @@ -477,7 +476,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,9 +556,12 @@ 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) + + // should be not CurrentHedgehog, but hedgehog of the last gear which caused damage to this hog + // same stand for CheckHHDamage + uStats.HedgehogDamaged(Gear, CurrentHedgehog) end; team:= Gear^.Hedgehog^.Team; @@ -595,6 +598,7 @@ if CurAmmoGear = Gear then CurAmmoGear:= nil; if FollowGear = Gear then FollowGear:= nil; +if lastGearByUID = Gear then lastGearByUID := nil; RemoveGearFromList(Gear); Dispose(Gear) end; @@ -614,7 +618,7 @@ (not Gear^.Invulnerable) then begin CheckNoDamage:= false; - uStats.HedgehogDamaged(Gear); + dmg:= Gear^.Damage; if Gear^.Health < dmg then begin @@ -791,11 +795,20 @@ 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; + ChangeToSDFlakes; + glClearColor(SDSkyColor.r / 255, SDSkyColor.g / 255, SDSkyColor.b / 255, 0.99); + end; AddCaption(trmsg[sidSuddenDeath], cWhiteColor, capgrpGameState); - playSound(sndSuddenDeath) + playSound(sndSuddenDeath); + MusicFN:= SDMusic; + ChangeMusic end else if (TotalRounds < cSuddenDTurns) and not isInMultiShoot then begin @@ -976,13 +989,14 @@ RecountTeamHealth(TeamsArray[i]) end; -procedure ApplyDamage(Gear: PGear; Damage: Longword; Source: TDamageSource); +procedure ApplyDamage(Gear: PGear; AttackerHog: PHedgehog; Damage: Longword; Source: TDamageSource); var s: shortstring; vampDmg, tmpDmg, i: Longword; vg: PVisualGear; begin if (Gear^.Kind = gtHedgehog) and (Damage>=1) then begin + uStats.HedgehogDamaged(Gear, AttackerHog); HHHurt(Gear^.Hedgehog, Source); AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), Damage, Gear^.Hedgehog^.Team^.Clan^.Color); tmpDmg:= min(Damage, max(0,Gear^.Health-Gear^.Damage)); @@ -1018,7 +1032,11 @@ spawnHealthTagForHH(CurrentHedgehog^.Gear, tmpDmg); end; end; - end; + end else // not gtHedgehog + begin + AddFileLog('Assigning hedgehog ' + inttostr(LongInt(AttackerHog)) + ' to gear ' + inttostr(Gear^.uid)); + Gear^.Hedgehog:= AttackerHog; + end; inc(Gear^.Damage, Damage); ScriptCall('onGearDamage', Gear^.UID, Damage); end; @@ -1042,7 +1060,7 @@ t:= GearsList; while t <> nil do begin - if t^.Kind = gtHedgehog then t^.Active:= true; + if (t^.Kind = gtHedgehog) or (t^.Kind = gtExplosives) then t^.Active:= true; t:= t^.NextGear end end; @@ -1081,21 +1099,22 @@ begin AddGear(0, 0, gtATStartGame, 0, _0, _0, 2000); -if (TrainingFlags and tfSpawnTargets) <> 0 then - begin - TrainingTargetGear:= AddGear(0, 0, gtTarget, 0, _0, _0, 0); - FindPlace(TrainingTargetGear, false, 0, LAND_WIDTH); - end; - -for i:= 0 to Pred(cLandMines) do +i:= 0; +Gear:= PGear(1); +while (i < cLandMines) {and (Gear <> nil)} do // disable this check until better solution found begin Gear:= AddGear(0, 0, gtMine, 0, _0, _0, 0); FindPlace(Gear, false, 0, LAND_WIDTH); + inc(i) end; -for i:= 0 to Pred(cExplosives) do + +i:= 0; +Gear:= PGear(1); +while (i < cExplosives){ and (Gear <> nil)} do begin Gear:= AddGear(0, 0, gtExplosives, 0, _0, _0, 0); FindPlace(Gear, false, 0, LAND_WIDTH); + inc(i) end; if (GameFlags and gfLowGravity) <> 0 then @@ -1121,20 +1140,15 @@ if (GameFlags and gfArtillery) <> 0 then cArtillery:= true; -if not hasBorder and ((Theme = 'Snow') or (Theme = 'Christmas')) then +if not hasBorder and ((Theme = 'Snow') or (Theme = 'Christmas')) and ((cReducedQuality and rqLowRes) = 0) then begin for i:= 0 to Pred(vobCount*2) do - AddGear(GetRandom(LAND_WIDTH+1024)-512, LAND_HEIGHT - GetRandom(1024), gtFlake, 0, _0, _0, 0); + AddGear(GetRandom(LAND_WIDTH+1024)-512, LAND_HEIGHT - GetRandom(LAND_HEIGHT div 2), gtFlake, 0, _0, _0, 0); disableLandBack:= true end end; -procedure doMakeExplosion(X, Y, Radius: LongInt; Mask: LongWord); -begin -doMakeExplosion(X, Y, Radius, Mask, $FFFFFFFF); -end; - -procedure doMakeExplosion(X, Y, Radius: LongInt; Mask, Tint: LongWord); +procedure doMakeExplosion(X, Y, Radius: LongInt; AttackingHog: PHedgehog; Mask: Longword; const Tint: LongWord); var Gear: PGear; dmg, dmgRadius, dmgBase: LongInt; fX, fY: hwFloat; @@ -1188,7 +1202,7 @@ if (Mask and EXPLNoDamage) = 0 then begin if not Gear^.Invulnerable then - ApplyDamage(Gear, dmg, dsExplosion) + ApplyDamage(Gear, AttackingHog, dmg, dsExplosion) else Gear^.State:= Gear^.State or gstWinner; end; @@ -1254,7 +1268,7 @@ gtTarget, gtExplosives: begin if (not t^.Invulnerable) then - ApplyDamage(t, dmg, dsBullet) + ApplyDamage(t, Gear^.Hedgehog, dmg, dsBullet) else Gear^.State:= Gear^.State or gstWinner; @@ -1301,13 +1315,13 @@ tmpDmg:= ModifyDamage(Damage, Gear); if (Gear^.State and gstNoDamage) = 0 then begin - + if (Ammo^.Kind = gtDEagleShot) or (Ammo^.Kind = gtSniperRifleShot) then begin VGear := AddVisualGear(hwround(Ammo^.X), hwround(Ammo^.Y), vgtBulletHit); if VGear <> nil then VGear^.Angle := DxDy2Angle(-Ammo^.dX, Ammo^.dY); end; - + if (Gear^.Kind = gtHedgehog) and (Ammo^.State and gsttmpFlag <> 0) and (Ammo^.Kind = gtShover) then Gear^.FlightTime:= 1; case Gear^.Kind of @@ -1319,10 +1333,10 @@ gtExplosives: begin if (Ammo^.Kind = gtDrill) then begin Ammo^.Timer:= 0; exit; end; if (not Gear^.Invulnerable) then - ApplyDamage(Gear, tmpDmg, dsShove) + ApplyDamage(Gear, Ammo^.Hedgehog, tmpDmg, dsShove) else Gear^.State:= Gear^.State or gstWinner; - if (Gear^.Kind = gtExplosives) and (Ammo^.Kind = gtBlowtorch) then ApplyDamage(Gear, tmpDmg * 100, dsUnknown); // crank up damage for explosives + blowtorch + if (Gear^.Kind = gtExplosives) and (Ammo^.Kind = gtBlowtorch) then ApplyDamage(Gear, Ammo^.Hedgehog, tmpDmg * 100, dsUnknown); // crank up damage for explosives + blowtorch DeleteCI(Gear); if (Gear^.Kind = gtHedgehog) and Gear^.Hedgehog^.King then @@ -1424,12 +1438,13 @@ var t: PGear; begin + r:= r*r; GearsNear := nil; t := GearsList; while t <> nil do begin if (t^.Kind = Kind) then begin if (X - t^.X)*(X - t^.X) + (Y - t^.Y)*(Y-t^.Y) < - int2hwFloat(r)*int2hwFloat(r) then + int2hwFloat(r) then begin SetLength(GearsNear, Length(GearsNear)+1); GearsNear[High(GearsNear)] := t; @@ -1513,7 +1528,6 @@ gear^.dX := _0; gear^.dY := _0; gear^.State := gstWait; - uStats.HedgehogDamaged(gear); gear^.Damage := 0; gear^.Health := gear^.Hedgehog^.InitialHealth; gear^.Hedgehog^.Effects[hePoisoned] := false; @@ -1776,13 +1790,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 @@ -1830,7 +1851,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 @@ -1847,12 +1868,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 @@ -1871,9 +1895,9 @@ CurAmmoGear:= nil; GearsList:= nil; KilledHHs:= 0; + SuddenDeath:= false; SuddenDeathDmg:= false; SpeechType:= 1; - TrainingTargetGear:= nil; skipFlag:= false; AllInactive:= false; diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uGearsRender.pas --- a/hedgewars/uGearsRender.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uGearsRender.pas Mon Jan 17 23:22:52 2011 +0100 @@ -186,7 +186,7 @@ if (Gear^.State and gstHHDeath) <> 0 then begin DrawSprite(sprHHDeath, ox - 16, oy - 26, Gear^.Pos); - Tint(HH^.Team^.Clan^.Color); + Tint(HH^.Team^.Clan^.Color shl 8 or $FF); DrawSprite(sprHHDeath, ox - 16, oy - 26, Gear^.Pos + 8); Tint($FF, $FF, $FF, $FF); exit @@ -353,7 +353,7 @@ i*DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + hAngle); if HatTex^.w > 64 then begin - Tint(HH^.Team^.Clan^.Color); + Tint(HH^.Team^.Clan^.Color shl 8 or $FF); DrawRotatedTextureF(HatTex, 1.0, -1.0, -6.0, ox, oy, 32, i, 32, 32, i*DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + hAngle); Tint($FF, $FF, $FF, $FF) @@ -383,7 +383,7 @@ 32); if HatTex^.w > 64 then begin - Tint(HH^.Team^.Clan^.Color); + Tint(HH^.Team^.Clan^.Color shl 8 or $FF); DrawTextureF(HatTex, 1, sx, @@ -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); @@ -705,7 +705,7 @@ 32); if HatTex^.w > 64 then begin - Tint(HH^.Team^.Clan^.Color); + Tint(HH^.Team^.Clan^.Color shl 8 or $FF); DrawTextureF(HatTex, HatVisibility, sx, @@ -729,7 +729,7 @@ 32); if HatTex^.w > 64 then begin - Tint(HH^.Team^.Clan^.Color); + Tint(HH^.Team^.Clan^.Color shl 8 or $FF); DrawTextureF(HatTex, HatVisibility, sx, @@ -855,8 +855,6 @@ DrawRotated(sprPlane, x, y, -1, DxDy2Angle(Gear^.dX, Gear^.dY) + 90) else DrawRotated(sprPlane, x, y,0,DxDy2Angle(Gear^.dY, Gear^.dX)); - if ((TrainingFlags and tfRCPlane) <> 0) and (TrainingTargetGear <> nil) and ((Gear^.State and gstDrowning) = 0) then - DrawRotatedf(sprFinger, x, y, GameTicks div 32 mod 16, 0, DxDy2Angle(Gear^.X - TrainingTargetGear^.X, TrainingTargetGear^.Y - Gear^.Y)); end; gtBall: DrawRotatedf(sprBalls, x, y, Gear^.Tag,0, Gear^.DirAngle); diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uIO.pas --- a/hedgewars/uIO.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uIO.pas Mon Jan 17 23:22:52 2011 +0100 @@ -99,18 +99,18 @@ procedure InitIPC; var ipaddr: TIPAddress; begin -WriteToConsole('Init SDL_Net... '); -SDLTry(SDLNet_Init = 0, true); -fds:= SDLNet_AllocSocketSet(1); -SDLTry(fds <> nil, true); -WriteLnToConsole(msgOK); -WriteToConsole('Establishing IPC connection... '); -{$HINTS OFF} -SDLTry(SDLNet_ResolveHost(ipaddr, '127.0.0.1', ipcPort) = 0, true); -{$HINTS ON} -IPCSock:= SDLNet_TCP_Open(ipaddr); -SDLTry(IPCSock <> nil, true); -WriteLnToConsole(msgOK) + WriteToConsole('Init SDL_Net... '); + SDLTry(SDLNet_Init = 0, true); + fds:= SDLNet_AllocSocketSet(1); + SDLTry(fds <> nil, true); + WriteLnToConsole(msgOK); + WriteToConsole('Establishing IPC connection to tcp 127.0.0.1:' + IntToStr(ipcPort) + ' '); + {$HINTS OFF} + SDLTry(SDLNet_ResolveHost(ipaddr, '127.0.0.1', ipcPort) = 0, true); + {$HINTS ON} + IPCSock:= SDLNet_TCP_Open(ipaddr); + SDLTry(IPCSock <> nil, true); + WriteLnToConsole(msgOK) end; procedure CloseIPC; diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uKeys.pas --- a/hedgewars/uKeys.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uKeys.pas Mon Jan 17 23:22:52 2011 +0100 @@ -324,7 +324,6 @@ DefaultBinds[KeyNameToCode('right')]:= '+right'; DefaultBinds[KeyNameToCode('left_shift')]:= '+precise'; {$ENDIF} -DefaultBinds[1000]:= 'forcequit'; for i:= 1 to 10 do DefaultBinds[KeyNameToCode('f'+IntToStr(i))]:= 'slot '+IntToStr(i); diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uLandGraphics.pas --- a/hedgewars/uLandGraphics.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uLandGraphics.pas Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 hedgewars/uLandObjects.pas --- a/hedgewars/uLandObjects.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uLandObjects.pas Mon Jan 17 23:22:52 2011 +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,91 +388,233 @@ 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, Pred(i))); + 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, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + c1.g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + c1.b:= StrToInt(Trim(s)); + glClearColor(c1.r / 255, c1.g / 255, c1.b / 255, 0.99); + SDSkyColor.r:= byte(c1.r * SDTint div 255); + SDSkyColor.g:= byte(c1.g * SDTint div 255); + SDSkyColor.b:= byte(c1.b * SDTint div 255); + end + else if key = 'border' then + begin + i:= Pos(',', s); + c2.r:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + c2.g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + 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, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + WaterColorArray[0].g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + 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, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + WaterColorArray[2].g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + 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 + begin + cWaterOpacity:= StrToInt(Trim(s)); + cSDWaterOpacity:= cWaterOpacity + end + 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, Pred(i))), 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, Pred(i)))); + 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, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + y:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + w:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + h:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); CheckRect(Width, Height, x, y, w, h) end; - Read(f, rectcnt); + i:= Pos(',', s); + rectcnt:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + 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, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + y:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + w:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + if ii = rectcnt then h:= StrToInt(Trim(s)) + else + begin + i:= Pos(',', s); + h:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + 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, Pred(i))), 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, Pred(i)))); + Delete(s, 1, i); + if vobCount > 0 then + begin + i:= Pos(',', s); + vobFramesCount:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + vobFrameTicks:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + vobVelocity:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + vobFallSpeed:= StrToInt(Trim(s)); + vobCount:= vobCount * cScreenSpace div LAND_WIDTH; end; - 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 + else if key = 'sd-water-top' then + begin + i:= Pos(',', s); + SDWaterColorArray[0].r:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + SDWaterColorArray[0].g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + 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, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + SDWaterColorArray[2].g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + 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 + begin + i:= Pos(',', s); + vobSDCount:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + if vobSDCount > 0 then + begin + i:= Pos(',', s); + vobSDFramesCount:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + vobSDFrameTicks:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + vobSDVelocity:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + vobSDFallSpeed:= StrToInt(Trim(s)); + vobSDCount:= vobSDCount * cScreenSpace div LAND_WIDTH; + end; + end + else if key = 'rq-sky' then + begin + if ((cReducedQuality and rqNoBackground) <> 0) then + begin + i:= Pos(',', s); + c1.r:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + c1.g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + c1.b:= StrToInt(Trim(s)); + glClearColor(c1.r / 255, c1.g / 255, c1.b / 255, 0.99); + SDSkyColor.r:= byte(c1.r * SDTint div 255); + SDSkyColor.g:= byte(c1.g * SDTint div 255); + SDSkyColor.b:= byte(c1.b * SDTint div 255); + end + 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; - -if (cReducedQuality and rqKillFlakes) <> 0 then - numFlakes:= 0; - -if ((GameFlags and gfBorder) <> 0) or ((Theme <> 'Snow') and (Theme <> 'Christmas')) then - for i:= 0 to Pred(numFlakes) do - AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake) -else - for i:= 0 to Pred(numFlakes div 3) do - AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake); - Close(f); {$I+} TryDo(IOResult = 0, 'Bad data or cannot access file ' + cThemeCFGFilename, true); diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uLocale.pas --- a/hedgewars/uLocale.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uLocale.pas Mon Jan 17 23:22:52 2011 +0100 @@ -44,7 +44,6 @@ loaded: boolean; begin loaded:= false; -trammo[sidNothing]:= ' '; for e:= Low(TEventId) to High(TEventId) do first[e]:= true; {$I-} // iochecks off @@ -69,7 +68,7 @@ TryDo(s[6] = '=', 'Load locale: "=" expected', true); Delete(s, 1, 6); case a of - 0: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammo[TAmmoStrId(b+1)]:= s; + 0: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammo[TAmmoStrId(b)]:= s; 1: if (b >=0) and (b <= ord(High(TMsgStrId))) then trmsg[TMsgStrId(b)]:= s; 2: if (b >=0) and (b <= ord(High(TEventId))) then begin TryDo(trevt_n[TEventId(b)] < MAX_EVENT_STRINGS, 'Too many event strings in ' + IntToStr(a) + ':' + IntToStr(b), false); @@ -81,8 +80,8 @@ trevt[TEventId(b)][trevt_n[TEventId(b)]]:= s; inc(trevt_n[TEventId(b)]); end; - 3: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammoc[TAmmoStrId(b+1)]:= s; - 4: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammod[TAmmoStrId(b+1)]:= s; + 3: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammoc[TAmmoStrId(b)]:= s; + 4: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammod[TAmmoStrId(b)]:= s; 5: if (b >=0) and (b <= ord(High(TGoalStrId))) then trgoal[TGoalStrId(b)]:= s; end; end; diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uScript.pas --- a/hedgewars/uScript.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uScript.pas Mon Jan 17 23:22:52 2011 +0100 @@ -57,7 +57,8 @@ uUtils, uKeys, uCaptions, - uDebug; + uDebug, + uCollisions; var luaState : Plua_State; ScriptAmmoLoadout : shortstring; @@ -272,6 +273,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 +313,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 +364,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; @@ -962,6 +973,7 @@ function lc_setgearposition(L : Plua_State) : LongInt; Cdecl; var gear: PGear; + col: boolean; x, y: LongInt; begin if lua_gettop(L) <> 3 then @@ -971,11 +983,14 @@ gear:= GearByUID(lua_tointeger(L, 1)); if gear <> nil then begin + col:= gear^.CollisionIndex >= 0; x:= lua_tointeger(L, 2); y:= lua_tointeger(L, 3); + if col then DeleteCI(gear); gear^.X:= int2hwfloat(x); gear^.Y:= int2hwfloat(y); - SetAllToActive; + if col then AddGearCI(gear); + SetAllToActive end end; lc_setgearposition:= 0 diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uSound.pas --- a/hedgewars/uSound.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uSound.pas Mon Jan 17 23:22:52 2011 +0100 @@ -39,6 +39,7 @@ procedure PlayMusic; procedure PauseMusic; procedure ResumeMusic; +procedure ChangeMusic; procedure StopSound(snd: TSound); procedure StopSound(chn: LongInt); function ChangeVolume(voldelta: LongInt): LongInt; @@ -318,6 +319,17 @@ Mix_ResumeMusic(Mus); end; +procedure ChangeMusic; +begin + if (MusicFN = '') or (not isMusicEnabled) then + exit; + + if Mus <> nil then + Mix_FreeMusic(Mus); + + PlayMusic; +end; + procedure chVoicepack(var s: shortstring); begin if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/voicepack"', true); diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uStats.pas --- a/hedgewars/uStats.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uStats.pas Mon Jan 17 23:22:52 2011 +0100 @@ -29,7 +29,7 @@ procedure freeModule; procedure AmmoUsed(am: TAmmoType); -procedure HedgehogDamaged(Gear: PGear); +procedure HedgehogDamaged(Gear: PGear; Attacker: PHedgehog); procedure Skipped; procedure TurnReaction; procedure SendStats; @@ -50,19 +50,17 @@ vpHurtSameClan: PVoicepack = nil; vpHurtEnemy: PVoicepack = nil; -procedure HedgehogDamaged(Gear: PGear); +procedure HedgehogDamaged(Gear: PGear; Attacker: PHedgehog); begin -if CurrentHedgehog^.Team^.Clan = Gear^.Hedgehog^.Team^.Clan then +if Attacker^.Team^.Clan = Gear^.Hedgehog^.Team^.Clan then vpHurtSameClan:= CurrentHedgehog^.Team^.voicepack else vpHurtEnemy:= Gear^.Hedgehog^.Team^.voicepack; -if bBetweenTurns then exit; - ////////////////////////// -if Gear <> CurrentHedgehog^.Gear then - inc(CurrentHedgehog^.stats.StepDamageGiven, Gear^.Damage); +if Gear <> Attacker^.Gear then + inc(Attacker^.stats.StepDamageGiven, Gear^.Damage); if CurrentHedgehog^.Team^.Clan = Gear^.Hedgehog^.Team^.Clan then inc(DamageClan, Gear^.Damage); diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uStore.pas --- a/hedgewars/uStore.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uStore.pas Mon Jan 17 23:22:52 2011 +0100 @@ -274,7 +274,9 @@ 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 // FIXME: should check for both rqNoBackground and rqKillFlakes + (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; also should checked against rqLowRes begin if AltPath = ptNone then if ii in [sprHorizontL, sprHorizontR, sprSkyL, sprSkyR] then // FIXME: hack @@ -307,7 +309,8 @@ else begin Texture:= Surface2Tex(tmpsurf, false); - if (ii = sprWater) and ((cReducedQuality and (rq2DWater or rqClampLess)) = 0) then // HACK: We should include some sprite attribute to define the texture wrap directions + // HACK: We should include some sprite attribute to define the texture wrap directions + if ((ii = sprWater) or (ii = sprSDWater)) and ((cReducedQuality and (rq2DWater or rqClampLess)) = 0) then glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); end; glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, priority); diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uTypes.pas --- a/hedgewars/uTypes.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uTypes.pas Mon Jan 17 23:22:52 2011 +0100 @@ -16,7 +16,7 @@ TPathType = (ptNone, ptData, ptGraphics, ptThemes, ptCurrTheme, ptTeams, ptMaps, ptMapCurrent, ptDemos, ptSounds, ptGraves, ptFonts, ptForts, - ptLocale, ptAmmoMenu, ptHedgehog, ptVoices, ptHats, ptFlags, ptMissionMaps); + ptLocale, ptAmmoMenu, ptHedgehog, ptVoices, ptHats, ptFlags, ptMissionMaps, ptSuddenDeath); TSprite = (sprWater, sprCloud, sprBomb, sprBigDigit, sprFrame, sprLag, sprArrow, sprBazookaShell, sprTargetP, sprBee, @@ -52,7 +52,8 @@ sprCheese, sprHandCheese, sprHandFlamethrower, sprChunk, sprNote, sprSMineOff, sprSMineOn, sprHandSMine, sprHammer, sprHandResurrector, sprCross, sprAirDrill, sprNapalmBomb, - sprBulletHit, sprSnowball, sprHandSnowball, sprSnow + sprBulletHit, sprSnowball, sprHandSnowball, sprSnow, + sprSDFlake, sprSDWater, sprSDCloud, sprSDSplash, sprSDDroplet ); // Gears that interact with other Gears and/or Land @@ -333,7 +334,7 @@ TurnNumber: LongWord; end; - TAmmoStrId = (sidNothing, sidGrenade, sidClusterBomb, sidBazooka, sidBee, sidShotgun, + TAmmoStrId = (sidGrenade, sidClusterBomb, sidBazooka, sidBee, sidShotgun, sidPickHammer, sidSkip, sidRope, sidMine, sidDEagle, sidDynamite, sidBaseballBat, sidFirePunch, sidSeconds, sidParachute, sidAirAttack, sidMineStrike, sidBlowTorch, @@ -343,7 +344,7 @@ sidLowGravity, sidExtraDamage, sidInvulnerable, sidExtraTime, sidLaserSight, sidVampiric, sidSniperRifle, sidJetpack, sidMolotov, sidBirdy, sidPortalGun, sidPiano, sidGasBomb, sidSineGun, sidFlamethrower, - sidSMine, sidHammer, sidResurrector, sidDrillStrike, sidSnowball); + sidSMine, sidHammer, sidResurrector, sidDrillStrike, sidSnowball, sidNothing); TMsgStrId = (sidStartFight, sidDraw, sidWinner, sidVolume, sidPaused, sidConfirm, sidSuddenDeath, sidRemaining, sidFuel, sidSync, diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uUtils.pas --- a/hedgewars/uUtils.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uUtils.pas Mon Jan 17 23:22:52 2011 +0100 @@ -254,15 +254,19 @@ l:= Utf8ToUnicode(@tmpstr, Str2PChar(s), length(s))-1; i:= 0; + while i < l do begin u:= tmpstr[i]; - if (#$2E80 <= u) and ( - (u <= #$2FDF ) or // CJK Radicals Supplement / Kangxi Radicals + if (#$1100 <= u) and ( + (u <= #$11FF ) or // Hangul Jamo + ((#$2E80 <= u) and (u <= #$2FDF)) or // CJK Radicals Supplement / Kangxi Radicals ((#$2FF0 <= u) and (u <= #$303F)) or // Ideographic Description Characters / CJK Radicals Supplement + ((#$3130 <= u) and (u <= #$318F)) or // Hangul Compatibility Jamo ((#$31C0 <= u) and (u <= #$31EF)) or // CJK Strokes ((#$3200 <= u) and (u <= #$4DBF)) or // Enclosed CJK Letters and Months / CJK Compatibility / CJK Unified Ideographs Extension A ((#$4E00 <= u) and (u <= #$9FFF)) or // CJK Unified Ideographs + ((#$AC00 <= u) and (u <= #$D7AF)) or // Hangul Syllables ((#$F900 <= u) and (u <= #$FAFF)) or // CJK Compatibility Ideographs ((#$FE30 <= u) and (u <= #$FE4F))) // CJK Compatibility Forms then exit(THWFont( ord(font) + ((ord(High(THWFont))+1) div 2) )); diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uVariables.pas --- a/hedgewars/uVariables.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uVariables.pas Mon Jan 17 23:22:52 2011 +0100 @@ -45,7 +45,6 @@ GameType : TGameType; InputMask : LongWord; GameFlags : Longword; - TrainingFlags : Longword; TurnTimeLeft : Longword; ReadyTimeLeft : Longword; cSuddenDTurns : LongInt; @@ -66,6 +65,7 @@ cHealthDecrease : LongInt; cCloudsNumber : LongInt; + cSDCloudsNumber : LongInt; cTagsMask : byte; zoom : GLfloat; @@ -75,13 +75,6 @@ cGearScrEdgesDist: LongInt; GameTicks : LongWord; - TrainingTimeInc : Longword; - TrainingTimeInD : Longword; - TrainingTimeInM : Longword; - TrainingTimeMax : Longword; - - TimeTrialStartTime: Longword; - TimeTrialStopTime : Longword; // originally from uConsts Pathz: array[TPathType] of shortstring; @@ -131,6 +124,9 @@ AttackBar : LongInt; WaterColorArray : array[0..3] of HwColor4f; + SDWaterColorArray : array[0..3] of HwColor4f; + SDMusic : shortstring; + SDTint : LongInt; CursorPoint : TPoint; TargetPoint : TPoint; @@ -175,7 +171,8 @@ 'Sounds/voices', // ptVoices 'Graphics/Hats', // ptHats 'Graphics/Flags', // ptFlags - 'Missions/Maps' // ptMissionMaps + 'Missions/Maps', // ptMissionMaps + 'Graphics/SuddenDeath' // ptSuddenDeath ); cTagsMasks : array[0..15] of byte = (7, 0, 0, 0, 15, 6, 4, 5, 0, 0, 0, 0, 0, 14, 12, 13); @@ -558,7 +555,17 @@ (FileName: 'amSnowball'; Path: ptCurrTheme; AltPath: ptHedgehog; Texture: nil; Surface: nil; 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 + Width: 4; Height: 4; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSnow + (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: '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 ); @@ -1967,7 +1974,7 @@ PosSprite: sprAmAirplane; ejectX: 0; ejectY: 0), -// Snowball +// Snowball/Mudball (NameId: sidSnowball; NameTex: nil; Probability: 0; @@ -2031,14 +2038,15 @@ 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; - TrainingTargetGear: PGear; skipFlag: boolean; PlacingHogs: boolean; // a convenience flag to indicate placement of hogs is still in progress StepSoundTimer: LongInt; @@ -2064,6 +2072,7 @@ bShowFinger: boolean; Frames: Longword; WaterColor, DeepWaterColor: TSDL_Color; + SDSkyColor: TSDL_Color; SkyOffset: LongInt; HorizontOffset: LongInt; {$IFDEF COUNTTICKS} @@ -2088,8 +2097,11 @@ VisualGearsList: PVisualGear; + lastVisualGearByUID: PVisualGear; vobFrameTicks, vobFramesCount, vobCount: Longword; vobVelocity, vobFallSpeed: LongInt; + vobSDFrameTicks, vobSDFramesCount, vobSDCount: Longword; + vobSDVelocity, vobSDFallSpeed: LongInt; hideAmmoMenu: boolean; @@ -2109,6 +2121,8 @@ DefaultBinds, CurrentBinds: TBinds; + coeff: LongInt; + {$IFDEF HWLIBRARY} leftClick: boolean; middleClick: boolean; @@ -2143,6 +2157,9 @@ procedure initModule; begin + lastVisualGearByUID:= nil; + lastGearByUID:= nil; + Pathz:= cPathz; {* REFERENCE 4096 -> $FFFFF000 @@ -2150,25 +2167,39 @@ 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 := 182; + SDWaterColorArray[0].g := 144; + SDWaterColorArray[0].b := 201; + SDWaterColorArray[0].a := 255; + SDWaterColorArray[2].r := 150; + SDWaterColorArray[2].g := 112; + SDWaterColorArray[2].b := 169; + SDWaterColorArray[2].a := 255; + SDWaterColorArray[1]:= SDWaterColorArray[0]; + SDWaterColorArray[3]:= SDWaterColorArray[2]; + + SDMusic:= 'main_theme.ogg'; + SDTint:= $80; 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; @@ -2178,18 +2209,11 @@ CursorMovementX := 0; CursorMovementY := 0; GameTicks := 0; - TrainingTimeInc := 10000; - TrainingTimeInD := 500; - TrainingTimeInM := 5000; - TrainingTimeMax := 60000; - TimeTrialStartTime := 0; - TimeTrialStopTime := 0; cWaterLine := LAND_HEIGHT; cGearScrEdgesDist := 240; InputMask := $FFFFFFFF; GameFlags := 0; - TrainingFlags := 0; TurnTimeLeft := 0; cSuddenDTurns := 15; cDamagePercent := 100; @@ -2202,6 +2226,7 @@ cMinesTime := 3000; cMaxAIThinkTime := 9000; cCloudsNumber := 9; + cSDCloudsNumber := 9; cHealthCaseProb := 35; cHealthCaseAmount := 25; cWaterRise := 47; @@ -2258,6 +2283,12 @@ cMaxCaptions:= 3 else cMaxCaptions:= 4; + + vobSDFrameTicks:= 0; + vobSDFramesCount:= 0; + vobSDCount:= 30 * cScreenSpace div LAND_WIDTH; + vobSDVelocity:= 0; + vobSDFallSpeed:= 0; end; procedure freeModule; diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uVisualGears.pas --- a/hedgewars/uVisualGears.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uVisualGears.pas Mon Jan 17 23:22:52 2011 +0100 @@ -32,6 +32,9 @@ procedure DeleteVisualGear(Gear: PVisualGear); function VisualGearByUID(uid : Longword) : PVisualGear; procedure AddClouds; +procedure ChangeToSDClouds; +procedure AddFlakes; +procedure ChangeToSDFlakes; procedure AddDamageTag(X, Y, Damage, Color: LongWord); implementation @@ -110,7 +113,7 @@ exit end; -if ((cReducedQuality and rqFancyBoom) <> 0) and +if ((cReducedQuality and rqAntiBoom) <> 0) and not Critical and not (Kind in [vgtTeamHealthSorter, @@ -143,13 +146,22 @@ Timer:= 0; tdX:= 0; tdY:= 0; - FrameTicks:= random(vobFrameTicks); - Frame:= random(vobFramesCount); + if SuddenDeathDmg then + begin + FrameTicks:= random(vobSDFrameTicks); + Frame:= random(vobSDFramesCount); + end + else + begin + FrameTicks:= random(vobFrameTicks); + Frame:= random(vobFramesCount); + end; Angle:= random * 360; dx:= 0.0000038654705 * random(10000); dy:= 0.000003506096 * random(7000); if random(2) = 0 then dx := -dx; - dAngle:= (random(2) * 2 - 1) * (1 + random) * vobVelocity / 1000 + if SuddenDeathDmg then dAngle:= (random(2) * 2 - 1) * (1 + random) * vobSDVelocity / 1000 + else dAngle:= (random(2) * 2 - 1) * (1 + random) * vobVelocity / 1000 end; vgtCloud: begin Frame:= random(4); @@ -328,6 +340,8 @@ if Gear^.PrevGear <> nil then Gear^.PrevGear^.NextGear:= Gear^.NextGear else VisualGearsList:= Gear^.NextGear; + if lastVisualGearByUID = Gear then lastVisualGearByUID:= nil; + Dispose(Gear); end; @@ -382,11 +396,20 @@ begin if Gear^.Tint <> $FFFFFFFF then Tint(Gear^.Tint); case Gear^.Kind of - vgtFlake: if vobVelocity = 0 then - DrawSprite(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame) + vgtFlake: if SuddenDeathDmg then + if vobSDVelocity = 0 then + DrawSprite(sprSDFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame) + else + 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); + if vobVelocity = 0 then + DrawSprite(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame) + else + DrawRotatedF(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle); + 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 @@ -406,7 +429,7 @@ DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex) end end; - if (cReducedQuality and rqFancyBoom) = 0 then + if (cReducedQuality and rqAntiBoom) = 0 then case Gear^.Kind of vgtSmoke: DrawSprite(sprSmoke, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); vgtSmokeWhite: DrawSprite(sprSmokeWhite, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); @@ -435,7 +458,7 @@ DrawRotatedTextureF(SpritesData[sprBigExplosion].Texture, 0.85 * (-power(2, -10 * Int(Gear^.Timer)/250) + 1) + 0.4, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 0, 1, 385, 385, Gear^.Angle); end; end; - if (cReducedQuality and rqFancyBoom) = 0 then + if (cReducedQuality and rqAntiBoom) = 0 then case Gear^.Kind of vgtExplPart: DrawSprite(sprExplPart, round(Gear^.X) + WorldDx - 16, round(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame); vgtExplPart2: DrawSprite(sprExplPart2, round(Gear^.X) + WorldDx - 16, round(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame); @@ -475,8 +498,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) @@ -515,13 +544,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 @@ -534,6 +570,60 @@ 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 AddFlakes; +var i: LongInt; +begin +if (cReducedQuality and rqKillFlakes) <> 0 then exit; + +if ((GameFlags and gfBorder) <> 0) or ((Theme <> 'Snow') and (Theme <> 'Christmas')) then + for i:= 0 to Pred(vobCount) do + AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake) +else + for i:= 0 to Pred(vobCount div 3) do + AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake); +end; + +procedure ChangeToSDFlakes; +var i: LongInt; + vg, tmp: PVisualGear; +begin +if (cReducedQuality and rqKillFlakes) <> 0 then exit; +if vobCount = vobSDCount then exit; +vg:= VisualGearsList; +while vg <> nil do + if vg^.Kind = vgtFlake then + begin + tmp:= vg^.NextGear; + DeleteVisualGear(vg); + vg:= tmp + end + else vg:= vg^.NextGear; +if ((GameFlags and gfBorder) <> 0) or ((Theme <> 'Snow') and (Theme <> 'Christmas')) then + for i:= 0 to Pred(vobSDCount) do + AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake) +else + for i:= 0 to Pred(vobSDCount div 3) do + AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake); +end; + procedure initModule; begin VisualGearsList:= nil; diff -r 9f20a38a385a -r 9a0f5377c529 hedgewars/uWorld.pas --- a/hedgewars/uWorld.pas Mon Jan 17 08:37:43 2011 +0100 +++ b/hedgewars/uWorld.pas Mon Jan 17 23:22:52 2011 +0100 @@ -394,10 +394,20 @@ r: TSDL_Rect; lw, lh: GLfloat; begin - WaterColorArray[0].a := Alpha; - WaterColorArray[1].a := Alpha; - WaterColorArray[2].a := Alpha; - WaterColorArray[3].a := Alpha; + if SuddenDeathDmg then + begin + SDWaterColorArray[0].a := Alpha; + SDWaterColorArray[1].a := Alpha; + SDWaterColorArray[2].a := Alpha; + SDWaterColorArray[3].a := Alpha + end + else + begin + WaterColorArray[0].a := Alpha; + WaterColorArray[1].a := Alpha; + WaterColorArray[2].a := Alpha; + WaterColorArray[3].a := Alpha + end; lw:= cScreenWidth / cScaleFactor; lh:= trunc(cScreenHeight / cScaleFactor) + cScreenHeight div 2 + 16; @@ -421,7 +431,10 @@ glDisableClientState(GL_TEXTURE_COORD_ARRAY); glEnableClientState(GL_COLOR_ARRAY); - glColorPointer(4, GL_UNSIGNED_BYTE, 0, @WaterColorArray[0]); + if SuddenDeathDmg then + glColorPointer(4, GL_UNSIGNED_BYTE, 0, @SDWaterColorArray[0]) + else + glColorPointer(4, GL_UNSIGNED_BYTE, 0, @WaterColorArray[0]); glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); @@ -437,24 +450,39 @@ procedure DrawWaves(Dir, dX, dY: LongInt; tnt: Byte); var VertexBuffer, TextureBuffer: array [0..3] of TVertex2f; lw, waves, shift: GLfloat; + sprite: TSprite; begin +if SuddenDeathDmg then + sprite:= sprSDWater +else + sprite:= sprWater; + +cWaveWidth:= SpritesData[sprite].Width; + lw:= cScreenWidth / cScaleFactor; waves:= lw * 2 / cWaveWidth; -Tint(LongInt(tnt) * WaterColorArray[2].r div 255 + 255 - tnt, - LongInt(tnt) * WaterColorArray[2].g div 255 + 255 - tnt, - LongInt(tnt) * WaterColorArray[2].b div 255 + 255 - tnt, - 255 -); +if SuddenDeathDmg then + Tint(LongInt(tnt) * SDWaterColorArray[2].r div 255 + 255 - tnt, + LongInt(tnt) * SDWaterColorArray[2].g div 255 + 255 - tnt, + LongInt(tnt) * SDWaterColorArray[2].b div 255 + 255 - tnt, + 255 + ) +else + Tint(LongInt(tnt) * WaterColorArray[2].r div 255 + 255 - tnt, + LongInt(tnt) * WaterColorArray[2].g div 255 + 255 - tnt, + LongInt(tnt) * WaterColorArray[2].b div 255 + 255 - tnt, + 255 + ); -glBindTexture(GL_TEXTURE_2D, SpritesData[sprWater].Texture^.id); +glBindTexture(GL_TEXTURE_2D, SpritesData[sprite].Texture^.id); VertexBuffer[0].X:= -lw; VertexBuffer[0].Y:= cWaterLine + WorldDy + dY; VertexBuffer[1].X:= lw; VertexBuffer[1].Y:= VertexBuffer[0].Y; VertexBuffer[2].X:= lw; -VertexBuffer[2].Y:= VertexBuffer[0].Y + SpritesData[sprWater].Height; +VertexBuffer[2].Y:= VertexBuffer[0].Y + SpritesData[sprite].Height; VertexBuffer[3].X:= -lw; VertexBuffer[3].Y:= VertexBuffer[2].Y; @@ -464,7 +492,7 @@ TextureBuffer[1].X:= TextureBuffer[0].X + waves; TextureBuffer[1].Y:= TextureBuffer[0].Y; TextureBuffer[2].X:= TextureBuffer[1].X; -TextureBuffer[2].Y:= SpritesData[sprWater].Texture^.ry; +TextureBuffer[2].Y:= SpritesData[sprite].Texture^.ry; TextureBuffer[3].X:= TextureBuffer[0].X; TextureBuffer[3].Y:= TextureBuffer[2].Y; @@ -573,8 +601,10 @@ HorizontOffset:= HorizontOffset + ((ScreenBottom-SkyOffset) div 20); // background + if SuddenDeathDmg then Tint(SDTint, SDTint, SDTint, $FF); DrawRepeated(sprSky, sprSkyL, sprSkyR, (WorldDx + LAND_WIDTH div 2) * 3 div 8, SkyOffset); DrawRepeated(sprHorizont, sprHorizontL, sprHorizontR, (WorldDx + LAND_WIDTH div 2) * 3 div 5, HorizontOffset); + if SuddenDeathDmg then Tint($FF, $FF, $FF, $FF); end; DrawVisualGears(0); @@ -623,7 +653,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); @@ -632,9 +665,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 @@ -686,52 +725,6 @@ DrawSprite(sprFrame, -(cScreenWidth shr 1) + t - 4 + offsetY, cScreenHeight - offsetX, 0); end; -{$IFNDEF IPHONEOS} -// Timetrial -if ((TrainingFlags and tfTimeTrial) <> 0) and (TimeTrialStartTime > 0) then - begin - if TimeTrialStopTime = 0 then i:= RealTicks - TimeTrialStartTime else i:= TimeTrialStopTime - TimeTrialStartTime; - t:= 272; - // right frame - DrawSprite(sprFrame, -cScreenWidth div 2 + t, 8, 1); - dec(t, 32); - // 1 ms - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10); - dec(t, 32); - i:= i div 10; - // 10 ms - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10); - dec(t, 32); - i:= i div 10; - // 100 ms - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10); - dec(t, 16); - // Point - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, 11); - dec(t, 32); - i:= i div 10; - // 1 s - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10); - dec(t, 32); - i:= i div 10; - // 10s - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 6); - dec(t, 16); - // Point - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, 10); - dec(t, 32); - i:= i div 6; - // 1 m - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10); - dec(t, 32); - i:= i div 10; - // 10 m - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10); - // left frame - DrawSprite(sprFrame, -cScreenWidth div 2 + t - 4, 8, 0); - end; -{$ENDIF} - // Captions DrawCaptions; @@ -742,7 +735,7 @@ highlight:= bShowFinger and (CurrentTeam = TeamsArray[t]) and ((RealTicks mod 1000) < 500); if highlight then - Tint(Clan^.Color); + Tint(Clan^.Color shl 8 or $FF); // draw name DrawTexture(-NameTagTex^.w - 16, cScreenHeight + DrawHealthY, NameTagTex); diff -r 9f20a38a385a -r 9a0f5377c529 misc/hedgewars.desktop --- a/misc/hedgewars.desktop Mon Jan 17 08:37:43 2011 +0100 +++ b/misc/hedgewars.desktop Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Classes/GameConfigViewController.m --- a/project_files/HedgewarsMobile/Classes/GameConfigViewController.m Mon Jan 17 08:37:43 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/GameConfigViewController.m Mon Jan 17 23:22:52 2011 +0100 @@ -25,6 +25,7 @@ #import "TeamConfigViewController.h" #import "SchemeWeaponConfigViewController.h" #import "HelpPageViewController.h" +#import "StatsPageViewController.h" #import "CommodityFunctions.h" #import "UIImageExtra.h" #import "PascalImports.h" @@ -226,19 +227,30 @@ [NSNumber numberWithInt:self.interfaceOrientation],@"orientation", nil]; - NSDictionary *allDataNecessary = [NSDictionary dictionaryWithObjectsAndKeys:gameDictionary,@"game_dictionary", @"",@"savefile", - [NSNumber numberWithBool:NO],@"netgame", nil]; - if (IS_IPAD()) - [[SDLUIKitDelegate sharedAppDelegate] startSDLgame:allDataNecessary]; + NSDictionary *allDataNecessary = [NSDictionary dictionaryWithObjectsAndKeys: + gameDictionary,@"game_dictionary", + [NSNumber numberWithBool:NO],@"netgame", + @"",@"savefile", + nil]; + + + StatsPageViewController *statsPage = [[StatsPageViewController alloc] initWithStyle:UITableViewStyleGrouped]; + statsPage.modalTransitionStyle = UIModalTransitionStyleCoverVertical; + if ([statsPage respondsToSelector:@selector(setModalPresentationStyle:)]) + statsPage.modalPresentationStyle = UIModalPresentationPageSheet; + [self presentModalViewController:statsPage animated:NO]; + + NSArray *stats = [[SDLUIKitDelegate sharedAppDelegate] startSDLgame:allDataNecessary]; + if ([stats count] == 0) + [statsPage dismissModalViewControllerAnimated:NO]; else { - // this causes a sporadic crash on the ipad but without this rotation doesn't work on iphone - UIViewController *dummy = [[UIViewController alloc] init]; - [self presentModalViewController:dummy animated:NO]; - [[SDLUIKitDelegate sharedAppDelegate] startSDLgame:allDataNecessary]; - [self dismissModalViewControllerAnimated:NO]; - [dummy release]; + statsPage.statsArray = stats; + [statsPage.tableView reloadData]; + [statsPage viewWillAppear:YES]; } + + [statsPage release]; } -(void) loadNiceHogs { diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Classes/GameSetup.h --- a/project_files/HedgewarsMobile/Classes/GameSetup.h Mon Jan 17 08:37:43 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/GameSetup.h Mon Jan 17 23:22:52 2011 +0100 @@ -25,11 +25,12 @@ @interface GameSetup : NSObject { NSDictionary *systemSettings; NSDictionary *gameConfig; + NSMutableArray *statsArray; NSInteger ipcPort; // Port on which engine will listen TCPsocket csd; // Client socket descriptor TCPsocket esd; // External socket descriptor - + NSString *savePath; BOOL isNetGame; BOOL menuStyle; @@ -37,6 +38,7 @@ @property (nonatomic, retain) NSDictionary *systemSettings; @property (nonatomic, retain) NSDictionary *gameConfig; +@property (nonatomic, retain) NSMutableArray *statsArray; @property (nonatomic, retain) NSString *savePath; @property (assign) BOOL menuStyle; @@ -48,6 +50,6 @@ -(void) provideAmmoData:(NSString *)ammostoreName forPlayingTeams:(NSInteger) numberOfTeams; -(NSInteger) provideScheme:(NSString *)schemeName; --(const char **)getSettings:(NSString *)recordFile; +-(const char **)getGameSettings:(NSString *)recordFile; @end diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Classes/GameSetup.m --- a/project_files/HedgewarsMobile/Classes/GameSetup.m Mon Jan 17 08:37:43 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/GameSetup.m Mon Jan 17 23:22:52 2011 +0100 @@ -28,7 +28,7 @@ #define BUFFER_SIZE 255 // like in original frontend @implementation GameSetup -@synthesize systemSettings, gameConfig, savePath, menuStyle; +@synthesize systemSettings, gameConfig, statsArray, savePath, menuStyle; -(id) initWithDictionary:(NSDictionary *)gameDictionary { if (self = [super init]) { @@ -57,11 +57,14 @@ [outputFormatter release]; } else self.savePath = path; + + self.statsArray = nil; } return self; } -(void) dealloc { + [statsArray release]; [gameConfig release]; [systemSettings release]; [savePath release]; @@ -204,12 +207,12 @@ #pragma mark - #pragma mark Network relevant code --(void) dumpRawData:(const uint8_t*)buffer ofSize:(uint8_t) length { +-(void) dumpRawData:(const char *)buffer ofSize:(uint8_t) length { // is it performant to reopen the stream every time? NSOutputStream *os = [[NSOutputStream alloc] initToFileAtPath:self.savePath append:YES]; [os open]; [os write:&length maxLength:1]; - [os write:buffer maxLength:length]; + [os write:(const uint8_t *)buffer maxLength:length]; [os close]; [os release]; } @@ -218,7 +221,7 @@ -(int) sendToEngine:(NSString *)string { uint8_t length = [string length]; - [self dumpRawData:(const uint8_t *)[string UTF8String] ofSize:length]; + [self dumpRawData:[string UTF8String] ofSize:length]; SDLNet_TCP_Send(csd, &length, 1); return SDLNet_TCP_Send(csd, [string UTF8String], length); } @@ -238,8 +241,9 @@ IPaddress ip; int eProto; BOOL clientQuit; - uint8_t buffer[BUFFER_SIZE]; + char const buffer[BUFFER_SIZE]; uint8_t msgSize; + int statMaxCapacity = 10-3; clientQuit = NO; csd = NULL; @@ -268,10 +272,10 @@ while (!clientQuit) { msgSize = 0; - memset(buffer, '\0', BUFFER_SIZE); + memset((void *)buffer, '\0', BUFFER_SIZE); if (SDLNet_TCP_Recv(csd, &msgSize, sizeof(uint8_t)) <= 0) break; - if (SDLNet_TCP_Recv(csd, buffer, msgSize) <=0) + if (SDLNet_TCP_Recv(csd, (void *)buffer, msgSize) <= 0) break; switch (buffer[0]) { @@ -283,7 +287,7 @@ else [self sendToEngineNoSave:@"TL"]; NSString *saveHeader = @"TS"; - [self dumpRawData:(const uint8_t *)[saveHeader UTF8String] ofSize:[saveHeader length]]; + [self dumpRawData:[saveHeader UTF8String] ofSize:[saveHeader length]]; // seed info [self sendToEngine:[self.gameConfig objectForKey:@"seed_command"]]; @@ -345,36 +349,38 @@ } break; case 'i': + if (self.statsArray == nil) + self.statsArray = [[NSMutableArray alloc] initWithCapacity:statMaxCapacity]; + NSString *tempStr = [NSString stringWithUTF8String:&buffer[2]]; + NSString *arg = [[tempStr componentsSeparatedByString:@" "] objectAtIndex:0]; + int index = [arg length] + 3; switch (buffer[1]) { - case 'r': - DLog(@"Winning team: %s", &buffer[2]); + case 'r': // winning team + [self.statsArray insertObject:[NSString stringWithUTF8String:&buffer[2]] atIndex:0]; break; - case 'D': - DLog(@"Best Shot: %s", &buffer[2]); + case 'D': // best shot + [self.statsArray addObject:[NSString stringWithFormat:@"The best shot award was won by %s with %@ points", &buffer[index], arg]]; break; - case 'k': - DLog(@"Best Hedgehog: %s", &buffer[2]); - break; - case 'K': - DLog(@"Hogs Killed: %s", &buffer[2]); + case 'k': // best hedgehog + [self.statsArray addObject:[NSString stringWithFormat:@"The best killer is %s with %@ kills in a turn", &buffer[index], arg]]; break; - case 'H': - //something about team health + case 'K': // number of hogs killed + [self.statsArray addObject:[NSString stringWithFormat:@"A total of %@ hedgehog(s) were killed during this round", arg]]; break; - case 'T': - // local team stats + case 'H': //something about team health break; - case 'P': - // player postion + case 'T': // local team stats + break; + case 'P': // player postion break; - case 's': - DLog(@"Most self damage: %s", &buffer[2]); + case 's': // self damage + [self.statsArray addObject:[NSString stringWithFormat:@"%s thought it's good to shoot his own hedgehogs with %@ points", &buffer[index], arg]]; break; - case 'S': - DLog(@"Most friendly fire: %s", &buffer[2]); + case 'S': // friendly fire + [self.statsArray addObject:[NSString stringWithFormat:@"%s killed %@ of his own hedgehogs", &buffer[index], arg]]; break; - case 'B': - DLog(@"Most turn skipped by: %s", &buffer[2]); + case 'B': // turn skipped + [self.statsArray addObject:[NSString stringWithFormat:@"%s was scared and skipped turn %@ times", &buffer[index], arg]]; break; default: DLog(@"Unhandled stat message, see statsPage.cpp"); @@ -384,7 +390,6 @@ case 'q': // game ended, can remove the savefile [[NSFileManager defaultManager] removeItemAtPath:self.savePath error:nil]; - //[[NSNotificationCenter defaultCenter] postNotificationName:@"removedSave" object:nil]; // and remove + disable the overlay [[NSNotificationCenter defaultCenter] postNotificationName:@"remove overlay" object:nil]; break; @@ -408,7 +413,7 @@ #pragma mark - #pragma mark Setting methods // returns an array of c-strings that are read by engine at startup --(const char **)getSettings: (NSString *)recordFile { +-(const char **)getGameSettings:(NSString *)recordFile { NSInteger width, height; NSString *ipcString = [[NSString alloc] initWithFormat:@"%d", ipcPort]; NSString *localeString = [[NSString alloc] initWithFormat:@"%@.txt", [[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode]]; @@ -431,11 +436,11 @@ NSString *horizontalSize = [[NSString alloc] initWithFormat:@"%d", width]; NSString *verticalSize = [[NSString alloc] initWithFormat:@"%d", height]; - const char **gameArgs = (const char**) malloc(sizeof(char *) * 10); - NSInteger tmpQuality; + const char **gameArgs = (const char **)malloc(sizeof(char *) * 10); BOOL enhanced = [[self.systemSettings objectForKey:@"enhanced"] boolValue]; NSString *modelId = modelType(); + NSInteger tmpQuality; if ([modelId hasPrefix:@"iPhone1"] || [modelId hasPrefix:@"iPod1,1"] || [modelId hasPrefix:@"iPod2,1"]) // = iPhone and iPhone 3G or iPod Touch or iPod Touch 2G tmpQuality = 0x00000001 | 0x00000002 | 0x00000008 | 0x00000040; // rqLowRes | rqBlurryLand | rqSimpleRope | rqKillFlakes else if ([modelId hasPrefix:@"iPhone2"] || [modelId hasPrefix:@"iPod3"]) // = iPhone 3GS or iPod Touch 3G diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Classes/HelpPageViewController.m --- a/project_files/HedgewarsMobile/Classes/HelpPageViewController.m Mon Jan 17 08:37:43 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/HelpPageViewController.m Mon Jan 17 23:22:52 2011 +0100 @@ -36,10 +36,10 @@ // on iPhone the XIBs contain UIScrollView -(void) viewDidLoad { - if (scrollView.tag == 0) + if (scrollView.tag == 0) // ipad scrollView.contentSize = CGSizeMake(480,650); - else - scrollView.contentSize = CGSizeMake(480,460); + else // iphone + scrollView.contentSize = CGSizeMake(480,470); scrollView.maximumZoomScale = 4.0; scrollView.minimumZoomScale = 0.75; scrollView.clipsToBounds = YES; @@ -57,7 +57,6 @@ [super dealloc]; } -// on iPad the XIBs contain UIControl -(IBAction) dismiss { [UIView beginAnimations:@"helpingame" context:NULL]; self.view.alpha = 0; diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Classes/MainMenuViewController.m --- a/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Mon Jan 17 08:37:43 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Mon Jan 17 23:22:52 2011 +0100 @@ -99,8 +99,6 @@ createWeaponNamed(@"Minefield", 5); createWeaponNamed(@"Thinking with Portals", 6); // merge not needed because weapons not present in the set are 0ed by GameSetup - - DLog(@"Success"); } #pragma mark - @@ -125,7 +123,8 @@ [userDefaults synchronize]; [self createNecessaryFiles]; } - + + /* ServerSetup *setup = [[ServerSetup alloc] init]; if ([setup isNetworkReachable]) { DLog(@"network is reachable"); @@ -134,6 +133,7 @@ withObject:nil]; } [setup release]; + */ } diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Classes/ObjcExports.m --- a/project_files/HedgewarsMobile/Classes/ObjcExports.m Mon Jan 17 08:37:43 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/ObjcExports.m Mon Jan 17 23:22:52 2011 +0100 @@ -152,7 +152,6 @@ } void updateVisualsNewTurn(void) { - DLog(@"updating visuals"); [amvc_instance updateAmmoVisuals]; } diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.h --- a/project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.h Mon Jan 17 08:37:43 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.h Mon Jan 17 23:22:52 2011 +0100 @@ -40,7 +40,7 @@ @property (nonatomic,retain) UIWindow *secondWindow; +(SDLUIKitDelegate *)sharedAppDelegate; --(void) startSDLgame:(NSDictionary *)gameDictionary; +-(NSArray *)startSDLgame:(NSDictionary *)gameDictionary; -(void) displayOverlayLater:(id) object; @end diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.m --- a/project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.m Mon Jan 17 08:37:43 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.m Mon Jan 17 23:22:52 2011 +0100 @@ -85,7 +85,7 @@ } // main routine for calling the actual game engine --(void) startSDLgame:(NSDictionary *)gameDictionary { +-(NSArray *)startSDLgame:(NSDictionary *)gameDictionary { UIWindow *gameWindow; if (IS_DUALHEAD()) gameWindow = self.secondWindow; @@ -118,6 +118,7 @@ } [blackView release]; + // pull out useful configuration info from various files GameSetup *setup = [[GameSetup alloc] initWithDictionary:gameDictionary]; NSNumber *isNetGameNum = [gameDictionary objectForKey:@"netgame"]; @@ -126,23 +127,26 @@ toTarget:setup withObject:nil]; - const char **gameArgs = [setup getSettings:[gameDictionary objectForKey:@"savefile"]]; NSNumber *menuStyle = [NSNumber numberWithBool:setup.menuStyle]; - [setup release]; - - // since the sdlwindow is not yet created, we add the overlayController with a delay + NSNumber *orientation = [[gameDictionary objectForKey:@"game_dictionary"] objectForKey:@"orientation"]; NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: isNetGameNum,@"net", menuStyle,@"menu", - [[gameDictionary objectForKey:@"game_dictionary"] objectForKey:@"orientation"],@"orientation", + orientation,@"orientation", nil]; [self performSelector:@selector(displayOverlayLater:) withObject:dict afterDelay:1]; - // this is the pascal fuction that starts the game (wrapped around isInGame) + // need to set again [gameDictionary objectForKey:@"savefile"] because if it's empty it means it's a normal game + const char **gameArgs = [setup getGameSettings:[gameDictionary objectForKey:@"savefile"]]; self.isInGame = YES; + // this is the pascal fuction that starts the game Game(gameArgs); self.isInGame = NO; free(gameArgs); + + NSArray *stats = setup.statsArray; + [setup release]; + [self.uiwindow makeKeyAndVisible]; [self.uiwindow bringSubviewToFront:self.mainViewController.view]; @@ -156,9 +160,11 @@ [UIView commitAnimations]; [refBlackView performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1]; [refSecondBlackView performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:2]; + + return stats; } -// overlay with controls, become visible later, with a transparency effect +// overlay with controls, become visible later, with a transparency effect since the sdlwindow is not yet created -(void) displayOverlayLater:(id) object { NSDictionary *dict = (NSDictionary *)object; self.overlayController = [[OverlayViewController alloc] initWithNibName:@"OverlayViewController" bundle:nil]; diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Classes/SavedGamesViewController.m --- a/project_files/HedgewarsMobile/Classes/SavedGamesViewController.m Mon Jan 17 08:37:43 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/SavedGamesViewController.m Mon Jan 17 23:22:52 2011 +0100 @@ -21,6 +21,7 @@ #import "SavedGamesViewController.h" #import "SDL_uikitappdelegate.h" +#import "StatsPageViewController.h" #import "CommodityFunctions.h" @implementation SavedGamesViewController @@ -217,8 +218,23 @@ [NSNumber numberWithBool:NO],@"netgame", [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:self.interfaceOrientation] forKey:@"orientation"],@"game_dictionary", nil]; - [[SDLUIKitDelegate sharedAppDelegate] startSDLgame:allDataNecessary]; - [self.parentViewController dismissModalViewControllerAnimated:NO]; + + StatsPageViewController *statsPage = [[StatsPageViewController alloc] initWithStyle:UITableViewStyleGrouped]; + statsPage.modalTransitionStyle = UIModalTransitionStyleCoverVertical; + if ([statsPage respondsToSelector:@selector(setModalPresentationStyle:)]) + statsPage.modalPresentationStyle = UIModalPresentationPageSheet; + [self presentModalViewController:statsPage animated:NO]; + + NSArray *stats = [[SDLUIKitDelegate sharedAppDelegate] startSDLgame:allDataNecessary]; + if ([stats count] == 0) { + [statsPage dismissModalViewControllerAnimated:NO]; + } else { + statsPage.statsArray = stats; + [statsPage.tableView reloadData]; + [statsPage viewWillAppear:YES]; + } + // reload needed because when ending game the entry remains there + [self.tableView reloadData]; } #pragma mark - diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Classes/StatsPageViewController.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/HedgewarsMobile/Classes/StatsPageViewController.h Mon Jan 17 23:22:52 2011 +0100 @@ -0,0 +1,30 @@ +/* + * Hedgewars-iOS, a Hedgewars port for iOS devices + * Copyright (c) 2009-2010 Vittorio Giovara + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * File created on 30/12/2010. + */ + + +#import + +@interface StatsPageViewController : UITableViewController { + NSArray *statsArray; +} + +@property (nonatomic,retain) NSArray *statsArray; + +@end \ No newline at end of file diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Classes/StatsPageViewController.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/HedgewarsMobile/Classes/StatsPageViewController.m Mon Jan 17 23:22:52 2011 +0100 @@ -0,0 +1,138 @@ +/* + * Hedgewars-iOS, a Hedgewars port for iOS devices + * Copyright (c) 2009-2010 Vittorio Giovara + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * File created on 30/12/2010. + */ + + +#import "StatsPageViewController.h" +#import "CommodityFunctions.h" + +@implementation StatsPageViewController +@synthesize statsArray; + +-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { + return rotationManager(interfaceOrientation); +} + +-(void) viewDidLoad { + if ([self.tableView respondsToSelector:@selector(setBackgroundView:)]) + self.tableView.backgroundView = nil; + + NSString *imgName; + if (IS_IPAD()) + imgName = @"mediumBackground~ipad.png"; + else + imgName = @"smallerBackground~iphone.png"; + + if ([self.tableView respondsToSelector:@selector(setBackgroundView:)]) { + UIImage *backgroundImage = [[UIImage alloc] initWithContentsOfFile:imgName]; + UIImageView *background = [[UIImageView alloc] initWithImage:backgroundImage]; + [backgroundImage release]; + [self.tableView setBackgroundView:background]; + [background release]; + } else + self.view.backgroundColor = [UIColor blackColor]; + + self.tableView.separatorColor = UICOLOR_HW_YELLOW_BODER; + self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + + [super viewDidLoad]; +} + +#pragma mark - +#pragma mark Table view data source +-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { + return 3; +} + +-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + if (section == 0 || section == 2) + return 1; + else + return [self.statsArray count] - 1; +} + +-(UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + static NSString *CellIdentifier0 = @"Cell0"; + NSInteger section = [indexPath section]; + NSInteger row = [indexPath row]; + + UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier0]; + if (cell == nil) + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier0] autorelease]; + + cell.textLabel.textAlignment = UITextAlignmentCenter; + if (section == 0) { + cell.textLabel.text = [self.statsArray objectAtIndex:row]; + cell.textLabel.textColor = UICOLOR_HW_YELLOW_TEXT; + } else if (section == 1) { + cell.textLabel.text = [self.statsArray objectAtIndex:row + 1]; + cell.textLabel.textColor = UICOLOR_HW_YELLOW_TEXT; + } else { + cell.textLabel.text = NSLocalizedString(@"Done",@""); + cell.textLabel.textColor = [UIColor whiteColor]; + } + cell.textLabel.adjustsFontSizeToFitWidth = YES; + cell.backgroundColor = [UIColor blackColor]; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + + return cell; +} + +-(CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + return 160; +} + +-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + if (section == 0) { + UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 160)]; + UIImage *img = [[UIImage alloc] initWithContentsOfFile:@"smallerTitle.png"]; + UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; + [img release]; + imgView.center = CGPointMake(self.tableView.frame.size.height/2, 160/2); + [header addSubview:imgView]; + [imgView release]; + + return [header autorelease]; + } else + return nil; +} + +#pragma mark - +#pragma mark Table view delegate +-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + if ([indexPath section] == 2) + [self dismissModalViewControllerAnimated:YES]; +} + +#pragma mark - +#pragma mark Memory management +-(void) didReceiveMemoryWarning { + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; + self.statsArray = nil; +} + +-(void) dealloc { + [statsArray release]; + [super dealloc]; +} + + +@end + diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Classes/TeamConfigViewController.m --- a/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Mon Jan 17 08:37:43 2011 +0100 +++ b/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Mon Jan 17 23:22:52 2011 +0100 @@ -183,8 +183,8 @@ NSString *teamPath = [NSString stringWithFormat:@"%@/%@.plist",TEAMS_DIRECTORY(),cell.textLabel.text]; NSDictionary *firstHog = [[[NSDictionary dictionaryWithContentsOfFile:teamPath] objectForKey:@"hedgehogs"] objectAtIndex:0]; if ([[firstHog objectForKey:@"level"] intValue] != 0) { - NSString *filePath = [NSString stringWithFormat:@"%@/cyborg.png",HATS_DIRECTORY()]; - UIImage *sprite = [[UIImage alloc] initWithContentsOfFile:filePath andCutAt:CGRectMake(0, 2, 32, 32)]; + NSString *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Settings/Images/robotBadge.png"]; + UIImage *sprite = [[UIImage alloc] initWithContentsOfFile:filePath]; UIImageView *spriteView = [[UIImageView alloc] initWithImage:sprite]; [sprite release]; diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj --- a/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Mon Jan 17 08:37:43 2011 +0100 +++ b/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Mon Jan 17 23:22:52 2011 +0100 @@ -118,6 +118,8 @@ 6172FEEF1298D25D00D73365 /* mediumBackground~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FEEB1298D25D00D73365 /* mediumBackground~ipad.png */; }; 6172FEF11298D25D00D73365 /* smallerBackground~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FEED1298D25D00D73365 /* smallerBackground~ipad.png */; }; 6172FEF21298D25D00D73365 /* smallerBackground~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FEEE1298D25D00D73365 /* smallerBackground~iphone.png */; }; + 6174F7C812CD62E300205D6F /* smallerTitle.png in Resources */ = {isa = PBXBuildFile; fileRef = 6174F7C612CD62E300205D6F /* smallerTitle.png */; }; + 6174F7C912CD62E300205D6F /* smallerTitle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6174F7C712CD62E300205D6F /* smallerTitle@2x.png */; }; 61798816114AA34C00BA94A9 /* hwengine.pas in Sources */ = {isa = PBXBuildFile; fileRef = 617987E7114AA34C00BA94A9 /* hwengine.pas */; }; 61798818114AA34C00BA94A9 /* hwLibrary.pas in Sources */ = {isa = PBXBuildFile; fileRef = 617987E9114AA34C00BA94A9 /* hwLibrary.pas */; }; 6179881B114AA34C00BA94A9 /* PascalExports.pas in Sources */ = {isa = PBXBuildFile; fileRef = 617987EC114AA34C00BA94A9 /* PascalExports.pas */; }; @@ -184,6 +186,7 @@ 61A670C212747DBD00B06CE7 /* MapConfigViewController-iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6165924E11CA9CB400D6E256 /* MapConfigViewController-iPhone.xib */; }; 61AC067412B2E32D000B52A2 /* Appirater.m in Sources */ = {isa = PBXBuildFile; fileRef = 61AC067312B2E32D000B52A2 /* Appirater.m */; }; 61B3D71C11EA6F2700EC7420 /* uKeys.pas in Sources */ = {isa = PBXBuildFile; fileRef = 617987FE114AA34C00BA94A9 /* uKeys.pas */; }; + 61B7A33812CC21080086B604 /* StatsPageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 61B7A33712CC21080086B604 /* StatsPageViewController.m */; }; 61C079E411F35A300072BF46 /* EditableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 61C079E311F35A300072BF46 /* EditableCellView.m */; }; 61D205A1127CDD1100ABD83E /* ObjcExports.m in Sources */ = {isa = PBXBuildFile; fileRef = 61D205A0127CDD1100ABD83E /* ObjcExports.m */; }; 61D3D2A51290E03A003CE7C3 /* irc.png in Resources */ = {isa = PBXBuildFile; fileRef = 61D3D2A41290E03A003CE7C3 /* irc.png */; }; @@ -889,6 +892,8 @@ 6172FEEC1298D25D00D73365 /* smallerBackground@2x~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "smallerBackground@2x~iphone.png"; path = "Resources/Frontend/smallerBackground@2x~iphone.png"; sourceTree = ""; }; 6172FEED1298D25D00D73365 /* smallerBackground~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "smallerBackground~ipad.png"; path = "Resources/Frontend/smallerBackground~ipad.png"; sourceTree = ""; }; 6172FEEE1298D25D00D73365 /* smallerBackground~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "smallerBackground~iphone.png"; path = "Resources/Frontend/smallerBackground~iphone.png"; sourceTree = ""; }; + 6174F7C612CD62E300205D6F /* smallerTitle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = smallerTitle.png; path = Resources/Frontend/smallerTitle.png; sourceTree = ""; }; + 6174F7C712CD62E300205D6F /* smallerTitle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "smallerTitle@2x.png"; path = "Resources/Frontend/smallerTitle@2x.png"; sourceTree = ""; }; 617987E4114AA34C00BA94A9 /* GSHandlers.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = GSHandlers.inc; path = ../../hedgewars/GSHandlers.inc; sourceTree = SOURCE_ROOT; }; 617987E5114AA34C00BA94A9 /* HHHandlers.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = HHHandlers.inc; path = ../../hedgewars/HHHandlers.inc; sourceTree = SOURCE_ROOT; }; 617987E7114AA34C00BA94A9 /* hwengine.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = hwengine.pas; path = ../../hedgewars/hwengine.pas; sourceTree = SOURCE_ROOT; }; @@ -962,6 +967,8 @@ 61A4A3A112A5CD56004D81E6 /* uCaptions.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uCaptions.pas; path = ../../hedgewars/uCaptions.pas; sourceTree = SOURCE_ROOT; }; 61AC067212B2E32D000B52A2 /* Appirater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Appirater.h; path = Classes/Appirater.h; sourceTree = ""; }; 61AC067312B2E32D000B52A2 /* Appirater.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Appirater.m; path = Classes/Appirater.m; sourceTree = ""; }; + 61B7A33612CC21080086B604 /* StatsPageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StatsPageViewController.h; sourceTree = ""; }; + 61B7A33712CC21080086B604 /* StatsPageViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StatsPageViewController.m; sourceTree = ""; }; 61C079E211F35A300072BF46 /* EditableCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EditableCellView.h; path = Classes/EditableCellView.h; sourceTree = ""; }; 61C079E311F35A300072BF46 /* EditableCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = EditableCellView.m; path = Classes/EditableCellView.m; sourceTree = ""; }; 61D2059F127CDD1100ABD83E /* ObjcExports.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ObjcExports.h; path = Classes/ObjcExports.h; sourceTree = ""; }; @@ -1154,6 +1161,8 @@ 611D9BF312497B7700008271 /* Other Controllers */ = { isa = PBXGroup; children = ( + 61B7A33612CC21080086B604 /* StatsPageViewController.h */, + 61B7A33712CC21080086B604 /* StatsPageViewController.m */, 61F2E7CB1205EDE0005734F7 /* AboutViewController.h */, 61F2E7CC1205EDE0005734F7 /* AboutViewController.m */, 61F2E7CD1205EDE0005734F7 /* AboutViewController.xib */, @@ -1494,6 +1503,8 @@ 61EBA62811DFF2BC0048B68A /* title.png */, 618899811299516000D55FD6 /* title@2x.png */, 61889984129995B500D55FD6 /* title~ipad.png */, + 6174F7C612CD62E300205D6F /* smallerTitle.png */, + 6174F7C712CD62E300205D6F /* smallerTitle@2x.png */, 61F9040A11DF59370068B24D /* background.png */, 6172FED61298CF9800D73365 /* background@2x~iphone.png */, 6172FED71298CF9800D73365 /* background~iphone.png */, @@ -2276,6 +2287,8 @@ 61188C0712A6FE960026C5DA /* settingsButton@2x.png in Resources */, 61188C0812A6FE9A0026C5DA /* title@2x.png in Resources */, 61188C0912A6FE9C0026C5DA /* tw@2x.png in Resources */, + 6174F7C812CD62E300205D6F /* smallerTitle.png in Resources */, + 6174F7C912CD62E300205D6F /* smallerTitle@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2293,7 +2306,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\ncp -R ${PROJECT_DIR}/../../share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some files from QTfrontend/res\nmkdir ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/btn*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/ammopic.png ${PROJECT_DIR}/Data/Graphics/Btn/iconAmmo.png\ncp ${PROJECT_DIR}/../../QTfrontend/res/icon*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp -R ${PROJECT_DIR}/../../QTfrontend/res/botlevels ${PROJECT_DIR}/Data/Graphics/Hedgehog/botlevels\n\n#delete all CMakeLists.txt and image source files\nfind ${PROJECT_DIR}/Data -name CMakeLists.txt -delete\nfind ${PROJECT_DIR}/Data -name *.svg -delete\nfind ${PROJECT_DIR}/Data -name *.svgz -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\nfind ${PROJECT_DIR}/Data -name *.orig -delete\n\n#delete desktop frontend translation\nrm -rf ${PROJECT_DIR}/Data/Locale/hedgewars_*\n\n#delete dummy maps and hats\nrm -rf ${PROJECT_DIR}/Data/Maps/{test*,Ruler}\nrm -rf ${PROJECT_DIR}/Data/Hats/{TeamCap,TeamHeadband,TeamHair}\nrm -rf ${PROJECT_DIR}/Data/misc/\n\n#copy mono audio\ncp -R ${PROJECT_DIR}/audio/* ${PROJECT_DIR}/Data/\n\n#the following ones must be removed\nrm -rf ${PROJECT_DIR}/Data/Maps/{Cheese,FlightJoust}\n\n#move Lua maps in Missions\nmkdir ${PROJECT_DIR}/Data/Missions/Maps/\nmv ${PROJECT_DIR}/Data/Maps/{Basketball,Knockball,TrophyRace} ${PROJECT_DIR}/Data/Missions/Maps/\n\n#reduce the number of flakes for City\nawk '{if ($1 == 1500) $1=40; print $0}' < ${PROJECT_DIR}/Data/Themes/City/theme.cfg > /tmp/tempfile\nmv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/City/theme.cfg\n\n#remove Isalnd from the list of Themes\nawk '{if ($1 != \"Island\") print $0}' < ${PROJECT_DIR}/Data/Themes/themes.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/themes.cfg\n\n#remove Isalnd from the Maps and themes\nrm -rf ${PROJECT_DIR}/Data/Themes/Island\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Cave/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Cave/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg\n\n#delete the Classic voice\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/Classic\n\n#delete useless fonts\nrm -rf ${PROJECT_DIR}/Data/Fonts/{wqy-zenhei.ttc,DroidSansFallback.ttf}\n\n#delete all names, reserved hats\nrm -rf ${PROJECT_DIR}/Data/Names/\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/\n"; + shellScript = "#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\necho \"Copying Data...\"\ncp -R ${PROJECT_DIR}/../../share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some files from QTfrontend/res\necho \"Fetching additional graphics from QTfrontend/res...\"\nmkdir ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/btn*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/ammopic.png ${PROJECT_DIR}/Data/Graphics/Btn/iconAmmo.png\ncp ${PROJECT_DIR}/../../QTfrontend/res/icon*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp -R ${PROJECT_DIR}/../../QTfrontend/res/botlevels ${PROJECT_DIR}/Data/Graphics/Hedgehog/botlevels\n\necho \"Removing text and dummy files...\"\n#delete all CMakeLists.txt and image source files\nfind ${PROJECT_DIR}/Data -name CMakeLists.txt -delete\nfind ${PROJECT_DIR}/Data -name *.svg -delete\nfind ${PROJECT_DIR}/Data -name *.svgz -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\nfind ${PROJECT_DIR}/Data -name *.orig -delete\n\n#delete desktop frontend translation\nrm -rf ${PROJECT_DIR}/Data/Locale/hedgewars_*\n\n#delete dummy maps and hats, misc stuff\nrm -rf ${PROJECT_DIR}/Data/Maps/{test*,Ruler}\nrm -rf ${PROJECT_DIR}/Data/Hats/{TeamCap,TeamHeadband,TeamHair}\nrm -rf ${PROJECT_DIR}/Data/misc/\n\n#delete forbidden maps\nrm -rf ${PROJECT_DIR}/Data/Maps/{Cheese,FlightJoust}\n\n#delete the Classic voice\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/Classic\n\n#delete useless fonts\nrm -rf ${PROJECT_DIR}/Data/Fonts/{wqy-zenhei.ttc,DroidSansFallback.ttf}\n\n#delete all names, reserved hats\nrm -rf ${PROJECT_DIR}/Data/Names/\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/\n\necho \"Copying mono audio...\"\n#copy mono audio\ncp -R ${PROJECT_DIR}/audio/* ${PROJECT_DIR}/Data/\n\necho \"Tweaking Data contents...\"\n#move Lua maps in Missions\nmkdir ${PROJECT_DIR}/Data/Missions/Maps/\nmv ${PROJECT_DIR}/Data/Maps/{Basketball,Knockball,TrophyRace,CTF_Blizzard,Control} ${PROJECT_DIR}/Data/Missions/Maps/\n#workaround for missing map in CTF_Blizzard\nln -s ../../../Maps/Blizzard/map.png ${PROJECT_DIR}/Data/Missions/Maps/CTF_Blizzard/map.png\n\n#reduce the number of flakes for City\nawk '{if ($1 == 1500) $1=40; print $0}' < ${PROJECT_DIR}/Data/Themes/City/theme.cfg > /tmp/tempfile\nmv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/City/theme.cfg\n\n#remove Isalnd from the list of Themes\nawk '{if ($1 != \"Island\") print $0}' < ${PROJECT_DIR}/Data/Themes/themes.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/themes.cfg\n\n#remove Isalnd from the Maps and themes\nrm -rf ${PROJECT_DIR}/Data/Themes/Island\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Cave/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Cave/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg\n\necho \"Done\""; showEnvVarsInLog = 0; }; 9283011B0F10CB2D00CC5A3C /* Build libfpc.a */ = { @@ -2424,6 +2437,7 @@ 61F544C712AF1748007FD913 /* HoldTableViewCell.m in Sources */, 61AC067412B2E32D000B52A2 /* Appirater.m in Sources */, 61E2E12E12BAAEE30051B659 /* ServerSetup.m in Sources */, + 61B7A33812CC21080086B604 /* StatsPageViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Info.plist --- a/project_files/HedgewarsMobile/Info.plist Mon Jan 17 08:37:43 2011 +0100 +++ b/project_files/HedgewarsMobile/Info.plist Mon Jan 17 23:22:52 2011 +0100 @@ -28,7 +28,7 @@ CFBundleSignature ???? CFBundleVersion - 1.2.1 + 1.2.2 LSRequiresIPhoneOS UILaunchImageFile~ipad diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/backButton.png Binary file project_files/HedgewarsMobile/Resources/Frontend/backButton.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/backButton@2x.png Binary file project_files/HedgewarsMobile/Resources/Frontend/backButton@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/background.png Binary file project_files/HedgewarsMobile/Resources/Frontend/background.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/background@2x~iphone.png Binary file project_files/HedgewarsMobile/Resources/Frontend/background@2x~iphone.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/background~iphone.png Binary file project_files/HedgewarsMobile/Resources/Frontend/background~iphone.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/helpButton.png Binary file project_files/HedgewarsMobile/Resources/Frontend/helpButton.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/localplayButton@2x~iphone.png Binary file project_files/HedgewarsMobile/Resources/Frontend/localplayButton@2x~iphone.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/localplayButton~ipad.png Binary file project_files/HedgewarsMobile/Resources/Frontend/localplayButton~ipad.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/localplayButton~iphone.png Binary file project_files/HedgewarsMobile/Resources/Frontend/localplayButton~iphone.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/mediumBackground~ipad.png Binary file project_files/HedgewarsMobile/Resources/Frontend/mediumBackground~ipad.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/netplayButton.png Binary file project_files/HedgewarsMobile/Resources/Frontend/netplayButton.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/savesButton.png Binary file project_files/HedgewarsMobile/Resources/Frontend/savesButton.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/savesButton@2x.png Binary file project_files/HedgewarsMobile/Resources/Frontend/savesButton@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/settingsButton.png Binary file project_files/HedgewarsMobile/Resources/Frontend/settingsButton.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/settingsButton@2x.png Binary file project_files/HedgewarsMobile/Resources/Frontend/settingsButton@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/smallerBackground@2x~iphone.png Binary file project_files/HedgewarsMobile/Resources/Frontend/smallerBackground@2x~iphone.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/smallerBackground~ipad.png Binary file project_files/HedgewarsMobile/Resources/Frontend/smallerBackground~ipad.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/smallerBackground~iphone.png Binary file project_files/HedgewarsMobile/Resources/Frontend/smallerBackground~iphone.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/smallerTitle.png Binary file project_files/HedgewarsMobile/Resources/Frontend/smallerTitle.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/smallerTitle@2x.png Binary file project_files/HedgewarsMobile/Resources/Frontend/smallerTitle@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/startGameButton.png Binary file project_files/HedgewarsMobile/Resources/Frontend/startGameButton.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/title.png Binary file project_files/HedgewarsMobile/Resources/Frontend/title.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/title@2x.png Binary file project_files/HedgewarsMobile/Resources/Frontend/title@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Frontend/title~ipad.png Binary file project_files/HedgewarsMobile/Resources/Frontend/title~ipad.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/Default-ipad-Landscape.png Binary file project_files/HedgewarsMobile/Resources/Icons/Default-ipad-Landscape.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/Default.png Binary file project_files/HedgewarsMobile/Resources/Icons/Default.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/Default@2x.png Binary file project_files/HedgewarsMobile/Resources/Icons/Default@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/Icon-72.png Binary file project_files/HedgewarsMobile/Resources/Icons/Icon-72.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/Icon-Small-50.png Binary file project_files/HedgewarsMobile/Resources/Icons/Icon-Small-50.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/Icon-Small.png Binary file project_files/HedgewarsMobile/Resources/Icons/Icon-Small.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/Icon-Small@2x.png Binary file project_files/HedgewarsMobile/Resources/Icons/Icon-Small@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/Icon.png Binary file project_files/HedgewarsMobile/Resources/Icons/Icon.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/Icon@2x.png Binary file project_files/HedgewarsMobile/Resources/Icons/Icon@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/checkbox.png Binary file project_files/HedgewarsMobile/Resources/Icons/checkbox.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/checkbox@2x.png Binary file project_files/HedgewarsMobile/Resources/Icons/checkbox@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/fb.png Binary file project_files/HedgewarsMobile/Resources/Icons/fb.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/fb@2x.png Binary file project_files/HedgewarsMobile/Resources/Icons/fb@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/iTunesArtwork.png Binary file project_files/HedgewarsMobile/Resources/Icons/iTunesArtwork.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/irc.png Binary file project_files/HedgewarsMobile/Resources/Icons/irc.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/irc@2x.png Binary file project_files/HedgewarsMobile/Resources/Icons/irc@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/plus.png Binary file project_files/HedgewarsMobile/Resources/Icons/plus.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/plus@2x.png Binary file project_files/HedgewarsMobile/Resources/Icons/plus@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/tw.png Binary file project_files/HedgewarsMobile/Resources/Icons/tw.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Icons/tw@2x.png Binary file project_files/HedgewarsMobile/Resources/Icons/tw@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/ammoButton.png Binary file project_files/HedgewarsMobile/Resources/Overlay/ammoButton.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/ammoButton@2x.png Binary file project_files/HedgewarsMobile/Resources/Overlay/ammoButton@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/arrowDown.png Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowDown.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/arrowDown@2x.png Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowDown@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/arrowLeft.png Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowLeft.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/arrowLeft@2x.png Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowLeft@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/arrowRight.png Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowRight.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/arrowRight@2x.png Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowRight@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/arrowUp.png Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowUp.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/arrowUp@2x.png Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowUp@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/cornerButton.png Binary file project_files/HedgewarsMobile/Resources/Overlay/cornerButton.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/cornerButton@2x.png Binary file project_files/HedgewarsMobile/Resources/Overlay/cornerButton@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/helpabove.png Binary file project_files/HedgewarsMobile/Resources/Overlay/helpabove.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/helpbottom.png Binary file project_files/HedgewarsMobile/Resources/Overlay/helpbottom.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/helpingame.png Binary file project_files/HedgewarsMobile/Resources/Overlay/helpingame.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/helpleft.png Binary file project_files/HedgewarsMobile/Resources/Overlay/helpleft.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/helpplain.png Binary file project_files/HedgewarsMobile/Resources/Overlay/helpplain.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/helpright.png Binary file project_files/HedgewarsMobile/Resources/Overlay/helpright.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/joyButtonAttack.png Binary file project_files/HedgewarsMobile/Resources/Overlay/joyButtonAttack.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/joyButtonAttack@2x.png Binary file project_files/HedgewarsMobile/Resources/Overlay/joyButtonAttack@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/joyButtonBackJump.png Binary file project_files/HedgewarsMobile/Resources/Overlay/joyButtonBackJump.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/joyButtonBackJump@2x.png Binary file project_files/HedgewarsMobile/Resources/Overlay/joyButtonBackJump@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/joyButtonForwardJump.png Binary file project_files/HedgewarsMobile/Resources/Overlay/joyButtonForwardJump.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Overlay/joyButtonForwardJump@2x.png Binary file project_files/HedgewarsMobile/Resources/Overlay/joyButtonForwardJump@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Settings/Images/hedgehog.png Binary file project_files/HedgewarsMobile/Resources/Settings/Images/hedgehog.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Settings/Images/hedgehog@2x.png Binary file project_files/HedgewarsMobile/Resources/Settings/Images/hedgehog@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Settings/Images/robotBadge.png Binary file project_files/HedgewarsMobile/Resources/Settings/Images/robotBadge.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/Settings/Images/robotBadge@2x.png Binary file project_files/HedgewarsMobile/Resources/Settings/Images/robotBadge@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/denied.png Binary file project_files/HedgewarsMobile/Resources/denied.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 project_files/HedgewarsMobile/Resources/surprise.png Binary file project_files/HedgewarsMobile/Resources/surprise.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/BulletHit.png Binary file share/hedgewars/Data/Graphics/BulletHit.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/CMakeLists.txt --- a/share/hedgewars/Data/Graphics/CMakeLists.txt Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Graphics/CMakeLists.txt Mon Jan 17 23:22:52 2011 +0100 @@ -3,6 +3,7 @@ add_subdirectory(Graves) add_subdirectory(Hats) add_subdirectory(Hedgehog) +add_subdirectory(SuddenDeath) file(GLOB BaseSprites *.png) diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Case.png Binary file share/hedgewars/Data/Graphics/Case.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Explosives.png Binary file share/hedgewars/Data/Graphics/Explosives.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Finger.png Binary file share/hedgewars/Data/Graphics/Finger.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/FirstAid.png Binary file share/hedgewars/Data/Graphics/FirstAid.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Flags/cm_42.png Binary file share/hedgewars/Data/Graphics/Flags/cm_42.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Flags/cm_anarchy.png Binary file share/hedgewars/Data/Graphics/Flags/cm_anarchy.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Flags/cm_balrog.png Binary file share/hedgewars/Data/Graphics/Flags/cm_balrog.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Flags/cm_binary.png Binary file share/hedgewars/Data/Graphics/Flags/cm_binary.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Flags/cm_brittany.png Binary file share/hedgewars/Data/Graphics/Flags/cm_brittany.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Flags/cm_earth2.png Binary file share/hedgewars/Data/Graphics/Flags/cm_earth2.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Flags/cm_female.png Binary file share/hedgewars/Data/Graphics/Flags/cm_female.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Flags/cm_hax0r.png Binary file share/hedgewars/Data/Graphics/Flags/cm_hax0r.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Flags/cm_iluvu.png Binary file share/hedgewars/Data/Graphics/Flags/cm_iluvu.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Flags/cm_magicskull.png Binary file share/hedgewars/Data/Graphics/Flags/cm_magicskull.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Flags/cm_male.png Binary file share/hedgewars/Data/Graphics/Flags/cm_male.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Flags/cm_music.png Binary file share/hedgewars/Data/Graphics/Flags/cm_music.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Flags/cm_pacman.png Binary file share/hedgewars/Data/Graphics/Flags/cm_pacman.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Flags/cm_pacman2.png Binary file share/hedgewars/Data/Graphics/Flags/cm_pacman2.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Flags/cm_vampire.png Binary file share/hedgewars/Data/Graphics/Flags/cm_vampire.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Graves/Simple.png Binary file share/hedgewars/Data/Graphics/Graves/Simple.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/4gsuif.png Binary file share/hedgewars/Data/Graphics/Hats/4gsuif.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/AkuAku.png Binary file share/hedgewars/Data/Graphics/Hats/AkuAku.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Balrog.png Binary file share/hedgewars/Data/Graphics/Hats/Balrog.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Bandit.png Binary file share/hedgewars/Data/Graphics/Hats/Bandit.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Blanka.png Binary file share/hedgewars/Data/Graphics/Hats/Blanka.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/BlankaToothless.png Binary file share/hedgewars/Data/Graphics/Hats/BlankaToothless.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/BlueCap.png Binary file share/hedgewars/Data/Graphics/Hats/BlueCap.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/BlueHair.png Binary file share/hedgewars/Data/Graphics/Hats/BlueHair.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Bob.png Binary file share/hedgewars/Data/Graphics/Hats/Bob.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/BrainSlug.png Binary file share/hedgewars/Data/Graphics/Hats/BrainSlug.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/BrainSlugMouth.png Binary file share/hedgewars/Data/Graphics/Hats/BrainSlugMouth.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Bub.png Binary file share/hedgewars/Data/Graphics/Hats/Bub.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Bunny.png Binary file share/hedgewars/Data/Graphics/Hats/Bunny.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Chunli.png Binary file share/hedgewars/Data/Graphics/Hats/Chunli.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Coonskin3.png Binary file share/hedgewars/Data/Graphics/Hats/Coonskin3.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Cororon.png Binary file share/hedgewars/Data/Graphics/Hats/Cororon.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Cowboy.png Binary file share/hedgewars/Data/Graphics/Hats/Cowboy.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Deer.png Binary file share/hedgewars/Data/Graphics/Hats/Deer.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Disguise.png Binary file share/hedgewars/Data/Graphics/Hats/Disguise.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Dragon.png Binary file share/hedgewars/Data/Graphics/Hats/Dragon.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Elvis.png Binary file share/hedgewars/Data/Graphics/Hats/Elvis.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Eva_00b.png Binary file share/hedgewars/Data/Graphics/Hats/Eva_00b.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Eva_00y.png Binary file share/hedgewars/Data/Graphics/Hats/Eva_00y.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Falcon.png Binary file share/hedgewars/Data/Graphics/Hats/Falcon.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Gasmask.png Binary file share/hedgewars/Data/Graphics/Hats/Gasmask.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Geordi.png Binary file share/hedgewars/Data/Graphics/Hats/Geordi.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Glasses.png Binary file share/hedgewars/Data/Graphics/Hats/Glasses.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/GreenCap.png Binary file share/hedgewars/Data/Graphics/Hats/GreenCap.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/GreenHair.png Binary file share/hedgewars/Data/Graphics/Hats/GreenHair.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/GreyHair.png Binary file share/hedgewars/Data/Graphics/Hats/GreyHair.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Guile.png Binary file share/hedgewars/Data/Graphics/Hats/Guile.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/HogInTheHat.png Binary file share/hedgewars/Data/Graphics/Hats/HogInTheHat.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Honda.png Binary file share/hedgewars/Data/Graphics/Hats/Honda.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/IndianChief.png Binary file share/hedgewars/Data/Graphics/Hats/IndianChief.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/InfernalHorns.png Binary file share/hedgewars/Data/Graphics/Hats/InfernalHorns.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Jason.png Binary file share/hedgewars/Data/Graphics/Hats/Jason.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Ken.png Binary file share/hedgewars/Data/Graphics/Hats/Ken.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/KirbyMask.png Binary file share/hedgewars/Data/Graphics/Hats/KirbyMask.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Kululun.png Binary file share/hedgewars/Data/Graphics/Hats/Kululun.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Ladle.png Binary file share/hedgewars/Data/Graphics/Hats/Ladle.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Laminaria.png Binary file share/hedgewars/Data/Graphics/Hats/Laminaria.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Luigi.png Binary file share/hedgewars/Data/Graphics/Hats/Luigi.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Mario.png Binary file share/hedgewars/Data/Graphics/Hats/Mario.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/MegaHogX.png Binary file share/hedgewars/Data/Graphics/Hats/MegaHogX.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Moose.png Binary file share/hedgewars/Data/Graphics/Hats/Moose.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Mummy.png Binary file share/hedgewars/Data/Graphics/Hats/Mummy.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/NinjaFull.png Binary file share/hedgewars/Data/Graphics/Hats/NinjaFull.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/NinjaStraight.png Binary file share/hedgewars/Data/Graphics/Hats/NinjaStraight.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/NinjaTriangle.png Binary file share/hedgewars/Data/Graphics/Hats/NinjaTriangle.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/NoHat.png Binary file share/hedgewars/Data/Graphics/Hats/NoHat.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/OldMan.png Binary file share/hedgewars/Data/Graphics/Hats/OldMan.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/OrangeHair.png Binary file share/hedgewars/Data/Graphics/Hats/OrangeHair.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Pantsu.png Binary file share/hedgewars/Data/Graphics/Hats/Pantsu.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Pig.png Binary file share/hedgewars/Data/Graphics/Hats/Pig.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/PinkHair.png Binary file share/hedgewars/Data/Graphics/Hats/PinkHair.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Plunger.png Binary file share/hedgewars/Data/Graphics/Hats/Plunger.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/PrincessDaisy.png Binary file share/hedgewars/Data/Graphics/Hats/PrincessDaisy.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/PrincessPeach.png Binary file share/hedgewars/Data/Graphics/Hats/PrincessPeach.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Pumpkin_Hat.png Binary file share/hedgewars/Data/Graphics/Hats/Pumpkin_Hat.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/PurpleHair.png Binary file share/hedgewars/Data/Graphics/Hats/PurpleHair.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/RSR.png Binary file share/hedgewars/Data/Graphics/Hats/RSR.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Rain.png Binary file share/hedgewars/Data/Graphics/Hats/Rain.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Rambo.png Binary file share/hedgewars/Data/Graphics/Hats/Rambo.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/RedCap.png Binary file share/hedgewars/Data/Graphics/Hats/RedCap.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/RedHair.png Binary file share/hedgewars/Data/Graphics/Hats/RedHair.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/RobinHood.png Binary file share/hedgewars/Data/Graphics/Hats/RobinHood.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Ryu.png Binary file share/hedgewars/Data/Graphics/Hats/Ryu.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Samurai.png Binary file share/hedgewars/Data/Graphics/Hats/Samurai.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Samus.png Binary file share/hedgewars/Data/Graphics/Hats/Samus.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Santa.png Binary file share/hedgewars/Data/Graphics/Hats/Santa.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/SauceBoatSilver.png Binary file share/hedgewars/Data/Graphics/Hats/SauceBoatSilver.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/ShaggyYeti.png Binary file share/hedgewars/Data/Graphics/Hats/ShaggyYeti.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/ShortHair_Black.png Binary file share/hedgewars/Data/Graphics/Hats/ShortHair_Black.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/ShortHair_Brown.png Binary file share/hedgewars/Data/Graphics/Hats/ShortHair_Brown.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/ShortHair_Grey.png Binary file share/hedgewars/Data/Graphics/Hats/ShortHair_Grey.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/ShortHair_Red.png Binary file share/hedgewars/Data/Graphics/Hats/ShortHair_Red.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/ShortHair_Yellow.png Binary file share/hedgewars/Data/Graphics/Hats/ShortHair_Yellow.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Skull.png Binary file share/hedgewars/Data/Graphics/Hats/Skull.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Sleepwalker.png Binary file share/hedgewars/Data/Graphics/Hats/Sleepwalker.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Sniper.png Binary file share/hedgewars/Data/Graphics/Hats/Sniper.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Sonic.png Binary file share/hedgewars/Data/Graphics/Hats/Sonic.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/SparkleSuperFun.png Binary file share/hedgewars/Data/Graphics/Hats/SparkleSuperFun.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/StrawHat.png Binary file share/hedgewars/Data/Graphics/Hats/StrawHat.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/StrawHatEyes.png Binary file share/hedgewars/Data/Graphics/Hats/StrawHatEyes.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/StrawHatFacial.png Binary file share/hedgewars/Data/Graphics/Hats/StrawHatFacial.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/SunWukong.png Binary file share/hedgewars/Data/Graphics/Hats/SunWukong.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Sunglasses.png Binary file share/hedgewars/Data/Graphics/Hats/Sunglasses.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Teacup.png Binary file share/hedgewars/Data/Graphics/Hats/Teacup.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Teapot.png Binary file share/hedgewars/Data/Graphics/Hats/Teapot.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Terminator_Glasses.png Binary file share/hedgewars/Data/Graphics/Hats/Terminator_Glasses.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Toad.png Binary file share/hedgewars/Data/Graphics/Hats/Toad.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Vega.png Binary file share/hedgewars/Data/Graphics/Hats/Vega.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Viking.png Binary file share/hedgewars/Data/Graphics/Hats/Viking.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Wario.png Binary file share/hedgewars/Data/Graphics/Hats/Wario.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/WizardHat.png Binary file share/hedgewars/Data/Graphics/Hats/WizardHat.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/YellowCap.png Binary file share/hedgewars/Data/Graphics/Hats/YellowCap.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/YellowHair.png Binary file share/hedgewars/Data/Graphics/Hats/YellowHair.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/Zombi.png Binary file share/hedgewars/Data/Graphics/Hats/Zombi.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/android.png Binary file share/hedgewars/Data/Graphics/Hats/android.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/angel.png Binary file share/hedgewars/Data/Graphics/Hats/angel.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/anzac.png Binary file share/hedgewars/Data/Graphics/Hats/anzac.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/apple.png Binary file share/hedgewars/Data/Graphics/Hats/apple.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/ash.png Binary file share/hedgewars/Data/Graphics/Hats/ash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/banana.png Binary file share/hedgewars/Data/Graphics/Hats/banana.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/beefeater.png Binary file share/hedgewars/Data/Graphics/Hats/beefeater.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/charmander.png Binary file share/hedgewars/Data/Graphics/Hats/charmander.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/chef.png Binary file share/hedgewars/Data/Graphics/Hats/chef.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/chikorita.png Binary file share/hedgewars/Data/Graphics/Hats/chikorita.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/clown-copper.png Binary file share/hedgewars/Data/Graphics/Hats/clown-copper.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/clown-crossed.png Binary file share/hedgewars/Data/Graphics/Hats/clown-crossed.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/clown.png Binary file share/hedgewars/Data/Graphics/Hats/clown.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/crown.png Binary file share/hedgewars/Data/Graphics/Hats/crown.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/cyborg.png Binary file share/hedgewars/Data/Graphics/Hats/cyborg.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/darthvader.png Binary file share/hedgewars/Data/Graphics/Hats/darthvader.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/diglett.png Binary file share/hedgewars/Data/Graphics/Hats/diglett.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/dwarf.png Binary file share/hedgewars/Data/Graphics/Hats/dwarf.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/eastertop.png Binary file share/hedgewars/Data/Graphics/Hats/eastertop.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/jigglypuff.png Binary file share/hedgewars/Data/Graphics/Hats/jigglypuff.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/judo.png Binary file share/hedgewars/Data/Graphics/Hats/judo.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/junior.png Binary file share/hedgewars/Data/Graphics/Hats/junior.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/kiss_criss.png Binary file share/hedgewars/Data/Graphics/Hats/kiss_criss.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/kiss_frehley.png Binary file share/hedgewars/Data/Graphics/Hats/kiss_frehley.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/kiss_simmons.png Binary file share/hedgewars/Data/Graphics/Hats/kiss_simmons.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/kiss_stanley.png Binary file share/hedgewars/Data/Graphics/Hats/kiss_stanley.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/knight.png Binary file share/hedgewars/Data/Graphics/Hats/knight.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/lambda.png Binary file share/hedgewars/Data/Graphics/Hats/lambda.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/laurel.png Binary file share/hedgewars/Data/Graphics/Hats/laurel.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/lemon.png Binary file share/hedgewars/Data/Graphics/Hats/lemon.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/link.png Binary file share/hedgewars/Data/Graphics/Hats/link.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/lugia.png Binary file share/hedgewars/Data/Graphics/Hats/lugia.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/mickey_ears.png Binary file share/hedgewars/Data/Graphics/Hats/mickey_ears.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/mp3.png Binary file share/hedgewars/Data/Graphics/Hats/mp3.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/mudkip.png Binary file share/hedgewars/Data/Graphics/Hats/mudkip.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/naruto.png Binary file share/hedgewars/Data/Graphics/Hats/naruto.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/orange.png Binary file share/hedgewars/Data/Graphics/Hats/orange.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/pikachu.png Binary file share/hedgewars/Data/Graphics/Hats/pikachu.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/pinksunhat.png Binary file share/hedgewars/Data/Graphics/Hats/pinksunhat.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/pirate_jack.png Binary file share/hedgewars/Data/Graphics/Hats/pirate_jack.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/pirate_jack_bandana.png Binary file share/hedgewars/Data/Graphics/Hats/pirate_jack_bandana.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/policecap.png Binary file share/hedgewars/Data/Graphics/Hats/policecap.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/quotecap.png Binary file share/hedgewars/Data/Graphics/Hats/quotecap.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/rasta.png Binary file share/hedgewars/Data/Graphics/Hats/rasta.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/royalguard.png Binary file share/hedgewars/Data/Graphics/Hats/royalguard.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/slowpoke.png Binary file share/hedgewars/Data/Graphics/Hats/slowpoke.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/spartan.png Binary file share/hedgewars/Data/Graphics/Hats/spartan.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/spidey.png Binary file share/hedgewars/Data/Graphics/Hats/spidey.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/squirtle.png Binary file share/hedgewars/Data/Graphics/Hats/squirtle.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/sth_Amy.png Binary file share/hedgewars/Data/Graphics/Hats/sth_Amy.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/sth_AmyClassic.png Binary file share/hedgewars/Data/Graphics/Hats/sth_AmyClassic.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/sth_Eggman.png Binary file share/hedgewars/Data/Graphics/Hats/sth_Eggman.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/sth_Knux.png Binary file share/hedgewars/Data/Graphics/Hats/sth_Knux.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/sth_Metal.png Binary file share/hedgewars/Data/Graphics/Hats/sth_Metal.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/sth_Shadow.png Binary file share/hedgewars/Data/Graphics/Hats/sth_Shadow.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/sth_Sonic.png Binary file share/hedgewars/Data/Graphics/Hats/sth_Sonic.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/sth_Super.png Binary file share/hedgewars/Data/Graphics/Hats/sth_Super.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/sth_Tails.png Binary file share/hedgewars/Data/Graphics/Hats/sth_Tails.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/stormcloud.png Binary file share/hedgewars/Data/Graphics/Hats/stormcloud.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/stormtrooper.png Binary file share/hedgewars/Data/Graphics/Hats/stormtrooper.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/thug.png Binary file share/hedgewars/Data/Graphics/Hats/thug.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/tophats.png Binary file share/hedgewars/Data/Graphics/Hats/tophats.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/ushanka.png Binary file share/hedgewars/Data/Graphics/Hats/ushanka.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/venom.png Binary file share/hedgewars/Data/Graphics/Hats/venom.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hats/voltorb.png Binary file share/hedgewars/Data/Graphics/Hats/voltorb.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hedgehog/ILoveLemonade.png Binary file share/hedgewars/Data/Graphics/Hedgehog/ILoveLemonade.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hedgehog/Idle.png Binary file share/hedgewars/Data/Graphics/Hedgehog/Idle.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hedgehog/Juggle.png Binary file share/hedgewars/Data/Graphics/Hedgehog/Juggle.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Hedgehog/Shrug.png Binary file share/hedgewars/Data/Graphics/Hedgehog/Shrug.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Lag.png Binary file share/hedgewars/Data/Graphics/Lag.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Power.png Binary file share/hedgewars/Data/Graphics/Power.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Snow.png Binary file share/hedgewars/Data/Graphics/Snow.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Snow.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Graphics/Snow.svg Mon Jan 17 23:22:52 2011 +0100 @@ -0,0 +1,93 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Splash.png Binary file share/hedgewars/Data/Graphics/Splash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/SuddenDeath/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Graphics/SuddenDeath/CMakeLists.txt Mon Jan 17 23:22:52 2011 +0100 @@ -0,0 +1,5 @@ +file(GLOB Sprites *.png) + +install(FILES + ${Sprites} + DESTINATION ${SHAREPATH}Data/Graphics/SuddenDeath) diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/SuddenDeath/SDClouds.png Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDClouds.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/SuddenDeath/SDDroplet.png Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDDroplet.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/SuddenDeath/SDFlake.png Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDFlake.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/SuddenDeath/SDSplash.png Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDSplash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/SuddenDeath/SDWater.png Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDWater.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/Utility.png Binary file share/hedgewars/Data/Graphics/Utility.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/amGirder.png Binary file share/hedgewars/Data/Graphics/amGirder.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/hhMask.png Binary file share/hedgewars/Data/Graphics/hhMask.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Graphics/missions.png Binary file share/hedgewars/Data/Graphics/missions.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/de.lua --- a/share/hedgewars/Data/Locale/de.lua Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/de.lua Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/de.txt --- a/share/hedgewars/Data/Locale/de.txt Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/de.txt Mon Jan 17 23:22:52 2011 +0100 @@ -50,6 +50,9 @@ 00:47=Haftmine 00:48=Hammer 00:49=Totenbeschwörung +00:50=Bohr-Luftangriff +00:51=Schlammball +00:52=Keine Waffe ausgewählt 01:00=Auf in die Schlacht! diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/el.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/el.txt Mon Jan 17 23:22:52 2011 +0100 @@ -0,0 +1,508 @@ +; Greek locale + +00:00=Χειροβομβίδα +00:01=Χειροβομβίδα Διασποράς +00:02=Μπαζούκας +00:03=Αυτοκαθοδηγούμενη Μέλισσα +00:04=Καραμπίνα +00:05=Κρουστικό Δράπανο +00:06=Άχθος Αρούρης +00:07=Σχοινί +00:08=Νάρκη +00:09=Desert Eagle +00:10=Δυναμίτης +00:11=Μπαστούνι Του Βaseball +00:12=Fire Punch +00:13=δευ +00:14=Αλεξίπτωτο +00:15=Αεροπορικός Βομβαρδισμός +00:16=Βομβαρδισμός Με Νάρκες +00:17=Καμινέτο +00:18=Δοκός +00:19=Τηλεμεταφορά +00:20=Εναλλαγή Σκαντζόχοιρου +00:21=Όλμος +00:22=Μαστίγιο +00:23=Καμικάζι +00:24=Τούρτα +00:25=Αποπλάνηση +00:26=Καρπουζόβομβα +00:27=Σατανική Χειροβομβίδα +00:28=Διατρητικός Πύραυλος +00:29=Εκτοξευτής Χρωμοσφαιρίδιων +00:30=Ναπάλμ +00:31=Τηλεκατευθυνόμενο +00:32=Μικροβαρύτητα +00:33=Επιπλέον Ζημιά +00:34=Ασπίδα +00:35=Επιπλέον Χρόνος +00:36=Διόπτρα Laser +00:37=Βαμπιρισμός +00:38=Τυφέκιο Ελεύθερου Σκοπευτή +00:39=Ιπτάμενος Δίσκος +00:40=Μολότωφ +00:41=Πτηνό +00:42=Φορητή Σκουληκότρυπα +00:43=Πιάνο +00:44=Χαλασμένη Φέτα +00:45=Sine Gun (beta) +00:46=Φλογοβόλο +00:47=Αυτοκόλλητη Νάρκη +00:48=Σφυρί +00:49=Νεκρανάσταση + +01:00=Ας Πολεμήσουμε! +01:01=Ισόπαλος Γύρος +01:02=Οι %1 Νικούν! +01:03=Ένταση Ήχου %1% +01:04=Παύση +01:05=Σίγουρα θέλετε να φύγετε (Y/Esc); +01:06=Ξαφνικός Θάνατος! +01:07=%1 απομένουν +01:08=Καύσιμα +01:09=Συγχρονισμός... +01:10=Χρησιμοποιώντας αυτό το βοήθημα δεν τελειώνει η σειρά σας! +01:11=Αυτό το όπλο ή βοήθημα δεν είναι ακόμα διαθέσιμο! +01:12=Τελευταίος γύρος μέχρι τον Ξαφνικό Θάνατο! +01:13=%1 γύροι μέχρι τον Ξαφνικό Θάνατο! +01:14=Ετοιμάσου, %1! + +; Event messages +; Hog (%1) died +02:00=Ο %1 τίναξε τα πέταλα! +02:00=Ο %1 είδε το φως στο τέλος της σήραγγας! +02:00=Ο %1 δεν το περίμενε ποτέ! +02:00=Ο %1 μας αποχαιρετά! +02:00=Ο %1 βόσκει στα ουράνια λιβάδια! +02:00=Ο %1 πήγε να συναντήσει το δημιουργό του! +02:00=Ο %1 δεν μπορεί να κρατηθεί άλλο! +02:00=Ο %1 έκανε το καθήκον του! +02:00=Ο %1 κάνει την υπέρτατη θυσία! +02:00=Ο %1 αφήνει τον μάταιο τούτο κόσμο! +02:00=Ο %1 μας την έκανε με ελαφρά πηδηματάκια! +02:00=Ο %1 δεν έχει άλλο χρόνο στη διάθεσή του! +02:00=Θα θυμόμαστε τον %1 με στοργή! +02:00=Ο %1 έχει ανεύρυσμα! +02:00=Ο %1 αφήνει πίσω γυναίκα και παιδί! +02:00=Ο %1 εκτόξευσε το τελευταίο μπαζούκας του! +02:00=Ο %1 έριξε την τελευταία χειροβομβίδα του! +02:00=Ο %1 έφτιαξε την τελευταία τούρτα του! +02:00=Ο %1 έκανε την τελευταία του αεροπορική επίθεση! +02:00=Ο %1 έριξε για τελευταία φορά με την καραμπίνα του! +02:00=Ο %1 έριξε την τελευταία του καρπουζόβομβα! +02:00=Ο %1 έριξε την τελευταία του βολή με το desert eagle! +02:00=Ο %1 το πήρε κατάκαρδα! +02:00=Ο %1 θα μπορούσε κάλλιστα να είχε χρησιμοποιήσει ένα κιβώτιο υγείας! +02:00=Ο %1 πήγε να παίξει ένα καλύτερο παιχνίδι! +02:00=Ο %1 έζησε μια καλή ζωή! +02:00=Ο %1 απέτυχε οικτρά... +02:00=Καψερέ μου %1, τι σου έμελλε να πάθεις! +02:00=Ο %1 προτιμά να παίζει Wormux! +02:00=Ο %1 σταμάταγε τις σφαίρες με τη φάτσα του! +02:00=Ο %1 πήγε να συναντήσει τους προγόνους του! +02:00=Ο %1 βρήκε τη θέση του στον παράδεισο! +02:00=Ο %1 βρήκε τη θέση του στο Valhalla! +02:00=Ο %1 βρήκε τη θέση του στο πάνθεον των ηρώων! +02:00=Ο %1 εγκατέλειψε το κτήριο! +02:00=Ο %1 εξαφανίστηκε σαν τους δεινόσαυρους! +02:00=Ο %1 φέρνει τους σκαντζόχοιρους ένα βήμα κοντύτερα στην εξαφάνιση! +02:00=Ο %1 με κάνει και συγκινούμαι... +02:00=Ο %1 είναι ένας πρώην σκαντζόχοιρος τώρα πια! +02:00=Ο %1 βλέπει τα ραδίκια ανάποδα! +02:00=Ο %1 έπαψε να υφίσταται! +02:00=Πραγματικά κρίμα %1! +02:00=Δεν υπάρχει καμία ελπίδα για τον %1! +02:00=Ας είναι ελαφρύ το χώμα που σκεπάζει τον %1... +02:00=Ο %1 υποφέρει από το σύνδρομο της ανυπαρξίας! +02:00=Ο %1 έγινε αλαφροΐσκιωτος! +02:00=Ο %1 μας τέλειωσε! +02:00=Ο %1 έληξε! +02:00=%1... Αιωνία αυτού η μνήμη... +02:00=Ο %1 αναπαύθηκε εν ειρήνη! +02:00=Ο %1 έγινε δεκτός στην χορωδία των αγγέλων! +02:00=Έχε γεια %1, μετά βίας σε γνωρίσαμε! +02:00=Ο %1 έχει μικρή ανεκτικότητα στα χτυπήματα! +02:00=Ο %1 θα μπορούσε κάλλιστα να χρησιμοποιούσε μια επιπλέον ζωή! +02:00=Ένα γιατρό για τον %1! + +; Hog (%1) drowned +02:01=Ο %1 κάνει το υποβρύχιο! +02:01=Ο %1 μιμείται τον Τιτανικό! +02:01=Ο %1 κολυμπάει σαν πέτρα! +02:01=Ο %1 επιπλέει σαν τούβλο! +02:01=Ο %1 πήγε να εξερευνήσει το βυθό! +02:01=Ο %1 κάνει γαργάρες! +02:01=Ο %1 ξέχασε τα μπρατσάκια του! +02:01=Ο %1 θα μπορούσε κάλλιστα να είχε πάρει μαθήματα κολύμβησης! +02:01=Ο %1 ξέχασε την ιστιοσανίδα του στο σπίτι! +02:01=Ο %1 πήγε να πλυθεί! +02:01=Ο %1 είναι ένας βρεγμένος σκαντζόχοιρος! +02:01=Ο %1 ξέχασε να βάλει το σωσίβιό του! +02:01=Ο %1 κοιμάται με τα ψάρια! +02:01=Ο %1 πιστεύει ότι η φυσική του νερού είναι άθλια σε αυτό το παιχνίδι! +02:01=Ο %1 μοιάζει διψασμένος... +02:01=Η θάλασσα διεκδίκησε και πήρε τον %1... +02:01=Ο %1 χάθηκε στη θάλασσα! +02:01=Ο %1 έπρεπε να φέρει τη μάσκα του! +02:01=Ο %1 έπρεπε να φέρει τα βατραχοπέδιλά του! +02:01=Ο %1 έχει ταφή στη θάλασσα! +02:01=Ο %1 βυθίστηκε στις σκέψεις του! +02:01=Ο %1 κάνει προπόνηση στην ελεύθερη κατάδυση! +02:01=Ο %1 κάνει προπόνηση στο ύπτιο! +02:01=Ο %1 πάει να ψάξει για τον Τιτανικό! +02:01=Ο %1 δεν είναι ο Μεσσίας αφού δεν περπατάει στο νερό! +02:01=Ο %1 πάει να βρει το Nemo! +02:01=Ο %1 έχει διαρροές! +02:01=Σε κάνει να αναρωτιέσαι πόσοι σκαντζόχοιροι να βρίσκονται εκεί κάτω... +02:01=Ο %1 αυξάνει ελαφρώς τη στάθμη της θάλασσας! +02:01=Ο %1 δεν ήθελε να καταταγεί στο ναυτικό! +02:01=Ο %1 μιμείται ένα νεκρό ψάρι! +02:01=Τουλάχιστον δεν έπεσες στα σκ@τ@, %1! +02:01=Ο %1 δεν έμαθε ποτέ να κολυμπάει! +02:01=Ο %1 θέλει να παίξει τον Ecco το δελφίνι! +02:01=Ο %1 θα προτιμούσε να είχε βράγχια! +02:01=Ο %1 βρήκε την χαμένη πόλη της Ατλαντίδας! +02:01=Ο %1 έγινε τροφή για τα ψάρια! +02:01=Του %1 δεν του αρέσουν τα αθλήματα του νερού! +02:01=Ο %1 έπρεπε να φέρει τη σχεδία του! +02:01=Ο %1 πιστεύει ότι το θαλασσινό νερό κάνει καλό στο δέρμα! +02:01=Ο %1 βάζει αλάτι στις πληγές του! +02:01=Ο %1 πάει ταξίδι στην άβυσσο! +02:01=Ο %1 άρχισε από νωρίς φέτος τα μπάνια στη θάλασσα! +02:01=Ο %1 έγινε μούσκεμα! +02:01=Ο %1 βράχηκε μέχρι το κόκκαλο! + +; Round starts +02:02=Ας πολεμήσουμε! +02:02=Οπλισμένος και έτοιμος! +02:02=Ας ξεκινήσει το πάρτι! +02:02=Ο τελευταίος όρθιος σκαντζόχοιρος κερδίζει! +02:02=Πάμε! +02:02=Ας ροκάρουμε! +02:02=Ας τζαμάρουμε! +02:02=Αρχίζει... +02:02=Αυτή είναι η απαρχή κάτι μεγάλου... +02:02=Καλώς ήλθατε στο Hedgewars! +02:02=Καλώς ήλθατε στην πρώτη γραμμή! +02:02=Συνέτριψε τους εχθρούς σου! +02:02=Ας νικήσει ο καλύτερος σκαντζόχοιρος! +02:02=Νίκη ή θάνατος! +02:02=Τα λάφυρα πάνε στο νικητή! +02:02=Η ήττα δεν είναι επιλογή! +02:02=Σκορπίστε τον όλεθρο! +02:02=Αφέθηκαν ελεύθεροι οι σκαντζόχοιροι του πολέμου! +02:02=Hedgewars, σας προσφέρεται από το Hedgewars.org +02:02=ΑΑΑΑΕΕΕΕΕΕΡΡΡΡΡΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑ..... +02:02=Είσαι πολύ τυχερός αν δεν είσαι εναντίων του Tiyuri! +02:02=Είσαι πολύ τυχερός αν δεν είσαι εναντίων του unC0Rr! +02:02=Είσαι πολύ τυχερός αν δεν είσαι εναντίων του Nemo! +02:02=Είσαι πολύ τυχερός αν δεν είσαι εναντίων του Smaxx! +02:02=Είσαι πολύ τυχερός αν δεν είσαι εναντίων του Jessor! +02:02=Δώσε όλο το είναι σου! +02:02=Οι χαμένοι καθαρίζουν στο τέλος! +02:02=Ας αρχίσει η μάχη της χιλιετίας! +02:02=Ας αρχίσει η μάχη του αιώνα! +02:02=Ας αρχίσει η μάχη της δεκαετίας! +02:02=Ας αρχίσει η μάχη της χρονιάς! +02:02=Ας αρχίσει η μάχη του μήνα! +02:02=Ας αρχίσει η μάχη της εβδομάδας! +02:02=Ας αρχίσει η μάχη της ημέρας! +02:02=Ας αρχίσει η μάχη της ώρας! +02:02=Δώσε τον καλύτερο εαυτό σου! +02:02=Κατάστρεψε τον εχθρό! +02:02=Καλή τύχη! +02:02=Καλή διασκέδαση! +02:02=Δώσε τον αγώνα τον καλό! +02:02=Πάλεψε βρώμικα! +02:02=Πάλεψε με τιμή! +02:02=Μην τα παρατήσεις! +02:02=Μην παραδοθείς ποτέ! +02:02=Ρόκαρέ τους και σόκαρέ τους! +02:02=Πάμε Πάμε Πάμε! +02:02=Σκαντζόχοιροι προελάστε! +02:02=Μην φοβάσαι, να είσαι ατρόμητος! +02:02=Να είσαι γενναίος και να κατακτάς! + +; Round ends (win; unused atm) +02:03=... + +; Round ends (draw; unused atm) +02:04=... + +; New health crate +02:05=Εισερχόμενη βοήθεια! +02:05=Φαρμακάκι! +02:05=Πρώτες βοήθειες από τον ουρανό! +02:05=Ένα πακετάκι υγείας αποκλειστικά για σένα! +02:05=Καλή υγεία... σε μορφή κουτιού! +02:05=Μια ευγενική χορηγία του Δρ. Ζιβάγκο! +02:05=Είναι εγκεκριμένο και από τον Ε.Ο.Φ.! +02:05=Αυτό θα σε κάνει να νιώσεις καλύτερα! +02:05=Μαγικός Ζωμός...! Ούπς! Λάθος παιχνίδι! +02:05=Περιέχει σουπερμαντολίνη 100%! +02:05=Άρπαξέ το όσο προλαβαίνεις! +02:05=Ένα υγιεινό snack! +02:05=Μια θεραπεία για τον πόνο! +02:05=Περιέχει εκχύλισμα από το σπανάκι του Ποπάϊ! +02:05=Κατεπείγουσα παράδοση! +02:05=Προμήθειες! +02:05=Όποιος πρόλαβε τον κύριο είδε! + +; New ammo crate +02:06=Περισσότερα όπλα! +02:06=Ενισχύσεις! +02:06=Το κουτί της Πανδώρας! +02:06=Αναρωτιέμαι τι όπλο να υπάρχει εκεί μέσα; +02:06=Προμήθειες! +02:06=Τι θα μπορούσε να κρύβεται μέσα; +02:06=Οι γιορτές ήρθαν νωρίς στο Hedgewars! +02:06=Ένα δώρο! +02:06=Ειδική παράδοση! +02:06=Ήταν σκέτος μπελάς να περάσει από το τελωνείο... +02:06=Παιχνίδια μαζικής καταστροφής από τον ουρανό! +02:06=Προσοχή! Ασταθές περιεχόμενο! +02:06=Περισυνέλεξέ το ή ανατίναξέ το, εσύ αποφασίζεις! +02:06=Εκρηκτικά αγαθά! +02:06=Χμμμμμμ... πυρομαχικά εν' όψη! +02:06=Ένα κουτί καταστρεπτικής δύναμης! +02:06=Συστημένο! +02:06=Οτιδήποτε μπορεί να περιέχει το κουτί, εκτός από πίτσα! +02:06=Πιάσ'το! +02:06=Επικείμενη ρίψη οπλισμού! +02:06=Μην το αφήσεις να πέσει στα χέρια του εχθρού! +02:06=Αστραφτερά νέα παιχνίδια! +02:06=Ένα μυστηριώδες κουτί! + +; New utility crate +02:07=Ώρα για μαστορέματα! +02:07=Αυτό όλο και κάπου θα φανεί χρήσιμο... +02:07=Βοηθήματα! +02:07=Προσοχή! Δεν πωλείται στα καταστήματα! +02:07=Απευθείας από το εργαστήρι του Κύρου Γρανάζη! +02:07=Περισσότερα βοηθήματα! +02:07=Εργαλεία για το λαό! +02:07=Αυτό είναι καλό! +02:07=Χρησιμοποίησέ το με φειδώ! +02:07=Ωωωχ! Αυτό το κουτί είναι βαρύ! +02:07=Μπορεί να σου χρησιμεύσει σε κάτι! + +; Hog (%1) skips his turn +02:08=Ο %1 είναι τόσο βαρετός... +02:08=Ο %1 βαριέται ασυστόλως! +02:08=Ο %1 είναι ένας τεμπέλης σκαντζόχοιρος! +02:08=Ο %1 είναι απερίσκεπτος! +02:08=Ο %1 τα παράτησε! +02:08=Τον %1 τον πήρε ο ύπνος... +02:08=Ο %1 είναι ρίψασπις! +02:08=Ο %1 ατιμωτικά χάνει τη σειρά του! +02:08=Ο %1 είναι πραγματικά ξύστης! +02:08=Ο %1 χρειάζεται λίγο παραπάνω ενθάρρυνση! +02:08=Ο %1 είναι ειρηνιστής! +02:08=Ο %1 κάνει την ανάπαυλά του! +02:08=Ο %1 ξεκουράζεται! +02:08=Ο %1 κρατάει δυνάμεις για μετά! +02:08=Ο %1 χαλαρώνει! +02:08=Ο %1 δεν πιστεύει στις ικανότητές του! +02:08=Ο %1 αποφασίζει να μην κάνει τίποτα απολύτως! +02:08=Ο %1 αφήνει τον εχθρό να αυτοκαταστραφεί! +02:08=Ο %1 θα ήταν άθλιος στα πάρτι! +02:08=Ο %1 κάνει απόκρυψη! +02:08=Ο %1 αποφάσισε να αφήσει την ευκαιρία ανεκμετάλλευτη! +02:08=Ο %1 αποφάσισε πως το καλύτερο που έχει να κάνει είναι... να μην κάνει τίποτα! +02:08=Ο %1 είναι μεγάλη κωλώστρα! +02:08=Ο %1 είναι κότα! +02:08=Ο %1 έχασε το χρώμα του! +02:08=Ο %1 είναι δειλός! +02:08=Ο %1 περιμένει τον Ξαφνικό Θάνατο! +02:08=Ο %1 δεν είναι ο τύπος του αγωνιστή! +02:08=Ο %1 επανεξετάζει τον σκοπό της ζωής του! +02:08=Ο %1 δεν ήταν ποτέ του εύστοχος ούτως ή άλλως... +02:08=Ο %1 δεν ήθελε να καταταγεί στο στρατό, εδώ που τα λέμε! +02:08=Σταμάτα να σπαταλάς το χρόνο μας, %1... +02:08=Είμαι πολύ απογοητευμένος από σένα, %1... +02:08=Έλα, μπορείς περισσότερα από αυτό %1... +02:08=Το φρόνημα του %1 έχει τσακίσει για τα καλά! +02:08=Ο %1 προφανώς έχει καλύτερα πράγματα να κάνει! +02:08=Ο %1 έχει κλάσει μέντες! +02:08=Ο %1 αποκοιμήθηκε! + +; Hog (%1) hurts himself only +02:09=Ο %1 πρέπει να εξασκηθεί στην σκοποβολή! +02:09=Ο %1 φαίνεται να έχει αυτοκτονικές τάσεις! +02:09=Ο %1 πολεμάει στην λάθος πλευρά! +02:09=Ο %1 είναι emo! +02:09=Ο %1 κρατούσε το όπλο του ανάποδα! +02:09=Ο %1 είναι μαζόχας! +02:09=Ο %1 δεν έχει το ένστικτο της αυτοσυντήρησης! +02:09=Ο %1 τα έκανε σαλάτα! +02:09=Ο %1 τα σκάτωσε! +02:09=Αυτή ήταν βολή γιωτά, %1! +02:09=Ο %1 είναι λιγάκι απρόσεκτος με επικίνδυνα όπλα! +02:09=Ο %1 πρέπει να σκεφτεί να αλλάξει καριέρα! +02:09=Η χειρότερη βολή. Όλων των εποχών! +02:09=Όχι %1,το κάνεις λάθος... Σημαδεύεις τον Ε-Χ-Θ-Ρ-Ο! +02:09=Ο %1 θα έπρεπε να καταστρέφει μόνο τον εχθρό! +02:09=Ο %1 κινείται ένα βήμα κοντύτερα στην αυτοκτονία. +02:09=Ο %1 βοηθάει τον εχθρό! +02:09=Αυτό ήταν χαζό %1! +02:09=Το ρητό του %1 είναι : "Τα αγαθά κόποις κτώνται"! +02:09=Ο %1 είναι μπερδεμένος! +02:09=Ο %1 αυτοτραυματίστηκε πάνω στη σύγχυσή του! +02:09=Ο %1 έχει την ικανότητα να γελοιοποιείται! +02:09=Ο %1 είναι γκαντέμης! +02:09=Ο %1 είναι ατζαμής! +02:09=Ο %1 είναι άτσαλος! +02:09=Ο %1 είναι αδέξιος! +02:09=Ο %1 είναι γιωτάς! +02:09=Ο %1 είναι γιωτόμπαλο! +02:09=Ο %1 δείχνει στον εχθρό τις ικανότητες του! +02:09=Ο %1 δεν μπορεί να είναι τέλειος κάθε στιγμή! +02:09=Μην ανησυχείς %1, κανείς δεν είναι άσφαλτος! +02:09=Ο %1 το έκανε αυτό εσκεμμένως! +02:09=Ο %1 το έκανε αυτό επίτηδες! +02:09=Ο %1 το έκανε αυτό εξεπίτηδες! +02:09=Μην ανησυχείς, δε θα το πω πουθενά %1... +02:09=Τι ντροπή! +02:09=Είμαι σίγουρος πως αυτό δεν το είδε κανείς %1! +02:09=Ο %1 πρέπει να ξαναδιαβάσει το εγκόλπιο του μαχητή! +02:09=Του %1 το όπλο δυσλειτούργησε! + +; Hog shot an home run (using the bat and another hog) +02:10=Μπήκε σε τροχιά! +02:10=Εκτοξεύτηκε στο διάστημα... +02:10=Στο άπειρο κι ακόμα παραπέρα! + +; Hog (%1) has to leave (team is gone) +02:11=Ο %1 πρέπει να πάει για ύπνο! +02:11=Ο %1 μοιάζει πολυάσχολος για να παίξει! +02:11=Διακτίνησε τον %1, Σποκ! +02:11=Ο %1 πρέπει να πηγαίνει! +02:11=Ο %1 ξέχασε το θερμοσίφωνο αναμμένο! +02:11=Ο %1 ξέχασε το φούρνο αναμμένο! + +; Weapon Categories +03:00=Χειροβομβίδα με χρονοδιακόπτη +03:01=Χειροβομβίδα με χρονοδιακόπτη +03:02=Βαλλιστικό Όπλο +03:03=Καθοδηγούμενο Όπλο +03:04=Περίστροφο (πολλαπλές βολές) +03:05=Σκαπτικό Εργαλείο +03:06=Δράση (ναι... καλά!) +03:07=Βοήθημα Μεταφοράς +03:08=Βόμβα Εγγύτητας +03:09=Περίστροφο (πολλαπλές βολές) +03:10=ΜΠΟΥΜ! +03:11=Μπονκ! +03:12=Πολεμικές Τέχνες +03:13=UNUSED +03:14=Βοήθημα Μεταφοράς +03:15=Αεροπορική Επιδρομή +03:16=Αεροπορική Επιδρομή +03:17=Σκαπτικό Εργαλείο +03:18=Βοήθημα +03:19=Βοήθημα Μεταφοράς +03:20=Δράση +03:21=Βαλλιστικό Όπλο +03:22=Φώναζέ με Ιντιάνα! +03:23=(Χωρίς Πλάκα) Πολεμικές Τέχνες +03:24=Τούρτα 0% λιπαρά με όλη τη γεύση! +03:25=Στολή +03:26=Ζουμερή Χειροβομβίδα +03:27=Πύρινη χειροβομβίδα +03:28=Βαλλιστικό Όπλο +03:29=Βαλλιστικό Όπλο +03:30=Αεροπορική Επιδρομή +03:31=Τηλεχειριζόμενη Βόμβα +03:32=Προσωρινό Φαινόμενο +03:33=Προσωρινό Φαινόμενο +03:34=Προσωρινό Φαινόμενο +03:35=Προσωρινό Φαινόμενο +03:36=Προσωρινό Φαινόμενο +03:37=Προσωρινό Φαινόμενο +03:38=Περίστροφο (πολλαπλές βολές) +03:39=Βοήθημα Μεταφοράς +03:40=Αποτεφρωτική Χειροβομβίδα +03:41=Θα ζήσω ελεύθερο πουλί... +03:42=Η φυσική μπορεί να γίνει πολύ διασκεδαστική... +03:43=Εκτελώντας την φονική συμφωνία του Μπετόβεν +03:44=Ανάλωση κατά προτίμηση πριν από το 1923 +03:45=Η δύναμη της επιστήμης +03:46=Το υγρόν πύρ! +03:47=Κόλλα τες κάπου χρήσιμα! +03:48=Ήρθε η ώρα του σφυριού! +03:49=Πάντες οι εν τοις μνημείοις, εκπορεύσονται... + +; Weapon Descriptions (use | as line breaks) +04:00=Κάντε επίθεση τους εχθρούς σας χρησιμοποιώντας μια απλή|χειροβομβίδα. Θα εκραγεί μόλις το χρονόμετρο τερματίσει.|1-5: Θέστε το χρονόμετρο της χειροβομβίδας.|Επίθεση : Κρατήστε πατημένο για μακρύτερη βολή. +04:01=Κάντε επίθεση στους εχθρούς σας χρησιμοποιώντας μια|χειροβομβίδα διασποράς. Θα διαρραγεί σε μικρότερες|βόμβες μόλις το χρονόμετρό της τερματίσει.|1-5: Θέστε το χρονόμετρο της χειροβομβίδας.|Επίθεση : Κρατήστε πατημένο για μακρύτερη βολή. +04:02=Κάντε επίθεση στους εχθρούς σας χρησιμοποιώντας ένα|βαλλιστικό βλήμα το οποίο επηρεάζεται από τον άνεμο.|Επίθεση : Κρατήστε πατημένο για μακρύτερη βολή. +04:03=Εκτοξεύστε μια εκρηκτική μέλισσα η οποία θα "κλειδώσει"|στον επιλεγμένο στόχο. Αν δεν πυροδοτήσετε με πλήρη|ισχύ θα βελτιώσετε την ακρίβεια του όπλου.|Δείκτης ποντικιού : Επιλογή στόχου.|Επίθεση : Κρατήστε πατημένο για ισχυρότερη βολή. +04:04=Κάντε επίθεση στους εχθρούς σας χρησιμοποιώντας μια|καραμπίνα με δύο σφαίρες. Χάρη στην ισχύ της δεν χρειάζεστε|απευθείας χτυπήματα για να βλάψετε τους αντιπάλους σας.|Επίθεση : Πυροβολήστε (δις). +04:05=Κινηθείτε υπογείως! Χρησιμοποιήστε το Κρουστικό Δράπανο για να σκάψετε|μια σήραγγα στο έδαφος και να φτάσετε απρόσιτες περιοχές.|Επίθεση : Ξεκινήστε ή σταματήστε το σκάψιμο. +04:06=Βαρεθήκατε; Δεν υπάρχει τρόπος να επιτεθείτε; Κάνετε οικονομία στα|πυρομαχικά; Κανένα πρόβλημα! Απλώς παραχωρήστε τη σειρά σας, δειλέ!|(Σημ. Μετ.) : Προέρχεται από ομηρική φράση (Ιλιάδα Σ 104) όπου ο Αχιλλέας|απευθυνόμενος στη μητέρα του Θέτιδα αποκαλεί τον εαυτό του «άχθος|αρούρης» (βάρος της γης) μετά από μεγάλο διάστημα απραξίας και|αποχής από τη μάχη.)|Επίθεση : Παραχωρήστε τη σειρά σας χωρίς μάχη. +04:07=Γεφυρώστε μεγάλες αποστάσεις χρησιμοποιώντας το σχοινί.|Χρησιμοποιήστε την ορμή σας για να γλιστρήσετε πάνω σε άλλους|σκαντζόχοιρους ή ρίξτε χειροβομβίδες και άλλα όπλα πάνω τους.|Επίθεση : Εκτοξεύστε ή αφήστε το σχοινί.|Άλμα εις Μήκος : Ρίξτε χειροβομβίδες ή άλλα συναφή όπλα. +04:08=Κρατήστε τους εχθρούς σας μακρυά αφήνοντας μια νάρκη|σε στενά περάσματα ή ακριβώς κάτω από τα πόδια τους.|Φροντίστε όμως να οπισθοχωρήσετε σε ασφαλή απόσταση|πριν αυτή ενεργοποιηθεί πάνω σας!|Επίθεση : Ρίξτε τη νάρκη δίπλα στα πόδια σας. +04:09=Δεν είστε σίγουροι για το σημάδι σας; Χρησιμοποιήστε το Desert Eagle|για να επιτεθείτε χρησιμοποιώντας μέχρι και τέσσερις πυροβολισμούς.|Επίθεση : Πυροβολήστε (τετράκις). +04:10=Η ωμή δύναμη είναι πάντα στις επιλογές σας. Ρίξτε αυτό το κλασσικό|εκρηκτικό δίπλα στους εχθρούς σας και οπισθοχωρήστε.|Επίθεση : Ρίξτε το δυναμίτη δίπλα στα πόδια σας. +04:11=Ξεφορτωθείτε τους αντίπαλους σκαντζόχοιρους εκτοξεύοντάς τους|έξω από τα σύνορα του χάρτη ή κατευθείαν στο νερό. Ή τι θα λέγατε|να κλοτσούσατε πάνω στους "φίλους" σας μερικές νάρκες;|Επίθεση : Χτυπήστε ότι βρίσκεται μπροστά σας. +04:12=Πάρτε το προσωπικά και πλησιάστε τον αντίπαλό σας|για να απελευθερώσετε την δύναμη αυτής της παρολίγον|θανάσιμης τεχνικής των πολεμικών τεχνών.|Επίθεση : Εκτελέστε την Fire Punch. +04:13=UNUSED +04:14=Φοβάστε τα ύψη; Καλύτερα χρησιμοποιήστε ένα αλεξίπτωτο.|Θα ξεδιπλωθεί μόλις πέσετε αρκετά χαμηλά και θα σώσει το|σκαντζόχοιρό σας από το να πάθει ζημιά λόγω της πτώσης.|Επίθεση : Ξεδιπλώστε το αλεξίπτωτο.|Άλμα εις Μήκος: Ρίξτε χειροβομβίδες ή άλλα συναφή όπλα. +04:15=Καλέστε ένα αεροσκάφος να επιτεθεί στους εχθρούς σας|χρησιμοποιώντας βόμβες αέρος-εδάφους.|Αριστερά/Δεξιά : Καθορίστε την κατεύθυνση της αεροπορικής επίθεσης.|Δείκτης ποντικιού : Επιλέξτε την ζώνη ρίψης. +04:16=Καλέστε ένα αεροσκάφος να ρίξει αρκετές νάρκες προς τον στόχο.|Αριστερά/Δεξιά : Καθορίστε την κατεύθυνση της αεροπορικής επίθεσης.|Δείκτης ποντικιού : Επιλέξτε την ζώνη ρίψης. +04:17=Χρειάζεστε καταφύγιο; Χρησιμοποιήστε το καμινέτο για να σκάψετε|μια σήραγγα σε στερεό έδαφος με σκοπό την κάλυψη/απόκρυψη.|Επίθεση : Ξεκινήστε ή σταματήστε το σκάψιμο. +04:18=Χρειάζεστε επιπρόσθετη προστασία ή επιθυμείτε να διασχίσετε|απροσπέλαστα εδάφη; Τοποθετήστε μερικές δοκούς όπως εσείς|επιθυμείτε.|Αριστερά/Δεξιά : Επιλέξτε την δοκό που θα τοποθετηθεί.|Δείκτης ποντικιού : Τοποθετήστε την δοκό σε έγκυρη θέση. +04:19=Αν χρησιμοποιηθεί την κατάλληλη στιγμή, η τηλεμεταφορά|μπορεί να είναι ισχυρότερη από σχεδόν όλα τα άλλα όπλα|καθώς σας επιτρέπει να διασώζετε σκαντζόχοιρους από|επικίνδυνες καταστάσεις μέσα σε μερικά δευτερόλεπτα.|Δείκτης ποντικιού : Επιλέξτε την περιοχή του στόχου. +04:20=Σας επιτρέπει να παίξετε την τρέχουσα σειρά με ένα άλλο σκαντζόχοιρο.|Επίθεση : Ενεργοποιήστε την αλλαγή σειράς παιξίματος των σκαντζόχοιρων. +04:21=Ρίξτε ένα βαλλιστικό βλήμα που μοιάζει με πύραυλο το οποίο|κατά την πρόσκρουση θα απελευθερώσει πολλαπλές βόμβες.|Επίθεση : Εκτόξευση με πλήρη ισχύ. +04:22=Δεν είναι αποκλειστικότητα μόνο του Indiana Jones!|Το μαστίγιο είναι ένα χρήσιμο όπλο σε πολλές περιστάσεις.|Ιδιαιτέρως όταν θα θέλατε να σπρώξετε κάποιον σε ένα γκρεμό.|Επίθεση : Χτυπήστε οτιδήποτε βρίσκεται μπροστά σας. +04:23=Εάν δεν έχετε τίποτα να χάσετε, αυτό μπορεί να είναι πολύ|χρήσιμο. Θυσιάστε τον σκαντζόχοιρό σας, εκτοξεύοντάς|τον σε μια καθορισμένη κατεύθυνση χτυπώντας ότι|βρεθεί στο δρόμο του, σκάζοντας στο τέλος.|Επίθεση : Ξεκινήστε την καταστροφική και θανάσιμη επίθεση. +04:24=Χρόνια Πολλά! Θέστε σε λειτουργία την τούρτα, αφήστε την να|περπατήσει μέχρι να φτάσει ακριβώς δίπλα από τους αντιπάλους σας|και αφιερώστε τους ένα εκρηκτικό πάρτι. Η τούρτα είναι ικανή να|διασχίσει σχεδόν όλα τα εμπόδια αλλά μπορεί να εκραγεί νωρίτερα|κατ' αυτόν τον τρόπο.|Επίθεση : Ξεκινήστε την τούρτα, η οποία θα εκραγεί μόλις λήξει το|χρονόμετρο ή σταματήστε τη για να εκραγεί στην τρέχουσα θέση. +04:25=Χρησιμοποιήστε αυτή τη στολή μεταμφίεσης για|να αναγκάσετε τους αντιπάλους σας να πηδήξουν|προς τον σκαντζόχοιρό σας (και να πέσουν σε κάποιο|κενό ή τρύπα).|Επίθεση : Χρησιμοποιήστε τη στολή και προσπαθήστε|να αποπλανήσετε κάποιον άλλο σκαντζόχοιρο. +04:26=Εκτοξεύστε αυτό το ζουμερό καρπούζι στους εχθρούς σας.|Όταν το χρονόμετρο τερματίσει, θα διαρραγεί σε αρκετά|εκρηκτικά κομμάτια.|1-5: Θέστε το χρονόμετρο.|Επίθεση : Κρατήστε πατημένο για μακρύτερη βολή. +04:27=Το πυρ της κολάσεως θα λούσει τους αντιπάλους σας χρησιμοποιώντας|αυτό το πύρινο εκρηκτικό. Μην πλησιάσετε πολύ στην έκρηξη καθώς|οι μικρότερες φωτιές ενδέχεται να διαρκέσουν περισσότερο.|Επίθεση : Κρατήστε πατημένο για περισσότερη ισχύ. +04:28=Μόλις αυτός ο πύραυλος αγγίξει το στερεό έδαφος θα|ξεκινήσει το σκάψιμο και θα εκραγεί μόλις το φιτίλι του|καεί ή αναδυθεί από το έδαφος σε αέρα ξανά.|Επίθεση : Κρατήστε πατημένο για περισσότερη ισχύ. +04:29=Αυτό το όπλο δεν βγάζει καραμέλες για μικρά παιδιά!|Ο εκτοξευτής χρωμοσφαιρίδιων εκτοξεύει πολλές|μικρές χρωματιστές σφαίρες με εκρηκτική γόμωση.|Επίθεση : Εκτόξευση με πλήρη ισχύ.|Πάνω/Κάτω : Ρύθμιση στοχεύσεως. +04:30=Καλέστε ένα αεροσκάφος να επιτεθεί με μια πανίσχυρη βόμβα Ναπάλμ.|Με κατάλληλη στόχευση το όπλο αυτό μπορεί να εξαλείψει τεράστια|κομμάτια του τοπίου συμπεριλαμβανομένων και κάποιων άτυχων|σκαντζόχοιρων οι οποίοι θα έχουν την ατυχία να βρεθούν στο διάβα του.|Αριστερά/Δεξιά : Καθορίστε την κατεύθυνση της αεροπορικής επίθεσης.|Δείκτης ποντικιού : Επιλέξτε την ζώνη ρίψης. +04:31=Το τηλεκατευθυνόμενο είναι το ιδανικό όπλο για να περισυλλέξετε|κιβώτια ή να επιτεθείτε σε απομακρυσμένους σκαντζόχοιρους.|Είτε οδηγήστε το κατευθείαν πάνω στους εχθρούς σας ή ρίξτε|μερικές βόμβες πρώτα.|Επίθεση : Εκτοξεύστε το τηλεκατευθυνόμενο ή ρίξτε βόμβες.|Άλμα εις μήκος : Οι Βαλκυρίες θα σας συνοδέψουν στη μάχη!|Πάνω/Κάτω : Κατευθύνετε το τηλεκατευθυνόμενο. +04:32=Η μικροβαρύτητα είναι πιο αποτελεσματική από οποιαδήποτε|δίαιτα! Πηδήξτε ψηλότερα και μακρύτερα ή κάντε τους εχθρούς|σας να εκτοξευτούν ακόμα μακρύτερα.|Επίθεση : Ενεργοποίηση μικροβαρύτητας. +04:33=Μερικές φορές χρειάζεστε αυτή τη λίγη επιπρόσθετη ώθηση|για να προκαλέσετε λίγο παραπάνω ζημιά.|Επίθεση : Ενεργοποίηση επιπρόσθετης ζημιάς. +04:34=Μια ενεργειακή ασπίδα κατευθείαν από το εργαστήριο του Nikola Tesla!|Επίθεση : Ενεργοποίηση ασπίδας. +04:35=Μερικές φορές ο χρόνος κυλάει πολύ γρήγορα. Κερδίστε μερικά|επιπρόσθετα δευτερόλεπτα για να τελειώσετε την επίθεσή σας.|Επίθεση : Ενεργοποίηση επιπρόσθετου χρόνου. +04:36=Ας το παραδεχτούμε, μερικές φορές είστε απλώς τόσο κακός στην στόχευση.|Λάβετε λίγη βοήθεια χρησιμοποιώντας νεωτεριστική τεχνολογία αιχμής.|Επίθεση : Ενεργοποίηση διόπτρας. +04:37=Μην φοβάστε το φως της αυγής! Θα κρατήσει μονάχα για όσο|διαρκεί η σειρά σας αλλά θα σας επιτρέψει να απορροφήσετε|ως υγεία, την ζημιά που προκαλείτε στους αντιπάλους σας.|Επίθεση : Ενεργοποίηση βαμπιρισμού. +04:38=Το τυφέκιο του ελεύθερου σκοπευτή μπορεί να γίνει το πιο|καταστρεπτικό όπλο στο οπλοστάσιό σας, ωστόσο είναι πολύ|αναποτελεσματικό σε κοντινές αποστάσεις. Η ζημιά η οποία|προκαλείται αυξάνει με την απόσταση από το στόχο.|Επίθεση : Πυροβολήστε (δις). +04:39=Πετάξτε σε άλλα μέρη του χάρτη χρησιμοποιώντας τον ιπτάμενο|δίσκο. Αυτό το δύσκολο στο χειρισμό βοήθημα είναι ικανό να|σας μεταφέρει σχεδόν σε κάθε θέση του πεδίου μάχης.|Επίθεση : Ενεργοποίηση ιπτάμενου δίσκου|Πάνω/Αριστερά/Δεξιά : Εφαρμόστε δύναμη προς μια κατεύθυνση.|Άλμα εις μήκος : Ρίξτε χειροβομβίδες ή άλλα συναφή όπλα. +04:40=Βάλτε φωτιά χρησιμοποιώντας αυτή τη φιάλη|η οποία είναι γεμάτη με εύφλεκτο υγρό.|Επίθεση : Κρατήστε πατημένο για ισχυρότερη βολή. +04:41=Το πτηνό μπορεί να κουβαλήσει τον σκαντζόχοιρό σας|και να ρίξει αυγά καταπάνω στους εχθρούς σας!|Επίθεση : Ενεργοποιήστε το πτηνό και ρίξτε αυγά.|Πάνω/Αριστερά/Δεξιά : Φτερουγίστε προς μια κατεύθυνση. +04:42=Αυτή η φορητή σκουληκότρυπα είναι ικανή να μεταφέρει|ακαριαία εσάς, τους εχθρούς σας, ή τον οπλισμό σας|μεταξύ δύο σημείων της πίστας. Χρησιμοποιήστε τη με|σύνεση και θα έχετε τεράστια επιτυχία!|Επίθεση : Εκτοξεύστε μια σκουληκότρυπα.|Εναλλαγή : Εναλλάξτε τα χρώματα της σκουληκότρυπας. +04:43=Κάντε την πρώτη σας μουσική εμφάνιση μια εκρηκτική επιτυχία!|Ρίξτε ένα πιάνο από τα ουράνια, αλλά προσοχή...|κάποιος πρέπει να το παίζει, και αυτό θα σας στοιχίσει τη ζωή σας!|Δείκτης ποντικιού : Επιλογή στόχου.|F1-F9 : Παίξτε το πιάνο. +04:44=Αυτό δεν είναι απλώς ένα κομμάτι τυρί, είναι βιολογικός|πόλεμος! Η έκρηξη δεν θα προκαλέσει μεγάλη ζημιά αλλά|σαφώς θα δηλητηριάσει οποιονδήποτε άτυχο σκαντζόχοιρο|βρεθεί στην πορεία του βρωμερού σύννεφου!|1-5 : Θέστε το χρονόμετρο.|Επίθεση : Κρατήστε πατημένο για ισχυρότερη βολή. +04:45=Όλα τα φροντιστήρια φυσικής που κάνατε, τελικά απέδωσαν καρπούς.|Ρίξτε ένα καταστρεπτικό ημιτονοειδές κύμα στους αντιπάλους σας.|Η δύναμη των σολιτονίων είναι στα χέρια σας! Προσοχή όμως!|Αυτό το όπλο έχει τρομερή κλωτσιά.(Το όπλο αυτό είναι ημιτελές).|Επίθεση : Πυροβολήστε. +04:46=Καλύψτε τους εχθρούς σας με τσιτσιριστή υγρή φλόγα.|Σίγουρα σπάει τον "πάγο" της αποξένωσης!|Επίθεση : Ενεργοποίηση φλογοβόλου.|Πάνω/Κάτω : Ρύθμιση στοχεύσεως.|Αριστερά/Δεξιά : Ρύθμιση ισχύος εκροής. +04:47=Διπλάσια διασκέδαση με δύο αγκαθωτές, ύπουλες, κολλώδης νάρκες.|Θέστε μια αλυσιδωτή αντίδραση ή υπερασπιστείτε τον εαυτό σας|(ή και τα δύο!).|Επίθεση : Κρατήστε πατημένο για μακρύτερη βολή (δις). +04:48=Γιατί πρέπει μόνο οι κατσαρίδες να δέχονται όλη την κακομεταχείριση;|Χτυπώντας ένα σκαντζόχοιρο μπορεί να είναι εξίσου διασκεδαστικό!|Ένα καλό χτύπημα από αυτό το σφυρί θα αφαιρέσει το ένα τρίτο|από την υγεία του σκαντζόχοιρου και θα τον βυθίσει υπογείως.|Επίθεση : Ενεργοποίηση σφυριού. +04:49=Αναστήστε τους φίλους σας! Προσέξτε όμως ότι μπορεί να αναστήσει|επίσης και τους εχθρούς σας.|Επίθεση : Κρατήστε πατημένο το πλήκτρο επιθέσεως για αργή νεκρανάσταση.|Πάνω : Επιταχύνετε τη νεκρανάσταση. + +; Game goal strings +05:00=Κανόνες Παιχνιδιού +05:01=Ισχύουν οι ακόλουθοι κανόνες : +05:02=Φρούρια : Υπερασπιστείτε το φρούριό σας, συντρίψτε τους εχθρούς σας! +05:03=Μικροβαρύτητα : Προσέξτε πού πατάτε! +05:04=Ασπίδα: Οι σκαντζόχοιροι είναι (σχεδόν) άτρωτοι. +05:05=Βαμπιρισμός : Οι σκαντζόχοιροι θα γιατρεύονται από την προκαλούμενη ζημιά. +05:06=Μοίρα : Οι σκαντζόχοιροι θα πλήττονται εξίσου για την προκαλούμενη ζημιά. +05:07=Προστασία του Βασιλιά : Μην αφήσετε τον βασιλιά σας να πεθάνει!|Τοποθετήστε το βασιλιά : Διαλέξτε ένα προστατευόμενο σημείο εκκίνησης για το βασιλιά σας. +05:08=Τοποθέτηση Σκαντζόχοιρων : Τοποθετήστε τους σκαντζόχοιρους πριν ξεκινήσει το παιχνίδι. +05:09=Πυροβολικό: Οι σκαντζόχοιροι δεν μπορούν να προχωρήσουν για να αλλάξουν θέση. +05:10=Άφθαρτο Έδαφος : Τα περισσότερα όπλα δεν θα καταστρέψουν το έδαφος. +05:11=Κοινά Πυρομαχικά : Όλες οι ομάδες του ιδίου χρώματος μοιράζονται τα πυρομαχικά τους. +05:12=Χρονισμός Ναρκών : Οι νάρκες θα εκρήγνυνται μετά από %1 δευτερόλεπτο/α. +05:13=Χρονισμός Ναρκών : Οι νάρκες θα εκρήγνυνται ακαριαία. +05:14=Χρονισμός Ναρκών : Οι νάρκες θα εκρήγνυνται μετά από 0 - 5 δευτερόλεπτα. +05:15=Τροποποιητής Ζημιάς: Όλα τα όπλα θα προκαλούν %1% ζημιά. +05:16=Η υγεία όλων των σκαντζόχοιρων επαναφέρεται στην αρχική της τιμή στο τέλος κάθε γύρου. +05:17=Οι ελεγχόμενοι από τον υπολογιστή σκαντζόχοιροι επανεμφανίζονται όταν πεθάνουν. +05:18=Αμέτρητες Επιθέσεις. +05:19=Τα όπλα επαναφέρονται στο τέλος κάθε γύρου. +05:20=Τα όπλα δεν χρησιμοποιούνται από κοινού από τους σκαντζόχοιρους. diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/en.txt --- a/share/hedgewars/Data/Locale/en.txt Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/en.txt Mon Jan 17 23:22:52 2011 +0100 @@ -52,6 +52,7 @@ 00:49=Resurrector 00:50=Drill Strike 00:51=Mudball +00:52=No weapon selected 01:00=Let's fight! 01:01=Round draw diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/es.lua --- a/share/hedgewars/Data/Locale/es.lua Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/es.lua Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/fr.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/fr.lua Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/fr.txt --- a/share/hedgewars/Data/Locale/fr.txt Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/fr.txt Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/hedgewars_el.ts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/hedgewars_el.ts Mon Jan 17 23:22:52 2011 +0100 @@ -0,0 +1,2284 @@ + + + + + AmmoSchemeModel + + new + Νέο + + + + FreqSpinBox + + Never + Ποτέ + + + Every %1 turn + + Κάθε %1 γύρο + Κάθε %1 γύρους + + + + + GameCFGWidget + + Edit weapons + Επεξεργασία όπλων + + + Error + Σφάλμα + + + Illegal ammo scheme + Ασύμβατος σχεδιασμός όπλων + + + Edit schemes + Επεξεργασία σχεδιασμών + + + When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa) + Όταν αυτή η επιλογη είναι ενεργοποιημένη, επιλέγοντας ένα σχεδιασμό παιχνιδιού θα επιλέγεται αυτομάτως ένα όπλο (και αντιστρόφως) + + + + HWChatWidget + + %1 *** %2 has been removed from your ignore list + %1 *** %2 αφαιρέθηκε από τη "μαύρη" λίστα + + + %1 *** %2 has been added to your ignore list + %1 *** %2 προστέθηκε στη "μαύρη" λίστα + + + %1 *** %2 has been removed from your friends list + %1 *** %2 αφαιρέθηκε από τη λίστα φίλων + + + %1 *** %2 has been added to your friends list + %1 *** %2 προστέθηκε στη λίστα φίλων + + + + HWForm + + new + Νέο + + + Error + Σφάλμα + + + OK + Εντάξει + + + Unable to start the server + Δεν είναι δυνατόν να ξεκινήσει ο εξυπηρετητής + + + Cannot save record to file %1 + Δεν μπορεί να σωθεί η εγγραφή στο αρχείο %1 + + + Please select record from the list above + Παρακαλώ επέλεξε εγγραφή από την παραπάνω λίστα + + + DefaultTeam + Ομάδα εξ' ορισμού + + + Hedgewars Demo File + File Types + Τύπος Αρχείων + Αρχείο Επιδείξεων Hedgewars + + + Hedgewars Save File + File Types + Τύπος Αρχείων + Αρχείο Αποθήκευσης Hedgewars + + + + HWGame + + el.txt + el.txt + + + Cannot open demofile %1 + Δεν μπορεί να φορτωθεί το αρχείο επιδείξεων %1 + + + + HWMapContainer + + Map + Χάρτης + + + Themes + Θέματα + + + Filter + Φίλτρο + + + All + Όλα + + + Small + Μικρό + + + Medium + Μέτριο + + + Large + Μεγάλο + + + Cavern + Σπηλιά + + + Wacky + Εξωφρενικό + + + Type + Τύπος + + + Small tunnels + Μικρές σήραγγες + + + Medium tunnels + Μέτριες σήραγγες + + + Large tunnels + Μεγάλες σήραγγες + + + Small floating islands + Μικρά επιπλέοντα νησιά + + + Medium floating islands + Μέτρια επιπλέοντα νησιά + + + Large floating islands + Μεγάλα επιπλέοντα νησιά + + + + HWNetServersModel + + Title + Τίτλος + + + IP + IP + + + Port + Θύρα + + + + HWNewNet + + The host was not found. Please check the host name and port settings. + Δεν βρέθηκε αποδέκτης (host). Παρακαλώ ελέγξτε το όνομα αποδέκτη (hostname) και τις ρυθμίσεις (port settings). + + + Connection refused + Connection refused + + + Room destroyed + Το δωμάτιο καταστράφηκε + + + Quit reason: + Λόγος αποχώρησης: + + + You got kicked + Σε πέταξαν έξω + + + Password + Κωδικός + + + Your nickname %1 is +registered on Hedgewars.org +Please provide your password +or pick another nickname: + Your nickname %1 is +registered on Hedgewars.org +Please provide your password +or pick another nickname: + + + %1 *** %2 has joined the room + %1 *** %2 εισήλθε στο δωμάτιο + + + %1 *** %2 has joined + %1 *** %2 εισήλθε + + + %1 *** %2 has left (%3) + %1 *** %2 εγκατέλειψε (%3) + + + %1 *** %2 has left + %1 *** %2 εγκατέλειψε + + + Your nickname %1 is +registered on Hedgewars.org +Please provide your password below +or pick another nickname in game config: + Το ψευδώνυμο %1 είναι ήδη +καταχωρημένο στο Hedgewars.org +Παρακαλώ εισάγετε τον κωδικό σας +ή επιλέξτε άλλο ψευδώνυμο από τις +ρυθμίσεις του παιχνιδιού: + + + + KB + + SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib. + Το SDL_ttf επέστρεψε σφάλμα καθώς διερμήνευσε κείμενο. Το πιο πιθανό είναι αυτό να σχετίζεται με το σφάλμα στο freetype2. Προτείνεται να αναβαθμίσετε το freetype lib. + + + + PageAdmin + + Server message: + Server message: + + + Set message + Set message + + + Clear Accounts Cache + Καθαρισμός μνήμης λογαριασμών + + + Fetch data + Προσκομιδή δεδομένων + + + Server message for latest version: + Μήνυμα εξηπηρετητή για την τελευταία έκδοση: + + + Server message for previous versions: + Μήνυμα εξηπηρετητή για προηγούμενες εκδόσεις: + + + Latest version protocol number: + Αριθμός πρωτοκόλλου τελευταίας έκδοσης : + + + MOTD preview: + Προεπισκόπηση MOTD : + + + Set data + Τοποθέτηση δεδομένων + + + + PageConnecting + + Connecting... + Σύνδεση... + + + + PageEditTeam + + General + Γενικά + + + Advanced + Για προχωρημένους + + + + PageGameStats + + <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> + <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> + + + <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> + + <p>The best killer is <b>%1</b> with <b>%2</b> kill in a turn.</p> + <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> + + + + <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> + + <p>A total of <b>%1</b> hedgehog was killed during this round.</p> + <p>A total of <b>%1</b> hedgehogs were killed during this round.</p> + + + + Details + Λεπτομέρειες + + + Health graph + Γράφημα υγείας + + + Ranking + Κατάταξη + + + The best shot award was won by <b>%1</b> with <b>%2</b> pts. + Το βραβείο καλύτερης βολής κερδίθηκε από τον <b>%1</b> με <b>%2</b> πόντους. + + + The best killer is <b>%1</b> with <b>%2</b> kills in a turn. + + Ο καλύτερος φονιάς είναι ο <b>%1</b> με <b>%2</b> σκοτωμό. + Ο καλύτερος φονιάς είναι ο <b>%1</b> με <b>%2</b> συνεχόμενους σκοτωμούς. + + + + A total of <b>%1</b> hedgehog(s) were killed during this round. + + Συνολικώς <b>%1</b> σκατζόχοιρος σκοτώθηκε στη διάρκεια αυτού του γύρου. + Συνολικώς <b>%1</b> σκατζόχοιροι σκοτώθηκαν στη διάρκεια αυτού του γύρου. + + + + (%1 kill) + + (%1 σκοτωμός) + (%1 σκοτωμοί) + + + + <b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts. + + Ο <b>%1</b> θεώρησε ορθό να μακελέψει τους συμπαίχτες του, αφαιρώντας τους <b>%2</b> πόντο. + Ο <b>%1</b> θεώρησε ορθό να μακελέψει τους συμπαίχτες του, αφαιρώντας τους <b>%2</b> πόντους. + + + + <b>%1</b> killed <b>%2</b> of his own hedgehogs. + + Ο <b>%1</b> σκότωσε <b>%2</b> συνάδελφό του. + Ο <b>%1</b> σκότωσε <b>%2</b> από τους συναδέλφους του. + + + + <b>%1</b> was scared and skipped turn <b>%2</b> times. + + Ο <b>%1</b> φοβήθηκε και παραχώρησε τη σειρά του <b>%2</b> φορά. + Ο <b>%1</b> φοβήθηκε και παραχώρησε τη σειρά του <b>%2</b> φορές. + + + + + PageMain + + Local Game (Play a game on a single computer) + Τοπικό Παιχνίδι (Παίξιμο παιχνιδιού σε ένα υπολογιστή) + + + Network Game (Play a game across a network) + Δικτυακό Παιχνίδι (Παίξιμο παιχνιδιού σε δίκτυο) + + + 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 + Απλώς επιλέξτε το ίδιο χρώμα με το φίλο σας για να παίξετε μαζί σαν ομάδα. Ο καθένας από σας θα μπορεί ακόμα να ελέγχει τους δικούς του ή τους δικούς της σκατζόχοιρους, αλλά χάνετε ή κερδίζετε μαζί. + + + 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 + Μερικά όπλα μπορεί να κάνουν μόνο λίγη ζημιά αλλά μπορεί να είναι πολύ πιο καταστρεπτικά στην κατάλληλη περίσταση. Δοκιμάστε να χρησιμοποιήσετε το Desert Eagle για να ρίξετε πολλαπλούς σκατζόχοιρους στο νερό. + + + 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 + Εαν δεν ξέρετε τι να κάνετε και δεν θέλετε να σπαταλήσετε πυρομαχικά, "πηδήξτε" ένα γύρο. Αλλά μην αφήσετε πολύ ώρα να περάσει διότι θα επέλθει Ξαφνικός Θάνατος! + + + 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 + Εαν θα θέλατε να αποτρέψετε τρίτους από το να χρησιμοποιούν το ψευδώνυμό σας στον επίσημο εξυπηρετητή, φτιάξτε ένα λογαριασμό στην ιστοσελίδα : 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 + Βαριέστε το παραδοσιακό παίξιμο; Δοκιμάστε μια από τις αποστολές! Θα σας προσφέρουν ένα διαφορετικό τρόπο παιχνιδιού, αναλόγως την αποστολή. + + + 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 + Εξ'ορισμού το παιχνίδι πάντα θα καταγράφει την πιο πρόσφατη παρτίδα σαν επίδειξη. Επιλέξτε "Τοπικό Παιχνίδι" και κατόπιν επιλέξτε "Επιδείξεις" στην κάτω δεξιά γωνία για να τις αναπαράγετε ή να τις διαχειριστείτε. + + + 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 είναι λογισμικό Ανοικτού Κώδικα (Open Source) και Ελεύθερο Λογισμικό (Free Software) το οποίο δημιουργούμε στον ελεύθερο χρόνο μας. Άν έχετε προβλήματα ρωτήστε στο forum αλλά παρακαλώ μην περιμένετε υποστήριξη 24/7! + + + 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 είναι λογισμικό Ανοικτού Κώδικα (Open Source) και Ελεύθερο Λογισμικό (Free Software) το οποίο δημιουργούμε στον ελεύθερο χρόνο μας. Άν σας αρέσει βοηθήστε μας με μια μικρή δωρεά ή συνεισφέρετε την δική σας δουλειά! + + + Hedgewars is Open Source and Freeware we create in our spare time. Share it with your family and friends as you like! + Tips + Το Hedgewars είναι λογισμικό Ανοικτού Κώδικα (Open Source) και Ελεύθερο Λογισμικό (Free Software) το οποίο δημιουργούμε στον ελεύθερο χρόνο μας. Μοιραστείτε το με την οικογένειά σας και τους φίλους σας όπως εσείς επιθυμείτε! + + + From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance. + Tips + Συχνά-πυκνά θα υπάρχουν επίσημα πρωταθλήματα. Τα επικείμενα γεγονότα θα ανακοινώνονται στην ιστοσελίδα : http://www.hedgewars.org/ μερικές ημέρες νωρίτερα. + + + 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 είναι διαθέσιμο σε πολλές γλώσσες. Εάν η μετάφραση για τη γλώσσα σας μοιάζει απαρχαιωμένη ή λείπει, μην διστάσετε να επικοινωνίσετε μαζί μας! + + + Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux. + Tips + Το Hedgewars μπορεί να τρέξει σε μια μεγάλη ποικιλία λειτουργικών συστημάτων εκ των οποίων συμπεριλαμβάνονται τα Microsoft Windows, Mac OS X και το GNU/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 + Μην ξεχνάτε ότι έχετε τη δυνατότητα να "στήσετε" τα δικά σας σενάρια παιχνιδιού σε τοπικό και δικτυακό/διαδικτυακό παιχνίδι. Δεν είστε περιορισμένοι στην επιλογή "Απλό Παιχνίδι". + + + While playing you should give yourself a short break at least once an hour. + Tips + Ενόσω παίζετε πρέπει να κάνετε τακτικά διαλείμματα, τουλάχιστον κάθε μία ώρα. + + + If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance. + Tips + Εαν η κάρτα γραφικών σας δεν μπορεί να παρέχει επιτάχυνση υλικού για το OpenGL (hardware accelerated OpenGL) προσπαθήστε να ενεργοποιήσετε την επιλογή χαμηλής ποιότητας έτσι ώστε να βελτιωθεί η απόδοση του παιχνιδιού. + + + We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know! + Tips + Είμαστε ανοικτοί σε συμβουλές και εποικοδομητικό διάλογο. Εαν δεν σας αρέσει κάτι ή έχετε μια τρομερή ιδέα, τότε ενημερώστε μας! + + + Especially while playing online be polite and always remember there might be some minors playing with or against you as well! + Tips + Ειδικώς όταν παίζετε στο διαδίκτυο, να είστε ευγενικοί και να θυμάστε πάντα οτι μπορεί να παίζουν ανήλικοι, είτε μαζί σας ή εναντίον σας! + + + Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game! + Tips + Ειδικοί τρόποι παιχνιδιού όπως το "Βαμπιρισμός" ή το "Μοίρα" σας επιτρέπουν να αναπτύξετε εντελώς νέες τακτικές. Δοκιμάστε τους σε ένα προσαρμόσιμο παιχνίδι! + + + The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing. + Tips + Η έκδοση Hedgewars για Windows υποστηρίζει Xfire. Σιγουρευτείτε οτι προσθέσατε το Hedgewars στη λίστα παιχνιδιών του, ώστε οι φίλοι σας να μπορούν να σας δουν όταν εσείς παίζετε. + + + You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead! + Tips + Δεν πρέπει ποτέ να εγκαταστήσετε το Hedgewars σε υπολογιστές που δεν σας ανήκουν (σχολείο, πανεπιστήμιο, εργασία, κ.λπ.). Αντ 'αυτού, ζητήστε το από τον υπεύθυνο! + + + 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 είναι ιδανικό για σύντομα παιχνίδια κατά τη διάρκεια του διαλείμματος. Απλά βεβαιωθείτε ότι δεν προσθέσατε πολλούς σκαντζόχοιρους ή χρησιμοποιείτε ένα τεράστιο χάρτη. Μείωση του χρόνου και της υγείας μπορεί να βοηθήσει επίσης. + + + No hedgehogs were harmed in making this game. + Tips + Κανένας σκατζόχοιρος δεν βλάφτηκε στην δημιουργία αυτού του παιχνιδιού. + + + 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 είναι λογισμικό Ανοικτού Κώδικα (Open Source) και Ελεύθερο Λογισμικό (Free Software) το οποίο δημιουργούμε στον ελεύθερο χρόνο μας. Εαν κάποιος σας πούλησε το παιχνίδι, πρέπει να διεκδικήσετε αποζημίωση! + + + Connect one or more gamepads before starting the game to be able to assign their controls to your teams. + Tips + Συνδέστε ένα ή περισσότερα gamepad πριν από την έναρξη του παιχνιδιού έτσι ώστε να είναι σε θέση να αναθέτει τους χειρισμούς του στις ομάδες σας. + + + Create an account on %1 to keep others from using your most favourite nickname while playing on the official server. + Tips + Δημιουργήστε έναν λογαριασμό στο %1 για να αποτρέψετε τους άλλους από το να χρησιμοποιούν το ψευδώνυμό σας ενόσω παίζετε στον επίσημο εξυπηρετητή. + + + If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers. + Tips + Εαν η κάρτα γραφικών σας δεν μπορεί να παρέχει επιτάχυνση υλικού για το OpenGL (hardware accelerated OpenGL) προσπαθήστε να αναβαθμίσετε τους αντίστοιχους οδηγούς υλικού. + + + There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump. + Tips + Υπάρχουν τρία διαφορετικά άλματα διαθέσιμα. Άλμα εις μήκος, άλμα εις ύψος [με ένα πάτημα],πολύ υψηλό / οπίσθιο άλμα [με δύο πατήματα]. + + + Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving. + Tips + Φοβάστε μήπως πέσετε στο γκρεμό; Κρατήστε πατημένο το πλήκτρο ακρίβειας [Left Shift] και έπειτα αριστερά ή δεξιά χωρίς να κινήστε στην πραγματικότητα. + + + 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 + Ορισμένα όπλα απαιτούν ειδικές στρατηγικές ή απλώς πολύ εκπαίδευση, γι 'αυτό μην εγκαταλείπετε ένα συγκεκριμένο εργαλείο, εάν αστοχήσετε μια φορά σε έναν εχθρό. + + + Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this. + Tips + Τα περισσότερα όπλα δεν λειτουργούν μόλις αγγίζουν το νερό. Η Αυτοκαθοδηγούμενη Μέλισσα καθώς και η Τούρτα αποτελούν εξαιρέσεις σε αυτό. + + + The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once. + Tips + Η Χαλασμένη Φέτα προκαλεί μόνο μια μικρή έκρηξη. Ωστόσο, το δύσοσμο σύννεφο το οποίο επιρρεάζεται από τον άνεμο μπορεί να δηλητηριάσει πολλούς σκατζόχοιρους με τη μία. + + + 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 + Το Πιάνο είναι η πιο επιζήμια αεροπορική επίθεση. Θα χάσετε το σκαντζόχοιρο ο οποίος την εκτελεί, έτσι υπάρχει ένα τεράστιο μειονέκτημα επίσης. + + + 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 + Η Αυτοκαθοδηγούμενη Μέλισσα μπορεί να είναι δύσκολη στη χρήση. Η ακτίνα καμπυλότητάς της εξαρτάται από την ταχύτητά της, επομένως προσπαθήστε να μην χρησιμοποιείτε την πλήρη ισχύ. + + + Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water. + Tips + Οι Αυτοκόλλητες Νάρκες είναι ένα τέλειο εργαλείο για να δημιουργηθούν μικρές αλυσιδωτές αντιδράσεις που βάζουν τους αντίπαλους σκαντζόχοιρους σε έντονες καταστάσεις ... ή στο νερό. + + + The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground. + Tips + Το Σφυρί είναι πιο αποτελεσματικό όταν χρησιμοποιείται σε γέφυρες ή δοκούς. Οι σκατζόχοιροι απλώς θα "φυτευθούν" στο έδαφος. + + + If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion. + Tips + Εάν είστε κολλημένοι πίσω από έναν εχθρικό σκαντζόχοιρο, χρησιμοποιήστε το Σφυρί για να ελευθερώσετε τον εαυτό σας χωρίς να πάθετε ζημιές από έκρηξη. + + + The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early. + Tips + Η μέγιστη απόσταση που διανύει η Τούρτα εξαρτάται από το έδαφος το οποίο πρέπει να διαβεί. Χρησιμοποιήστε το κουμπί της επίθεσης για προκαλέσετε την έκρηξη νωρίτερα. + + + The Flame Thrower is a weapon but it can be used for tunnel digging as well. + Tips + Το φλογοβόλο είναι όπλο μεν, αλλά μπορεί να χρησιμοποιηθεί εξίσου καλά για σκάψιμο σήραγγας. + + + Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms. + Tips + Χρησιμοποιήστε την Καυστική Χειροβομβίδα για να εμποδίσετε προσωρινώς τους σκατζόχοιρους από το να διασχίσουν έδαφος, όπως σήραγγες ή εξέδρες. + + + Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits. + Tips + Θέλετε να μάθετε ποιός είναι πίσω από το παιχνίδι; Πατήστε το λογότυπο Hedgewars στο κυρίως μενου για να δείτε τα credits. + + + Like Hedgewars? Become a fan on %1 or follow us on %2! + Tips + Σας αρέσει το Hedgewars; Γίνετε οπαδός στο %1 ή ακολουθήστε μας στο %2! + + + 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 + Δημιουργήστε ελεύθερα τους δικούς σας τύμβους, τα καπέλα σας, σημαίες ή ακόμα χάρτες και θέματα! Σημειώστε όμως ότι θα πρέπει να τα μοιραστείτε κάπου για να τα χρησιμοποιήσετε σε διαδικτυακό παιχνίδι. + + + Really want to wear a specific hat? Donate to us and receive an exclusive hat of your choice! + Tips + Σας αρέσει πραγματικά να φοράτε ένα συγκεκριμένο καπέλο; Κάντε μια δωρεά σε μας και λάβετε ένα αποκλειστικό καπέλο της επιλογής σας! + + + Keep your video card drivers up to date to avoid issues playing the game. + Tips + Αναβαθμίστε τους οδηγούς της κάρτας γραφικών σας για να αποφύγετε τυχόν προβλήματα παίζοντας το παιχνίδι. + + + 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 + Μπορείτε να βρείτε τα αρχεία ρυθμίσεων του Hedgewars στο "My Documents\Hedgewars". Δημιουργήστε αντίγραφα ασφαλείας ή πάρτε τα αρχεία μαζί σας, αλλά μην τα επεξεργαστείτε χειροκίνητα. + + + 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 + Μπορείτε να αντιστοιχίσετε τα αντίστοιχα αρχεία του Hedgewars (σωσμένα παιχνίδια και εγγραφές επίδειξης) με το παιχνίδι, έτσι ώστε να τα τρέχετε απευθείας από τον αγαπημένο σας περιηγητή αρχείων ή διαδικτύου. + + + 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 + Θέλετε να κάνετε οικονομία στα σχοινιά; Αφήστε το σχοινί ενώσο βρίσκεστε στον αέρα και στη συνέχεια πυροβολήστε ξανά. Όσο δεν αγγίζετε το έδαφος θα επαναχρησιμοποιείτε το σχοινί σας χωρίς σπατάλη πυρομαχικών! + + + 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 + Μπορείτε να βρείτε τα αρχεία ρυθμίσεων του Hedgewars στο "Library/Application Support/Hedgewars" στον προσωπικό σας φάκελο. Δημιουργήστε αντίγραφα ασφαλείας ή πάρτε τα αρχεία μαζί σας, αλλά μην τα επεξεργαστείτε χειροκίνητα. + + + 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 + Μπορείτε να βρείτε τα αρχεία ρυθμίσεων του Hedgewars στο ".hedgewars" στον προσωπικό σας φάκελο. Δημιουργήστε αντίγραφα ασφαλείας ή πάρτε τα αρχεία μαζί σας, αλλά μην τα επεξεργαστείτε χειροκίνητα. + + + + PageMultiplayer + + Start + Εκκίνηση + + + + PageNet + + Error + Σφάλμα + + + Please select server from the list above + Παρακαλώ επιλέξτε εξυπηρετητή από την παρακάτω λίστα + + + + PageNetGame + + Control + Έλεγχος + + + + PageNetType + + LAN game + Παιχνίδι σε δίκτυο (LAN) + + + Official server + Επίσημος εξυπηρετητής + + + + PageOptions + + New team + Νέα ομάδα + + + Edit team + Επεξεργασία ομάδας + + + Delete team + Διαγραφή ομάδας + + + New weapon scheme + Νέος σχεδιασμός όπλων + + + Edit weapon scheme + Επεξεργασία σχεδιασμού όπλων + + + Delete weapon scheme + Διαγραφή σχεδιασμού όπλων + + + You can't edit teams from team selection. Go back to main menu to add, edit or delete teams. + Δεν μπορείτε να επεξεργαστείτε τις ομάδες από την επιλογή ομάδων. Πηγαίνετε πίσω στην κύρια σελίδα για να προσθέσετε, να επεξεργαστείτε ή να διαγράψετε ομάδες. + + + + PagePlayDemo + + Error + Σφάλμα + + + OK + Εντάξει + + + Rename dialog + Μετονομασία διαλόγου + + + Enter new file name: + Εισάγετε το όνομα του νέου αρχείου : + + + Cannot rename to + Δεν μπορεί να γίνει μετονομασία σε + + + Cannot delete file + Δεν μπορεί να διαγραφεί το αρχείο + + + Please select record from the list + Παρακαλώ επιλέξτε εγγραφή από την λίστα + + + + PageRoomsList + + Create + Δημιουργία + + + Join + Σύνδεση + + + Refresh + Ανανέωση + + + Error + Σφάλμα + + + OK + Εντάξει + + + Admin features + Χαρακτηριστικά διαχειριστή + + + Room Name: + Όνομα δωματίου : + + + This game is in lobby. +You may join and start playing once the game starts. + Αυτό το παιχνίδι είναι σε αναμονή. +Μπορείτε να συνδεθείτε και να παίξετε μόλις το παιχνίδι ξεκινήσει. + + + This game is in progress. +You may join and spectate now but you'll have to wait for the game to end to start playing. + Αυτό το παιχνίδι είναι σε εξέλιξη. +Μπορείτε να συνδεθείτε και να παρακολουθείτε την εξέλιξη αλλά θα πρέπει να περιμένετε να τελειώσει το παιχνίδι για να ξεκινήσετε να παίζετε. + + + %1 is the host. He may adjust settings and start the game. + %1 είναι ο οικοδεσπότης. Μπορεί να προσαρμόζει τις ρυθμίσεις και να ξεκινά το παιχνίδι. + + + Random Map + Τυχαίος χάρτης + + + Games may be played on precreated or randomized maps. + Τα παιχνίδια μπορούν να παίζονται σε προκατασκευασμένους ή τυχαιοποιημένους χάρτες. + + + The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism. + Ο σχεδιασμός του παιχνιδιού καθορίζει τις γενικές επιλογές και τις προτιμήσεις όπως τον Χρόνο του Γύρου, τον Ξαφνικό Θάνατο ή τον Βαμπιρισμό. + + + The Weapon Scheme defines available weapons and their ammunition count. + Ο Σχεδιασμός των Όπλων καθορίζει τα διαθέσιμα όπλα και το ποσό των πυρομαχικών. + + + There are %1 clients connected to this room. + + Υπάρχει %1 χρήστης συνδεδεμένος σε αυτό το δωμάτιο. + Υπάρχουν %1 χρήστες συνδεδεμένοι σε αυτό το δωμάτιο. + + + + There are %1 teams participating in this room. + + %1 ομάδα συμμετέχει σε αυτό το δωμάτιο. + %1 ομάδες συμμετέχουν σε αυτό το δωμάτιο. + + + + Please enter room name + Εισάγετε το όνομα του δωματίου + + + Please select room from the list + Παρακαλώ επιλέξτε δωμάτιο από τη λίστα + + + Random Maze + Τυχαίος Λαβύρινθος + + + State: + Κατάσταση : + + + Rules: + Κανόνες : + + + Weapons: + Όπλα : + + + Search: + Αναζήτηση : + + + Clear + Καθαρισμός + + + Warning + Προσοχή + + + The game you are trying to join has started. +Do you still want to join the room? + Το παιχνίδι στο οποίο προσπαθείτε να συνδεθείτε έχει ήδη ξεκινήσει. +Θέλετε ακόμα να συνδεθείτε με το δωμάτιο; + + + + PageScheme + + Defend your fort and destroy the opponents, two team colours max! + Υπερασπιστείτε το φρούριό σας και καταστρέψτε τους αντιπάλους σας, μέγιστο επιτρεπόμενο δυο χρώματα ομάδων! + + + Teams will start on opposite sides of the terrain, two team colours max! + Οι ομάδες θα ξεκινούν σε αντίθετες μεριές της πίστας, μέγιστο επιτρεπόμενο δυο χρώματα ομάδων! + + + Land can not be destroyed! + Το έδαφος δεν μπορεί να καταστραφεί! + + + Add an indestructable border around the terrain + Προσθήκη ενός άφθαρτου συνόρου γύρω από την πίστα + + + Lower gravity + Μικροβαρύτητα + + + Assisted aiming with laser sight + Υποβοηθούμενη στόχευση με διόπτρα laser + + + All hogs have a personal forcefield + Όλοιοι σκατζόχοιροι έχουν ατομικό πεδίο δυνάμεων + + + Enable random mines + Enable random mines + + + Gain 80% of the damage you do back in health + Κερδίστε το 80% της ζημιάς που προκαλείτε σε υγεία + + + Share your opponents pain, share their damage + Μοιραστείτε τον πόνο του αντιπάλου σας, μοιραστείτε τη ζημιά του + + + Your hogs are unable to move, put your artillery skills to the test + Οι σκατζόχοιροί σας είναι αδύνατον να κινηθούν, δοκιμάστε τις ικανότητες του πυροβολικού σας + + + Random + Τυχαίο + + + Seconds + Δευτερόλεπτα + + + New + Νέο + + + Delete + Διαγραφή + + + Order of play is random instead of in room order. + Η σειρά παιξίματος είναι τυχαία αντί για την σειρά του δωματίου. + + + Play with a King. If he dies, your side dies. + Παίξτε με ένα βασιλιά. Εαν πεθάνει, η ομάδα σας χάνει. + + + Take turns placing your hedgehogs before the start of play. + Τοποθετήστε εναλλάξ με τους αντιπάλους σας τους σκατζόχοιρούς σας στην πίστα προτού ξεκινήσει το παιχνίδι. + + + Ammo is shared between all teams that share a colour. + Τα πυρομαχικά είναι κοινά ανάμεσα σε όλες τις ομάδες που μοιράζονται ένα χρώμα. + + + Disable girders when generating random maps. + Απενεργοποίηση δοκών όταν δημιουργούνται τυχαίοι χάρτες. + + + Disable land objects when generating random maps. + Απενεργοποίηση εδαφικών αντικειμένων όταν δημιουργούνται τυχαίοι χάρτες. + + + AI respawns on death. + Οι σκατζόχοιροι που ελέγχονται από τον υπολογιστή "ξαναφυτρώνουν" όταν πεθάνουν. + + + All (living) hedgehogs are fully restored at the end of turn + Όλοι (οι ζωντανοί) σκατζόχοιροι αποκαθίστανται πλήρως στο τέλος κάθε γύρου + + + Attacking does not end your turn. + Η επίθεση δεν εξαντλεί τη σειρά σας. + + + Weapons are reset to starting values each turn. + Όλα τα όπλα επανέρχονται στις αρχικές τιμές σε κάθε γύρο. + + + Each hedgehog has its own ammo. It does not share with the team. + Κάθε σκατζόχοιρος έχει τα δικά του πυρομαχικά. Δεν τα μοιράζεται με την ομάδα. + + + + PageSelectWeapon + + Default + Εξ'ορισμού + + + Delete + Διαγραφή + + + + PageSinglePlayer + + Simple Game (a quick game against the computer, settings are chosen for you) + Απλό Παιχνίδι (ένα γρήγορο παιχνίδι εναντίον του υπολογιστή, οι ρυθμίσεις είναι προεπιλεγμένεs) + + + Multiplayer (play a hotseat game against your friends, or AI teams) + Πολλοί Παίχτες (ένα παιχνίδι εναντίον των φίλων σας ή του υπολογιστή) + + + Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT + Εξάσκηση (Εξασκήστε τις δεξιότητές σας σε ένα εύρος εκπαιδευτικών αποστολών). ΣΕ ΕΞΕΛΙΞΗ + + + Demos (Watch recorded demos) + Επιδείξεις (Παρακολουθήστε καταγεγραμμένες επιδείξεις) + + + Load (Load a previously saved game) + Φόρτωση Σωσμένου Παιχνιδιού (Φορτώστε ένα σωσμένο παιχνίδι) + + + Campaign Mode (...). IN DEVELOPMENT + Εκστρατεία ΣΕ ΕΞΕΛΙΞΗ + + + + QAction + + Kick + Απόλυση + + + Info + Πληροφορίες + + + Start + Έναρξη + + + Restrict Joins + Περιορισμός συνδέσεων + + + Restrict Team Additions + Περιορισμός προσθήκης ομάδων + + + Ban + Απαγόρευση + + + Follow + Ακολουθώ + + + Ignore + Αγνοώ + + + Add friend + Προσθήκη φίλου + + + Unignore + Κατάργηση αγνόησης + + + Remove friend + Αφαίρεση φίλου + + + + QCheckBox + + Check for updates at startup + Έλεγχος για ενημερώσεις κατά την εκκίνηση + + + Fullscreen + Πλήρης οθόνη + + + Frontend fullscreen + Διεπαφή σε πλήρη οθόνη + + + Enable sound + Ενεργοποίηση ήχου + + + Enable music + Ενεργοποίηση μουσικής + + + Show FPS + Προβολή FPS + + + Alternative damage show + Εναλλακτική προβολή ζημιάς + + + Append date and time to record file name + Προσάρτηση ημερομηνίας και ώρας στην εγγραφή του ονόματος αρχείου + + + Reduced quality + Reduced quality + + + Show ammo menu tooltips + Προβολή συμβουλών στον κατάλογο των πυρομαχικών + + + Enable frontend sounds + Ενεργοποίηση ήχων διεπαφής + + + Enable frontend music + Ενεργοποίηση μουσικής διεπαφής + + + Frontend effects + Ενεργοποίηση εφε διεπαφής + + + + QComboBox + + generated map... + Δημιουργημένος χάρτης... + + + Human + Άνθρωπος + + + Level + Επίπεδο + + + (System default) + (Εξ'ορισμού συστήματος) + + + Mission + Αποστολή + + + generated maze... + Δημιουργημένος λαβύρινθος... + + + Community + Κοινότητα + + + Any + Οποιοσδήποτε + + + In lobby + Σε αναμονή + + + In progress + Σε εξέλιξη + + + Default + Default + + + + QGroupBox + + Team Members + Μέλη Ομάδας + + + Fort + Φρούριο + + + Key binds + Δεσμεύσεις κουμπιών + + + Teams + Ομάδες + + + Weapons + Όπλα + + + Audio/Graphic options + Επιλογές Ήχου/Γραφικών + + + Net game + Δικτυακό παιχνίδι + + + Playing teams + Ομάδες που παίζουν + + + Game Modifiers + Τροποποιητές παιχνιδιού + + + Basic Settings + Βασικές ρυθμίσεις + + + Team Settings + Ρυθμίσεις ομάδας + + + Misc + Διάφορα + + + + QLabel + + Mines Time + Φυτίλι Νάρκης + + + Mines + Νάρκες + + + Version + Έκδοση + + + This program is distributed under the GNU General Public License + Το πρόγραμμα αυτό διανέμεται κάτω από την GNU General Public License + + + Developers: + Προγραμματιστές : + + + Art: + Γραφικά: + + + Sounds: + Ήχοι: + + + Translations: + Μεταγλωττίσεις: + + + Special thanks: + Ειδικές ευχαριστίες: + + + Weapons + Όπλα + + + Host: + Αποδέκτης (host): + + + Port: + Θύρα : + + + Net nick + Ψευδώνυμο + + + Resolution + Ανάλυση + + + FPS limit + Όριο FPS + + + Server name: + Όνομα εξυπηρετητή : + + + Server port: + Θύρα εξυπηρετητή : + + + Initial sound volume + Αρχική ένταση ήχου + + + Damage Modifier + Τροποποιητής ζημιάς + + + Turn Time + Χρόνος Γύρου + + + Initial Health + Αρχική Υγεία + + + Sudden Death Timeout + Χρόνος μέχρι τον Ξαφνικό Θάνατο + + + Scheme Name: + Όνομα Σχεδιασμού : + + + Crate Drops + Ρίψεις κιβωτίων + + + Game scheme + Σχεδιασμός Παιχνιδιού + + + % Dud Mines + % Τζούφιες Νάρκες + + + Name + Όνομα + + + Type + Τύπος + + + Grave + Τύμβος + + + Flag + Σημαία + + + Voice + Φωνή + + + Locale + Γλώσσα + + + Restart game to apply + Επανεκκινήστε το παιχνίδι για εφαρμογή των αλλαγών + + + Explosives + Εκρηκτικά + + + Tip: + Συμβουλή : + + + 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! + Αυτή η διανομή είναι «έργο σε εξέλιξη» και μπορεί να μην είναι συμβατή με άλλες εκδόσεις του παιχνιδιού. Ορισμένες λειτουργίες μπορεί να μη δουλεύουν ή να είναι ελλιπείς. Χρησιμοποιήστε την με δική σας ευθύνη! + + + Quality + Ποιότητα + + + % Health Crates + % Κιβώτια Υγείας + + + Health in Crates + Υγεία στα κιβώτια + + + Sudden Death Water Rise + Άνοδος στάθμης νερού στον Ξαφνικό Θάνατο + + + Sudden Death Health Decrease + Μείωση Υγείας στον Ξαφνικό Θάνατο + + + Bind schemes and weapons + Σύζευξη σχεδιασμών και όπλων + + + + QLineEdit + + unnamed + Ανώνυμο + + + + QMainWindow + + Hedgewars %1 + Hedgewars %1 + + + + QMessageBox + + Network + Δίκτυο + + + Connection to server is lost + Η σύνδεση με τον εξυπηρετητή διακόπηκε + + + Error + Σφάλμα + + + Failed to open data directory: +%1 +Please check your installation + Αποτυχία ανοίγματος φακέλου δεδομένων : + %1 +Παρακαλώ ελέγξτε την εγκατάστασή σας + + + Weapons + Όπλα + + + Can not edit default weapon set + Can not edit default weapon set + + + Can not delete default weapon set + Δεν μπορεί να διαγραφεί η βασική σειρά όπλων + + + Really delete this weapon set? + Σίγουρα να διαγραφεί αυτή η σειρά όπλων ; + + + Can not overwrite default weapon set '%1'! + Δεν μπορεί να αντικατασταθεί η βασική σειρά όπλων '%1'! + + + All file associations have been set. + Όλες οι αντιστοιχίσεις αρχείων έχουν τεθεί. + + + File association failed. + Η αντιστοίχιση του αρχείου απέτυχε. + + + + QObject + + Error + Σφάλμα + + + Cannot create directory %1 + Δεν μπορεί να δημιουργηθεί ο κατάλογος %1 + + + OK + Εντάξει + + + Nickname + Ψευδώνυμο + + + Please enter your nickname + Παρακαλώ εισάγετε το ψευδώνυμό σας + + + + QPushButton + + default + Εξ'ορισμού + + + OK + Εντάξει + + + Cancel + Άκυρο + + + Start server + Εκκίνηση εξυπηρετητή + + + Connect + Σύνδεση + + + Update + Αναβάθμιση + + + Specify + Καθορισμός + + + Start + Εκκίνηση + + + Go! + Ξεκίνα! + + + Play demo + Αναπαραγωγή επίδειξης + + + Rename + Μετονομασία + + + Delete + Διαγραφή + + + Load + Φόρτωση + + + Setup + Ρύθμιση + + + Ready + Έτοιμο + + + Random Team + Τυχαία Ομάδα + + + Associate file extensions + Αντιστοίχηση επεκτάσεων αρχείων + + + + QTableWidget + + Room Name + Όνομα Δωματίου + + + C + C + + + T + T + + + Owner + Ιδιοκτήτης + + + Map + Χάρτης + + + Rules + Κανόνες + + + Weapons + Όπλα + + + + SelWeaponWidget + + Weapon set + Ρυθμίσεις Όπλων + + + Probabilities + Πιθανότητες + + + Ammo in boxes + Πυρομαχικά στα κιβώτια + + + Delays + Καθυστερήσεις + + + + TCPBase + + Error + Σφάλμα + + + Unable to start the server: %1. + Δεν είναι δυνατόν να ξεκινήσει ο εξυπηρετητής : %1. + + + Unable to run engine: %1 ( + Δεν είναι δυνατόν να τρέξει η μηχανή : %1 ( + + + + ToggleButtonWidget + + Vampirism + Βαμπιρισμός + + + Karma + Μοίρα + + + Artillery + Πυροβολικό + + + Fort Mode + Λειτουργία Φρούριου + + + Divide Teams + Διαίρεση Ομάδων + + + Solid Land + Στερεό Έδαφος + + + Add Border + Προσθήκη Συνόρου + + + Low Gravity + Μικροβαρύτητα + + + Laser Sight + Διόπτρα Laser + + + Invulnerable + Άτρωτος + + + Add Mines + Add Mines + + + Random Order + Τυχαία Σειρά + + + King + Βασιλέας + + + Place Hedgehogs + Τοποθέτηση σκατζόχοιρων + + + Clan Shares Ammo + Η συμμορία μοιράζεται τα πυρομαχικά + + + Disable Girders + Απενεργοποίηση δοκών + + + Disable Land Objects + Απενεργοποίηση Αντικειμένων Εδάφους + + + AI Survival Mode + Λειτουργία Επιβίωσης για τον υπολογιστή + + + Reset Health + Επαναφορά Υγείας + + + Unlimited Attacks + Απεριόριστες Επιθέσεις + + + Reset Weapons + Επαναφορά Όπλων + + + Per Hedgehog Ammo + Πυρομαχικά ανά σκατζόχοιρο + + + + binds + + up + πάνω + + + left + αριστερά + + + right + δεξιά + + + down + κάτω + + + attack + επίθεση + + + precise aim + ακριβής στόχευση + + + put + τοποθέτηση + + + switch + αναλλαγή + + + find hedgehog + εύρεση σκατζόχοιρου + + + ammo menu + κατάλογος πυρομαχικών + + + slot 1 + θέση 1 + + + slot 2 + θέση 2 + + + slot 3 + θέση 3 + + + slot 4 + θέση 4 + + + slot 5 + θέση 5 + + + slot 6 + θέση 6 + + + slot 7 + θέση 7 + + + slot 8 + θέση 8 + + + slot 9 + θέση 9 + + + timer 1 sec + χρονόμετρο 1 δευ + + + timer 2 sec + χρονόμετρο 2 δευ + + + timer 3 sec + χρονόμετρο 3 δευ + + + timer 4 sec + χρονόμετρο 4 δευ + + + timer 5 sec + χρονόμετρο 5 δευ + + + chat + συνομιλία + + + chat history + ιστορικό συνομιλίας + + + pause + παύση + + + confirmation + επιβεβαίωση + + + volume down + μείωση φωνής + + + volume up + αύξηση φωνής + + + change mode + αλλαγή τρόπου + + + capture + αιχμαλώτιση + + + hedgehogs +info + πληροφορίες +σκατζόχοιρου + + + quit + έξοδος + + + zoom in + μεγέθυνση + + + zoom out + σμίκρυνση + + + reset zoom + επαναφορά μεγέθυνσης + + + long jump + άλμα εις μήκος + + + high jump + άλμα εις ύψος + + + slot 10 + θέση 10 + + + + binds (categories) + + Basic controls + Βασικές Ρυθμίσεις + + + Weapon controls + Ρυθμίσεις Όπλων + + + Camera and cursor controls + Ρυθμίσεις κάμερας και δείκτη ποντικιού + + + Other + Διάφορα + + + + binds (descriptions) + + Move your hogs and aim: + Μετακινήστε τους σκατζόχοιρούς σας και σημαδέψτε : + + + Traverse gaps and obstacles by jumping: + Διασχίστε κενά και εμπόδια πηδώντας : + + + Fire your selected weapon or trigger an utility item: + Πυροδοτήστε το επιλεγμένο σας όπλο ή ενεργοποιήστε ένα βοήθημα : + + + Pick a weapon or a target location under the cursor: + Επιλέξτε ένα όπλο ή μια τοποθεσία στόχου με το δείκτη ποντικιού : + + + Switch your currently active hog (if possible): + Εναλλάξτε τον τρέχον ενεργοποιημένο σκατζόχοιρο (εαν είναι δυνατόν) : + + + Pick a weapon or utility item: + Επιλέξτε ένα όπλο ή ένα βοήθημα : + + + Set the timer on bombs and timed weapons: + Θέστε το χρονόμετρο στις βόμβες και στα χρονοεξαρτημένα όπλα : + + + Move the camera to the active hog: + Μετακινήστε την κάμερα στον τρέχον σκατζόχοιρο : + + + Move the cursor or camera without using the mouse: + Μετακινήστε τον δείκτη του ποντικιού ή την κάμερα δίχως να χρησιμοποιείτε το ποντίκι : + + + Modify the camera's zoom level: + Τροποποιήστε το επίπεδο μεγέθυνσης της κάμερας : + + + Talk to your team or all participants: + Μιλήστε στην ομάδα σας ή σε όλους τους συμμετέχοντες : + + + Pause, continue or leave your game: + Κάντε παύση, συνεχίστε ή εγκαταλείψτε το παιχνίδι σας: + + + Modify the game's volume while playing: + Τροποποιήστε την ένταση της φωνής του παιχνιδιού καθώς παίζετε : + + + Toggle fullscreen mode: + Εναλλάξτε προβολή σε πλήρη οθόνη : + + + Take a screenshot: + Λάβετε ένα στιγμιότυπο οθόνης : + + + Toggle labels above hedgehogs: + Εναλλάξτε τις επιγραφές πάνω από τους σκατζόχοιρους : + + + + binds (keys) + + Axis + Άξονας + + + (Up) + (Πάνω) + + + (Down) + (Κάτω) + + + Hat + Καπέλο + + + (Left) + (Αριστερά) + + + (Right) + (Δεξιά) + + + Button + Κουμπί + + + Keyboard + Πληκτρολόγιο + + + Delete + Delete + + + Mouse: Left button + Ποντίκι : Αριστερό Κουμπί + + + Mouse: Middle button + Ποντίκι : Μεσαίο Κουμπί + + + Mouse: Right button + Ποντίκι : Δεξί Κουμπί + + + Mouse: Wheel up + Ποντίκι : Ροδέλα Πάνω + + + Mouse: Wheel down + Ποντίκι : Ροδέλα Κάτω + + + Backspace + Backspace + + + Tab + Tab + + + Clear + Clear + + + Return + Return + + + Pause + Παύση + + + Escape + Escape + + + Space + Διάστημα + + + Numpad 0 + Numpad 0 + + + Numpad 1 + Numpad 1 + + + Numpad 2 + Numpad 2 + + + Numpad 3 + Numpad 3 + + + Numpad 4 + Numpad 4 + + + Numpad 5 + Numpad 5 + + + Numpad 6 + Numpad 6 + + + Numpad 7 + Numpad 7 + + + Numpad 8 + Numpad 8 + + + Numpad 9 + Numpad 9 + + + Numpad . + Numpad . + + + Numpad / + Numpad / + + + Numpad * + Numpad * + + + Numpad - + Numpad - + + + Numpad + + Numpad + + + + Enter + Enter + + + Equals + Ίσον + + + Up + Πάνω + + + Down + Κάτω + + + Right + Δεξιά + + + Left + Αριστερά + + + Insert + Insert + + + Home + Home + + + End + End + + + Page up + Page up + + + Page down + Page down + + + Num lock + Num lock + + + Caps lock + Caps lock + + + Scroll lock + Scroll lock + + + Right shift + Δεξί Shift + + + Left shift + Αριστερό Shift + + + Right ctrl + Δεξί Ctrl + + + Left ctrl + Αριστερό Ctrl + + + Right alt + Δεξί Alt + + + Left alt + Αριστερό Alt + + + Right meta + Δεξί meta + + + Left meta + Αριστερό meta + + + A button + Κουμπί Α + + + B button + Κουμπί Β + + + X button + Κουμπί Χ + + + Y button + Κουμπί Υ + + + LB button + Κουμπί LB + + + RB button + Κουμπί RB + + + Back button + Κουμπί Back + + + Start button + Κουμπί Start + + + Left stick + Left stick + + + Right stick + Right stick + + + Left stick (Right) + Left stick (Right) + + + Left stick (Left) + Left stick (Left) + + + Left stick (Down) + Left stick (Down) + + + Left stick (Up) + Left stick (Up) + + + Left trigger + Left trigger + + + Right trigger + Right trigger + + + Right stick (Down) + Right stick (Down) + + + Right stick (Up) + Right stick (Up) + + + Right stick (Right) + Right stick (Right) + + + Right stick (Left) + Right stick (Left) + + + DPad + DPad + + + diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/hedgewars_fr.ts --- a/share/hedgewars/Data/Locale/hedgewars_fr.ts Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_fr.ts Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/hedgewars_ko.ts --- a/share/hedgewars/Data/Locale/hedgewars_ko.ts Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_ko.ts Mon Jan 17 23:22:52 2011 +0100 @@ -108,7 +108,7 @@ HWGame en.txt - + ko.txt Cannot open demofile %1 diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/hedgewars_sk.ts --- a/share/hedgewars/Data/Locale/hedgewars_sk.ts Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_sk.ts Mon Jan 17 23:22:52 2011 +0100 @@ -197,7 +197,7 @@ Set - Nastaviť + Nastaviť @@ -1759,7 +1759,7 @@ more - + viac diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/hedgewars_zh_CN.ts --- a/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/ko.lua --- a/share/hedgewars/Data/Locale/ko.lua Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/ko.lua Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/pl.lua --- a/share/hedgewars/Data/Locale/pl.lua Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/pl.lua Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/pt_BR.lua --- a/share/hedgewars/Data/Locale/pt_BR.lua Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/pt_BR.lua Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/pt_PT.lua --- a/share/hedgewars/Data/Locale/pt_PT.lua Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/pt_PT.lua Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/sk.lua --- a/share/hedgewars/Data/Locale/sk.lua Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/sk.lua Mon Jan 17 23:22:52 2011 +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"] = "Mizerní zelenáči", -- 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 + ["Instructor"] = "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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/stub.lua --- a/share/hedgewars/Data/Locale/stub.lua Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/stub.lua Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/sv.lua --- a/share/hedgewars/Data/Locale/sv.lua Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/sv.lua Mon Jan 17 23:22:52 2011 +0100 @@ -8,7 +8,7 @@ ["Bazooka Training"] = "Bazookaträning", ["Best laps per team: "] = "Bästa varv per lag: ", ["Bloody Rookies"] = "Blodiga gröngölingar", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree --- ["Boom!"] = "", + ["Boom!"] = "Bom!", ["by mikade"] = "av mikade", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag ["CAPTURE THE FLAG"] = "CAPTURE THE FLAG", ["Codename: Teamwork"] = "Kodnamn: Lagarbete", @@ -17,7 +17,7 @@ ["CONTROL"] = "KONTROLL", ["Control pillars to score points."] = "Kontrollera pelare för att ta poäng", ["CONTROL v0.3"] = "KONTROLL v0.3", --- ["CTF_BLIZZARD"] = "", + ["CTF_BLIZZARD"] = "CTF_BLIZZARD", ["CUSTOM BUILD 0.2"] = "SPECIALVERSION 0.2", ["Cybernetic Empire"] = "Robotriket", ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "SATAN, GRÖNGÖLING! SLUTA TJATA!", @@ -38,7 +38,7 @@ ["GAME OVER!"] = "SPELET ÄR SLUT!", ["Game Started!"] = "Spel startat!", ["Get on over there and take him out!"] = "Ta dig bort där och gör dig av med honom!", --- ["Goal:"] = "", + ["Goal:"] = "Mål:", ["GO! GO! GO!"] = "Kör! Kör! Kör!", ["Good birdy......"] = "Fin fågel......", ["Good luck out there!"] = "Lycka till där ute!", @@ -50,10 +50,9 @@ ["Instructor"] = "Instruktör", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings ["- Jumping is disabled"] = "- Hoppande är avaktiverat", ["Listen up, maggot!!"] = "Hör här, ynkrygg!!", --- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["|- 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,12 +61,12 @@ ["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", --- ["RULES OF THE GAME [Press ESC to view]"] = "", - ["RULES OF THE GAME [Press ESC to view]"] = "SPELREGLER [Tryck ESC för att se", --- ["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 + ["RULES OF THE GAME [Press ESC to view]"] = "SPELREGLER [Tryck ESC för att se]", + ["sec"] = "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!"] = "Ses!", ["Shotgun Team"] = "Hagelgevärslaget", ["Shotgun Training"] = "Hagelgevärsträning", @@ -78,16 +77,16 @@ ["Spooky Tree"] = "Kusligt träd", ["Team %d: "] = "Lag %d: ", ["Team Scores:"] = "Lagresultat:", --- ["That was pointless."] = "", + ["That was pointless."] = "Det där var meningslöst.", ["The enemy is hiding out on yonder ducky!"] = "Fienden gömmer sig på andra ankan!", --- ["The flag will respawn next round."] = "", + ["The flag will respawn next round."] = "Flaggan kommer tillbaka nästa runda.", ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "Det har uppstått ett missförstånd om din utrustning|och nu måste du använda vad du kan hitta!", ["Toxic Team"] = "Förgiftade laget", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["TrophyRace"] = "TrophyRace", ["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 9f20a38a385a -r 9a0f5377c529 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 Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Locale/zh_CN.txt --- a/share/hedgewars/Data/Locale/zh_CN.txt Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Locale/zh_CN.txt Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Maps/Basketball/preview.png Binary file share/hedgewars/Data/Maps/Basketball/preview.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Maps/Blizzard/map.png Binary file share/hedgewars/Data/Maps/Blizzard/map.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Maps/Blizzard/map.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/Blizzard/map.svg Mon Jan 17 23:22:52 2011 +0100 @@ -0,0 +1,1067 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Maps/Blizzard/mask.png Binary file share/hedgewars/Data/Maps/Blizzard/mask.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Maps/Blizzard/preview@2x.png Binary file share/hedgewars/Data/Maps/Blizzard/preview@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Maps/CTF_Blizzard/CMakeLists.txt --- a/share/hedgewars/Data/Maps/CTF_Blizzard/CMakeLists.txt Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Maps/CTF_Blizzard/CMakeLists.txt Mon Jan 17 23:22:52 2011 +0100 @@ -1,7 +1,5 @@ install(FILES - map.png map.cfg map.lua - mask.png preview.png DESTINATION ${SHAREPATH}Data/Maps/CTF_Blizzard) diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Maps/CTF_Blizzard/map.lua --- a/share/hedgewars/Data/Maps/CTF_Blizzard/map.lua Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Maps/CTF_Blizzard/map.lua Mon Jan 17 23:22:52 2011 +0100 @@ -1,754 +1,763 @@ --------------------------------- --- 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.6 +-------------------------------- + +--------- +-- 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... + +--------- +-- 0.6 +--------- + +-- removed branding and version number +-- removed teleport from starting weapons +-- increased captures to 3 + +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] == 3 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"), "", 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, 0, 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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Maps/CTF_Blizzard/map.png Binary file share/hedgewars/Data/Maps/CTF_Blizzard/map.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Maps/CTF_Blizzard/map.svg --- a/share/hedgewars/Data/Maps/CTF_Blizzard/map.svg Mon Jan 17 08:37:43 2011 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1067 +0,0 @@ - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Maps/CTF_Blizzard/mask.png Binary file share/hedgewars/Data/Maps/CTF_Blizzard/mask.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Maps/CTF_Blizzard/preview@2x.png Binary file share/hedgewars/Data/Maps/CTF_Blizzard/preview@2x.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Maps/Cave/preview.png Binary file share/hedgewars/Data/Maps/Cave/preview.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Maps/Control/map.lua --- a/share/hedgewars/Data/Maps/Control/map.lua Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Maps/Control/map.lua Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Maps/Ropes/preview.png Binary file share/hedgewars/Data/Maps/Ropes/preview.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Missions/Training/User_Mission_-_Diver.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Diver.lua Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Diver.lua Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Art/Splash.png Binary file share/hedgewars/Data/Themes/Art/Splash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Art/theme.cfg --- a/share/hedgewars/Data/Themes/Art/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Art/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Bamboo/SkyL.png Binary file share/hedgewars/Data/Themes/Bamboo/SkyL.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Bamboo/SkyR.png Binary file share/hedgewars/Data/Themes/Bamboo/SkyR.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Bamboo/theme.cfg --- a/share/hedgewars/Data/Themes/Bamboo/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Bamboo/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Bath/Sky.png Binary file share/hedgewars/Data/Themes/Bath/Sky.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Bath/theme.cfg --- a/share/hedgewars/Data/Themes/Bath/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Bath/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Blox/theme.cfg --- a/share/hedgewars/Data/Themes/Blox/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Blox/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Brick/Splash.png Binary file share/hedgewars/Data/Themes/Brick/Splash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Brick/horizont.png Binary file share/hedgewars/Data/Themes/Brick/horizont.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Brick/theme.cfg --- a/share/hedgewars/Data/Themes/Brick/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Brick/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Cake/Splash.png Binary file share/hedgewars/Data/Themes/Cake/Splash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Cake/theme.cfg --- a/share/hedgewars/Data/Themes/Cake/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Cake/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Castle/SkyL.png Binary file share/hedgewars/Data/Themes/Castle/SkyL.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Castle/SkyR.png Binary file share/hedgewars/Data/Themes/Castle/SkyR.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Castle/Splash.png Binary file share/hedgewars/Data/Themes/Castle/Splash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Castle/horizont.png Binary file share/hedgewars/Data/Themes/Castle/horizont.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Castle/theme.cfg --- a/share/hedgewars/Data/Themes/Castle/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Castle/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Cheese/theme.cfg --- a/share/hedgewars/Data/Themes/Cheese/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Cheese/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Christmas/theme.cfg --- a/share/hedgewars/Data/Themes/Christmas/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Christmas/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/City/theme.cfg --- a/share/hedgewars/Data/Themes/City/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/City/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Compost/Splash.png Binary file share/hedgewars/Data/Themes/Compost/Splash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Compost/theme.cfg --- a/share/hedgewars/Data/Themes/Compost/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Compost/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/CrazyMission/SkyL.png Binary file share/hedgewars/Data/Themes/CrazyMission/SkyL.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/CrazyMission/SkyR.png Binary file share/hedgewars/Data/Themes/CrazyMission/SkyR.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/CrazyMission/Splash.png Binary file share/hedgewars/Data/Themes/CrazyMission/Splash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/CrazyMission/horizont.png Binary file share/hedgewars/Data/Themes/CrazyMission/horizont.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/CrazyMission/theme.cfg --- a/share/hedgewars/Data/Themes/CrazyMission/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/CrazyMission/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Deepspace/Sky.png Binary file share/hedgewars/Data/Themes/Deepspace/Sky.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Deepspace/Splash.png Binary file share/hedgewars/Data/Themes/Deepspace/Splash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Deepspace/horizont.png Binary file share/hedgewars/Data/Themes/Deepspace/horizont.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Deepspace/theme.cfg --- a/share/hedgewars/Data/Themes/Deepspace/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Deepspace/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Desert/Splash.png Binary file share/hedgewars/Data/Themes/Desert/Splash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Desert/theme.cfg --- a/share/hedgewars/Data/Themes/Desert/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Desert/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/EarthRise/Sky.png Binary file share/hedgewars/Data/Themes/EarthRise/Sky.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/EarthRise/SkyL.png Binary file share/hedgewars/Data/Themes/EarthRise/SkyL.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/EarthRise/SkyR.png Binary file share/hedgewars/Data/Themes/EarthRise/SkyR.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/EarthRise/horizontL.png Binary file share/hedgewars/Data/Themes/EarthRise/horizontL.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/EarthRise/horizontR.png Binary file share/hedgewars/Data/Themes/EarthRise/horizontR.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/EarthRise/theme.cfg --- a/share/hedgewars/Data/Themes/EarthRise/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/EarthRise/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Eyes/Sky.png Binary file share/hedgewars/Data/Themes/Eyes/Sky.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Eyes/Splash.png Binary file share/hedgewars/Data/Themes/Eyes/Splash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Eyes/horizont.png Binary file share/hedgewars/Data/Themes/Eyes/horizont.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Eyes/theme.cfg --- a/share/hedgewars/Data/Themes/Eyes/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Eyes/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Freeway/theme.cfg --- a/share/hedgewars/Data/Themes/Freeway/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Freeway/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Halloween/SkyL.png Binary file share/hedgewars/Data/Themes/Halloween/SkyL.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Halloween/SkyR.png Binary file share/hedgewars/Data/Themes/Halloween/SkyR.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Halloween/Splash.png Binary file share/hedgewars/Data/Themes/Halloween/Splash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Halloween/theme.cfg --- a/share/hedgewars/Data/Themes/Halloween/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Halloween/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Hell/Splash.png Binary file share/hedgewars/Data/Themes/Hell/Splash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Hell/theme.cfg --- a/share/hedgewars/Data/Themes/Hell/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Hell/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Island/theme.cfg --- a/share/hedgewars/Data/Themes/Island/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Island/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Jungle/LandTex.png Binary file share/hedgewars/Data/Themes/Jungle/LandTex.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Jungle/Sky.png Binary file share/hedgewars/Data/Themes/Jungle/Sky.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Jungle/SkyL.png Binary file share/hedgewars/Data/Themes/Jungle/SkyL.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Jungle/SkyR.png Binary file share/hedgewars/Data/Themes/Jungle/SkyR.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Jungle/theme.cfg --- a/share/hedgewars/Data/Themes/Jungle/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Jungle/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Nature/LandTex.png Binary file share/hedgewars/Data/Themes/Nature/LandTex.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Nature/theme.cfg --- a/share/hedgewars/Data/Themes/Nature/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Nature/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Olympics/theme.cfg --- a/share/hedgewars/Data/Themes/Olympics/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Olympics/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Planes/theme.cfg --- a/share/hedgewars/Data/Themes/Planes/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Planes/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Sheep/theme.cfg --- a/share/hedgewars/Data/Themes/Sheep/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Sheep/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Snow/theme.cfg --- a/share/hedgewars/Data/Themes/Snow/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Snow/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Stage/SkyL.png Binary file share/hedgewars/Data/Themes/Stage/SkyL.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Stage/SkyR.png Binary file share/hedgewars/Data/Themes/Stage/SkyR.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Stage/Splash.png Binary file share/hedgewars/Data/Themes/Stage/Splash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Stage/theme.cfg --- a/share/hedgewars/Data/Themes/Stage/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Stage/theme.cfg Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Underwater/SDClouds.png Binary file share/hedgewars/Data/Themes/Underwater/SDClouds.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Underwater/SDFlake.png Binary file share/hedgewars/Data/Themes/Underwater/SDFlake.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Underwater/Sky.png Binary file share/hedgewars/Data/Themes/Underwater/Sky.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Underwater/Splash.png Binary file share/hedgewars/Data/Themes/Underwater/Splash.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Underwater/horizont.png Binary file share/hedgewars/Data/Themes/Underwater/horizont.png has changed diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/Themes/Underwater/theme.cfg --- a/share/hedgewars/Data/Themes/Underwater/theme.cfg Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/Themes/Underwater/theme.cfg Mon Jan 17 23:22:52 2011 +0100 @@ -1,20 +1,15 @@ -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 +sd-flakes = 20, 20, 150, 0, 5 +rq-sky = 0, 70, 210 diff -r 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/misc/hedgewars-mimeinfo.xml --- a/share/hedgewars/Data/misc/hedgewars-mimeinfo.xml Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/misc/hedgewars-mimeinfo.xml Mon Jan 17 23:22:52 2011 +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 9f20a38a385a -r 9a0f5377c529 share/hedgewars/Data/misc/hwengine.desktop.in --- a/share/hedgewars/Data/misc/hwengine.desktop.in Mon Jan 17 08:37:43 2011 +0100 +++ b/share/hedgewars/Data/misc/hwengine.desktop.in Mon Jan 17 23:22:52 2011 +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